summaryrefslogtreecommitdiff
path: root/gtk2_ardour/midi_tracer.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-06-29 13:46:18 +0000
committerCarl Hetherington <carl@carlh.net>2010-06-29 13:46:18 +0000
commitd7733cf2d78dea4bf6ca7180e801d042b777c512 (patch)
treee33cbd2a27a38f471827dc930923b007ac9afc8d /gtk2_ardour/midi_tracer.cc
parent7eb91510aa45676360a783355d30338d2cae9586 (diff)
More detail when tracing MMC.
git-svn-id: svn://localhost/ardour2/branches/3.0@7322 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/midi_tracer.cc')
-rw-r--r--gtk2_ardour/midi_tracer.cc48
1 files changed, 40 insertions, 8 deletions
diff --git a/gtk2_ardour/midi_tracer.cc b/gtk2_ardour/midi_tracer.cc
index 565d0f4911..24a465506e 100644
--- a/gtk2_ardour/midi_tracer.cc
+++ b/gtk2_ardour/midi_tracer.cc
@@ -198,18 +198,50 @@ MidiTracer::tracer (Parser&, byte* msg, size_t len)
} else {
- s += snprintf (&buf[s], bufsize, "%16s (%d) = [", "Sysex", (int) len);
- bufsize -= s;
-
- for (unsigned int i = 0; i < len && bufsize > 3; ++i) {
- if (i > 0) {
- s += snprintf (&buf[s], bufsize, " %02x", msg[i]);
+ if (len > 5 && msg[0] == 0xf0 && msg[1] == 0x7f && msg[3] == 0x06) {
+ /* MMC */
+ int cmd = msg[4];
+ if (cmd == 0x44 && msg[5] == 0x06 && msg[6] == 0x01) {
+ s += snprintf (
+ &buf[s], bufsize, " MMC locate to %d:%d:%d:%d.%d\n",
+ msg[7], msg[8], msg[9], msg[10], msg[11]
+ );
} else {
- s += snprintf (&buf[s], bufsize, "%02x", msg[i]);
+ std::string name;
+ if (cmd == 0x1) {
+ name = "STOP";
+ } else if (cmd == 0x3) {
+ name = "DEFERRED PLAY";
+ } else if (cmd == 0x6) {
+ name = "RECORD STROBE";
+ } else if (cmd == 0x7) {
+ name = "RECORD EXIT";
+ } else if (cmd == 0x8) {
+ name = "RECORD PAUSE";
+ }
+ if (!name.empty()) {
+ s += snprintf (&buf[s], bufsize, " MMC command %s\n", name.c_str());
+ } else {
+ s += snprintf (&buf[s], bufsize, " MMC command %02x\n", cmd);
+ }
}
+
+ } else {
+ /* other sys-ex */
+
+ s += snprintf (&buf[s], bufsize, "%16s (%d) = [", "Sysex", (int) len);
bufsize -= s;
+
+ for (unsigned int i = 0; i < len && bufsize > 3; ++i) {
+ if (i > 0) {
+ s += snprintf (&buf[s], bufsize, " %02x", msg[i]);
+ } else {
+ s += snprintf (&buf[s], bufsize, "%02x", msg[i]);
+ }
+ bufsize -= s;
+ }
+ s += snprintf (&buf[s], bufsize, "]\n");
}
- s += snprintf (&buf[s], bufsize, "]\n");
}
break;