Of course I couldn't let this sit there. As of just now, SqueakJS supports actual MIDI 🥳 At least in Chrome:
You can run an image, drop in a MIDI file, and play it.
I don't have a hardware synth so I tested MIDI output via GarageBand. The Steinway Grand sounds great playing the Moonlight sonata. Here's a video with sound:
Should work in pretty much any Squeak version (I tried in 6.2, too).
I tested MIDI input using the MidiKeys app since I don't have a real keyboard. It's implemented and the data coming into the image looks right, but the MidiSynth class's playback does not sound quite right.
Also, it's not entirely clear what epoch/units the midi clock is supposed to be in – possibly because Squeak changed millisecondClockValue to not start at 0 anymore, whereas older images (or at least the MIDI code in it) expects that.
If anyone wants to hack it, my WebMIDI plugin code is in:
Have fun 💜
Vanessa