Skip to content

automata/osc-web

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Open Sound Control Web Bridge

Creates a simple bridge between your Web page and an OSC app or device.

.----------.              .----------------------.    .------------------.                 .----------.
| OSC  app | --tcp/udp--> | bridge.js OSC server | => | socket.io client | --websockets--> | web page |
`--(3334)--'              `-------( 3333 )-------'    `------------------'                 `----------'
     ^                                                                                          |
     |                                                                                          |
     |                                                                                          |
     |                .----------------------.    .------------------.                          |
     `---tcp/udp----- | bridge.js OSC client | <= | socket.io server | <-------websockets-------'
                      `----------------------'    `-----( 8081 )-----'

Introduction

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/

History

Long time ago I was asking for awesome people on AudioXG about that and we come with some options:

  1. create a Firefox extension using nsISocketTransport
  2. 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.

Prerequisites

  • Node.js
  • Socket.io
  • Some application (Puredata, Renoise, Reaktor, ...) or hardware controller that supports OSC

Installation

First of all, download and install Nodejs LTS from http://nodejs.org, then:

$ git clone git://github.com/automata/osc-web.git
$ cd osc-web/
$ npm install

Using

Run the bridge app on your machine (localhost):

$ cd osc-web
$ node bridge.js

An example is avaitable at web-side/app.html. Host this static asset the way you like:

$ cd web-side/
$ python -m SimpleHTTPServer 5000

Open your browser at http://localhost:5000/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 see 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

Related solutions

  • npTuioClient: a NPAPI plugin implementing a TUIOClient clone
  • PookyTouch: similar to npTuioClient using Java-JS LiveConnect bridge
  • Lily's approach: some good notes. Also uses LiveConnect
  • MaxJax: OSC bridge using Python Twisted (just sending OSC)

References

About

Open Sound Control Web Bridge

Resources

License

Stars

337 stars

Watchers

24 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages