Age | Commit message (Collapse) | Author |
|
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.
|
|
We can't check for Session::actively_recording() because punch out may have disabled that. Rather
than add logic to check if a flush is needed (which is not much different than the code that runs
as part of the flush to disk), just do a flush anyway.
|
|
|
|
connected with play-loop just being enabled"
|
|
|
|
|
|
an "is-rolling" test
|
|
|
|
|
|
auto-return to last roll location or nothing
|
|
ardour-merge-from-tracks (just the libs/* section)
|
|
to match Tracks' logic
|
|
|
|
changes); remove debug output
|
|
add missing set_track_loop() call for playhead priority
|
|
Conflicts:
libs/ardour/ardour/session.h
libs/ardour/ardour/types.h
libs/ardour/enums.cc
libs/ardour/session_transport.cc
system_config
|
|
session loading
Conflicts:
libs/ardour/diskstream.cc
libs/ardour/session.cc
libs/ardour/session_state.cc
Conflicts:
libs/ardour/session.cc
|
|
When refilling playback buffer, try to fill it completely, or at least
using the next-lowest power-of-2 as the amount to read. When locating,
where we use do_refill_with_alloc(), only partially fill the buffer.
Work not yet finished, but possibly promising.
|
|
|
|
MTC source is activated
This is required for the case when we leave Tracks ready for record and then activate MTC source.
|
|
The general design here is wrong, because it should be more general and cover all possible sync sources.
But it does work, it is used in Tracks, and my attempt to do it correctly revealed the problem to be
an EXTREMELY difficult design issue (as in: two weeks of work on it did not really solve the
fundamental issues with slave design).
So, here it is for now, c/o Grygorii
|
|
dropped to 0 outside, it's illegal. It may cause "should_do_transport_work" go below 0 and make butler to round for a very-very long time (hang and possible lock of other threads) before stop() call returns.
_butler->stop () is synchronous, so its safe to wait in this call for butler to finish it's work.
[Reviewed by] PDavis
|
|
|
|
realtime processor re-ordering does not require
a route resort nor latency compensation update.
(which were done as callback in same thread)
|
|
|
|
Session::unset_play_loop() needed to be a no-op if play loop was
already false, and this was exacerbated now that it potentially
schedules butler transport work.
|
|
Session::locate()
|
|
[Reviewed by] REQUIRED REVIEW FROM PAUL DAVIS
|
|
Try to make sure that we appropriately reset and refill track
buffers whenever we enter/leave loop playback,and whenever
we locate. In addition, if we start playing somewhere other
than the loop range while loop is enabled, then the first
time we hit the loop end, set up the track buffers.
Conflicts:
libs/ardour/session_transport.cc
|
|
Something, somewhere has to tell tracks to refill their buffers with
the special loop-data-only magic
|
|
later, when coming back to the loop)
Conflicts:
libs/ardour/ardour/session.h
libs/ardour/session.cc
libs/ardour/session_transport.cc
|