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

To install python-rtmidi, run pip install python-rtmidi (python 2) in a terminal or pip3 install python-rtmidi (python 3).

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:


When using the launcher window, midi devices can be listed by right-clicking and choosing Midi > List Devices

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)


Messages received from a MIDI port only affect widgets that send to this port.

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.


* Some devices / softwares display the program value between 1 and 128, thus interpreting program change 0 as program change 1 and so on. Enable the pc_offset option to make Open Stage Control behave this way.

/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.