add a MTC/sysex test sequence
authorRobin Gareus <robin@gareus.org>
Mon, 11 Jul 2016 14:55:28 +0000 (16:55 +0200)
committerRobin Gareus <robin@gareus.org>
Mon, 11 Jul 2016 14:58:53 +0000 (16:58 +0200)
libs/backends/dummy/dummy_audiobackend.h
libs/backends/dummy/dummy_midi_seq.h

index fbb55b48ba23239f54f63bca2f54ba199e033a6e..bd597e3301995c6ccea48186ba0ae9d7d7862e18 100644 (file)
@@ -42,7 +42,7 @@ namespace DummyMidiData {
        typedef struct _MIDISequence {
                float   beat_time;
                uint8_t size;
-               uint8_t event[3];
+               uint8_t event[10];
        } MIDISequence;
 };
 
index a79966b808c56a9345499c8a205e51b1bcec727b..e809a47371242a2e1c8b72b6d506279b8921b959 100644 (file)
@@ -779,8 +779,241 @@ static const MIDISequence s7[] = { // channel1, nonsense
        { 4.00, 3, {0xff,  255, 0xff} }, // sentinel
 };
 
+static const MIDISequence s8[] = { // sysex
+       { 0.00, 10, {0xf0, 0x7f, 0x7f, 0x01, 0x01, /*hour + tc */ 0x20, /*min*/ 0x00, /*sec*/ 0x00, /*frame*/ 0x00, 0xf7} },  // 25fps, 00:00:00:00
+       // quarter frames spacing (in samples) at 25fps: SR / (25 * 4)
+       // DummyMidiPort::setup_generator uses 120bpm ie (SR / 2)
+       // hence the spacing is: SR / (25 * 4) / (SR / 2) = 0.2
+       { 1.00,  2, {0xf1, 0x00} },
+       { 1.02,  2, {0xf1, 0x10} },
+       { 1.04,  2, {0xf1, 0x20} },
+       { 1.06,  2, {0xf1, 0x30} },
+       { 1.08,  2, {0xf1, 0x40} },
+       { 1.10,  2, {0xf1, 0x50} },
+       { 1.12,  2, {0xf1, 0x60} },
+       { 1.14,  2, {0xf1, 0x72} },
+
+       { 1.16,  2, {0xf1, 0x02} },
+       { 1.18,  2, {0xf1, 0x10} },
+       { 1.20,  2, {0xf1, 0x20} },
+       { 1.22,  2, {0xf1, 0x30} },
+       { 1.24,  2, {0xf1, 0x40} },
+       { 1.26,  2, {0xf1, 0x50} },
+       { 1.28,  2, {0xf1, 0x60} },
+       { 1.30,  2, {0xf1, 0x72} },
+
+       { 1.32,  2, {0xf1, 0x04} },
+       { 1.34,  2, {0xf1, 0x10} },
+       { 1.36,  2, {0xf1, 0x20} },
+       { 1.38,  2, {0xf1, 0x30} },
+       { 1.40,  2, {0xf1, 0x40} },
+       { 1.42,  2, {0xf1, 0x50} },
+       { 1.43,  2, {0xf1, 0x60} },
+       { 1.46,  2, {0xf1, 0x72} },
+
+       { 1.48,  2, {0xf1, 0x06} },
+       { 1.50,  2, {0xf1, 0x10} },
+       { 1.52,  2, {0xf1, 0x20} },
+       { 1.54,  2, {0xf1, 0x30} },
+       { 1.56,  2, {0xf1, 0x40} },
+       { 1.58,  2, {0xf1, 0x50} },
+       { 1.60,  2, {0xf1, 0x60} },
+       { 1.62,  2, {0xf1, 0x72} },
+
+       { 1.64,  2, {0xf1, 0x08} },
+       { 1.66,  2, {0xf1, 0x10} },
+       { 1.68,  2, {0xf1, 0x20} },
+       { 1.70,  2, {0xf1, 0x30} },
+       { 1.72,  2, {0xf1, 0x40} },
+       { 1.74,  2, {0xf1, 0x50} },
+       { 1.76,  2, {0xf1, 0x60} },
+       { 1.78,  2, {0xf1, 0x72} },
+
+       { 1.80,  2, {0xf1, 0x0a} },
+       { 1.82,  2, {0xf1, 0x10} },
+       { 1.84,  2, {0xf1, 0x20} },
+       { 1.86,  2, {0xf1, 0x30} },
+       { 1.88,  2, {0xf1, 0x40} },
+       { 1.90,  2, {0xf1, 0x50} },
+       { 1.92,  2, {0xf1, 0x60} },
+       { 1.94,  2, {0xf1, 0x72} },
+
+       { 1.96,  2, {0xf1, 0x0c} },
+       { 1.98,  2, {0xf1, 0x10} },
+       { 2.00,  2, {0xf1, 0x20} },
+       { 2.02,  2, {0xf1, 0x30} },
+       { 2.04,  2, {0xf1, 0x40} },
+       { 2.06,  2, {0xf1, 0x50} },
+       { 2.08,  2, {0xf1, 0x60} },
+       { 2.10,  2, {0xf1, 0x72} },
+
+       { 2.12,  2, {0xf1, 0x0e} },
+       { 2.14,  2, {0xf1, 0x10} },
+       { 2.16,  2, {0xf1, 0x20} },
+       { 2.18,  2, {0xf1, 0x30} },
+       { 2.20,  2, {0xf1, 0x40} },
+       { 2.22,  2, {0xf1, 0x50} },
+       { 2.24,  2, {0xf1, 0x60} },
+       { 2.26,  2, {0xf1, 0x72} },
+
+       { 2.28,  2, {0xf1, 0x00} },
+       { 2.30,  2, {0xf1, 0x11} },
+       { 2.32,  2, {0xf1, 0x20} },
+       { 2.34,  2, {0xf1, 0x30} },
+       { 2.36,  2, {0xf1, 0x40} },
+       { 2.38,  2, {0xf1, 0x50} },
+       { 2.40,  2, {0xf1, 0x60} },
+       { 2.42,  2, {0xf1, 0x72} },
+
+       { 2.44,  2, {0xf1, 0x02} },
+       { 2.46,  2, {0xf1, 0x11} },
+       { 2.48,  2, {0xf1, 0x20} },
+       { 2.50,  2, {0xf1, 0x30} },
+       { 2.52,  2, {0xf1, 0x40} },
+       { 2.54,  2, {0xf1, 0x50} },
+       { 2.56,  2, {0xf1, 0x60} },
+       { 2.58,  2, {0xf1, 0x72} },
+
+       { 2.60,  2, {0xf1, 0x04} },
+       { 2.62,  2, {0xf1, 0x11} },
+       { 2.64,  2, {0xf1, 0x20} },
+       { 2.66,  2, {0xf1, 0x30} },
+       { 2.68,  2, {0xf1, 0x40} },
+       { 2.70,  2, {0xf1, 0x50} },
+       { 2.72,  2, {0xf1, 0x60} },
+       { 2.74,  2, {0xf1, 0x72} },
+
+       { 2.76,  2, {0xf1, 0x06} },
+       { 2.78,  2, {0xf1, 0x11} },
+       { 2.80,  2, {0xf1, 0x20} },
+       { 2.82,  2, {0xf1, 0x30} },
+       { 2.84,  2, {0xf1, 0x40} },
+       { 2.86,  2, {0xf1, 0x50} },
+       { 2.88,  2, {0xf1, 0x60} },
+       { 2.90,  2, {0xf1, 0x72} },
+
+       { 2.92,  2, {0xf1, 0x08} },
+       { 2.94,  2, {0xf1, 0x11} },
+       { 2.96,  2, {0xf1, 0x20} },
+       { 2.98,  2, {0xf1, 0x30} },
+       { 3.00,  2, {0xf1, 0x40} },
+       { 3.02,  2, {0xf1, 0x50} },
+       { 3.04,  2, {0xf1, 0x60} },
+       { 3.06,  2, {0xf1, 0x72} },
+
+       { 3.08,  2, {0xf1, 0x01} },
+       { 3.10,  2, {0xf1, 0x10} },
+       { 3.12,  2, {0xf1, 0x21} },
+       { 3.14,  2, {0xf1, 0x30} },
+       { 3.16,  2, {0xf1, 0x40} },
+       { 3.18,  2, {0xf1, 0x50} },
+       { 3.20,  2, {0xf1, 0x60} },
+       { 3.22,  2, {0xf1, 0x72} },
+
+       { 3.24,  2, {0xf1, 0x03} },
+       { 3.26,  2, {0xf1, 0x10} },
+       { 3.28,  2, {0xf1, 0x21} },
+       { 3.30,  2, {0xf1, 0x30} },
+       { 3.32,  2, {0xf1, 0x40} },
+       { 3.34,  2, {0xf1, 0x50} },
+       { 3.36,  2, {0xf1, 0x60} },
+       { 3.38,  2, {0xf1, 0x72} },
+
+       { 3.40,  2, {0xf1, 0x05} },
+       { 3.42,  2, {0xf1, 0x10} },
+       { 3.44,  2, {0xf1, 0x21} },
+       { 3.46,  2, {0xf1, 0x30} },
+       { 3.48,  2, {0xf1, 0x40} },
+       { 3.50,  2, {0xf1, 0x50} },
+       { 3.52,  2, {0xf1, 0x60} },
+       { 3.54,  2, {0xf1, 0x72} },
+
+       { 3.56,  2, {0xf1, 0x07} },
+       { 3.58,  2, {0xf1, 0x10} },
+       { 3.60,  2, {0xf1, 0x21} },
+       { 3.62,  2, {0xf1, 0x30} },
+       { 3.64,  2, {0xf1, 0x40} },
+       { 3.66,  2, {0xf1, 0x50} },
+       { 3.68,  2, {0xf1, 0x60} },
+       { 3.70,  2, {0xf1, 0x72} },
+
+       { 3.72,  2, {0xf1, 0x09} },
+       { 3.74,  2, {0xf1, 0x10} },
+       { 3.76,  2, {0xf1, 0x21} },
+       { 3.78,  2, {0xf1, 0x30} },
+       { 3.80,  2, {0xf1, 0x40} },
+       { 3.82,  2, {0xf1, 0x50} },
+       { 3.84,  2, {0xf1, 0x60} },
+       { 3.86,  2, {0xf1, 0x72} },
+
+       { 3.88,  2, {0xf1, 0x0b} },
+       { 3.90,  2, {0xf1, 0x10} },
+       { 3.92,  2, {0xf1, 0x21} },
+       { 3.94,  2, {0xf1, 0x30} },
+       { 3.96,  2, {0xf1, 0x40} },
+       { 3.98,  2, {0xf1, 0x50} },
+       { 4.00,  2, {0xf1, 0x60} },
+       { 4.02,  2, {0xf1, 0x72} },
+
+       { 4.04,  2, {0xf1, 0x0d} },
+       { 4.06,  2, {0xf1, 0x10} },
+       { 4.08,  2, {0xf1, 0x21} },
+       { 4.10,  2, {0xf1, 0x30} },
+       { 4.12,  2, {0xf1, 0x40} },
+       { 4.14,  2, {0xf1, 0x50} },
+       { 4.16,  2, {0xf1, 0x60} },
+       { 4.18,  2, {0xf1, 0x72} },
+
+       { 4.20,  2, {0xf1, 0x0f} },
+       { 4.22,  2, {0xf1, 0x10} },
+       { 4.24,  2, {0xf1, 0x21} },
+       { 4.26,  2, {0xf1, 0x30} },
+       { 4.28,  2, {0xf1, 0x40} },
+       { 4.30,  2, {0xf1, 0x50} },
+       { 4.32,  2, {0xf1, 0x60} },
+       { 4.34,  2, {0xf1, 0x72} },
+
+       { 4.36,  2, {0xf1, 0x01} },
+       { 4.38,  2, {0xf1, 0x11} },
+       { 4.40,  2, {0xf1, 0x21} },
+       { 4.42,  2, {0xf1, 0x30} },
+       { 4.44,  2, {0xf1, 0x40} },
+       { 4.46,  2, {0xf1, 0x50} },
+       { 4.48,  2, {0xf1, 0x60} },
+       { 4.50,  2, {0xf1, 0x72} },
+
+       { 4.52,  2, {0xf1, 0x03} },
+       { 4.54,  2, {0xf1, 0x11} },
+       { 4.56,  2, {0xf1, 0x21} },
+       { 4.58,  2, {0xf1, 0x30} },
+       { 4.60,  2, {0xf1, 0x40} },
+       { 4.62,  2, {0xf1, 0x50} },
+       { 4.64,  2, {0xf1, 0x60} },
+       { 4.66,  2, {0xf1, 0x72} },
+
+       { 4.68,  2, {0xf1, 0x05} },
+       { 4.70,  2, {0xf1, 0x11} },
+       { 4.72,  2, {0xf1, 0x21} },
+       { 4.74,  2, {0xf1, 0x30} },
+       { 4.76,  2, {0xf1, 0x40} },
+       { 4.78,  2, {0xf1, 0x50} },
+       { 4.80,  2, {0xf1, 0x60} },
+       { 4.82,  2, {0xf1, 0x72} },
+
+       { 4.84,  2, {0xf1, 0x07} },
+       { 4.86,  2, {0xf1, 0x11} },
+       { 4.88,  2, {0xf1, 0x21} },
+       { 4.90,  2, {0xf1, 0x30} },
+       { 4.92,  2, {0xf1, 0x40} },
+       { 4.94,  2, {0xf1, 0x50} },
+       { 4.96,  2, {0xf1, 0x60} },
+       { 4.98,  2, {0xf1, 0x72} },
+
+       { 5.00,  3, {0xff,  255, 0xff} }, // sentinel
+};
+
 static const MIDISequence *sequences[] = {
-       s0, s1, s2, s3, s4, s5, s6, s7
+       s0, s1, s2, s3, s4, s5, s6, s7, s8
 };
 
 static const char *sequence_names[] = {
@@ -791,7 +1024,8 @@ static const char *sequence_names[] = {
        "Sustain Pedal Test",
        "CCs only",
        "Aftertouch",
-       "Nonsense, Dups"
+       "Nonsense, Dups",
+       "MTC (2sec)"
 };
 
 }} // namespace