13
0

Improve MidiTracer, format MMC messages

This commit is contained in:
Robin Gareus 2023-06-03 18:10:40 +02:00
parent db97db2513
commit 766e9dc7a1
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04

View File

@ -415,18 +415,63 @@ MidiTracer::tracer (Parser&, MIDI::byte* msg, size_t len, samplecnt_t now)
&buf[s], bufsize, " MMC locate to %02d:%02d:%02d:%02d.%02d\n", &buf[s], bufsize, " MMC locate to %02d:%02d:%02d:%02d.%02d\n",
msg[7], msg[8], msg[9], msg[10], msg[11] msg[7], msg[8], msg[9], msg[10], msg[11]
); );
} else if (cmd == 0x47 && msg[5] == 0x03) {
uint8_t sh = msg[6];
uint8_t sm = msg[7];
uint8_t sl = msg[8];
bool forward = sh & (1<<6) ? false : true;
size_t left_shift = sh & 0x38;
size_t integral = ((sh & 0x7) << left_shift) | (sm >> (7 - left_shift));
size_t fractional = ((sm << left_shift) << 7) | sl;
float shuttle_speed = integral + ((float)fractional / (1 << (14 - left_shift)));
s += snprintf (&buf[s], bufsize, " MMC Shuttle %s%f\n", forward ? "+" : "-", shuttle_speed);
} else { } else {
std::string name; std::string name;
if (cmd == 0x1) { switch (cmd) {
name = "STOP"; case 0x01:
} else if (cmd == 0x3) { name = "Stop";
name = "DEFERRED PLAY"; break;
} else if (cmd == 0x6) { case 0x02:
name = "RECORD STROBE"; name = "Play";
} else if (cmd == 0x7) { break;
name = "RECORD EXIT"; case 0x03:
} else if (cmd == 0x8) { name = "Deferred Play";
name = "RECORD PAUSE"; break;
case 0x04:
name = "Fast Forward";
break;
case 0x05:
name = "Rewind";
break;
case 0x06:
name = "Record Strobe";
break;
case 0x07:
name = "Record Exit";
break;
case 0x08:
name = "Record Pause";
break;
case 0x09:
name = "Pause";
break;
case 0x0a:
name = "Eject";
break;
case 0x0b:
name = "Chase";
break;
case 0x40:
name = "Write (ARM Tracks)";
break;
case 0x0d:
name = "MMC Reset";
break;
default:
break;
} }
if (!name.empty()) { if (!name.empty()) {
s += snprintf (&buf[s], bufsize, " MMC command %s\n", name.c_str()); s += snprintf (&buf[s], bufsize, " MMC command %s\n", name.c_str());