easy OSC connection

As one of the major parts of my dissertation on networks applied to music and sound design I developed a little library to improve connection between a formation of performers, like in a laptop orchestra.

The main goal is to shorten the time required to establish connection and realise who is connecting, therefore making it easier for inexperienced people to perform on a network without having to understand IPs, communication protocols, etc.

I chose Pure Data and Python because I wanted this library to run as free and crossplatform as possible.

The main structure is made by three applications:

  • The server (python http server)
  • The master client ([Connect] object + pd serveronoff)
  • The slave client ([pd client_connect])

Basically we have a server connected to a master client managing incoming connections by keeping a list of IP+Name strings. The server is by default running with the master client but can perfectly run as standalone on a dedicated machine. The [connect] object will prompt a list of clients connected, simply select one and start sending data to him.

The performer (slave client) has to type his name and send a bang. That’s all he has to do to get connected and start receiving data. Because of OSC and symbols conversion you’re free to send any type of data.

The objects are made to be as modular as possible in order to allow people to build their own network/performance structures and logics.

The patch takes all the safe measures to ensure that technical problems with the server won’t harm the performance, if the server crashes for example, connection between the master client and the slave client will remain the same, as the list of connected clients. I even added a bang to unbind ports from the patch in case pure data or the server crashed so that you won’t have to restart PD or kill any process.

Connecting to the server from a browser will show a page with an image, a score for example, if who started the server chose one.

Here I made a little example of what the library looks right now, using my objects to show you (locally) how simple is to use them (note that the half of the screen on the left is what the Master client has to do and the right half is what the Slave client has to do).