I have been playing about with Javascript Drum Machines and Sequencers and thought it would be cool to build an HTML5 orchestra for children.
The idea is to make it as easy for 2,3,4 or 5 kids to start playing music live together on smart phones/iPads.
Writing an HTML5 touch keyboard to play different sounds is easy enough - but what I would like to do is to have the web page display the music and maybe do Guitar-Hero-style-press-this-key-now notifications - and also play a basic rhythm track.
So the plan is that you go to a web page and select a song and instrument and you get the base HTML skeleton, some sound files into the cache and a json document that describes the structure of the song: * tempo * key * what notes on what instruments to play with these durations on these beats on this bar
All very straightforward - except for one problem. I need to find a way to get the various browsers to synchronise time so that they are all (mostly) in synch with the rhythm track and the music display.
I looked at the time on various mobile phones and there was a drift of a couple of minutes so using phone time is no good.
I could make a server request for current time and offset to bandleader time but that would be tricky to align them - you might expect 200ms drift? more?
I could try and do a manual synching ("One, Two, Three, Now....") followed by a manual start ("One, Two, Three, Start").
Are there other synching options available via the browser? Bluetooth? The assumption is that the individuals will be physically present.
Thoughts, suggestions, comments on process or techniques both software, hardware and manual.
Is that is possible at all?