MIDClock_Slave: Introduce a 3% deadzone around speed 1.0 to lock in the speed
authorHans Baier <hansfbaier@googlemail.com>
Fri, 29 Jan 2010 16:07:40 +0000 (16:07 +0000)
committerHans Baier <hansfbaier@googlemail.com>
Fri, 29 Jan 2010 16:07:40 +0000 (16:07 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@6593 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/ardour/midi_clock_slave.cc
libs/ardour/test/midi_clock_slave_test.cpp

index 4c73c45f495d4f1916d228c559339e3ea4dfa1e8..16f45440620f85b921e3e56f32fcd6a8c81f1a73 100644 (file)
@@ -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) {
index 1fc0ef7dc15a058467467d84338ea2e0e8210d37..a555558c3db85f9682ea8ffef853f2d82d621d4f 100644 (file)
@@ -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);