summaryrefslogtreecommitdiff
path: root/libs/ardour/test/midi_clock_slave_test.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2011-12-09 19:59:23 +0000
committerCarl Hetherington <carl@carlh.net>2011-12-09 19:59:23 +0000
commit73461494d75ab794224cbe93021acfa51a8c98a9 (patch)
tree02738a5c19b178aebb3ae078e1bd2c2e8037eed2 /libs/ardour/test/midi_clock_slave_test.cc
parent1244cae5c1799c72dc7624dfd573704c56963ebe (diff)
Add simple framewalk_to_beats test and normalise naming
of test files. git-svn-id: svn://localhost/ardour2/branches/3.0@10954 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/test/midi_clock_slave_test.cc')
-rw-r--r--libs/ardour/test/midi_clock_slave_test.cc45
1 files changed, 45 insertions, 0 deletions
diff --git a/libs/ardour/test/midi_clock_slave_test.cc b/libs/ardour/test/midi_clock_slave_test.cc
new file mode 100644
index 0000000000..dcb159cb2c
--- /dev/null
+++ b/libs/ardour/test/midi_clock_slave_test.cc
@@ -0,0 +1,45 @@
+#include <sigc++/sigc++.h>
+#include "midi_clock_slave_test.h"
+
+using namespace std;
+using namespace ARDOUR;
+
+CPPUNIT_TEST_SUITE_REGISTRATION( MIDIClock_SlaveTest );
+
+void
+MIDIClock_SlaveTest::testStepResponse ()
+{
+ double speed = 1.0;
+ framepos_t position = 0;
+
+ MIDI::Parser* parser = 0;
+
+ TestSlaveSessionProxy *sess = (TestSlaveSessionProxy *) session;
+ framecnt_t period_size = 4096;
+ sess->set_period_size (period_size);
+
+ bandwidth = 1.0 / 60.0;
+
+ framepos_t start_time = 1000000;
+ start (*parser, start_time);
+
+ update_midi_clock (*parser, start_time);
+
+ for (framecnt_t i = 1; i<= 100 * period_size; i++) {
+ // simulate jitter
+ framecnt_t input_delta = framecnt_t (one_ppqn_in_frames + 0.1 * (double(random()) / double (RAND_MAX)) * one_ppqn_in_frames);
+
+ if (i % input_delta == 0) {
+ update_midi_clock (*parser, start_time + i);
+ }
+
+ if (i % period_size == 0) {
+ sess->next_period ();
+ speed_and_position (speed, position);
+ sess->request_transport_speed (speed);
+ }
+ }
+
+}
+
+