Plugin Architecture
All I/O plugins implement theQLCIOPlugin interface:
Plugin Capabilities
Plugins declare their capabilities as a bitmask:A single plugin can support multiple capabilities. For example, Art-Net supports both input and output.
Network Protocols
Art-Net
Protocol: Art-Net (DMX over Ethernet) Plugin:artnet
Capabilities: Output, Input, Infinite
- Industry-standard DMX over Ethernet protocol
- Supports up to 32,768 universes (Art-Net 4)
- Broadcast and unicast transmission modes
- Auto-discovery of Art-Net nodes
- Configurable universe mapping
inputUni- Input universe numberoutputIP- Target IP address for outputoutputUni- Output universe numbertransmitMode- Broadcast or unicast mode
Use Cases
- Multi-universe installations
- Distributed lighting systems
- Networked lighting control
- Integration with professional consoles
Network Requirements
- Gigabit Ethernet recommended
- Low-latency network switches
- Proper VLAN configuration
- Multicast support (for broadcast mode)
sACN (E1.31)
Protocol: Streaming ACN (ANSI E1.31) Plugin:E1.31
Capabilities: Output, Input, Infinite
Key Features:
- ANSI standard for DMX over IP
- Priority-based source selection
- Universe discovery protocol
- Multicast and unicast modes
- Compatible with Art-Net infrastructure
- Open standard (no licensing)
- Better conflict resolution than Art-Net
- Built-in priority handling
- Supports up to 63,999 universes
OSC (Open Sound Control)
Protocol: Open Sound Control Plugin:osc
Capabilities: Input, Output, Feedback
Key Features:
- Flexible, extensible protocol
- Human-readable addressing
- Works with TouchOSC, Lemur, and similar apps
- Bidirectional communication
- Custom message formats
OS2L
Protocol: ShowXpress OS2L Plugin:os2l
Capabilities: Input, Output
Key Features:
- ShowXpress and SweetLight protocol
- Network-based control
- Designed for iOS/Android control
USB/Serial Protocols
DMX USB
Plugin:dmxusb
Capabilities: Output, Input, RDM (device-dependent)
Supported Devices:
Enttec
- Open DMX USB
- DMX USB Pro
- DMX USB Pro Mk2
Other Manufacturers
- DMXKing ultraDMX
- Eurolite USB-DMX512
- Velleman K8062
- Direct USB connection
- Low latency
- Compact hardware
- RDM support (Pro models)
- Galvanic isolation (most models)
MIDI
Plugin:midi
Capabilities: Input, Output, Feedback, Beats
Key Features:
- MIDI Note, Control Change, and Program Change
- Beat clock generation and synchronization
- Support for MIDI show control
- Channel routing and filtering
- Feedback to LED rings and motorized faders
- Note On/Off - Buttons and triggers
- Control Change - Faders and knobs
- Program Change - Scene selection
- Clock - BPM synchronization
HID (Human Interface Device)
Plugin:hid
Capabilities: Input, Feedback
Key Features:
- Generic USB HID device support
- Custom controller support
- Joystick and gamepad input
- LED feedback for supported devices
DMX Hardware Interfaces
DMX4Linux
Plugin:dmx4linux
Capabilities: Output, Input
Key Features:
- Native Linux DMX driver support
- Direct kernel interface
- Low-level hardware access
- High performance
Peperoni
Plugin:peperoni
Capabilities: Output, Input
Key Features:
- Peperoni Lighting DMX interfaces
- Multiple universe support
- Windows and Linux support
OLA (Open Lighting Architecture)
Plugin:ola
Capabilities: Output, Input, RDM
Key Features:
- Integration with Open Lighting Architecture
- Supports 100+ devices through OLA
- RDM device configuration
- Plugin-based architecture
- Cross-platform compatibility
OLA acts as a middleware layer, allowing QLC+ to access dozens of lighting protocols and devices through a single plugin.
Specialized Protocols
Enttec Wing
Plugin:enttecwing
Capabilities: Input
Supported Devices:
- Enttec Shortcut Wing
- Enttec Playback Wing
- Enttec Program Wing
- Dedicated control surfaces
- Motorized faders (Playback Wing)
- LED feedback
- USB connection
SPI (Serial Peripheral Interface)
Plugin:spi
Capabilities: Output
Key Features:
- Direct control of LED strips
- Support for WS2801, APA102, etc.
- Raspberry Pi GPIO output
- High-speed serial communication
- Pixel mapping
- LED strip control
- Embedded systems
- Low-cost installations
UART (Serial)
Plugin:uart
Capabilities: Output
Key Features:
- Serial port DMX output
- Arduino/embedded system integration
- Custom protocol support
- RS-232/RS-485 interfaces
GPIO
Plugin:gpio
Capabilities: Input, Output
Key Features:
- Raspberry Pi GPIO pins
- Direct hardware control
- Button and LED interfacing
- Custom hardware integration
Plugin Operations
Opening and Closing Lines
Plugins manage input/output lines:Input Value Signal
Plugins emit signals when input values change:Feedback
Send visual feedback to input devices:Plugin Parameters
Plugins can accept custom parameters:- IP addresses (network plugins)
- Universe numbers
- Transmission modes
- Device-specific settings
RDM Support
Some plugins support RDM (Remote Device Management):- Device discovery
- Parameter reading and setting
- DMX addressing configuration
- Device information queries
Protocol Selection Guide
Small Installations
Recommended: DMX USB, Enttec interfacesSimple, reliable, cost-effective for single-universe setups.
Medium Installations
Recommended: Art-Net, sACNMultiple universes, flexible routing, expandable infrastructure.
Large Installations
Recommended: Art-Net, sACN with OLADistributed control, redundancy, professional-grade reliability.
Mobile Setups
Recommended: DMX USB, MIDI controllersPortable, quick setup, minimal infrastructure requirements.
Embedded Systems
Recommended: SPI, GPIO, UARTDirect hardware control, custom integration, low power.
Control Surfaces
Recommended: MIDI, OSC, HIDInteractive control, feedback, touch interfaces.
Best Practices
Network Protocols
- Use dedicated network infrastructure for lighting
- Configure proper QoS and VLAN settings
- Monitor network bandwidth and latency
- Use unicast for specific routing needs
- Test failover scenarios
USB Protocols
- Use quality USB cables (short as possible)
- Avoid USB hubs when possible
- Check for driver conflicts
- Test USB power requirements
- Keep firmware updated
Performance
- Match protocol to your needs (don’t over-engineer)
- Monitor CPU usage with multiple universes
- Optimize update rates
- Close unused plugin lines
- Test worst-case scenarios
Compatibility
- Verify protocol versions
- Test with actual hardware before deployment
- Document plugin configurations
- Keep backup configurations
- Plan for equipment failures
Configuration Example
Configuring plugins through the Input/Output Map:Troubleshooting
No output on network protocols
No output on network protocols
- Check network connectivity
- Verify firewall settings
- Confirm universe numbers match
- Test with network monitoring tools
- Check for IP conflicts
USB device not detected
USB device not detected
- Verify drivers are installed
- Check USB cable and port
- Try different USB ports
- Check device permissions (Linux)
- Restart QLC+ and reconnect device
MIDI not responding
MIDI not responding
- Confirm MIDI routing
- Check MIDI channel settings
- Verify input profile is correct
- Test with MIDI monitor
- Check for MIDI conflicts with other software
High latency or dropped frames
High latency or dropped frames
- Reduce universe count
- Optimize network infrastructure
- Check CPU usage
- Disable unused plugins
- Use wired connections instead of wireless
Code References
- Plugin Interface:
plugins/interfaces/qlcioplugin.h:90 - Plugin Cache:
engine/src/ioplugincache.h:34 - Art-Net Plugin:
plugins/artnet/src/artnetplugin.h:47 - DMX USB:
plugins/dmxusb/src/dmxusb.h
