From 38e94875647782fa6c28e25be471f0cff6c97d2a Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 27 Jul 2017 14:59:22 -0400 Subject: when calculating average slave/master delta, use absolute value. We're interested in average distance between slave/master, the direction is irrelevant and using sign as direction causes the computed average to be absurd --- libs/ardour/session_process.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'libs/ardour/session_process.cc') diff --git a/libs/ardour/session_process.cc b/libs/ardour/session_process.cc index b9af7c5ad6..badddf2fba 100644 --- a/libs/ardour/session_process.cc +++ b/libs/ardour/session_process.cc @@ -598,7 +598,7 @@ Session::follow_slave (pframes_t nframes) */ if (_slave_state == Running) { - calculate_moving_average_of_slave_delta(dir, this_delta); + calculate_moving_average_of_slave_delta(dir, abs(this_delta)); } } @@ -651,8 +651,8 @@ Session::follow_slave (pframes_t nframes) slave_speed)); } - if (!actively_recording() && (framecnt_t) abs(average_slave_delta) > _slave->resolution()) { - DEBUG_TRACE (DEBUG::Slave, string_compose ("average slave delta %1 greater than slave resolution %2 => silent motion\n", abs(average_slave_delta), _slave->resolution())); + if (!actively_recording() && (framecnt_t) average_slave_delta > _slave->resolution()) { + DEBUG_TRACE (DEBUG::Slave, string_compose ("average slave delta %1 greater than slave resolution %2 => silent motion\n", average_slave_delta, _slave->resolution())); /* run routes as normal, but no disk output */ cerr << "sync too far apart " << average_slave_delta << ", NO disk audio for now\n"; DiskReader::set_no_disk_output (true); @@ -709,7 +709,7 @@ Session::calculate_moving_average_of_slave_delta (int dir, framecnt_t this_delta average_slave_delta /= (int32_t) delta_accumulator_size; if (average_slave_delta < 0L) { average_dir = -1; - average_slave_delta = abs(average_slave_delta); + average_slave_delta = average_slave_delta; } else { average_dir = 1; } -- cgit v1.2.3