void TestEventList(const char *pFilename) { MIDI_FILE *mf = midiFileOpen(pFilename); if (mf) { MIDI_MSG msg; int i, iNum; unsigned int j; midiReadInitMessage(&msg); iNum = midiReadGetNumTracks(mf); for(i=0;i<iNum;i++) { printf("# Track %d\n", i); while(midiReadGetNextMessage(mf, i, &msg)) { printf("\t"); for(j=0;j<msg.iMsgSize;j++) printf("%.2x ", msg.data[j]); printf("\n"); } } midiReadFreeMessage(&msg); midiFileClose(mf); } }
void LoadMIDIEventList(const char *pFilename) { printf("--- MIDISYS ENGINE: LoadMIDIEventList(\"%s\")\n", pFilename); MIDI_FILE *mf = midiFileOpen(pFilename); char str[128]; int ev; int timeline_index = 0; int track_index = 0; MIDI_MSG msg; if (mf) { int i, iNum; unsigned int j; midiReadInitMessage(&msg); iNum = midiReadGetNumTracks(mf); for(i=0;i<iNum;i++) { #ifdef SUPERVERBOSE printf("# Track %d\n", i); #endif while(midiReadGetNextMessage(mf, i, &msg)) { #ifdef SUPERVERBOSE printf(" %.6ld ", msg.dwAbsPos); #endif if (msg.bImpliedMsg) { ev = msg.iImpliedMsg; } else { ev = msg.iType; } memcpy(&timeline[track_index][timeline_index], &msg, sizeof(MIDI_MSG)); if (ev == msgMetaEvent && msg.MsgData.MetaEvent.iType == metaTrackName) { strncpy(timeline_trackname[track_index], msg.MsgData.MetaEvent.Data.Text.pData, 8); timeline_trackname[track_index][8] == '\0'; printf("track #%d, name = \"%s\"\n", track_index, timeline_trackname[track_index]); } #ifdef SUPERVERBOSE DebugPrintEvent(ev,msg); #endif timeline_index++; } printf("track length: %d\n", timeline_index); timeline_tracklength[track_index] = timeline_index; track_index++; timeline_index = 0; } timeline_trackcount = track_index; midiReadFreeMessage(&msg); midiFileClose(mf); } //timeline_length = timeline_index+1; printf("--- MIDISYS ENGINE: LoadMIDIEventList() success\n"); }