Commit graph

958 commits

Author SHA1 Message Date
Mads Kiilerich
27a2bf1f59
PulseAudio: clean up freewheeling transitions
ae3c8b19c6 and 03a17df68c reworked the transitions to and from
freewheeling. Some of it seems to have been experiments that tried
several things out, and generally it seems to have worked. It left some
commented out code. Clean that up.
2022-11-02 02:24:34 +01:00
Mads Kiilerich
04c24be2db
PulseAudio: don't drain the stream right after initial uncorking
The draining was introduced in ae3c8b19c6, apparently as an experiment
doing several changes. But the drain is outside the loop where
freewheeling changes, so the fix must have worked for other reasons.

There doesn't seem to be any benefit from draining at that point. The
stream is already empty. If not, we could have flushed it.

Draining right after uncorking will conceptualy create an intentional
underflow, even though it isn't reported as such. PipeWire seems to
(something like 6-12 months ago) have regressed in handling of that grey
area, causing that *underflow* to cause a request for too much data, and
thus causing constant *overflows* and unusable playback.

This change makes PulseAudio playback work for me again.
2022-11-02 02:24:34 +01:00
Paul Davis
1eaaf4303b jack backend: catch some possible errors in ::get_port_name() 2022-10-29 09:37:17 -06:00
+merlan #flirora
79f55742d6
JACKAudioBackend::join_process_threads: Don’t pass NULL for jack_client_stop_thread
This is needed for PipeWire’s JACK frontend, which implements this
function and expects the first argument to be non-null.
2022-10-24 04:45:08 +02:00
Robin Gareus
7e5fe695d0 Increase coreMIDI robustness, do not drop late events
see also https://discourse.ardour.org/t/ardour-not-getting-all-messages-from-midi-keyboard/107618/13
2022-09-24 02:29:50 +02:00
Robin Gareus
9b65be0e17
Add debug information for coreMIDI events 2022-09-22 00:42:56 +02:00
Robin Gareus
46deb15d12
ALSA: request device to query its settings
Querying available buffersizes and sample-rates requires access
to the device. Almost all ALSA devices are limited to
a single user-space application so we unconditionally try
to request access to the device.
2022-09-12 16:34:25 +02:00
Robin Gareus
48dbd5801a
Coreaudio: enable MIDI by default 2022-07-27 15:31:20 +02:00
Robin Gareus
b77eedf53e
Suggest WinMME as default (enable MIDI by default) 2022-07-11 21:45:55 +02:00
Robin Gareus
fe6aa0610c
ALSA: suggest ALSA Sequencer by default 2022-07-11 21:45:54 +02:00
Robin Gareus
13de664ae6
Provide jack2 compatible implementation for jack1
jack1 (which is Linux only) does not have a jack_client_stop_thread
API, and expects the application to call pthread_join().

This fixes an issue when the application is compiled using jack2 headers
but the application later runs using jack1's library.
2022-06-30 17:19:57 +02:00
Robin Gareus
64f9829b56
AudioBackends: ignore setting latency of invalid port(s) 2022-06-24 19:55:17 +02:00
Robin Gareus
fe0e997335
Backend: prefer debug_msg over PBD::Transmitter in threads
PBD::Transmitter is neither thread-safe nor rt-safe. This likely
fixes a crash on macOS when process-threads are started.
Many threads simultaneously enter coreaudio_process_thread() and
log a message calling `PBD::info << .. << endmsg` simultaneously.
2022-06-24 19:27:57 +02:00
Robin Gareus
35612d26c6
Unify ::get_buffer, remove debug code 2022-06-18 22:54:09 +02:00
Robin Gareus
99e785541a
Coreaudio/M1: prefer device IOThread Workgroup 2022-06-03 22:50:13 +02:00
Robin Gareus
fa8f75c145
Fix yet another oversight when coding blindly in 6a513a11f 2022-06-03 07:29:23 +02:00
Robin Gareus
5417ddd792
Fix typo in 6a513a11f 2022-06-03 07:24:42 +02:00
Robin Gareus
58979af4f2
Coreaudio: update workgroup query 2022-06-03 06:42:42 +02:00
Robin Gareus
6a513a11fa
Coreaudio: set real-time constraint before joining the workgroup
The worker thread needs to have a real-time constraint set,
before it cab be joined to the workgroup.
2022-06-03 06:42:38 +02:00
Robin Gareus
74ee7ee091
Add parallel realtime threads to CoreAudio workgroup
This API is only available since BigSur (11.0), see also
https://developer.apple.com/documentation/audiotoolbox/workgroup_management/adding_parallel_real-time_threads_to_audio_workgroups?language=objc
2022-06-03 04:56:28 +02:00
Robin Gareus
88e9fc3e22
Remove unneccesary include (now handled by libpbd) 2022-06-03 04:52:38 +02:00
Robin Gareus
226dadbd19
Further reduce DSP load of debug builds
In all years of using these assert()s never triggered. Besides
there are valid_port() tests in other strategic locations that
are not periodically hit in realtime context.
2022-05-06 02:04:55 +02:00
Robin Gareus
96c138c985
ALSA: prevent excessive slave-device latency updates on underrun 2022-05-04 05:57:52 +02:00
Mads Kiilerich
5b7431f243 wscript: drop unnecessary trailing ";" 2022-04-09 12:16:41 +02:00
Mads Kiilerich
bac32a8c2d wscript: consistently use 4 spaces for indentation 2022-04-09 12:16:40 +02:00
Mads Kiilerich
06f8936a73 wscript: remove trailing whitespace 2022-04-09 12:16:37 +02:00
luz paz
3d395585c1
Fix various typos
Found via `codespell -q 3 -S *.po,./share/patchfiles,./libs -L ba,buss,busses,doubleclick,hsi,ontop,ro,seh,siz,sord,sur,te,trough,ue`  
Follow-up to 364f2f078
2022-04-08 19:51:02 +02:00
Mads Kiilerich
8bb91099c5 wscript: drop configure statements already present in the top level wscript
Avoid repeated pointless configure messages like:
Checking for 'g++' (C++ compiler!)                   : /usr/lib64/ccache/g++
Checking for 'gcc' (C compiler)                      : /usr/lib64/ccache/gcc
2022-01-22 22:19:03 +01:00
Houston4444
36a2fb1ba8
JACK: re-create backend when re-connecting to the server
This updates the client-name when re-connecting to the
server, which is apparently useful with NSM.
2021-12-04 14:39:22 +01:00
Robin Gareus
a393f75694
Use shared port engine MIDI event compare operator 2021-11-30 19:41:39 +01:00
Robin Gareus
83225886a1
Fix gcc4 builds ('EEXIST' was not declared in this scope) 2021-11-15 19:12:00 +01:00
Robin Gareus
79330f909e
Work around connection loss when re-starting JACK backend
If connecting ports using the port-engine fails,
ardour forgets the connection.

Internal backends only produced an error if a port was already
connected, when using ::connect (handle, other), but
ignore already existing connection when using port-names.

Various ports are connected twice when the engine connects
at session load. This worked fine for as long as the engine
was never stopped (saving the session asks the port-engine),
but failed when the engine went away and internal representation
is used.
2021-11-01 23:11:41 +01:00
Paul Davis
8bada4b5e1 remove public ::bbt_at (INTEGER) methods, because of superclock_t/samplepos_t confusion
libtemporal still needs ::bbt_at (superclock_t) fairly often so retain it as a private method, but public
interfaces take either Beats or timepos_t
2021-08-13 12:51:35 -06:00
Paul Davis
bed76798f3 manual fixups after rebase against master (general libs edition) 2021-08-13 12:51:31 -06:00
Paul Davis
79763893b3 remove/hide Session::tempo_map() and use TempoMap::use() instead (thread local shared ptr) 2021-08-13 12:51:30 -06:00
Paul Davis
f67029bd02 random commit to facilitate trivial move of work from laptop back to main system 2021-08-13 12:51:29 -06:00
Paul Davis
f4490f54c5 change Timecode::BBT_Time to use Temporal namespace, plus a couple of other minor changes to enable compilation
This still uses the tempo map object in libs/ardour, not the new one in libs/temporal, and isn't likely to be functional
(though it could be)
2021-08-13 12:51:28 -06:00
Robin Gareus
38a4bb6736
Fix prev commit (properly stop pulse) 2021-07-21 05:56:42 +02:00
Robin Gareus
03a17df68c
Pulseaudio: tweak freewheel recovery
Always cork stream before calling pa_stream_flush.
2021-07-21 05:03:54 +02:00
Robin Gareus
bf43c8d2d4
Set thread names 2021-06-30 17:15:27 +02:00
Robin Gareus
0f6e34a697
ALSA: fix idempotent device name setup
This fixes an edge case where available buffersizes are
not not correctly set because the device info was never queried.
2021-06-30 04:10:48 +02:00
Paul Davis
a9f285b82b debugging timing stats by showing how max values are computed 2021-06-29 09:46:46 -06:00
Paul Davis
9d88f370ae debug windows RunLoop timing stats 2021-06-29 09:25:38 -06:00
Paul Davis
c2f7b12b0d window compilation fix 2021-06-26 19:02:47 -06:00
Paul Davis
fb562ddb61 window compilation fix 2021-06-26 19:02:13 -06:00
Paul Davis
74538b7114 window compilation fix 2021-06-26 18:58:23 -06:00
Paul Davis
a2974b0c0b portaudio: improved compilation error fix 2021-06-26 12:56:49 -06:00
Paul Davis
8bc4464309 portaudio: compilation error fix 2021-06-26 12:51:54 -06:00
Paul Davis
7e858b9bda portaudio: add standardized DSP statistics to portaudio backend (uncompiled) 2021-06-26 12:32:23 -06:00
Paul Davis
74c93f3ff3 coreaudio: fix dsp stats collection 2021-06-26 11:42:18 -06:00