Reading General MIDI files

    Sep 04 2013 | 4:00 pm
    I want to be able to read in General MIDI files (either type 0 or type 1) into my patch (which will be turned into a Max standalone). In addition to obviously getting the note info out, I also need to be able to extract program change messages and continuous controller (CC) messages from the file. For reasons which I'll spare you, I also can't use Java, so no mxj objects allowed. Here's what I've looked at, and challenges:
    seq - doesn't read in type 1 (multi-track) MIDI filesdetonate - reads in type 0 and type 1 files, but no ability to read program change or CC data from files. This thread identifies the same problem.midifile by John MacCallum - mxj objects not OK.ajm.midi2coll by Adam Murray - doesn't output program changes, and also dependent on mxj.
    Any other ideas or leads??

    • Sep 06 2013 | 6:16 pm
      I had an idea to try and see if there were Javascript tools to tackle this. I found jasmid, which has two sub-components, midifile.js and stream.js which seem like they populate a Javascript array with the MIDI info.
      I stink at Javascript though, and wondering if anyone out there could tweak the above files to work in a Max-land js object? Ideally, I'd love to be able to give the object the path to the .mid file, and then get all the info out the other end...
    • Oct 29 2013 | 3:42 pm
      Also have a look at note~ ( - I think) and I've been irking with them trying to decide which one fits my needs best. Still haven't decided but they seem to be further ahead than detonate.
    • Oct 29 2013 | 3:52 pm
      well, last but not least there is [filein].
    • Oct 29 2013 | 4:14 pm
      @Artmusicsouth - thanks, those are good ideas to explore, I didn't know that they had MIDI support...
    • Feb 28 2017 | 9:40 pm
      Since this thread has high google ranking: Seems that with v. 7.3.2 seq and follow now read MIDI type 1 files, see
    • Mar 06 2017 | 4:33 am
      this is huge news!!! very exciting, thank you for the notification.
    • May 03 2017 | 12:17 pm
      Extra info for those who doesn't know to check kinMidiFileReader in the Kinetic toolbox.
    • May 03 2017 | 12:21 pm
      Thanks - generally helpful to have another option, but this one too is Java-based... Going back to my original post from many years ago, for my purposes I can't use Java.
    • Sep 02 2017 | 10:44 pm
      Googling around I found javascript code to read MIDI files. I wonder if it's possible to port one these JS projects to Javascript in Max? Any javascript/max ninja hints?
    • Sep 03 2017 | 12:04 am
      See my post above from 9/6/2013 - that's what I was hoping to do, but my Javascript skills were never up to the task. Would still love it if someone could do this!