Transmit MTC on playhead drag, as per #3239.
git-svn-id: svn://localhost/ardour2/branches/3.0@7389 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
28e3215afa
commit
10ef65b696
@ -2138,7 +2138,9 @@ CursorDrag::motion (GdkEvent* event, bool)
|
|||||||
_editor->show_verbose_time_cursor (_cursor->current_frame, 10);
|
_editor->show_verbose_time_cursor (_cursor->current_frame, 10);
|
||||||
|
|
||||||
if (_editor->session() && _item == &_editor->playhead_cursor->canvas_item) {
|
if (_editor->session() && _item == &_editor->playhead_cursor->canvas_item) {
|
||||||
_editor->session()->send_mmc_locate (_editor->playhead_cursor->current_frame);
|
nframes64_t const f = _editor->playhead_cursor->current_frame;
|
||||||
|
_editor->session()->send_mmc_locate (f);
|
||||||
|
_editor->session()->send_full_time_code (f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -783,6 +783,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi
|
|||||||
boost::shared_ptr<SessionPlaylists> playlists;
|
boost::shared_ptr<SessionPlaylists> playlists;
|
||||||
|
|
||||||
void send_mmc_locate (nframes64_t);
|
void send_mmc_locate (nframes64_t);
|
||||||
|
int send_full_time_code (nframes64_t);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend class AudioEngine;
|
friend class AudioEngine;
|
||||||
@ -1133,7 +1134,6 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi
|
|||||||
|
|
||||||
bool _send_timecode_update; ///< Flag to send a full frame (Timecode) MTC message this cycle
|
bool _send_timecode_update; ///< Flag to send a full frame (Timecode) MTC message this cycle
|
||||||
|
|
||||||
int send_full_time_code(nframes_t nframes);
|
|
||||||
int send_midi_time_code_for_cycle(nframes_t nframes);
|
int send_midi_time_code_for_cycle(nframes_t nframes);
|
||||||
|
|
||||||
nframes_t adjust_apparent_position (nframes_t frames);
|
nframes_t adjust_apparent_position (nframes_t frames);
|
||||||
|
@ -345,9 +345,10 @@ Session::mmc_record_enable (MIDI::MachineControl &mmc, size_t trk, bool enabled)
|
|||||||
/** Send MTC Full Frame message (complete Timecode time) for the start of this cycle.
|
/** Send MTC Full Frame message (complete Timecode time) for the start of this cycle.
|
||||||
* This resets the MTC code, the next quarter frame message that is sent will be
|
* This resets the MTC code, the next quarter frame message that is sent will be
|
||||||
* the first one with the beginning of this cycle as the new start point.
|
* the first one with the beginning of this cycle as the new start point.
|
||||||
|
* @param t time to send.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
Session::send_full_time_code(nframes_t /*nframes*/)
|
Session::send_full_time_code (nframes64_t const t)
|
||||||
{
|
{
|
||||||
/* This function could easily send at a given frame offset, but would
|
/* This function could easily send at a given frame offset, but would
|
||||||
* that be useful? Does ardour do sub-block accurate locating? [DR] */
|
* that be useful? Does ardour do sub-block accurate locating? [DR] */
|
||||||
@ -361,11 +362,11 @@ Session::send_full_time_code(nframes_t /*nframes*/)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get timecode time for this transport frame
|
// Get timecode time for the given time
|
||||||
sample_to_timecode(_transport_frame, timecode, true /* use_offset */, false /* no subframes */);
|
sample_to_timecode (t, timecode, true /* use_offset */, false /* no subframes */);
|
||||||
|
|
||||||
transmitting_timecode_time = timecode;
|
transmitting_timecode_time = timecode;
|
||||||
outbound_mtc_timecode_frame = _transport_frame;
|
outbound_mtc_timecode_frame = t;
|
||||||
|
|
||||||
// I don't understand this bit yet.. [DR]
|
// I don't understand this bit yet.. [DR]
|
||||||
if (((mtc_timecode_bits >> 5) != MIDI::MTC_25_FPS) && (transmitting_timecode_time.frames % 2)) {
|
if (((mtc_timecode_bits >> 5) != MIDI::MTC_25_FPS) && (transmitting_timecode_time.frames % 2)) {
|
||||||
|
@ -268,7 +268,7 @@ Session::process_with_events (nframes_t nframes)
|
|||||||
* on locates (and allow slow slaves to position and prepare for rolling)
|
* on locates (and allow slow slaves to position and prepare for rolling)
|
||||||
*/
|
*/
|
||||||
if (_send_timecode_update) {
|
if (_send_timecode_update) {
|
||||||
send_full_time_code(nframes);
|
send_full_time_code (_transport_frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!process_can_proceed()) {
|
if (!process_can_proceed()) {
|
||||||
|
@ -562,7 +562,7 @@ Session::non_realtime_stop (bool abort, int on_entry, bool& finished)
|
|||||||
|
|
||||||
have_looped = false;
|
have_looped = false;
|
||||||
|
|
||||||
send_full_time_code (0);
|
send_full_time_code (_transport_frame);
|
||||||
|
|
||||||
if ((ptw & PostTransportLocate) && get_record_enabled()) {
|
if ((ptw & PostTransportLocate) && get_record_enabled()) {
|
||||||
/* capture start has been changed, so save pending state */
|
/* capture start has been changed, so save pending state */
|
||||||
|
Loading…
Reference in New Issue
Block a user