Controlling Sushi using Open Sound Control

Sushi supports Open Sound Control (OSC). And can both send OSC updates and receive notes and parameter changes through OSC.

If you are unfamiliar with OSC, reading our article introducing OSC in the context of Elk Audio OS is a very good start.

OSC Messages Sushi Reacts To

By default, Sushi listens on port 24024 for the following OSC commands:

Path TypeTag Arguments
/parameter/plugin_name/p arameter_name f parameter value
/parameter/plugin_name/p roperty_name s property value
/bypass/plugin_name i bypass state (1 = bypassed, 0 = enabled)
/keyboard_event/track_name siif event type (“note_on”, “note_off”, “aftertouch”), channel, note index, norm. value
/keyboard_event/track_name sif event type (“modulation”, “pitch_bend”, “aftertouch”), channel, norm. value
/program/plugin_name i program id
/engine/set_tempo f tempo in beats per minute
/engine/set_time_signature ii time signature numerator, time signature denominator
/engine/set_playing_mode s “playing” or “stopped”
/engine/set_sync_mode s “internal”, “ableton_link” or “midi”
/engine/set_timing_statistics_enabled i 1 = enabled, 0 = disabled
/engine/reset_timing_statistics s(s) reset target (“all”, “track”, “processor”), track name/processor name

OSC Messages Sushi Transmits

By default, Sushi transmits to port 24023.

Besides reacting to OSC messages, Sushi can also echo some aspects of its state, by broadcasting OSC messages. By default, this feature is disabled, but can be enabled either through adding a relevant section to the json configuration file, or by invoking relevant commands over gRPC.

The message transmitted are from plugins in Sushi, when internal parameter is changed - for example, the level parameters of the internal Peak Meter plugin.

This works in two ways, either all, or only specific processors, are enabled. See the relevant section in the documentation of the Sushi json configuration file for more details.

Changing the ports for sending and receiving OSC

The UDP ports it receives from and sends to can be changed with command-line arguments - just type $ sushi –help for the exact syntax.

These can also be set over the gRPC API, or the json configuration file.

Currently, Sushi only transmits to the localhost IP, so for listening to any OSC events from it, the OSC listener process will have to run on the same device as Sushi.