'ad hoc application for translating a midi file to csv (time, statusbyte, databyte1, databyte 2) 'fill in the name of the file in the variable fn #COMPILE EXE #DIM ALL #INCLUDE "C:\b\pb\winapi\win32api.inc" #INCLUDE "C:\b\pb\gmt\g_kons.bi" #INCLUDE "c:\b\pb\gmt\g_type.bi" DECLARE FUNCTION ParseMidifile LIB "g_file.dll" (BYVAL fn AS STRING, BYREF sq() AS ParsedMidiType, BYREF info AS STRING, BYREF trackinfo AS STRING) AS LONG FUNCTION PBMAIN () AS LONG LOCAL fn AS STRING LOCAL sq() AS PArsedMidiType LOCAL trackinfo AS STRING LOCAL info AS STRING LOCAL i AS LONG LOCAL f AS LONG fn = "C:\midifiles\cage_john\aslsp-raw.mid" DIM sq(10) 'redimmed by parsemidifile ParseMidiFile fn, sq(), info, trackinfo fn = REMOVE$(fn, ".mid") fn = fn + ".csv" f = FREEFILE OPEN fn FOR OUTPUT ACCESS WRITE LOCK WRITE AS f PRINT# f, "time (ms), statusbyte, databyte1, datbaty2" FOR i = LBOUND(sq) TO UBOUND(sq) IF ISFALSE sq(i).bstat THEN ITERATE FOR PRINT# f, STR$(sq(i).time) + "," + STR$(sq(i).bstat) + "," + STR$(sq(i).bdat1) + "," + STR$(sq(i).bdat2) NEXT CLOSE f MSGBOX "conversion to " + TRIM$(fn) + " done",,"midi2csv" END FUNCTION