blob: fdccf56ab59ff44b3ce5c820b5165431bb74c519 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
#include <sigc++/sigc++.h>
#include "midi_clock_test.h"
using namespace std;
using namespace ARDOUR;
CPPUNIT_TEST_SUITE_REGISTRATION(MIDIClock_Test);
void
MclkTestMaster::testStepResponse ()
{
double speed = 1.0;
samplepos_t position = 0;
MIDI::Parser* parser = 0;
samplecnt_t period_size = 4096;
samplepos_t start_time = 1000000;
start (*parser, start_time);
update_midi_clock (*parser, start_time);
for (samplecnt_t i = 1; i <= 100 * period_size; i++) {
/* simulate jitter */
samplecnt_t input_delta = samplecnt_t (one_ppqn_in_samples + 0.1 * (double(g_random_int()) / double (RAND_MAX)) * one_ppqn_in_samples);
if (i % input_delta == 0) {
update_midi_clock (*parser, start_time + i);
}
if (i % period_size == 0) {
samplepos_t most_recent;
samplepos_t when;
speed_and_position (speed, position, most_recent, when, start_time + i);
// TODO CPPUNIT_ASSERT_EQUAL ?!
}
}
}
void MIDIClock_Test::run_test ()
{
/* Note: A running engine is required to construct
* ARDOUR::MIDIClock_TransportMaster
*/
MclkTestMaster* m = new MclkTestMaster;
m->set_session (_session);
m->testStepResponse ();
delete m;
}
|