Super excited about this! I've been getting into synthesis lately and have been writing a sequencer in Ruby. It's just been tough getting a GUI going on top of it...Shoes is great, but I'd have a much easier/better time building it as a web app. Granted, I suppose I could just build the web UI and send data via websockets.
Anyways, awesome stuff! MIDI is fun to work with; it's dead simple and with the right synths you can get some crazy things going working with it programmatically!
I suggest you build the sequencer in Max[1] or Pure Data[2]. Their advantages are:
1. You don't need to write any codes for UI objects
2. Simple things are faster to accomplish in these software.
3. For common complex tasks (fft etc.), Max or pd have built-in solutions that are likely better than the ones you build on your own.
4. You can script Max using js/lua/java. Hence if you want to build something complex and unusual, you can still fall back to programming.
5. You don't need to worry about timing in general. For example you can generate complex rhythm patterns in advance using lua/js/java and trigger them using Max/pd in real time. It will definitely perform better than some random web technology.
I guess my biggest question is why? There are better protocols out there, like RTP-MIDI, that exist to send MIDI events over networks, and aren't dependent on a single language's rather extensive baggage. Web MIDI just seems like it'll end up being a latency-ridden glitchfest as people try to debug webservers and web software for solutions that are better created elsewhere.
If you find yourself with the need for arbitrarily timed events with arbitrary payload and arbitrary behavior in just JavaScript, I have a library called Barrel that might be of help: https://www.npmjs.com/package/barrel
The vast majority of controllers use MIDI. OSC is a neat idea and useful for networking actual computers together when MIDI is not enough, but the truth is that MIDI is the industry standard, so if you want to build an API that can take advantage of all the MIDI control surfaces out there, you can't build it upon OSC.
Hi. Person assigned WebMIDI for Firefox here. Hoping to get it happening in the next couple of months. We really need this is more browsers to push the spec to standard, it's been in Chrome Canary/flagged forever just waiting for more support.
My experience has been the opposite. Everything from the obvious keyboards and drum pads to controller boxes with LEDs, faders, dials, etc, tend to use usb midi, with drivers that Just Work.
Anyways, awesome stuff! MIDI is fun to work with; it's dead simple and with the right synths you can get some crazy things going working with it programmatically!