Dummy: add MMC test sequence
This commit is contained in:
parent
766e9dc7a1
commit
0006f4d8cd
@ -1738,7 +1738,45 @@ void DummyMidiPort::midi_generate (const pframes_t n_samples)
|
||||
return;
|
||||
}
|
||||
|
||||
if (_midi_seq_dat[0].beat_time < -1) {
|
||||
if (_midi_seq_dat[0].beat_time < -2) {
|
||||
static const uint8_t mmc_seq[][14] = {
|
||||
{13, 0xf0, 0x7f, 0x7f, 0x06, 0x44, 0x06, 0x01, // Locate to 00:01:02:03
|
||||
/*H*/ 0x00, /*M*/ 0x01, /*S*/ 0x02, /*F*/ 0x03, /*SF*/ 0x00, 0xf7},
|
||||
{ 6, 0xf0, 0x7f, 0x7f, 0x06, 0x01, 0xf7}, // Stop
|
||||
{ 6, 0xf0, 0x7f, 0x7f, 0x06, 0x02, 0xf7}, // Play
|
||||
{ 6, 0xf0, 0x7f, 0x7f, 0x06, 0x01, 0xf7}, // Stop
|
||||
{ 6, 0xf0, 0x7f, 0x7f, 0x06, 0x04, 0xf7}, // Fast Foward
|
||||
{ 6, 0xf0, 0x7f, 0x7f, 0x06, 0x02, 0xf7}, // Roll
|
||||
{ 6, 0xf0, 0x7f, 0x7f, 0x06, 0x05, 0xf7}, // Rewind
|
||||
{ 6, 0xf0, 0x7f, 0x7f, 0x06, 0x01, 0xf7}, // Stop
|
||||
{13, 0xf0, 0x7f, 0x7f, 0x06, 0x44, 0x06, 0x01, // Locate to 00:00:00:00
|
||||
/*H*/ 0x00, /*M*/ 0x00, /*S*/ 0x00, /*F*/ 0x00, /*SF*/ 0x00, 0xf7},
|
||||
{ 6, 0xf0, 0x7f, 0x7f, 0x06, 0x03, 0xf7}, // Deferred Play
|
||||
{ 6, 0xf0, 0x7f, 0x7f, 0x06, 0x09, 0xf7}, // Pause
|
||||
{ 6, 0xf0, 0x7f, 0x7f, 0x06, 0x06, 0xf7}, // Record Strobe (implies play)
|
||||
{ 6, 0xf0, 0x7f, 0x7f, 0x06, 0x07, 0xf7}, // Record Exit (keeps rolling)
|
||||
{ 6, 0xf0, 0x7f, 0x7f, 0x06, 0x08, 0xf7}, // Record Pause (rec again)
|
||||
{ 6, 0xf0, 0x7f, 0x7f, 0x06, 0x09, 0xf7}, // Pause
|
||||
{ 6, 0xf0, 0x7f, 0x7f, 0x06, 0x01, 0xf7}, // Stop
|
||||
{10, 0xf0, 0x7f, 0x7f, 0x06, 0x47, 0x03, // Shuttle (set speed)
|
||||
/*SH*/ 0x02, /*SM*/ 0x40, /*SL*/ 0x00, 0xf7}, // 2 + 8192 / 16384
|
||||
{ 6, 0xf0, 0x7f, 0x7f, 0x06, 0x02, 0xf7}, // Play
|
||||
// TODO cmdStep(0x48), cmdWrite(0x40/0x41)+recArm(0x4f), cmdWrite(0x40/0x41)+mute(0x62)
|
||||
};
|
||||
/* MMC */
|
||||
pframes_t pp = pulse_position ();
|
||||
if (pp < n_samples - 1) {
|
||||
static const int dly_sec = 3;
|
||||
int n_cmds = sizeof (mmc_seq) / sizeof (mmc_seq[0]);
|
||||
if (0 == (_midi_seq_time % dly_sec)) {
|
||||
int seq = _midi_seq_time / dly_sec;
|
||||
_buffer.push_back (std::shared_ptr<DummyMidiEvent>(new DummyMidiEvent (pp, &mmc_seq[seq][1], mmc_seq[seq][0])));
|
||||
}
|
||||
_midi_seq_time = (_midi_seq_time + 1) % (dly_sec * n_cmds);
|
||||
}
|
||||
return;
|
||||
|
||||
} else if (_midi_seq_dat[0].beat_time < -1) {
|
||||
/* MTC generator */
|
||||
const int audio_samples_per_video_frame = _midi_seq_spb; // sample-rate / 25
|
||||
const int audio_samples_per_qf = audio_samples_per_video_frame / 4;
|
||||
|
@ -787,8 +787,13 @@ static const MIDISequence s9[] = {
|
||||
{-1.0, 0, {0} }, // MClk Generator
|
||||
};
|
||||
|
||||
static const MIDISequence s10[] = {
|
||||
{-3.0, 0, {0} }, // MMC Generator
|
||||
};
|
||||
|
||||
|
||||
static const MIDISequence *sequences[] = {
|
||||
s0, s1, s2, s3, s4, s5, s6, s7, s8, s9
|
||||
s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10
|
||||
};
|
||||
|
||||
static const char *sequence_names[] = {
|
||||
@ -801,7 +806,8 @@ static const char *sequence_names[] = {
|
||||
"Aftertouch",
|
||||
"Nonsense, Dups",
|
||||
"MTC 25fps",
|
||||
"MClk 120 BPM"
|
||||
"MClk 120 BPM",
|
||||
"MMC SysEx"
|
||||
};
|
||||
|
||||
}} // namespace
|
||||
|
Loading…
Reference in New Issue
Block a user