MIDI support requires additional software to be installed on the server's system:

To install python-rtmidi, run pip install python-rtmidi in a terminal.

Why an additionnal dependency ?

Providing cross-platform MIDI support is not trivial, as it requires OS-specific compilation that cannot be automated within Open Stage Control's current packaging workflow. Using a python addon seems to be the best compromise so far : the core app remains easy to build, and the extra dependency is easy to install.


When running the app, the -m / --midi switch must be set; it accepts the following options (separated by spaces):

Linux only:

Widget settings#

In order to send MIDI messages, a widget must have at least one target formatted as follows:

midi:device_name (where device_name is one of the declared midi devices)

Supported MIDI messages#

Define static argument values using the preArgs option in order to complete the respective MIDI message.

/note channel note velocity#

NoteOn event or noteOff if velocity equals 0.


A push button might be configured as follows in order to send a MIDI note whose velocity is defined by the button's on/off value:

/control channel cc value#

Control change event.


A fader might be configured as follows in order to send a MIDI control message (a volume control in this example):

/program channel program#

Program change event.

/pitch channel pitch#

PitchWheel event.

/sysex msg v1 .. vN#

System exclusive message.

For a very simple example, refer to session 'sysex.json' found in the application's sub folder 'resources/app/examples/'. Please remember to adjust the button's target to the device_name used in your MIDI setup.