diff --git a/libs/ardour/midi_clock_slave.cc b/libs/ardour/midi_clock_slave.cc index 4c73c45f49..16f4544062 100644 --- a/libs/ardour/midi_clock_slave.cc +++ b/libs/ardour/midi_clock_slave.cc @@ -346,6 +346,10 @@ MIDIClock_Slave::speed_and_position (double& speed, nframes64_t& pos) // calculate speed speed = ((t1 - t0) * session->frame_rate()) / one_ppqn_in_frames; + + // provide a 3% deadzone to lock the speed + if (fabs(speed - 1.0) <= 0.03) + speed = 1.0; // calculate position if (engine_now > last_timestamp) { diff --git a/libs/ardour/test/midi_clock_slave_test.cpp b/libs/ardour/test/midi_clock_slave_test.cpp index 1fc0ef7dc1..a555558c3d 100644 --- a/libs/ardour/test/midi_clock_slave_test.cpp +++ b/libs/ardour/test/midi_clock_slave_test.cpp @@ -15,9 +15,10 @@ MIDIClock_SlaveTest::testStepResponse () MIDI::Parser* parser = 0; TestSlaveSessionProxy *sess = (TestSlaveSessionProxy *) session; - nframes64_t period_size = 1024; + nframes64_t period_size = 4096; sess->set_period_size (period_size); - + + bandwidth = 1.0 / 60.0; nframes64_t start_time = 1000000; start (*parser, start_time);