lab 73 - MIDI
I've written a module to read MIDI format files. I needed this because I wanted more input for my software synthesizer. I was getting bored listening to the same old track, and I haven't yet come up with any computer generated music. This seemed like a quick and easy option to get a large amount of music to listen to.
The code reads in the whole MIDI file and stores it in memory, using an ADT for the Header that contains an array of Tracks and each Track has an array of Events.
I also wrote a midi2skini command that interleaves the multiple MIDI tracks into a single stream of skini messages for the synthesizer (see earlier labs). It sorts and orders the events converting tick delta to realtime.
I've been trying this out on some bach midi files. It's been working quite nicely with the organ like sounds produced by the inferno synth.
% echo 1 > /dev/jit % midi2skini bwv988-aria.mid | sequencer ...
You need JIT enabled when using the sequencer.