Contents ↓

Open Sound Control (OSC)

Chromatik includes a robust implementation of the Open Sound Control protocol. OSC can be used bidirectionally to control and synchronize Chromatik with remote devices and applications.

OSC I/O is configured in the OSC I/O section of the right-pane OSC · DMX · MIDI tab.

Input

  • Enabled: Whether input is active
  • RX Port: UDP port to receive OSC messages
  • RX Host: Network interface to listen on (0.0.0.0 to listen on all interfaces)
  • Log: Dump all received OSC messages to the Chromatik log (found in ~/Chromatik/Logs/)

Output

  • Enabled: Whether output is active
  • TX Port: UDP port to send OSC messages
  • TX Host: Address to send OSC messages (hostname or IP)
  • Log: Dump all sent OSC messages to the Chromatik log (found in ~/Chromatik/Logs/)

OSC Addresses

Nearly every parameter in Chromatik can be controlled via OSC. To discover the OSC Address for any parameter, ensure the Help Bar is visible (toggle with ⇧?) and hover over the control. If the parameter is eligible for OSC, the OSC Address is shown after its description.

For standard controls like knobs, sliders, buttons, and input boxes there is typically an option in the right-click context menu to Copy OSC Address for easy pasting into another application from the system clipboard.

Message Data Format

  • Parameters with continuous values use the float32 type, normalized to the range 0-1
  • Parameters with discrete integer values use the int32 type with raw integer values
  • Boolean parameters with On/Off values use the int32 type with values 0 and 1

There are some exceptions in which continuous values are not normalized, such as the /lx/tempo/bpm tempo address.

The quickest way to understand the OSC data sent by Chromatik is to enable OSC Output and use an OSC monitoring utility such as Protokol to understand the message structure.

OSC Query

Chromatik also supports the OSCQuery protocol for OSC address discovery. When OSC Input is enabled, Chromatik advertises this service using Zeroconf and responds to OSCQuery requests via an embedded HTTP server.

The OSCQuery Browser is a simple utility application that demonstrates OSCQuery.

Chromatik Specific — /osc-query

Chromatik also supports a non-standard osc-query address suffix, implemented completely using OSC.

If both OSC Input and OSC Output are active, you can send an OSC message to any address prefix with the suffix osc-query, e.g. /lx/tempo/osc-query or /lx/mixer/osc-query.

Chromatik responds by sending every parameter that descends from the given OSC Address Prefix.

Beat Sync

Chromatik supports synchronization of the tempo-based beat counter via OSC messages.

In the Tempo segment of the Toolbar, select OSC as the source in the Clock dropdown menu.

  • /lx/tempo/beat — Advances the beat counter, triggering the next beat
  • /lx/tempo/beat <int32> — Triggers the beat, setting the beat counter to the given value

OSC beat count values are 1-indexed, the first beat of a measure is sent as 1, not 0.

To update the tempo, /lx/tempo/bpm <float32> can be used in either OSC or Int modes.

An example use of this system: Working with Beat Link Trigger →

There are many tools and products on the market that implement OSC. Here is a list of a few of our favorites for remote control of Chromatik in various environments.