From 1c7e446cb4819dfe820067803c15030e6fc3f49a Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 15 Nov 2019 15:58:29 -0700 Subject: better transport master behavior when working with sample-clock-synced transport masters --- libs/ardour/transport_master_manager.cc | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) (limited to 'libs/ardour/transport_master_manager.cc') diff --git a/libs/ardour/transport_master_manager.cc b/libs/ardour/transport_master_manager.cc index 22faf4dd85..dbbd5c57bc 100644 --- a/libs/ardour/transport_master_manager.cc +++ b/libs/ardour/transport_master_manager.cc @@ -204,7 +204,23 @@ TransportMasterManager::pre_process_transport_masters (pframes_t nframes, sample return 1.0; } - if (_master_speed != 0.0) { + if (_current_master->sample_clock_synced()) { + + /* No master DLL required. Speed identified by the master is + * our speed, quantized to {1.0, 0.0, -1.0} + */ + + if (_master_speed > 0.0f) { + engine_speed = 1.0f; + } else if (_master_speed < 0.0f) { + engine_speed = -1.0f; + } else { + engine_speed = 0.0f; + } + + DEBUG_TRACE (DEBUG::Slave, string_compose ("S-clock synced master speed %1 used as %2\n", _master_speed, engine_speed)); + + } else if (_master_speed != 0.0) { samplepos_t delta = _master_position; @@ -264,18 +280,6 @@ TransportMasterManager::pre_process_transport_masters (pframes_t nframes, sample engine_speed = 1.0; } - if (_current_master->sample_clock_synced() && engine_speed != 0.0f) { - - /* if the master is synced to our audio interface via word-clock or similar, then we assume that its speed is binary: 0.0 or 1.0 - (since our sample clock cannot change with respect to it). - */ - if (engine_speed > 0.0) { - engine_speed = 1.0; - } else if (engine_speed < 0.0) { - engine_speed = -1.0; - } - } - /* speed is set, we're locked, and good to go */ DEBUG_TRACE (DEBUG::Slave, string_compose ("%1: computed speed-to-follow-master as %2\n", _current_master->name(), engine_speed)); -- cgit v1.2.3