Commit graph

989 commits

Author SHA1 Message Date
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
1e996ca45f add port connect/add/remove callbacks to CoreAudio backend 2020-04-10 10:01:04 -06: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
70f13a3ff3 use RCU to manage JACK backend's container of ports 2020-04-08 19:56:33 -06:00
Paul Davis
3188fe00aa fix return value 2020-04-08 18:13:13 -06:00
Paul Davis
f32245c156 add required ::clear_ports() call to Dummy backend destructor 2020-04-08 14:55:31 -06:00
Paul Davis
78a66b7180 improved port cleanup as backend is destroyed 2020-04-07 23:26:51 -06:00
Paul Davis
ede8b9995a fix another explicit return val for ::get_port_by_name() if JACK has died 2020-04-07 18:57:24 -06:00
Paul Davis
2591c81c1a fix explicit return val for ::get_port_by_name() if JACK has died 2020-04-07 18:54:57 -06:00
Paul Davis
32734ce53c fix portaudio backend to use shared_ptr 2020-04-07 16:00:22 -06:00
Paul Davis
ff41232d16 fix CoreAudio backend to use shared_ptr 2020-04-07 13:52:35 -06:00
Paul Davis
d827f3fdae fix up shared_ptr<> use in JACK backend 2020-04-07 13:23:49 -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
6a6b3f2703 fix another iterator type 2020-04-02 19:45:31 -06:00
Paul Davis
cb4997f4a4 fix iterator type 2020-04-02 19:45:31 -06:00
Paul Davis
af69ac1285 use clear_ports() 2020-04-02 19:45:31 -06:00
Paul Davis
6cdc245967 fix header name 2020-04-02 19:45:31 -06:00
Paul Davis
7fc5a6c971 initial try (not compiled) of PortAudio backend using PortEngineSharedImpl 2020-04-02 19:45:31 -06:00
Paul Davis
e5507f7072 use PortEngineSharedImpl with PulseAudio backend 2020-04-02 19:45:31 -06:00
Paul Davis
04551c39f6 use PortEngineSharedImpl with DummyAudioBackend 2020-04-02 19:45:31 -06:00
Paul Davis
30766c75e8 buildable version of CoreAudio backend using PortEngineSharedImpl 2020-04-02 19:45:31 -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
f866ed6305
Remove duplicate calls 2020-03-30 15:20:54 +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
nia
74ef32ec31 Only show the Sun driver on NetBSD and sun-ish systems. 2020-03-26 09:58:34 -06:00
nia
5a1514de33 Add Sun backend option for JACK 2020-03-26 09:58:34 -06:00
Robin Gareus
140a3f4a10 Fix Coreaudio buffersize changes 2020-03-06 05:52:55 +01:00
Robin Gareus
a9c75f9760
Fix CoreAudio systemic latency, implement hw latency report 2020-02-24 04:24:50 +01:00
Robin Gareus
7c381dab6e
Downgrade "using all channels" warning to info - part 2 2020-01-25 04:17:53 +01:00
Robin Gareus
06b2eb1c27
Explicitly use OSX
Previously this was inherited via PBD.

On MacOS/X,  this adds
  "-undefined dynamic_lookup -flat_namespace"
and various "-framework .." options to linkflags

Without this flag, .dylibs fail to link usually because
of missing `-lintl` (Undefined symbols: "_libintl_dgettext")

On other systems this is a NO-OP:
CFLAGS_OSX, CXXFLAGS_OSX and LINKFLAGS_OSX
are only set on the darwin platform.
2020-01-25 04:07:41 +01:00
Robin Gareus
f9e7f10695
Downgrade "using all channels" warning to info message 2020-01-24 21:16:40 +01:00
Robin Gareus
bca825e515
NO-OP: whitespace 2020-01-14 00:52:24 +01:00
Robin Gareus
c87bec07cd
Fix thinko in eee01188 (engine pulse spacing) 2020-01-12 00:16:19 +01:00
Robin Gareus
eee01188b4
Dummy: Engine-Pulse audio/midi generators
This produces synchronous events on Audio and MIDI ports.
One rvent per second, exactly at every second since engine-start.

MIDI: C-4 Note-on/off (1 sample long)
Audio: +1/-1 transition:
       +1 in sync with Note-on,
       -1 in sync with Note-off
2020-01-06 22:43:30 +01:00
Paul Davis
0b52ea7a9c add a bit of debugging to JACK transport code 2019-11-15 16:06:04 -07:00
Paul Davis
c69227fd8d eliminate hacky design for being able to deliver the correct time as JACK timebase master 2019-11-15 16:04:58 -07:00
Robin Gareus
e0d5c1426c
NO-OP: fix some Wimplicit-fallthrough
gcc can recognize various regexps in comments. Since C++17 provides
[[fallthrough]], using /* fallthrough */ consistently seems
appropriate until we switch to C++17.

see also https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
2019-09-18 17:37:54 +02:00