Overview
The OSC (Open Sound Control) plugin enables QLC+ to communicate using the OSC protocol, a flexible, network-based protocol originally designed for musical applications. OSC provides more flexibility than traditional protocols through its named path system and support for various data types.The plugin name as reported by QLC+ is “OSC”
Capabilities
The OSC plugin supports:- Input - Receive OSC messages from controllers and software
- Output - Send OSC messages to devices and applications
- Feedback - Bidirectional communication for visual feedback
- Infinite - Unlimited universes
Protocol Specifications
- Protocol: OSC (Open Sound Control)
- Transport: UDP (User Datagram Protocol)
- Default Port: Configurable (commonly 7700, 8000, or 9000)
- Addressing: Path-based (e.g.,
/qlc/channel/1/value) - Data Types: Integer, Float, String, Blob
OSC vs DMX/MIDI
OSC differs from traditional lighting control protocols:OSC
- Path-based addressing (
/path/to/control) - Multiple data types (int, float, string)
- Flexible message structure
- Human-readable paths
- No fixed channel count
DMX/MIDI
- Numeric addressing (channel 1-512)
- Fixed 8-bit values (0-255)
- Rigid message structure
- Numeric identifiers
- Fixed channel counts
Network Structure
The plugin creates a controller per IP address:Configuration
Custom Parameters
Network Interface Wait Time
Like other network plugins, OSC waits for interfaces to be ready:Setting Parameters
Universe Configuration
OSC Address Paths
OSC uses hierarchical path-based addressing:Standard QLC+ Paths
QLC+ uses a standardized path structure:OSC paths are case-sensitive.
/qlc/channel/1 is different from /QLC/Channel/1.Custom Paths
You can define custom paths for integration with other software:Path Mapping
The plugin uses a hash map to convert OSC paths to QLC+ channels:How path hashing works
How path hashing works
When an OSC message arrives with a path like
/control/dimmer/1, the plugin:- Calculates a 16-bit hash of the path string
- Stores the mapping in
m_hashMapif new - Uses the hash as the QLC+ channel number
- Reports value changes on that channel
Input Configuration
Opening Input
- Creates or reuses OSC controller for the IP
- Creates UDP socket listening on specified port
- Starts receiving OSC messages
Receiving OSC Messages
When OSC packets arrive:- Receives UDP datagram
- Parses OSC packet structure
- Extracts path and arguments
- Calculates channel number from path
- Emits
valueChanged()signal
OSC is the only plugin that uses the
key parameter in valueChanged() - it passes the OSC path string.Multi-Value Paths
OSC paths can contain multiple values:Output Configuration
Opening Output
Sending OSC Messages
- Receives DMX-style data (0-255 per channel)
- Converts to OSC messages with appropriate paths
- Packetizes according to OSC specification
- Sends via UDP to configured output address and port
OSC Message Format
OSC messages sent by QLC+:Feedback Support
OSC supports full bidirectional feedback:- QLC+ internal state changes
- Plugin sends OSC message to feedback address
- Controller/software receives and updates display
- OSC path string (from the
keyparameter) - Additional metadata
Feedback requires separate IP/port configuration from output, allowing different targets for control vs feedback.
Common Use Cases
TouchOSC / OSCulator
Configuration:QLab Integration
Configuration:Ableton Live / Max MSP
Configuration:Node-RED / Custom Software
OSC’s flexibility makes it ideal for custom integrations:Network Configuration
Firewall Configuration
Allow OSC ports:Localhost vs Network
- Localhost (127.0.0.1)
- Network IP
Use for:Advantages:
- Same-computer communication
- Integration with local software
- Testing and development
- No network configuration needed
- No firewall issues
- Maximum performance
Performance Considerations
UDP Packet Size
OSC has no built-in size limit, but UDP datagrams should be:- Ideal: < 1472 bytes (Ethernet MTU - headers)
- Maximum: 65507 bytes (UDP maximum)
Message Rate
Unlike DMX’s fixed 44Hz rate, OSC can send at any rate:- Low priority: 1-10 Hz
- Normal: 20-50 Hz
- High priority: 100+ Hz
Bundle vs Individual Messages
OSC supports bundles (multiple messages in one packet): Bundle benefits:- Reduced packet overhead
- Atomic updates (all values change together)
- Better network efficiency
- Simpler parsing
- Lower latency
- Easier debugging
Troubleshooting
No Input Received
Check port configuration
Check port configuration
Verify input port matches the sending device’s output port
Test with OSC debugging tools
Test with OSC debugging tools
Use tools like OSC Monitor or Protokol to verify messages are being sent
Check firewall
Check firewall
Ensure the input port is open for UDP traffic
Verify IP address
Verify IP address
Sender must target the correct IP address of the QLC+ computer
No Output Sent
- Verify output is opened and patched
- Check output IP and port configuration
- Ensure target device is listening on the specified port
- Use Wireshark to verify UDP packets are being sent
- Check if target device requires specific OSC paths
Feedback Not Working
- Verify feedback IP and port are configured
- Ensure they differ from output IP/port if targeting same device
- Check if controller supports receiving OSC feedback
- Verify feedback paths match controller expectations
Path Conflicts
If multiple OSC paths hash to the same channel:- Paths use 16-bit hash, collisions are possible but rare
- Use more distinctive path names
- Check for path duplicates in sending software
OSC Debugging Tools
Command Line Tools
Send test message:GUI Tools
OSC Monitor
Visual OSC message monitor for debugging
Protokol
Advanced OSC/MIDI debugging tool (macOS)
TouchOSC Editor
Design custom control interfaces
Lemur Editor
Advanced multi-touch controller designer
Wireshark Filtering
Capture OSC traffic:OSC Specification
For detailed OSC protocol information:- OpenSoundControl.org
- OSC 1.0 Specification
Related Pages
MIDI Plugin
MIDI protocol support
Art-Net
DMX over Ethernet
Plugin Overview
Learn about the plugin architecture
