6c2e30b790
use new PortEngineSharedImpl in AlsaAudioBackend
2020-04-02 19:45:31 -06:00
9ac0d5b60f
add RCU to manage _ports and _portmap in AlsaAudioBackend
...
This is intended to prevent crashes when unregister_port() modifies the contents of these
two members at the same time that something else is iterating over them.
2020-04-02 19:45:31 -06:00
a8ff35accb
Reset DSP load on backend re-start and after freewheeling
2020-03-30 16:58:55 +02:00
23baeee829
Tweak engine startup, initial silence
...
This can help when running with very low latency and the
initial process callback is [indirectly] expensive.
E.g. load a heavy session the a RPi4, initial setup can pull
in a lot of data, which blocks the bus.
In particular with the ALSA backend this can lead to poll timeout
which effectively stops the backend.
2020-03-30 15:20:54 +02:00
c365c6cdb2
Set thread-names (libs)
2020-03-29 14:56:22 +02:00
eea697b260
ALSA backend: try to recover from poll errors
...
When recover() successfully re-initializes the device,
processing can continue just like after an x-run.
This can happen during initial session load of "expensive"
sessions (in particular on slow systems, e.g. Raspberry Pi)
usually with synths. Worker thread pulls in many external
files in the background which blocks the bus for a long time.
resulting in a poll-timeout.
2020-03-28 22:06:12 +01:00
7c381dab6e
Downgrade "using all channels" warning to info - part 2
2020-01-25 04:17:53 +01:00
f9e7f10695
Downgrade "using all channels" warning to info message
2020-01-24 21:16:40 +01:00
69688d24c4
Another fix for input only ALSA-slave devices
2019-08-24 00:15:10 +02:00
e5927d689c
Fix for half-duplex ALSA-slave devices
2019-08-23 04:39:51 +02:00
8fadf44978
Fix possible segfault when ALSA MIDI port registration fails
2019-08-23 04:39:12 +02:00
47a62b2850
Update backend GPL boilerplate and (C) from git log
2019-08-03 15:53:16 +02:00
78fc6d6651
Prefix all env variable with "ARDOUR_"
...
In particular "CONCURRENCY" can be problematic. But in general
it's good practice to use a namespace prefix for app-specifics.
2019-07-26 16:44:29 +02:00
771f2d2499
ALSA backend: fix play/capture device param detection
2019-07-24 16:40:40 +02:00
00e226e3c6
Fix ALSA MIDI latency update call (playback/capture direction mismatch)
2019-05-06 00:14:27 +02:00
ddd1cda260
Remove outdated comment
2019-05-05 18:07:21 +02:00
c5346f5c15
Fix add/remove ALSA-MIDI ports bug
2019-05-05 18:06:37 +02:00
8ccc45d44d
Ardour/ALSA allow multiple MIDI devices with the same name
2019-03-06 23:41:15 +01:00
e1ffe7857f
Use enum for exec stderr parameter (1/2)
2019-03-05 22:49:15 +01:00
8b71967be9
ALSA: add locks to safely add/remove MIDI devices
...
Theoretically this could be lock-free by using a queue of device
ports to be added/remove in sync in the process-callback, but
realistically adding/removing devices doesn't have to be rt-safe.
2019-01-14 22:33:31 +01:00
86a78dc100
Fix a -Wunused-but-set-variable
2019-01-02 18:59:03 +01:00
d50d8b9d33
C++98 compatible map erase
2018-12-27 12:45:36 +01:00
517b5f091f
Use same has for ALSA-seq and ALSA-raw devices
2018-12-23 21:58:56 +01:00
79e247e00a
Dynamic ALSA MIDI I/O device discovery and re/connect
2018-12-23 21:58:56 +01:00
217ef4d365
Use hash for ALSA-MIDI device name/ID
2018-12-23 21:58:55 +01:00
076e9fddd4
Remove ambiguous API implementation
...
* PortEngine::available() implementation
* AudioEngine::connected() wrapper
Eventually we may re-introduce PortEngine::available along
with a libardour internal port-engine.
2018-11-28 15:32:40 +01:00
e047b01aa2
add new API for retrieving port flags from backend
2018-10-17 14:11:37 -04:00
46175b6b60
Increase alsa-backend timeout
...
Following discussion (https://community.ardour.org/node/15805 and
#ardour IRC) test initial disconnect due to timeout after a cold-boot.
2018-08-29 19:23:53 +02:00
37a9803542
avoid compiler warning on at least some linux versions
2018-05-04 08:25:04 -04:00
48c1a24284
Fix some clang warnings (argument with 'nonnull' attribute passed null)
2018-01-26 18:07:23 +01:00
4ebcef53f8
Relax max MIDI msg size to 256 (for long sysex)
...
(win-mme already used 256, CoreMIDI can handle up to 256 as can ALSA)
2017-12-19 17:41:57 +01:00
332a7e56ca
Increase ALSA max MIDI msg size to 128 bytes (same as OSX) for long sysex
2017-12-05 16:09:46 +01:00
c0f27be59e
Fix/update alsa backend build recipe (statically link zresampler)
2017-10-29 20:03:51 +01:00
79374df84e
fix preprocessor error on some/many systems
2017-10-26 15:44:09 -04:00
ab3889fff8
Propagate Latency to backend/system ports
...
Set accumulated capture-latency for physical-outputs
and accumulated playback-latency for physical-inputs
after Ardour is done setting all non-physical port latencies.
This will be needed for latency-compensation of the complete graph.
2017-09-23 00:34:01 +02:00
30b087ab3d
globally change all use of "frame" to refer to audio into "sample".
...
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible
2017-09-18 12:39:17 -04:00
8337982766
Prototype using additional ALSA devices (w/resampling).
2017-09-18 16:13:55 +02:00
128a985361
ALSA Backend: Separate Device Reservation into its own class
2017-09-18 14:50:31 +02:00
7258c6334d
Namespace PBD::RingBuffer
...
class RingBuffer<> is a very generic name and should not pollute the
global namespace.
2017-09-16 16:37:29 +02:00
467c801ce8
Abstract definition of rt-scheduler policy
...
pthread-w32 does not support pthread_setschedparam() with
SCHED_FIFO and bails out. While pthread_create() simply ignores the policy
and sets the priority regadless.
This only affects ctrl-surface event-loops & AutomationWatch on Windows.
2017-08-29 20:35:36 +02:00
df659e91f1
Consolidate _realtime_pthread_create() into libpbd.
2017-08-29 17:25:23 +02:00
59a63a08f9
ALSA backend RT-safe MIDI buffer allocation
2017-08-05 15:36:36 +02:00
2b7c585dba
Update backend API: read-only MIDI input buffers
2017-08-05 15:36:36 +02:00
c125cd2647
Reduce DSP thread priority (main-i/o > midi i/o > computation)
2017-08-05 01:28:11 +02:00
0d668b9beb
ALSA backend: always register ports with systemic latency
...
and allow re-start to un/set reporting latency.
2017-04-27 20:59:15 +02:00
d7d86a99d2
Re-nice ALSA MIDI port names
2017-04-21 10:43:22 +02:00
6968c9f909
Drain ALSA raw-midi buffers after 64 bytes
...
Very long sequence of *concurrent* events may otherwise be truncated
because the backend requests a buffer-size of 64 bytes via
snd_rawmidi_params_set_buffer_size().
2017-04-09 05:03:19 +02:00
f9db9bf5fd
Retain order of concurrent MIDI events
...
This fixes an issue with FaderPort8 (and maybe other surfaces or synths).
2017-04-08 23:43:50 +02:00
335debfa2f
Add API to enforce valid device selection.
2016-11-26 15:31:21 +01:00
69cbcb84a6
spelling corrections from Jaromír Mikeš <mira.mikes@seznam.cz>
...
Corresponds to https://anonscm.debian.org/cgit/pkg-multimedia/ardour.git/tree/debian/patches/0070-spelling.patch
2016-10-17 17:57:39 -04:00
Kamil Rytarowski
1ac7dad84e
NetBSD ships with pollts(2) similar to Linux specific ppoll()
2016-10-04 22:17:49 +02:00
Kamil Rytarowski
f69776e5b7
NetBSD ships with <sys/endian.h> not <endian.h>
2016-10-04 22:17:12 +02:00
cf52d6e4b4
enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h
2016-07-14 14:45:23 -04:00
8444837b71
properly sort port-names
2016-07-14 16:52:43 +02:00
ac923be7af
fix port-sort order for good.
...
TODO find out how to make std::set::find() work with custom sort order,
as std::find may only be O(N) and not O(log (N)).
2016-07-08 21:37:42 +02:00
f84a7605d8
pre-sort port-names
2016-07-08 20:44:21 +02:00
60200bf923
bump max number of possible ALSA backend channels
2016-05-29 20:36:32 +02:00
43e620504a
port 93eac8b0
to ALSA and CoreAudio
2016-04-26 18:19:48 +02:00
2169de3975
keep portmap & portindex in sync when renaming ports
...
Fixes crash on session re-load (introduced in 800c8182
and fde99e68
)
2016-04-26 02:26:20 +02:00
800c8182c6
O(log(n)) port and connection lookup for ALSA
2016-04-24 20:45:37 +02:00
9840a11537
implement metadata-set for remaining backends
2016-04-18 00:35:51 +02:00
10140a8e68
implement pretty-name set-property for ALSA and Dummy
2016-04-17 18:22:21 +02:00
ba78359129
prepare for update to waf 1.8
...
uselib is no longer implicit (inherited by .use). This is still incomplete,
some uselibs for non-linux variants may be missing.
bld.is_defined("HAVE_XXX") also no longer works and will have to be
changed (I think to bld.env["HAVE_XXX"]) in countless places.
2016-02-28 21:16:44 +01:00
cf6a3afcaa
name ALSA midi ports after device
2016-01-11 11:46:10 +01:00
4dc49ee4fa
fix -Wreorder
2015-12-05 02:42:58 +01:00
a6f27f09a7
update ALSA backend: separate playback/capture periods
...
fixed: 2 for capture, configurable 2,3 for playback.
2015-12-05 01:53:13 +01:00
bfd2cbaa3f
ALSA: allow to dynamically add/remove midi devices & update their latency.
2015-12-04 22:19:47 +01:00
ac075560bd
ALSA: allow to measure & set systemic audio latency w/o restart.
...
(MIDI needs a bit more work)
2015-12-04 17:45:49 +01:00
990fd75c5f
implement ALSA period/cycle setting
2015-12-04 10:16:19 +01:00
87c36aba60
use new error-messages
2015-10-02 17:51:17 +02:00
6b4e5f1d47
ALSA: update error-codes for HW initialization.
2015-10-01 12:42:05 +02:00
dcf327f86a
Return meaningful error codes when ALSA backend fails to start
...
Unfortunately it seems that in zita-alsa-pcmi doesn't set state() correctly in
some cases. Setting an invalid SR doesn't display the correct error message,
first guess would be that set_hwpar is failing and state() is not
representative of the actual error.
2015-10-01 09:10:19 +10:00
1691e965a5
update reported DSP load for ALSA & Dummy
2015-09-16 18:24:57 +02:00
782dbf0e3f
Set max time of DSPLoadCalculator in every cycle in ALSA backend
2015-09-16 11:22:17 +10:00
ccfe3e1015
Use ARDOUR::DSPLoadCalculator in ALSA Backend
2015-09-16 11:22:17 +10:00
fa32fa1abe
replace "None" with DeviceNone in ALSA/Coreaudio
...
TODO: separate MidiSystemNone
2015-09-02 13:33:40 +02:00
548340eb05
remove -Woverload-virtual ambiguity (from 1d3690d
)
...
this breaks compilation in engine_dialog.cc
2015-08-11 23:50:56 +02:00
a226c4ce38
ALSA backend: query and cache available device-parameters
2015-08-11 19:01:52 +02:00
dc2030cfd7
ALSA backend: add support for half-duplex devices
2015-06-14 22:26:06 +02:00
94c146c780
prepare ALSA backend for half-duplex
2015-06-14 22:26:06 +02:00
56cc3e2407
fix portengin get_ports() flags API
...
require all flags to be present (same as jack)
2015-05-03 22:34:52 +02:00
49ffcd0d9d
clamp DSP load displsy 100% & relax LPF.
2015-04-30 02:00:50 +02:00
e3cd57ecb6
DSP load calculation: favor peak over average.
2015-04-29 21:27:37 +02:00
52e99750a0
ALSA: fix thinko in sample time calc.
2015-03-09 17:17:50 +01:00
09dd3fc369
some backends can handle incorrectly ordered midi events.
...
(that can happen if multiple sources send to the same
ouput port, in particular async midi events)
2015-03-09 05:41:36 +01:00
659a8a26ae
fix latency report, take buffersize changes into account.
2015-03-07 14:35:32 +01:00
2ab26bd86d
fix another screwup/typo in 782dd70
2015-03-05 02:10:21 +01:00
7ef22e5e71
remove unused devel.variable in prev commit
2015-03-05 02:04:14 +01:00
782dd70875
alsa: implement timing callback
2015-03-05 01:59:59 +01:00
e3dd226ffa
Change order of midi entries so a new backend will default to a working midi system.
...
Needs testing on all platforms.
2015-03-03 15:57:08 -06:00
582138f280
change Audio backend sample time methods to use a 64 bit timeline
2015-02-19 17:44:01 -05:00
8a93a87db0
remove lib versioning for internal plugins
...
Those objects do not have a versioned API by themselves.
This fixes issues with duplicate deployment (OSX, Linux bundles: cp) and
ardour listing control-surfaces multiple times (file index plugin dir).
2015-02-16 17:32:56 +01:00
cf8e7bc135
ALSA-backend separate report for error and x-run
2015-01-28 13:47:24 +01:00
397ce4ccc7
ALSA-Backend prefer ppoll()
2015-01-28 13:47:24 +01:00
db28eefc49
ALSA backend: synchronous switch to/from freewheeling
2015-01-24 23:39:41 +01:00
f499f4cfd2
don't take temporary copy of MIDI sequence
...
fixes potential boost shared_ptr double free.
2014-12-31 03:19:00 +01:00
7aab4be5e4
alsa-backend: drop midi during freewheel processing.
2014-12-02 17:03:29 +01:00
f2273dc3b6
remove dead assignment
2014-11-18 02:15:06 +01:00
bd46de779f
check alsa midi ringbuffer
2014-11-17 06:50:48 +01:00
d991bb10ca
add 'available' interface to the AudioBackendInfo
...
If a backend can be loaded, it does not mean that it can be used;
e.g. weak-linked jack-backend if libjack is not available.
2014-10-23 16:53:14 +02:00