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
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
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
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
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
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
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
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
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
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
cf52d6e4b4
enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h
2016-07-14 14:45:23 -04: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
43e620504a
port 93eac8b0
to ALSA and CoreAudio
2016-04-26 18:19:48 +02:00
2169de3975
keep portmap & portindex in sync when renaming ports
...
Fixes crash on session re-load (introduced in 800c8182
and fde99e68
)
2016-04-26 02:26:20 +02:00
800c8182c6
O(log(n)) port and connection lookup for ALSA
2016-04-24 20:45:37 +02:00
9840a11537
implement metadata-set for remaining backends
2016-04-18 00:35:51 +02:00
10140a8e68
implement pretty-name set-property for ALSA and Dummy
2016-04-17 18:22:21 +02:00
cf6a3afcaa
name ALSA midi ports after device
2016-01-11 11:46:10 +01:00
4dc49ee4fa
fix -Wreorder
2015-12-05 02:42:58 +01:00
a6f27f09a7
update ALSA backend: separate playback/capture periods
...
fixed: 2 for capture, configurable 2,3 for playback.
2015-12-05 01:53:13 +01:00
bfd2cbaa3f
ALSA: allow to dynamically add/remove midi devices & update their latency.
2015-12-04 22:19:47 +01:00
ac075560bd
ALSA: allow to measure & set systemic audio latency w/o restart.
...
(MIDI needs a bit more work)
2015-12-04 17:45:49 +01:00
990fd75c5f
implement ALSA period/cycle setting
2015-12-04 10:16:19 +01:00
87c36aba60
use new error-messages
2015-10-02 17:51:17 +02:00
dcf327f86a
Return meaningful error codes when ALSA backend fails to start
...
Unfortunately it seems that in zita-alsa-pcmi doesn't set state() correctly in
some cases. Setting an invalid SR doesn't display the correct error message,
first guess would be that set_hwpar is failing and state() is not
representative of the actual error.
2015-10-01 09:10:19 +10:00
1691e965a5
update reported DSP load for ALSA & Dummy
2015-09-16 18:24:57 +02:00
782dbf0e3f
Set max time of DSPLoadCalculator in every cycle in ALSA backend
2015-09-16 11:22:17 +10:00
ccfe3e1015
Use ARDOUR::DSPLoadCalculator in ALSA Backend
2015-09-16 11:22:17 +10:00
fa32fa1abe
replace "None" with DeviceNone in ALSA/Coreaudio
...
TODO: separate MidiSystemNone
2015-09-02 13:33:40 +02:00
548340eb05
remove -Woverload-virtual ambiguity (from 1d3690d
)
...
this breaks compilation in engine_dialog.cc
2015-08-11 23:50:56 +02:00
a226c4ce38
ALSA backend: query and cache available device-parameters
2015-08-11 19:01:52 +02:00
dc2030cfd7
ALSA backend: add support for half-duplex devices
2015-06-14 22:26:06 +02:00
94c146c780
prepare ALSA backend for half-duplex
2015-06-14 22:26:06 +02:00
56cc3e2407
fix portengin get_ports() flags API
...
require all flags to be present (same as jack)
2015-05-03 22:34:52 +02:00
49ffcd0d9d
clamp DSP load displsy 100% & relax LPF.
2015-04-30 02:00:50 +02:00
e3cd57ecb6
DSP load calculation: favor peak over average.
2015-04-29 21:27:37 +02:00
52e99750a0
ALSA: fix thinko in sample time calc.
2015-03-09 17:17:50 +01:00
09dd3fc369
some backends can handle incorrectly ordered midi events.
...
(that can happen if multiple sources send to the same
ouput port, in particular async midi events)
2015-03-09 05:41:36 +01:00
659a8a26ae
fix latency report, take buffersize changes into account.
2015-03-07 14:35:32 +01:00
2ab26bd86d
fix another screwup/typo in 782dd70
2015-03-05 02:10:21 +01:00
7ef22e5e71
remove unused devel.variable in prev commit
2015-03-05 02:04:14 +01:00
782dd70875
alsa: implement timing callback
2015-03-05 01:59:59 +01:00
e3dd226ffa
Change order of midi entries so a new backend will default to a working midi system.
...
Needs testing on all platforms.
2015-03-03 15:57:08 -06:00
582138f280
change Audio backend sample time methods to use a 64 bit timeline
2015-02-19 17:44:01 -05:00
cf8e7bc135
ALSA-backend separate report for error and x-run
2015-01-28 13:47:24 +01:00
db28eefc49
ALSA backend: synchronous switch to/from freewheeling
2015-01-24 23:39:41 +01:00
f499f4cfd2
don't take temporary copy of MIDI sequence
...
fixes potential boost shared_ptr double free.
2014-12-31 03:19:00 +01:00
7aab4be5e4
alsa-backend: drop midi during freewheel processing.
2014-12-02 17:03:29 +01:00
f2273dc3b6
remove dead assignment
2014-11-18 02:15:06 +01:00
d991bb10ca
add 'available' interface to the AudioBackendInfo
...
If a backend can be loaded, it does not mean that it can be used;
e.g. weak-linked jack-backend if libjack is not available.
2014-10-23 16:53:14 +02:00
68458cde69
fix all 4 backends' failure to include the main "backend" thread when computing ::in_process_thread()
2014-10-22 17:07:11 -04:00
99a484f193
ALSA backend: initial device selection
2014-09-24 01:26:51 +02:00
b1da9af8de
ALSA|Dummy: ignore port unregistration when engine is stopped
...
When changing Engine parameters, ardour first stops
the engine and only later when re-etablishing ports
unregisters/re-registers them.
ALSA: silently ignore port unregs and silently accept registrations
Dummy: print a PBD::info message,
2014-09-08 01:25:56 +02:00
dc318e6e74
ALSA|Dummy Backend: do as jack does:
...
when the backend is closed, unregister all ports.
2014-09-07 22:50:57 +02:00
cd12698b9c
Rename PBD::find_file_in_search_path to just PBD::find_file
...
saves a bit of typing and not necessary if you look at how it is used.
2014-06-25 12:40:10 -04:00
07fafac36e
don't let enumerated device list strings go out of scope.
2014-06-23 12:16:35 +02:00
fb51bdb892
statically allocate midi-options
...
fixes possible segfault when the data in the vector
goes out of scope due to RVO.
2014-06-23 11:56:58 +02:00
16ffff10cd
ALSA-backend: dedicated Midi-Buffer n-periods (only use for HW output)
2014-06-22 18:28:24 +02:00
6648074a13
virtual abstraction of Alsa Raw+Seq
2014-06-21 13:51:46 +02:00
bc67e47048
rework raw-midi drain strategy (workaround for sync devices)
2014-06-19 19:44:14 +02:00
e426c603b6
remove debug output
2014-06-16 23:58:52 +02:00
019e987944
more alsa-midi debugging
2014-06-16 22:08:52 +02:00
ff39a42581
ALSA backend: set latencies to zero when measuring latency
2014-06-13 13:51:42 +02:00
ecb92f474f
update ALSA backend, MIDI device config
2014-06-13 12:02:03 +02:00
da912f7ed4
add AudioEngine API to configure individual MIDI devices
2014-06-13 11:47:51 +02:00
8fe593fcca
some misc tweaks to the ALSA Backend
2014-06-08 21:04:30 +02:00
b3a44ea32b
ALSA Backend: align midi output buffer with n_periods (currently 2)
2014-06-08 15:53:15 +02:00
8f17b7c309
ALSA backend: separate systemic audio+midi latency
2014-06-07 17:28:47 +02:00
c452cd9be2
ALSA rt-thread priority fixes
2014-06-07 17:28:46 +02:00
b68d2e25b2
ALSA backend: prevent possible crash destruction of a-r-d
2014-06-07 17:28:46 +02:00
960a5347f0
ALSA & Dummy: implement port [un]registration_callback
2014-06-07 17:28:46 +02:00
d7fc573cb8
alsa + dummy backend, proper [re]initialization
2014-06-06 03:43:39 +02:00