Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Generate live MIDI from Javascript [closed]

I made some research and it seems that Javascript and MIDI are not going well together these days. At least so Google says.

As stated in this topic: generating MIDI in javascript, it is possible to create a file, either in Javascript or server-side, and play it like one would play a usual file.

But, I really would like to be able to send individual midi events, "live", as it would be a constant user interaction. I guess my plan B would be to create a Java applet that does this, but then my app wouldn't be pure HTML5 anymore.

I also heard HTML5's audio support isn't famous right now, so I also wondered, if no solution is available now, what are the possible future outcomes?

Thanks.

like image 794
Manux Avatar asked Aug 02 '10 18:08

Manux


2 Answers

See the music embedding portion of this blog post by John Resig. (For some reason, the Mario game that Resig links to plays sound for me in Firefox but not Chrome or Safari; it'd be worth investigating why).

The idea is that you use a data URI to embed a base64 encoded version of your data within the HTML file itself. So you could write Javascript to continuously generate data in the MIDI format, then encode it in base64, and then inject it into an HTML5 <audio> element

like image 195
Long Ouyang Avatar answered Nov 18 '22 22:11

Long Ouyang


I believe your best option at the moment is to communicate from your HTML application via an xhr or websockets to a backend system running on your server that can do the actual translation into midi events. You might find that one of the many comet servers that are already available can make this part of your life easier, however many midi applications require relatively low latency, and you'll struggle to get comet techniques down much below 100ms.

like image 1
kybernetikos Avatar answered Nov 18 '22 23:11

kybernetikos