[OT] MIDI Program Change malfunctions in QuickTime

Adam Murray's icon

This is only tangentially related to some stuff I am working on for Max. I figure if anyone can help, it'll be some MIDI/Mac gurus on this list.

I am generating MIDI files, and I want them to be easily playable by anyone without special software. So on Mac that means using QuickTime to play the MIDI file. It also seems like the QuickTime is the standard MIDI plug-in for web browsers.

My problem is QuickTime does not handle MIDI program changes correctly. I put together a simple test case, it's just the notes C D E F and before each note it changes the MIDI program to 0, 10, 20, 30 respectively. So every note should sound different. I have tried playing this MIDI through:
- a hardware synthesizer (using Logic and Max to play the MIDI)
- SimpleSynth (using Logic and Max to play)
- AU DLS Synth (using Max to play)
- WinAmp
- Windows Media Player

(when using Max to play, I just connected a [seq] to a [midiout])

In all these cases, the playback occurs exactly like I would expect. But when I play it with QuickTime, on either OS X or Windows, it does not play correctly. It seems the program change messages lag behind by one note. I tried delaying the note-ons so that the program change would occur well before the note, but that doesn't make a difference. I also tried sending extra program change messages to try to force QuickTime to do the right thing. No dice.

It seems strange that Max -> AU DSL Synth works, but QuickTime does not. Isn't QuickTime also using the AU DSL Synth? I am forced to conclude that QuickTime is buggy and can't handle basic MIDI playback! I have version 7.5.5.

I'm going to cross post this to Apple's forums and submit a bug report, but from past experience with submitting bugs to Apple, I bet this will not be fixed for many months/years, if at all.

So I am wondering:
- Has anyone here encountered this issue?
- Anyone know a workaround?
- If not, what are some alternatives for MIDI playback on Mac and in a web browser?

Thanks for any help. I've attached my test file in case anyone wants to look at it. I was using custom software to generate this but I wanted to rule out bugs in my software, so this attachment was produced from Logic. I got the same behavior when generating the MIDI from my software.