Age | Commit message (Collapse) | Author |
|
|
|
Loading a session includes setting the sync-source, this is queued
to happen during process(), which may or may not be while Session::Loading
is still set.
This change only catches the common case: internal transport, no slave.
|
|
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.
|
|
|
|
The processors will becomes responsible to know about loop-positions
and map latency-compensated start_sample, end_sample into the loop-range
as needed.
|
|
|
|
|
|
|
|
This API was not used, also superseded by record w/preroll.
|
|
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.
|
|
|
|
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
|
|
|
|
that i can fetch it on another machine
|
|
member variable for this
|
|
|
|
|
|
|
|
|
|
since we started
|
|
|
|
this development branch
|
|
|
|
|
|
|
|
|
|
|
|
This calls for a unified API to invoke
Automatable methods ::transport_located() and ::transport_stopped()
on Stripables, rather than indirectly calling it via
Route::non_realtime_locate(), Route::nonrealtime_handle_transport_stopped()
|
|
|
|
ARDOUR::AutomationList is no longer using LocaleGuards as float <=> string
conversion is using PBD::to_string/string_to so the reason for adding these
guards as per comment no longer applies.
|
|
If _engine.transport_frame() is not up to date, we emit Located in
Session::backend_sync_callback() because that's when audible_frame() is up to
date. We don't want to emit it twice, because then, the playhead jumps back and
forth.
* mouse click in the ruler -> jump to requested location
* mouse release -> jump to old location (because audible_frame has to catch up)
* backend_sync_callback() called -> jump to new location
|
|
|
|
|
|
|
|
* Start recording at preroll, trim region to skip preroll at rec-stop
* Keep old punch-in rec-at-preroll API for tape-tracks (later)
|
|
* rename: indicate that recording happens after preroll, punch-in
* move API into libardour: rec+roll (no separate setup, seek, roll APIs)
|
|
|
|
|
|
MTC returns not-locked (no flywheel) when the signal is lost, in which case
Session::follow_slave() jumps to no_roll and ignores the slave-position.
The MTC slave does explicitly request a transport-locate and transport-stop.
Yet, Session::realtime_stop() honors _requested_return_frame for whatever
reason
|
|
|
|
|
|
and used. The controls now own their own state, rather than proxy for state in their owners.
Massive changes all over the code to accomodate this. Many things are not finished. Consider this a backup safety commit
|
|
Various session rt-events set "_send_timecode_update" to true,
but at the same time queue post-transport-work.
The timecode-update is generated, but due to pending transport work
session->silent() is true and the timecode was never sent.
|
|
..to prevent switching forth and back during individual
::state(), ::set_state() when loading/saving the session or locating.
|
|
amend 939808a7
|
|
|
|
|
|
|
|
Paul Davis was responsible for introducing almost all of this.
|