2. Scoring parameters with score

In this second tutorial, we will see how to write a simple score for a PureData patch.

First, re-open the score and PureData patch of the precedent tutorial.
Ensure that nothing is selected in the Device Explorer.

We will try to have a basic organization of the evolution of a parameter in time.

For this, we will use the Score screen, the central screen in score.

Creating time.

There are multiple interactions possible with the score screen.
Generally speaking, elements are created in “Create” mode (key shortcut : c), and modified
in “Select and Move” mode (key shortcut : s).

When in “Create” mode, you can click anywhere in the screen.
The result will look like this :

Congratulations, you’ve just created your first Time Interval !

In score terminology, a Time Interval, represented as a horizontal blue line, represents a span of time; here it is lasting around 5 seconds as shown in the marker on top.

You can press play on the Transport bar or just press the spacebar to start playing :

Now, we want to actually send some data to our PureData patch.

To achieve this, score has the notion of State.
A State is a data container.
It will store OSC messages in the time-line, and when it is played, the message will be sent over the network.
To add a message, select the created address in the Device Explorer, and drag it to the little blue ball at the end of the created Interval.

The State’s ball becomes bigger when hovering over it while dragging data to help targeting it.
When a state contains data, it becomes bigger and white.

Now, when pressing play again, look at the PureData console : the message will be sent.


In this part, we will start to learn the basic interactions available to write
expressive interactive scores.
We will see how to sequence elements, and alter already-written data.

First switch to Create mode (‘c‘) and keep “Shift” pressed.
Then, click on the State where the OSC message has been put, and move your mouse around : another Time Interval, following the first, will be created. You can revert the current action by pressing Escape at any time.

Likewise, you can drop messages to the State at the end of the second Time Interval.

For now, the first and the second Intervals are sharing a same State :

This means that the ending of the first is the beginning of the second : these three times are, in the score model, shared and equivalent to a single “Logical” time.

Intervals following themselves in a sequence like this are a bit similar to the notion of Track in traditional sequencers like Cubase, Pro Tools, etc.

We will now see how to have interesting data to send remotely in our sequences.


Automations are a core concept of score. They allow to interpolate between two values during the execution of a Time Interval.

We will create our first automation.
First, change the value of the OSC address as shown in the previous tutorial.
The value should be different that the one that was dragged earlier.
Then, drop the new value in the second State in the Sequence.

We now have a interval whose first State contains the message OSCdevice:/aValue 34, and last state contains the message OSCdevice:/aValue 64. The address notation in score is of the form device:/osc/address [values…]. This way multiple Devices can have addresses with the same pattern and be differentiated, e.g. PureData:/volume and MaxMSP:/volume.

Finally, click on the Time Interval between these two states, and, on the top toolbar, press “Interpolate States”.

An automation has been created for the value between these two states.

Upon pressing play, when the time cursor will be on the second interval, the PureData patch will start receiving interpolated values according to this curve.