Age | Commit message (Collapse) | Author |
|
|
|
|
|
Various backends have different strategies for updating latencies,
and different thread semantics for latency update callbacks.
With jack2 it is possible that processing happens concurrently
while port latencies are being changed.
Ardour internal backends emit the latency callback from the
main process thread, serializing latency changes with processing.
Various user actions can also trigger latency changes. e.g.
with a stopped engine it is possible to re-order plugins.
|
|
This allows to also catch cases when a panner-ui directly changes
set_linked_to_route() of the panner shell.
|
|
external sync if command is allowed
The semantics are that if the user configures things to allow transport commands while
using a transport master, issuing such commands first stops using the master
|
|
|
|
for ltc slave
|
|
left in place
|
|
|
|
|
|
|
|
Auditioner seek calls are explicitly handled by the butler,
and DR:overwrite_existing_buffers() is called explicitly
to read MIDI data for audition.
Session::non_realtime_overwrite is no longer required.
This reverts commit 6fbcf837793ec9a8347fd2d12823b9e56587ffc0
and parts of 2d11667ce3d2ada93c0fb90978bdcc054413c2bb.
|
|
The Auditioner is not part of the session route-list and the
auditioner route's I/O latency is never updated.
Session::process_audition() does not handle pre-roll either,
so it need to be zeroed, otherwise Route::roll skips samples.
This has lead to initial samples being skipped, IFF the
auditioner's output-port had non-zero latency.
Since private port-latencies are usually only set for routes
in the route-list, and _remaining_latency_preroll is reset
at transport-stop, this *usually* worked...
Last but not least, MIDI notes need to be resolved when seeking.
|
|
This fixes a bug introduce in 2d11667ce3. The Auditoner
was accidentally added to the shared_ptr<> referenced RouteList.
|
|
IO::latency iterates over the port-set retrieving the
private_latency_range of each port. Since it can only change
when connections and latency changes, we can instead cache the value.
This is also in preparation to allow the auditioner to override it.
|
|
|
|
xmlParseMemory() uses a c-pointer char*.
Previously MIDNAM data on the heap were wrapped inside
a std::string only to be later accessed via c_str().
|
|
|
|
DiskReader::seek() no longer fills MIDI buffers.
MIDI is now read into memory via DR:overwrite_existing_buffers()
There is still some edge-case remaining to be fixed. For
some reasons the synth does not receive initial patch/program
changes when starting auditioning.
|
|
update_custom_midnam() is usually called from the GUI or butler
thread when a LV2 plugin is instantiated, or the plugin changes
its MIDNAM. It must be exclusive with load_midnams_in_thread()
and calls from MTAV to ::maybe_use().
|
|
|
|
|
|
- add missing translations
- largely follow original message regarding punctuation, capitalization
at the beginning of sentences, trailing white space
- fix typos and other obvious mistakes
Signed-off-by: Nils Philippsen <nils@tiptoe.de>
|
|
|
|
|
|
|
|
Since 57118c2370fa, plugins are re-activated after every export.
So a silent pre no-roll is mainly useful for with realtime export,
and for some cases where a plugin does not correctly reset.
Note that for the first export, plugins are not currently flushed.
|
|
|
|
|
|
|
|
Session::listen_position_changed() calls Route::listen_position_changed()
for every route in the session. Each call tool the process-lock
in turn.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LV2 uses "enabled": -1: inactive, 0: bypassed, 1:enabled
VST3 has "bypass: 0:active, 1: bypassed
|
|
|
|
see also 23baeee8293
|
|
since these are not user errors nor fixable
|
|
|
|
|
|
|
|
|
|
The disk-reader assumes that all playback ringbuffers are in sync
and have the same fill_level.
|
|
|
|
|
|
|
|
|