78a66b7180
improved port cleanup as backend is destroyed
2020-04-07 23:26:51 -06:00
ede8b9995a
fix another explicit return val for ::get_port_by_name() if JACK has died
2020-04-07 18:57:24 -06:00
2591c81c1a
fix explicit return val for ::get_port_by_name() if JACK has died
2020-04-07 18:54:57 -06:00
32734ce53c
fix portaudio backend to use shared_ptr
2020-04-07 16:00:22 -06:00
ff41232d16
fix CoreAudio backend to use shared_ptr
2020-04-07 13:52:35 -06:00
d827f3fdae
fix up shared_ptr<> use in JACK backend
2020-04-07 13:23:49 -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
6a6b3f2703
fix another iterator type
2020-04-02 19:45:31 -06:00
cb4997f4a4
fix iterator type
2020-04-02 19:45:31 -06:00
af69ac1285
use clear_ports()
2020-04-02 19:45:31 -06:00
6cdc245967
fix header name
2020-04-02 19:45:31 -06:00
7fc5a6c971
initial try (not compiled) of PortAudio backend using PortEngineSharedImpl
2020-04-02 19:45:31 -06:00
e5507f7072
use PortEngineSharedImpl with PulseAudio backend
2020-04-02 19:45:31 -06:00
04551c39f6
use PortEngineSharedImpl with DummyAudioBackend
2020-04-02 19:45:31 -06:00
30766c75e8
buildable version of CoreAudio backend using PortEngineSharedImpl
2020-04-02 19:45:31 -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
f866ed6305
Remove duplicate calls
2020-03-30 15:20:54 +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
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
140a3f4a10
Fix Coreaudio buffersize changes
2020-03-06 05:52:55 +01:00
a9c75f9760
Fix CoreAudio systemic latency, implement hw latency report
2020-02-24 04:24:50 +01:00
7c381dab6e
Downgrade "using all channels" warning to info - part 2
2020-01-25 04:17:53 +01:00
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
f9e7f10695
Downgrade "using all channels" warning to info message
2020-01-24 21:16:40 +01:00
bca825e515
NO-OP: whitespace
2020-01-14 00:52:24 +01:00
c87bec07cd
Fix thinko in eee01188
(engine pulse spacing)
2020-01-12 00:16:19 +01:00
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
0b52ea7a9c
add a bit of debugging to JACK transport code
2019-11-15 16:06:04 -07:00
c69227fd8d
eliminate hacky design for being able to deliver the correct time as JACK timebase master
2019-11-15 16:04:58 -07:00
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
45cf29b7c5
Use preferred pa_context_new_with_proplist API
2019-09-01 19:01:18 +02: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
8a969b56c9
PA-backend: Flush buffer and wake up main thread at stop
2019-07-26 21:38:40 +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
b759fb883e
Launch pavucontrol as PA's control app
2019-07-26 04:43:56 +02:00
d7454714ab
Fix PA: unlock mainloop on abort
2019-07-25 21:24:36 +02:00
384c97e12d
Puls der Zeit
...
Prototype a basic stereo-playback only pulseaudio backend.
2019-07-25 17:49:42 +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
2f91bdfa53
NO-OP: <tab> after <space> fixes in libs
2019-04-13 19:19:29 +02:00
46f0b75e12
Undo more incorrect sample/frame replacements
2019-04-08 04:10:04 +02:00
ce961d73f3
Use unique midi-port names for Ardour's Dummy backend
2019-03-06 23:48:07 +01: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
4e4c6e7d1e
Fix an edge-case in Dummy backend's random generator
...
INT_MAX == 2^31 is not a valid random seed for this LCG.
2018-10-22 15:46:59 +02:00
070f370e40
Fix copy/edit in e047b01aa2
2018-10-18 15:07:45 +02:00
e047b01aa2
add new API for retrieving port flags from backend
2018-10-17 14:11:37 -04:00
8ed33f1bc7
remove use of hardcoded -fPIC compiler flag, and use compiler flag dict instead
2018-10-14 22:06:11 -04:00
94e6164bc3
Add API to query backend realtime thread priority
2018-10-11 15:29:40 +02:00
b519434744
Adapt our remaining MSVC projects for 'boost::atomic' (in case it later gets extended to the other libs)
...
Stage 2 of 3 (more to follow)
2018-09-30 09:06:25 +01:00
79f01bc889
Initial changes needed for building Mixbus (with MSVC) as version 5
...
(Mixbus itself will probably need extra changes)
2018-09-10 07:14:59 +01: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
37df98d0af
CoreAudio/MIDI: add locks for port-registration
...
CoreMIDI ports are dynamic. When dis/connecting a device CoreAudio's
AudioHardware-PropertyListener triggers a callback which can
add/remove ports.
This can not happen concurrently with processing, but it may happen
concurrently with a user creating tracks using Ardour's UI
and/or session-load/setup.
2018-03-29 18:15:20 +02:00
b9c9777b9a
When building with MSVC, allow for the fact that Mixbus and Ardour can be using different versions of the SESSION_FILE format
2018-02-15 09:03:32 +00:00
6f019faaa0
Accommodate the change from libtimecode to libtemporal
2018-02-14 10:02:11 +00:00
48c1a24284
Fix some clang warnings (argument with 'nonnull' attribute passed null)
2018-01-26 18:07:23 +01:00
7671268bc3
strlen is not a member of std.
2018-01-03 18:06:55 +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
0c3531efe7
Fix gcc4 builds "GCC diagnostic not allowed inside functions"
2017-12-16 17:08:36 +01:00
ca979ee606
Sync weakjack with upstream https://github.com/x42/weakjack/
2017-12-15 21:56:46 +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
94e2bce740
Add & implement PortEngine::externally_connected() API
2017-10-30 19:41:42 +01:00
16b4535281
Add missing header (-Wmissing-prototypes)
2017-10-30 19:39:42 +01:00
7adb1297cd
Add weak linked symbol for "jack_port_is_mine"
2017-10-30 19:39:10 +01:00
c0dbe8eaaf
Move coreaudio_set_realtime_policy into libpbd
2017-10-30 16:31:38 +01:00
c0f27be59e
Fix/update alsa backend build recipe (statically link zresampler)
2017-10-29 20:03:51 +01:00
7512692e79
Fix initial cycle noise with dummy-loopback
2017-10-28 15:45:08 +02:00
79374df84e
fix preprocessor error on some/many systems
2017-10-26 15:44:09 -04:00
7e2c002ef6
Propagate Latency to backend/system ports (Dummy backend)
...
amend ab3889ff
(which implements this for other backends)
2017-09-28 13:14:11 +02:00
e39a8b90d9
amend ab3889ff
: portaudio backend uses a vector for connections
2017-09-23 01:06:10 +02: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
59ccf91eea
Revert some more frame/sample API issues
2017-09-19 18:40:29 +02:00
666aa5a557
More Coreaudio SDK fixes, after 30b087ab3
2017-09-19 05:20:05 +02:00
1ec471c961
partially revert 30b087ab3
, CoreAudio SDK uses "Frames"
2017-09-19 04:47:10 +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
14fcf86f03
MSVC uses a slightly smaller value for HUGE
2017-09-11 19:25:13 +01:00
35fcb622bc
Accommodate recently removed source(s) in our MSVC project (portaudio_audiobackend)
2017-08-30 09:53:33 +01: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
2961db3b6f
Use literal for compatibility
2017-08-23 12:43:48 +02:00
Stefan Müller-Klieser
587a2dee55
backends: jack: display playback only devices
...
When starting ardour using the jack backend, playback only devices
currently do not get displayed. Mixing and Mastering only workspaces
with e.g. a single USB Dac should be a common use case. Take this use
case into account by adding them to the device list. Tested on Linux
with jack-alsa.
2017-08-23 02:17:51 +02:00
e0a83a758e
Redesign Session+Route Template Meta Script API
...
Remove special-cased script types. Allow Action-Scripts to be re-used
for session-setup or route-templates.
2017-08-18 20:42:55 +02:00
26dc287c00
Fix non-buffered PA backend. Wait for backend to become active
...
This hopefully fixes an issue with port-registration (new session)
being skipped because PortAudioBackend::available() still false
until the first callback.
2017-08-07 23:23:39 +02:00
fd6377a5af
PortAudio: skip process callbacks until ports are established
2017-08-07 19:27:37 +02:00
fde07d4f4f
amend bc46a7e2e9; fix blind coding typos
2017-08-05 16:17:31 +02:00
8c61c7f14a
amend f4c76f89d3a; fix blind coding typos
2017-08-05 16:06:15 +02:00
bc46a7e2e9
PortAudio backend RT-safe MIDI buffer allocation
2017-08-05 15:36:36 +02:00
f4c76f89d3
Coreaudio backend RT-safe MIDI buffer allocation
2017-08-05 15:36:36 +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
38c5e9de6d
CoreAudio: Set MachThread RT Priority
2017-08-04 06:25:23 +02:00
4ec72b5c76
DummyBackend: allow changing SPP
2017-08-04 03:53:51 +02:00
6b5d374352
Some more assert() debugging
2017-08-03 23:46:05 +02:00
660096b037
Fix typo
2017-07-31 19:54:23 +02:00
80ecac672f
Modify our MSVC project to add libltc as a dependency of 'dummy_backend' (which now needs to link to it)
2017-07-29 10:46:53 +01:00
7f03c9a664
Fix an ambiguous call to 'floor()'
...
MSVC complains, so let's specify which override we want.
2017-07-29 10:44:00 +01:00
7b7cc9ea6d
Add a LTC generator to the dummy backend
2017-07-28 17:47:36 +02:00
e511985ad9
Report Dummy as not available if not running
...
This fixes an issue with port-connections being polled from the backend
even when it's not running.
2017-06-25 20:53:47 +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
bf5864aaca
Use PBD::to_string() from pbd/string_convert.h in JACK utils
...
Use pbd/string_convert.h API instead of std::ostream for numeric formatting to
remain locale independent and not have to use a LocaleGuard.
2017-04-19 09:37:00 +10: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
9a45e0fde9
Add a missing #define to our MSVC project (portaudio_backend)
2017-02-20 09:16:51 +00:00
9bf4f339b9
revert 335debfa
for the PA backend
...
The same device may have different names for input + output
2016-11-27 00:42:08 +01:00
335debfa2f
Add API to enforce valid device selection.
2016-11-26 15:31:21 +01:00
d10913e2de
Fix intermittent hang when stopping PortaudioBackend
...
This issue is not always reproducible but when it does occur it happens
somewhat consistently on both 32bit and 64bit builds(Tested on Windows 7).
The midiOutReset call does not return (or it takes so long that it might as
well be indefinite) and as it is not strictly necessary just remove it.
Resolves: http://tracker.ardour.org/view.php?id=7095
2016-11-15 09:36:52 +10:00
43bd7f5db1
fix const-cast
2016-11-12 16:20:43 +01:00
nick_m
33e95a1577
rename Tempo _beats_per_minute to _note_types_per_minute, provide pulse helpers.
...
- adds quarter_notes_per_minute(), note_divisions_per_minute (double)
pulses_per_minute() and frames_per_quarter_note()
- this should be a no-op except for the use of tempo by
the vst callback which definitely uses quarter notes per minute.
- the XML node for TempoSection named 'beats-per-minute'
has been renamed.
2016-11-11 03:37:08 +11:00
8b5fad0cf9
Use better debug output in PortaudioBackend
...
When failing to open audio stream in callback mode
2016-11-10 15:23:43 +10:00
56711b99c9
Work around OSX MIDI devices that send no timestamps
2016-10-19 19:45:53 +02:00
d29d93f4cd
fix retrieval of port properties (metadata) when the value has no type
2016-10-18 16:46:33 -04: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
0ff233d234
Update our MSVC project files to generate the most recent Ardour session file format (ver 5) rather than the older v3 format
2016-08-30 07:15:00 +01:00
355fa64c79
fix Coreaudio Aggregate for separate devices with identical names
2016-08-28 13:44:30 +02:00
957f59f351
print a warning if CoreAudio falls back to non realtime priority
2016-08-22 17:38:45 +02:00
cdcccd8101
handle edge-case where jack-meta-data may be NULL, but the call succeeds
...
this fixes #6968
2016-08-19 14:38:37 +02:00
a76607486c
kilo is a lower-case 'k'
2016-07-24 16:54:08 +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
b65cb37d24
add a MTC/sysex test sequence
2016-07-11 16:58:53 +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
0ae634cb1e
fix jack_port_rename() detection
2016-07-01 19:08:52 +02:00
60200bf923
bump max number of possible ALSA backend channels
2016-05-29 20:36:32 +02:00