OSC (Open Sound Control) is a protocol on top of UDP commonly used by audio applications. It could be seem as a /MIDI evolution/. The objective of osc-web is to make possible to send and receive OSC messages on the Web browser.
With this browser capability we could do interesting things like:
- Connect OSC supported controllers to the Web browser
- Use the Web browser as a controller to OSC supported applications (like Puredata, SuperCollider, Max/MSP, ...)
- Create a Web /OSC proxy/ where people all over the world could connect yours OSC controllers or applications without complications with /port fordwarding/
Some weeks ago I was asking for awesome people on AudioXG about that and we come with some options:
- create a Firefox extension using nsISocketTransport
- create a kind of HTTP proxy (thanks @corban, @F1LT3R, @humph and yury!)
The first one works but seems to be a security hole (as yuri saids, no one wants UDP connections on its browsers). Now I'm trying the second alternative, using node.js and socket.io to create a bridge between OSC controllers/applications and the browser.
First of all, download and install nodejs from http://nodejs.org, then:
$ git clone git://github.com/automata/osc-web.git $ cd osc-web/ $ npm install
Run the bridge app on your machine (localhost):
$ cd osc-web $ node bridge.js
An example HTML is avaitable at web-side/app.html. Open it in your browser:
$ firefox test-app/test-app.html
Now you can run your favorite OSC app/device and send OSC messages through port 3333. Those messages will be send to the HTML page by WebSockets.
Configure your favore OSC app/device to listen to OSC messages coming into port 3334. Any message sent by app.html (hit the button!) will be sent to your OSC app/device.
So, you can face the HTML page as an "OSC node", listening to messages on 3333 and sending messages to 3334.
Take a look at osc-side/ to examples of OSC apps.
Projects using it
- https://github.com/fajran/npTuioClient: a NPAPI plugin implementing a TUIOClient clone
- http://pooky.sourceforge.net/wiki/PookyTouch: similar to npTuioClient using Java-JS LiveConnect bridge
- http://blog.lilyapp.org/2007/05/lily_osc_1.html: some good notes. also uses LiveConnect
- http://tirl.org/software/maxjax/: OSC bridge using Python Twisted (just sending OSC)