Age | Commit message (Collapse) | Author |
|
|
|
|
|
The flags were set, but not used. They also won't be needed anymore.
|
|
De-click will be per disk-reader, latency compensated and buffer-size
independent. Cue-monitoring should not be affected by de-click.
|
|
so that name/ports are unique
|
|
Empirically this decreases gc-spike duration (worst-case) by a factor of
two and speeds up the average gc-run by a factor of over 4 (depending
on the amount of memory used by the plugin).
|
|
|
|
This also tweaks fade behavior when the latency changes to prefer a
x-fade when possible.
This new variant does not support concurrent re-allocation and
execution. Hence the auto-connect thread needs to take a lock before
updating latencies (actually there's no need for an explicit update with
built-in backends, so this case remains to be updated further)
|
|
|
|
Previously Ardour used a /local/ per track vari-speed mechanism.
Now that the disk-reader is a latency-compensated processor, the speed
of each disk-reader would need to be maintained locally, offset by each
disk-reader's output latency. Furthermore each disk-reader may
produce a different number of samples, depending on its global alignment.
This commit introduces port-data resampling directly at the engine-level:
Up/down-sample all input ports at the beginning, and down/up-sample output
port-data using the inverse ratio at the end of the session's process
cycle.
The session itself is unaware of the speed-change, and only needs to
handle transport speeds {-1, 0, +1}.
This also allows for aligned cue-monitoring and vari-speed recording,
and also pitch-shifts synthesized MIDI along.
|
|
|
|
|
|
This API was not used, also superseded by record w/preroll.
|
|
|
|
Delay ports being exported by their playback latency.
|
|
The general goal is to align transport-sample to be the audible frame
and use that as "anchor" for all processing.
transport_sample cannot become negative (00:00:00:00 is the first audible
frame).
Internally transport pre-rolls (read-ahead) before the transport starts
to move. This allows inputs and disk to prefill the pipeline.
When starting to roll, the session counts down a global "remaning preroll"
counter, which is the worst-latency from in-to-out.
Each route in turn will start processing at its own output-latency.
Route::process_output_buffers() - which does the actual processing
incl disk i/o - begins by offsetting the "current sample" by the
route's process-latency and decrements the offset for each latent
processor. At the end of the function the output will be aligned
and match transport-sample - downstream-playback-latency (if any).
PS. This commit is a first step only: transport looping & vari-speed have
not yet been implemented/updated.
|
|
It was not working in sdio/6.0-pre anyway and with upcoming changes to
latency compensation the concept of per disk[stream/reader] will go away.
|
|
Session::post_playback_latency() sets the actual route latency,
so that playback latency notifications need to come after capture-
latency (backends follow the same rule: capture first).
NB. Session::initialize_latencies() was already using the correct order
|
|
|
|
|
|
* centralize signal_latency_at_***_position to processors
* update initial-delay/roll-delay when processor order changes
* consolidate signal-latency calculation: use the same method
for processor-changes and session's post_playback_latency.
* include relative output-delay in roll-delay
* fix capture processor position & optimize stem-export latency
(roll-delay fixes pending Route:roll() update)
|
|
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
|
|
member variable for this
|
|
|
|
|
|
with respect to all DiskReaders
|
|
this development branch
|
|
|
|
reader/writer objects drop their reference
|
|
|
|
|
|
|
|
separated disk i/o changes.
THIS WILL NOT RUN. THIS REQUIRES MANY CHANGES
|
|
When forking regions, copying playlists or saving snapshots we do not
have a reference to the track and cannot use the track's name as basis
for the new filename like Editor::fork_region() does.
A cloned midi region's name is based on the original region name.
This prevents endless addition "name-1-1-1-1-1-1-1-1.mid", adding
to the region's basename.
|
|
|
|
|
|
Remove various checks, add assert() for now (perhaps some old sessions?)
This fixes an off-by one issue when adding tracks (presentation
info order in add_routes_inner)
|
|
This is in preparation for "advanced session setup" allow a SessionSetup
Lua script to create the master-bus.
|
|
|
|
|
|
This does not completely fix the race-condition. The GUI
(e.g. connection-manager) may still hold a shared-ptr reference.
|
|
PortDrop unregisters backend ports, the backend will return a NULL
buffer-pointer, but the I/O object still exists (Metronome, LTC)
AudioBuffer::_data == 0
#0 msvcrt!memset () from C:\Windows\System32\msvcrt.dll
#1 ARDOUR::AudioBuffer::silence (this=0x2c410710, len=256, offset=0) at ../libs/ardour/audio_buffer.cc:88
#2 ARDOUR::AudioPort::cycle_end (this=0x34918730, nframes=256) at ../libs/ardour/audio_port.cc:66
#3 ARDOUR::PortManager::cycle_end (this=this@entry=0x23342770, nframes=nframes@entry=256)
[process callback w/o session]
|
|
|
|
|
|
|
|
The vast majority of errors reported by users as
"Cannot configure audio/midi engine with session parameters"
have nothing to do with engine-parameters.
|
|
This is in preparation for cloning MIDI-sources during snapshot save.
|
|
I think this was only to protect the float <=> string conversion in
Session::setup_click_state related to click gain which is now using
PBD::to_string/string_to and so no longer necessary.
|
|
|
|
|