X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fmidi_tracer.cc;h=51c9ae174f2b646f97e8ee69a6495187c431151b;hb=b461bc1dc1970a9e147c43a721d3155f6215f8c7;hp=a1ac7e14f9f83089270181fa9c0bf2463f4de118;hpb=ea23298f10e9587eba483cb54a6f7d75ca68126a;p=ardour.git diff --git a/gtk2_ardour/midi_tracer.cc b/gtk2_ardour/midi_tracer.cc index a1ac7e14f9..51c9ae174f 100644 --- a/gtk2_ardour/midi_tracer.cc +++ b/gtk2_ardour/midi_tracer.cc @@ -17,7 +17,6 @@ */ -#define __STDC_FORMAT_MACROS 1 #include #include @@ -134,8 +133,7 @@ MidiTracer::port_changed () Port* p = Manager::instance()->port (_port_combo.get_active_text()); if (p) { - Parser* parser = p->input() ? p->input() : p->output(); - parser->any.connect_same_thread (_parser_connection, boost::bind (&MidiTracer::tracer, this, _1, _2, _3)); + p->parser()->any.connect_same_thread (_parser_connection, boost::bind (&MidiTracer::tracer, this, _1, _2, _3)); } } @@ -249,52 +247,57 @@ MidiTracer::tracer (Parser&, byte* msg, size_t len) break; } - } else { - - 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 %02d:%02d:%02d:%02d.%02d\n", - msg[7], msg[8], msg[9], msg[10], msg[11] - ); + } else 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 %02d:%02d:%02d:%02d.%02d\n", + msg[7], msg[8], msg[9], msg[10], msg[11] + ); + } else { + 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 { - 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); - } + s += snprintf (&buf[s], bufsize, " MMC command %02x\n", cmd); } - - } else { - /* other sys-ex */ + } + + } else if (len == 10 && msg[0] == 0xf0 && msg[1] == 0x7f && msg[9] == 0xf7) { - 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; + /* MTC full frame */ + s += snprintf ( + &buf[s], bufsize, " MTC full frame to %02d:%02d:%02d:%02d\n", msg[5] & 0x1f, msg[6], msg[7], msg[8] + ); + + } 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]); } - s += snprintf (&buf[s], bufsize, "]\n"); + bufsize -= s; } + s += snprintf (&buf[s], bufsize, "]\n"); } break;