Commit Graph

154 Commits

Author SHA1 Message Date
47bb331bfa
Allow to refresh ALSA device list - #8051 2020-04-29 02:19:38 +02:00
8e482ef0fb
Con't work on ALSA nperiod selection (see also d3d120fa) 2020-04-28 17:56:17 +02:00
d3d120fa28
Prepare to allow using ALSA backend with nperiods > 3
This will still need an update for Alsa_pcmi::set_hwpar() capture
channel (which is fixed at 2, unless FRAG_NEAR is used).
2020-04-28 03:28:34 +02:00
13ed8da2bc
Add flag to allow ALSA backend to fall back to nearest avail. nperiods 2020-04-28 02:51:20 +02:00
3d166c7789
Consolidate stack-size and priority of rt-threads 2020-04-23 01:28:58 +02:00
daf9fe2550
Tweak engine startup, shorten initial silence timeout
see also 23baeee829
2020-04-16 16:47:08 +02:00
2a80832243 add port connect/add/remove callbacks to the ALSA backend
This fixes issues with new ports not (always) appearing in port matrices (and presumably
elsewhere too)
2020-04-10 09:53:44 -06:00
b943cec756
ALSA: allow to select different I/O devices
This adds a basic support to use multiple sound-cards, currently
limited to two devices: In/Out with shared settings.

Advanced setups still have to resort to using the ARDOUR_ALSA_EXT
environment variable
2020-04-10 05:01:33 +02:00
e8efd45c05
Fix ALSA slave-device half-duplex mode 2020-04-10 05:01:30 +02:00
62e2ec49ce
ALSA: ignore systemic MIDI latencies during measurement 2020-04-10 01:43:11 +02:00
69b4c5108b ALSA backend: fix incorrect pointer cast (fixes #7998) 2020-04-09 15:40:23 -06:00
78a66b7180 improved port cleanup as backend is destroyed 2020-04-07 23:26:51 -06:00
b9cb306e8b use shared_ptr to manage backend port lifetimes (Pulse,ALSA,Dummy,JACK)
JACK is not yet finished.

Changes also include minor reformatting and a spelling correction (latecies to latencies)
2020-04-07 13:23:49 -06:00
a31d3689bf tentative changes to extend port engine shared impl to coreaudio 2020-04-02 19:45:31 -06:00
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