In this tutorial we look at how to synchronise Iannix with PureData via Open Sound Control (OSC[[OSC|Open Sound Control]]).

What is Iannix? Iannix is a graphical open source sequencer that has the ability to sync with a variety of real time software environments such as Max MSP, Pure Data, Super Collider etc. via Open Sound Control (OSC[[OSC|Open Sound Control]]). Iannix is useful as it has a variety of input/output capabilities however for the purpose of this tutorial we focus on how to send values generated in Iannix to Max MSP in order to familiarise ourselves with the Open Sound Control protocol.

What is Open Sound Control? Open sound control is a protocol for communication among computers and multimedia devices. It can be utilised to communicate data between different software platforms locally and remotely.

What is PureData? Pure Data is an open source visual programming language that enables you to construct complex interactive systems for music and multimedia environments. It is particularly useful for the performance platform in order to design custom responsive audio environments from incoming visual data.


Ensure Iannix is installed.
Ensure PureData is installed.

Configure Iannix to send data via OSC[[OSC|Open Sound Control]]

1. Open Iannix.
2. In the inspector go to the configuration tab and select network as pictured below.


3. Make sure Enable OSC[[OSC|Open Sound Control]] is on.
4. In the Default IP1. Internet Protocol 2. Intellectual property tab enter the IP1. Internet Protocol 2. Intellectual property address of the receiver. Use the default IP1. Internet Protocol 2. Intellectual property if you are running both programs on the same computer.
5. The default port for sending data out of Iannix is 57120 as pictured.

Now you are set up and ready to send data to PureData. In order to generate some values to be sent to PureData we need to create a new score in Iannix. You can either select one of the examples in the files menu found in the inspector or you can create a new score from scratch.

For example:

If flash isn't working on your browser go here:

Now we are ready to start sending values to PureData!!!!

Enable PureData to receive incoming OSC[[OSC|Open Sound Control]] data from Iannix

1. Create a new patcher window.
2. Create a new object in the patcher window by using the shortcut ⌘1. Type import mrpeach into the object box. **mrpeach is a built in PureData library that handles the OSC[[OSC|Open Sound Control]] protocol.
3. Create another new object in the patcher window and type into the object box udpreceive. **udpreceive is a built in PureData object that receives OSC[[OSC|Open Sound Control]] messages transmitted over a network.
4. In the udpreceive object we define the port number declared in Iannix i.e. udpreceive 57120
5. The OSC[[OSC|Open Sound Control]] message has to be unpacked using the unpackOSC object which is an object box connected to the left outlet of the udpreceive object.
6. In order for us to separate and route the array of messages we receive from Iannix we can create another object routeOSC. i.e. routeOSC /trigger /cursor and patch this to the outlet of the unpackOSC object. We use the arguments /trigger and /cursor because these are the identifiers named in Iannix for bundling the values sent as demonstrated in the picture below.

7. It is then good practice to use the print object in PureData to get an idea of the values being received. In order to do this you should patch the print object to the unpackOSC object outlet. This allows us to see how we will manage the incoming data.
8. Your patch should look something like the one below.


9. Press play in our Iannix example and see what values are coming into PureData.
10. The above diagram demonstrates one way in which to handle the incoming values. The /trigger outlet outputs triggers in the form of integers. The /cursor outlet outputs a list of floats. You can use the unpack object to manage the list of floats as shown above.


Now you are ready to start patching and designing awesome responsive sounds!!!

Below is an example of a basic patch mapping incoming trigger values to a sinusoidal oscillator.

If flash isn't working on your browser go here:

The fun doesn’t stop there. You can map values to whatever you like. Triggers are good for triggering notes or sound events and cursors are good for handling continuous data such as gain control or filters.


PureData online manual

Early 2017 sees an online Pure Data course being launched through the creative education platform Kadenze. Access to the course content and material is free with standard membership to the site.

Digi arts students check out Kadenze’s other free courses!