Overview
TheInputOutputMap class is responsible for:
- Managing multiple DMX universes (512 channels each)
- Patching universes to input/output plugins
- Handling blackout functionality
- Managing Grand Master controls
- Coordinating data flow between universes and hardware
Universe Management
Universe Basics
Each universe in QLC+ represents 512 DMX channels (standard DMX512 universe size):Adding and Removing Universes
Universes can be dynamically added or removed:Each universe has a unique ID and can have a friendly name for easier identification.
Universe Properties
Universe Names Set descriptive names for universes to help organize your lighting setup:Patching
Patching connects QLC+ universes to physical hardware or network protocols through plugins.Input Patching
Connect an input device to a universe:universe- The QLC+ universe numberpluginName- Name of the input plugin (e.g., “MIDI”, “OSC”)inputUID- Unique identifier for the input lineinput- Input line number within the pluginprofileName- Optional input profile for channel mapping
Output Patching
Connect an output device to a universe:A universe can have multiple output patches, allowing you to send the same data to multiple destinations simultaneously.
Feedback Patching
Feedback allows visual indicators on input devices (like LED rings on controllers):Checking Patch Status
Verify if a universe is patched:Input Patches
Structure
AnInputPatch represents one input universe and can have:
- One input line from one plugin
- An optional input profile for channel mapping
- Custom plugin parameters
Input Profiles
Input profiles provide logical channel names for controllers:Input Profile Types
- MIDI controllers
- HID devices
- OSC controllers
- DMX input devices
- Enttec Wing panels
Profile Features
- Channel naming
- Button/slider mapping
- Color feedback tables
- MIDI-specific settings
Plugin Parameters
Set custom parameters for input devices:Output Patches
Structure
AnOutputPatch sends DMX data from a universe to physical hardware:
Output States
Paused State Temporarily stop output without unpatching:Data Transmission
Output patches write universe data to hardware:The
dataChanged flag optimizes transmission by indicating if the data has changed since the last update.Blackout
Global blackout functionality affects all universes:Blackout Request
For thread-safe blackout toggling:Grand Master
The Grand Master controls overall intensity across all universes.Channel Mode
Choose which channels are affected:- Intensity channels only
- All channels
Value Mode
Define how the Grand Master affects values:- Limit - Sets a maximum ceiling for values
- Reduce - Proportionally scales down values
Grand Master Value
Set the master intensity level (0-255):Plugin Management
Available Plugins
Get lists of input and output plugins:Plugin Information
Query plugin capabilities:Plugin Configuration
Configure plugins if supported:Plugin Status
Get status information:Mapping Queries
Check which universe a plugin line is mapped to:These methods return
QLCIOPlugin::invalidLine() if the line is not mapped.Best Practices
Organization
- Use descriptive universe names
- Group related fixtures in the same universe
- Document your patching configuration
- Keep universe counts reasonable (performance)
Patching
- Match plugin capabilities to your needs
- Use input profiles for better usability
- Test patches before show time
- Configure plugin parameters as needed
Performance
- Use passthrough only when necessary
- Monitor universes sparingly
- Close unused patches
- Optimize output patch count per universe
Safety
- Test blackout functionality
- Configure Grand Master appropriately
- Verify patch states before shows
- Keep backup configurations
Code References
- Input/Output Map:
engine/src/inputoutputmap.h:56 - Input Patch:
engine/src/inputpatch.h:53 - Output Patch:
engine/src/outputpatch.h:39 - Universe:
engine/src/universe.h:67
