From c56e99cd098d4bd59bc3db94e0a34d18090d93e8 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 27 Apr 2020 15:02:22 -0600 Subject: nominal improvement for MTC master: use port latency to adjust sampletimes that MTC events "occured at" --- libs/ardour/mtc_slave.cc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'libs/ardour/mtc_slave.cc') diff --git a/libs/ardour/mtc_slave.cc b/libs/ardour/mtc_slave.cc index b73742d7f9..848e972244 100644 --- a/libs/ardour/mtc_slave.cc +++ b/libs/ardour/mtc_slave.cc @@ -70,6 +70,10 @@ MTC_TransportMaster::MTC_TransportMaster (std::string const & name) , printed_timecode_warning (false) { init (); + + resync_latency(); + + AudioEngine::instance()->GraphReordered.connect_same_thread (port_connections, boost::bind (&MTC_TransportMaster::resync_latency, this)); } MTC_TransportMaster::~MTC_TransportMaster() @@ -88,6 +92,16 @@ MTC_TransportMaster::init () reset (true); } +void +MTC_TransportMaster::resync_latency() +{ + DEBUG_TRACE (DEBUG::MTC, "MTC resync_latency()\n"); + + if (_port) { + _port->get_connected_latency_range (mtc_slave_latency, false); + } +} + void MTC_TransportMaster::create_port () { @@ -129,6 +143,8 @@ MTC_TransportMaster::pre_process (MIDI::pframes_t nframes, samplepos_t now, boos maybe_reset (); + now -= mtc_slave_latency.max; + _midi_port->read_and_parse_entire_midi_buffer_with_no_speed_adjustment (nframes, parser, now); if (session_pos) { -- cgit v1.2.3