Open Sound Control (OSC) is a modern communication protocol used in multimedia systems for high-speed, flexible data exchange. It supports both UDP and TCP transport protocols and is widely used in live entertainment, lighting, audio, and generative art systems due to its simplicity, extensibility, and compatibility with Ethernet-based networks.
OSC messages are transmitted over standard network protocols:
• UDP (User Datagram Protocol) — lightweight and fast, ideal for real-time applications where speed is critical.
• TCP (Transmission Control Protocol) — more reliable, with error checking and guaranteed delivery, suitable when data integrity is essential.
Each OSC message must be sent to a specific IP address and port number. These must be correctly configured on both the sending and receiving devices or software environments.
OSC is conceptually similar to MIDI Show Control (MSC) but significantly more flexible:
Whereas MSC follows strict message formatting, OSC allows developers and manufacturers to define custom message structures, provided they follow basic addressing rules.
Each OSC message includes a path-style address similar to a URL. This address defines the destination within the target application or device.
Example:
To control Fader 1 on an ETC Eos console, the address might be:
/eos/fader/1/
This path consists of:
• /eos: identifies the console type
• /fader: defines the control group
• /1: specifies the object instance (Fader 1)
This scheme can address any parameter — including faders, buttons, cue lists, groups, and more — depending on what the receiving software or hardware supports.
In OSC, instead of sending a traditional command, you send an argument — a value or set of values associated with the address. Each argument has a defined data type.
Supported OSC Argument Types:
An OSC message is made of three parts:
1. Destination IP and Port — The target device or application.
2. Address Path — Identifies the function or parameter being targeted.
3. Argument — The value(s) being passed.
Example:
To activate the Flash button on Fader 1 of an ETC Eos console:
• Destination: 192.168.1.101:5004
• Address Path: /eos/fader/1/flash
• Argument: Boolean = True (pressed) or False (released)
✅ Ethernet-Based Communication
• Uses standard network infrastructure (cables, switches, Wi-Fi, fiber).
• Easy to scale and route over long distances.
• No need for specialized hardware like MIDI or DMX interfaces.
✅ Flexible Addressing and Control
• OSC does not restrict which parameters you control.
• Manufacturers define their own address maps based on their product functionality.
• The only requirement is adherence to the URL-style format.
✅ Multi-Protocol & Multi-Source Support
• Multiple applications can communicate with the same OSC client using different ports.
• One client can receive OSC messages from multiple sources simultaneously.
• No external routing hardware is needed — this is all handled by the network layer.
✅ Rich Data Payloads
• OSC supports a wide variety of data types.
• You can send both simple control values and complex multimedia content (like audio samples or image frames).
One of the most accessible and powerful tools for remote control via OSC is the TouchOSC application. This cross-platform app allows users to design custom touch-based interfaces—sliders, buttons, knobs, XY pads, and more—which can then be used to send OSC (and MIDI) messages over a network.
Common Use Case: TouchOSC with Lighting Consoles
Many lighting consoles, such as ETC Eos, MA Lighting and Chamsys, can receive OSC commands for live control. Here's how TouchOSC fits into a control workflow:
1. Network Setup:
Connect your mobile device running TouchOSC to the same network as the lighting console.
2. OSC Configuration:
In TouchOSC settings, specify the target IP address of the console and the OSC port it's listening on (e.g., 192.168.1.101:5004 for Eos).
3. Interface Design:
Use the TouchOSC Editor (desktop application) to create a custom layout. Each control (e.g., a fader or button) can be assigned an OSC address that corresponds to parameters on the console:
- Example: A fader in TouchOSC with the address /eos/fader/1 will control fader 1 on an ETC Eos console.
- A button labeled "Flash" might be assigned /eos/fader/1/flash and send a Boolean True or False.
4. Communication:
When a control is activated on the TouchOSC interface, the app sends an OSC message to the lighting console. If the address and argument format match the console’s expected syntax, it will execute the corresponding action.
Example: TouchOSC with QLab for Remote Playback Control
TouchOSC is also commonly used in live audio and multimedia environments for remote cue control in QLab, the popular show control software from Figure 53.
1. Setup:
- Enable OSC in QLab’s settings.
- Note QLab’s incoming port number (default is usually 53000).
- Configure TouchOSC to send to QLab’s IP and port.
2. OSC Address Examples for QLab:
- /cue/1/start – Starts cue 1.
- /cue/2/pause – Pauses cue 2.
- /cue/3/stop – Stops cue 3.
- /cue/selected/start – Starts the currently selected cue.
3. Advanced Control:
You can assign XY pads to control audio parameters (volume, pan), or trigger cue sequences with toggle buttons and page selectors. This enables full show operation or backup control directly from a tablet or phone.
OSC is one of the most advanced, modular, and extensible synchronization protocols available for professional multimedia and show control environments. It allows for real-time, high-speed communication between systems using flexible message structures over standard Ethernet.
Thanks to its open design and support for various data types and addressing schemes, OSC is ideal for building complex generative systems, remote control interfaces, and synchronized multi-device workflows. Its compatibility with modern networking technology makes it a future-proof choice for creative professionals.