Robin Gareus
60901d26b7
ALSA: improve debug output
2020-12-03 21:29:21 +01:00
Robin Gareus
c87ef15e82
ALSA: configure capture settings before playback
...
This fixes an issue with some soundcards e.g. "AxeFx III".
Device configuration fails unless set_hwpar() is performed
for the capture device before configuring the playack
device (half duplex is fine, too).
2020-11-04 14:46:49 +01:00
Robin Gareus
216935f16e
Remove ALSA debug message in optimized builds
2020-09-18 15:40:44 +02:00
Robin Gareus
a80064981e
NO-OP: Consolidate PortConnect code into shared parent class
2020-09-05 23:05:57 +02:00
Robin Gareus
92f54b3e98
Add API to query if systemic latency can be measured
2020-06-30 03:34:26 +02:00
Robin Gareus
09aa0a3d1a
Consolidate code using pthread_attr_setstacksize
...
This also adds some stack constraint to rt and fallback threads
that didn't have those before (ALSA MIDI for example)
2020-06-06 18:35:44 +02:00
Robin Gareus
4ff6fbe6b8
ALSA: Use same period for in+out #8075
...
Since the input is never flushed, capture latency is still
only one cycle.
2020-05-10 22:28:40 +02:00
Robin Gareus
abe23b5885
ALSA backend: ignore idempotent latency settings
2020-05-09 01:22:18 +02:00
Robin Gareus
c75b2355c1
Fix potential malloc(0) issue
2020-05-05 17:13:18 +02:00
Robin Gareus
27f26f5cfd
Cont'd work on ALSA nperiods (amend 2326fb163)
2020-05-03 00:19:56 +02:00
Robin Gareus
2326fb1638
ALSA: only read/clear user-requested nperiods before snd_pcm_start
...
This should fix excessive latency with the RayDay that
has a fixed buffersize of 16384 samples.
2020-05-01 23:17:31 +02:00
Robin Gareus
8fa0049d28
ALSA: set start threshold to zero
2020-04-30 04:16:17 +02:00
Robin Gareus
11f68a02cd
Another step towards nperiod fixes for the RayDay
2020-04-30 02:05:14 +02:00
Robin Gareus
3a6a9cfa6c
Tweak ALSA nperiod setting, fallback to nearest
...
This is mainly for RME RayDAT that has a fixed buffersize of 16k:
dev_name : hw:HDSPMxc2f6c5,0
channels : 36
min_rate : 32000
max_rate : 192000
min_bufz : 16384
max_bufz : 16384
min_nper : 4
max_nper : 512
However nperiod configuration determines the effective latency
regardless.
This is similar to https://github.com/jackaudio/jack1/blob/master/drivers/alsa/alsa_driver.c#L476-L486
2020-04-29 23:56:24 +02:00
Robin Gareus
47bb331bfa
Allow to refresh ALSA device list - #8051
2020-04-29 02:19:38 +02:00
Robin Gareus
8e482ef0fb
Con't work on ALSA nperiod selection (see also d3d120fa)
2020-04-28 17:56:17 +02:00
Robin Gareus
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
Robin Gareus
13ed8da2bc
Add flag to allow ALSA backend to fall back to nearest avail. nperiods
2020-04-28 02:51:20 +02:00
Robin Gareus
3d166c7789
Consolidate stack-size and priority of rt-threads
2020-04-23 01:28:58 +02:00
Robin Gareus
daf9fe2550
Tweak engine startup, shorten initial silence timeout
...
see also 23baeee829
2020-04-16 16:47:08 +02:00
Paul Davis
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
Robin Gareus
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
Robin Gareus
e8efd45c05
Fix ALSA slave-device half-duplex mode
2020-04-10 05:01:30 +02:00
Robin Gareus
62e2ec49ce
ALSA: ignore systemic MIDI latencies during measurement
2020-04-10 01:43:11 +02:00
Paul Davis
69b4c5108b
ALSA backend: fix incorrect pointer cast ( fixes #7998 )
2020-04-09 15:40:23 -06:00
Paul Davis
78a66b7180
improved port cleanup as backend is destroyed
2020-04-07 23:26:51 -06:00
Paul Davis
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
Paul Davis
a31d3689bf
tentative changes to extend port engine shared impl to coreaudio
2020-04-02 19:45:31 -06:00
Paul Davis
6c2e30b790
use new PortEngineSharedImpl in AlsaAudioBackend
2020-04-02 19:45:31 -06:00
Paul Davis
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
Robin Gareus
a8ff35accb
Reset DSP load on backend re-start and after freewheeling
2020-03-30 16:58:55 +02:00
Robin Gareus
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
Robin Gareus
c365c6cdb2
Set thread-names (libs)
2020-03-29 14:56:22 +02:00
Robin Gareus
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
Robin Gareus
7c381dab6e
Downgrade "using all channels" warning to info - part 2
2020-01-25 04:17:53 +01:00
Robin Gareus
f9e7f10695
Downgrade "using all channels" warning to info message
2020-01-24 21:16:40 +01:00
Robin Gareus
69688d24c4
Another fix for input only ALSA-slave devices
2019-08-24 00:15:10 +02:00
Robin Gareus
e5927d689c
Fix for half-duplex ALSA-slave devices
2019-08-23 04:39:51 +02:00
Robin Gareus
8fadf44978
Fix possible segfault when ALSA MIDI port registration fails
2019-08-23 04:39:12 +02:00
Robin Gareus
47a62b2850
Update backend GPL boilerplate and (C) from git log
2019-08-03 15:53:16 +02:00
Robin Gareus
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
Robin Gareus
771f2d2499
ALSA backend: fix play/capture device param detection
2019-07-24 16:40:40 +02:00
Robin Gareus
00e226e3c6
Fix ALSA MIDI latency update call (playback/capture direction mismatch)
2019-05-06 00:14:27 +02:00
Robin Gareus
ddd1cda260
Remove outdated comment
2019-05-05 18:07:21 +02:00
Robin Gareus
c5346f5c15
Fix add/remove ALSA-MIDI ports bug
2019-05-05 18:06:37 +02:00
Robin Gareus
8ccc45d44d
Ardour/ALSA allow multiple MIDI devices with the same name
2019-03-06 23:41:15 +01:00
Robin Gareus
e1ffe7857f
Use enum for exec stderr parameter (1/2)
2019-03-05 22:49:15 +01:00
Robin Gareus
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
Robin Gareus
86a78dc100
Fix a -Wunused-but-set-variable
2019-01-02 18:59:03 +01:00
Robin Gareus
d50d8b9d33
C++98 compatible map erase
2018-12-27 12:45:36 +01:00