The automation is displayed as a break point curve (red here).


Association of a curve and an address, it represents a remote value as function of time. Each segment can have is own style (linear, exponential, …) .


Minimal element of a device, it’s a particular node that correspond to a remote variable. An address can be :

  • write only (message)
  • read only
  • read and write (parameter)

other settings are available, some are depending on the protocol used.


A yellow bracket around an event indicates a condition

Boolean expression carried by an event. Default is true. When a timenode is launched, we check the conditions of all of its events. For each, if True, the states of the event are launched, else they are disposed.


A blue line represents a temporal constraint between two states (the dots)

Non-punctual temporal object. It forces chronology between two states, by setting a min and a max duration to wait between the execution of the states. It can contain processes.

About processes : The constraint is a local time master : launch processes, can force them to stop. At each tick of his own clock, constraint ask processes for their states.

About duration :

  • When min = max, we talk about rigid constraint (as in previous image). Otherwise it’s flexible.
  • min can be null, max infinite
  • In i-score there’s a default duration, used for displayed purpose AND for ‘play from here’ feature
The flexible part is represented by a dashed line between a min and a max
When max infinite, dashes stop on the end event, without bracket.


We name ‘Device’ a remote object represented by list of readable/writable/listenable parameters. Example : a Max/MSP patch, a MIDI instrument. We represent a device as a tree of node that can be addresses.


A vertical line between two states (the dots) represents the event. When it has only one state, the event is hidden behind the dot.

Punctual object, it contains a group of states (at least one) sharing a same condition. It’s carried by a timenode.


Panel containing device information. It shows the addresses as a tree, and columns contain settings for each one.

Full View

A path of clickable constraint name allows to return to the parent view

Constraint view model. Useful for edition when using hierarchical scenarios.



A constraint Inspector showing durations and the processes contained inside.

Panel containing information about the selected objects.


One of the supported protocol. Looks like OSC with a query system. More on github.

Node (device)

Minimal element of a device, it can have one (and only one) address. Other way, it should have child(ren). A node can have both children and an address.


One of the supported protocol. Ask the Internet for more.


A temporal element contained in a constraint. Some processes are already existing (like scenario, automation, JS) but more will come in the future.

Process View Model

In the future processes could have many kind of view, like a temporal and a logical view for a scenario. For now, there’s only one.
Process View are displayed in a slot.


This rack contains three slots.

Graphical element that contains one or many slots (one below the others), attached to a constraint.


The base. It’s the main process of i-score. It contains a temporal structure, made by states, events, constraints and timenodes.

The execution begin by launching a start Timenode. Then there is a propagation : the next constraints are played, ending by launching new timenodes and so on. It means that a timenode without previous constraint will never be played in execution.


A constraint (blue line) is always between two states (the blue dots) : a white ring, as around the right state, means that the state contains message. Else the state is empty.

Punctual object, it contains messages that will be send when the state is played. It’s a part of an event. It can have an only previous constraint and an only next constraint. Launching a state mean launching its next constraint.


This slot contains three process views : two automations (in gray) and ‘Process 2’ (a JavaScript Process).

Graphical element that contains one or many process views stacked, allowing to edit the topmost one. A slot is a part of a Rack.


The black vertical line. The timenode is behind the events : we see it only between synchronized events ; otherway it is hidden.

Punctual object, it contains at least one event. Its exact date is not known on edition time, but it has an interval of possible date, depending of its previous contraints. In particular case of only rigid constraints, we can predict this date. Otherwise, we have to wait the execution. When the exact date is known and reach, the timenode stop the previous constraints and it launches the check of all conditions of his events.

It can be interactive with a trigger.


The yellow symbol, like a ‘T’ indicates a trigger : previous constraints will have an interactive end.

Boolean expression that can be carried by a timenode. When the timenode is in its interval of availability, this expression is checked each tick. When true, the timenode is launched : it’s date is fixed and his events are launched (depending on their own conditions).

A trigger without given boolean expression is TRUE.