void onGlobalMessageCallback() { printBuf(); if (!global.fromSysex(MidiSysex.data, MidiSysex.recordLen)) { fprintf(stderr, "error parsing global\n"); } else { printf("parsed global!\n"); } printf("\n"); if (!inCallback) { inCallback = true; uint16_t len = global.toSysex(sysexBuf, sizeof(sysexBuf)); // hexDump(sysexBuf, len); parseSysex(sysexBuf, len); } inCallback = false; }
void onSongMessageCallback() { printBuf(); if (!song.fromSysex(MidiSysex.data, MidiSysex.recordLen)) { fprintf(stderr, "error parsing song\n"); } else { printf("parsed song!\n"); } printf("\n"); if (!inCallback) { inCallback = true; uint16_t len = song.toSysex(sysexBuf, sizeof(sysexBuf)); hexDump(sysexBuf, len); parseSysex(sysexBuf, len); } inCallback = false; }
void onPatternMessageCallback() { // hexDump(MidiSysex.data, MidiSysex.recordLen); printBuf(); if (!pattern.fromSysex(MidiSysex.data, MidiSysex.recordLen)) { fprintf(stderr, "error parsing pattern\n"); } else { printf("parsed pattern!\n"); pattern.print(); } printf("\n"); if (!inCallback) { inCallback = true; uint16_t len = pattern.toSysex(sysexBuf, sizeof(sysexBuf)); // hexDump(sysexBuf, len); parseSysex(sysexBuf, len); } inCallback = false; }
bool MidiParser::doParse() { if (!parseHeader()) return false; if (format == 0xF0) return parseSysex(); qDebug() << "MidiParser: MIDI file format" << format; switch(format) { case 0: if (numberOfTracks != 1) { qDebug() << "MidiParser: MIDI file format error: MIDI files format 0 must have 1 MIDI track, not" << numberOfTracks; return false; } return parseTrack(midiEventList); case 1: if (numberOfTracks > 0) { QVector<MidiEventList> trackList(numberOfTracks); for (uint i = 0; i < numberOfTracks; i++) { qDebug() << "MidiParser: Parsing & merging MIDI track" << i + 1; if (!parseTrack(trackList[i])) return false; } mergeMidiEventLists(trackList); return true; } qDebug() << "MidiParser: MIDI file format error: MIDI files format 1 must have at least 1 MIDI track"; return false; case 2: for (uint i = 0; i < numberOfTracks; i++) { qDebug() << "MidiParser: Parsing & appending MIDI track" << i + 1; MidiEventList list; if (!parseTrack(list)) return false; midiEventList += list; } return true; default: qDebug() << "MidiParser: MIDI file format error: unknown MIDI file format" << format; return false; } }