Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
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;
	}
}