← All Q-SYS plugins
Q-SYS Matrix Control Router
A Q-SYS plugin that provides a clean, operator-friendly visual routing grid for controlling matrix mixer crosspoints. Instead of working directly with raw gain crosspoints in the mixer, operators use a simple button grid to route any input to any output.
AudioUtility
Choose license type
$179.99
Fully functional — purchase a license to activate.
Q-Sys Driver LicenseScreenshots
Overview
The Matrix Router Q-SYS Plugin provides a clean visual routing interface for Q-SYS
matrix mixers. It translates simple button presses into crosspoint gain values, giving
operators an intuitive grid-based view of audio routing without interacting directly
with matrix mixer internals.
The plugin sits on top of a Q-SYS Matrix Mixer as a control layer — it does not replace
the mixer component. Each crosspoint button press sets the corresponding gain
output pin to the configured On or Off gain value.
matrix mixers. It translates simple button presses into crosspoint gain values, giving
operators an intuitive grid-based view of audio routing without interacting directly
with matrix mixer internals.
The plugin sits on top of a Q-SYS Matrix Mixer as a control layer — it does not replace
the mixer component. Each crosspoint button press sets the corresponding gain
output pin to the configured On or Off gain value.
Features
The Matrix Control Router plugin provides a clean visual routing interface for Q-SYS matrix mixers, translating simple button presses into crosspoint gain values.
Visual Routing Grid
- Crosspoint Buttons: Simple on/off toggle for every input-to-output combination.
- Scalable Sizes: Configure from 1×1 up to 48×48 via properties (up to 2,304 crosspoints).
- Grid Orientation: Choose Outputs as Rows (default — matches the built-in Q-SYS Matrix Mixer, outputs down the left and inputs across the top) or Inputs as Rows. Visual only; routing is unaffected.
- Active Route Count: Real-time display of total active routes.
Routing Modes
- Toggle Mode: Multi-route — any combination of inputs and outputs can be active simultaneously. Buttons toggle off when clicked again.
- Exclusive Per Output: Selecting an input for an output automatically deselects others. Toggle-off from the grid still allowed.
- Single Press: Same exclusivity as Exclusive Per Output, but crosspoint buttons cannot be toggled off from the grid. Use CLR buttons to clear routes.
- Dual Press (Input > Output): Strict directional two-step arm-then-fire. Press the input ARM button to arm it ("from"), then press an output ARM button ("to") to complete the route. Pressing an output first when no input is armed is silently ignored.
- Dual Press (Output > Input): Same strict two-step flow but with the order reversed: arm the output first, then fire by pressing an input ARM button.
- Dual Press Timeouts: Configurable per-mode auto-clear behavior — see Dual Press Arm Controls below.
Gain Control
- Configurable Levels: Set On Gain (default 0 dB) and Off Gain (default -100 dB) globally.
- XpointGain Output Pins: Each crosspoint exposes a gain output pin for direct wiring to matrix mixer crosspoints.
- XpointGain Enable/Disable: A dedicated toggle button and control pin (
XpointGainEnable) lets you mute all XpointGain outputs at runtime without clearing route states. Default state is set by theEnable XpointGain Outputsproperty. - Timed Source Fade: Optional snapshot-style fade, enabled via the
Enable Crosspoint Fadeproperty with a runtime Fade Time knob (FadeTimepin, 0–30 s). In exclusive modes (Exclusive Per Output / Single Press / Dual Press) a source switch ducks that output's master gain down to silence, swaps the crosspoints instantly, then fades the master back up — a clean "fade out the old source, fade up the new" with only one source audible at a time. The envelope is emitted per output on theOutputFadeGainpins (wire to the matrix mixer output masters); the Fade Time knob is the total switch time. In Toggle mode eachXpointGaininstead ramps linearly in dB as crosspoints are added/removed. Set the knob to0for instant changes. - Per-Input Gain: Optional gain knob for each input channel, controllable via UI and control pins.
- Per-Output Gain: Optional gain knob for each output channel, controllable via UI and control pins.
- Enable/Disable I/O Gains: I/O gain controls can be enabled or disabled via the
Enable I/O Gain Controlsproperty.
Output Source Display
- OutputSource (Bidirectional): Each output exposes a text pin showing which input number(s) are currently routed to it. The pin is also writable: send an integer to exclusively route that input, or send 0/"None" to clear the output.
- OutputSourceName: A companion read-only pin per output shows the friendly
InputLabelname of the active source (e.g. "Podium Mic" instead of "3"). Updated live on every routing change. - Multi-Route Display: In Toggle mode, shows all routed inputs (e.g., "1,3") with names joined by comma.
Labels
- Custom Names: Assign friendly names to every input and output.
- Smart Defaults: Falls back to "Input 1", "Output 1" etc. if no label is set.
Dual Press Arm Controls
- SelectInput / SelectOutput Pins: ARM toggle buttons per input row and per output column (only present in Dual Press modes).
- ArmedInput / ArmedOutput Pins: Output text pins showing which input or output is currently armed (empty when nothing is armed).
- Strict Directional Flow: Only the configured "from" side can begin a route. Pressing the wrong-direction ARM button when nothing is armed is silently ignored (the button does not stay lit).
- From Arm Timeout (
Dual Press From Arm Timeout (s), default 5 s): If the user arms a "from" but never presses "to", the from-arm auto-clears after this many seconds. Set to0to disable (from-arm stays until manually cancelled or fired). - To Clear Timeout (
Dual Press To Clear Timeout (s), default 1 s): After a route fires, the "to" button clears immediately and the "from" arm stays lit for this many seconds as visual feedback before clearing. Set to0to clear the from-arm immediately on fire. - Cancel Arm: Pressing the same FROM ARM button while it is already armed cancels the arm. Pressing a different FROM ARM button switches the armed selection.
Preset Actions
- Clear All Routes: One-button reset of the entire matrix.
- Per-Row Clear: Clear all routes for a single input.
- Per-Column Clear: Clear all routes for a single output.
- Route Input to All (UI + Pin): Route one input to every output. Buttons visible in the UI per input row and accessible via control pins.
- Route All Inputs to Output (Pin): Route every input to one output via control pin.
Mixer Connection Modes
- Pin Wiring (default): Each crosspoint exposes an
XpointGainoutput pin and (in exclusive-fade mode) per-outputOutputFadeGainpins for the integrator to wire to the matrix mixer. - Named Component (new in 1.2.1): Pick a target Q-SYS Matrix Mixer or Router from the
Mixer Targetdropdown on the Router page (populated with the design's scriptable components); the plugin drives it at runtime via the Q-SYS component API — crosspoint + output-master gains for a Mixer, or per-output selectors for a Router. NoXpointGainorOutputFadeGainpins appear on the schematic — ideal for large matrices where wiring thousands of pins is impractical. A Refresh button re-scans the design. - Mixer or Router, auto-detected: The plugin probes the target's controls to tell a gain-based Matrix Mixer from a selector-based Router and drives each correctly. Routers hold one input per output, so they require an exclusive-family routing mode (Toggle is refused) and have no gain/fade.
- Link Health Bar: a full-width
MixerLinkStatusindicator colors green/yellow/red and shows a human-readable diagnostic ("Linked to MyMixer (Mixer)", "'MyRouter' not found", "too small for 16x16", "Router needs an exclusive routing mode", etc.). - Channel-Name Sync: On link to a Matrix Mixer, its
input.<n>.nameandoutput.<m>.namecontrols populate the plugin'sInputLabel/OutputLabeldefaults.
Integration
- Pin-Friendly: All crosspoints, gains, labels, and actions are exposed as control pins.
- OutputSource Writable: External systems can command routes by writing to OutputSource pins.
- Non-Destructive: Does not replace the matrix mixer — sits on top as a control layer.
- State Sync: XpointGain outputs always reflect current crosspoint and enable states.
Version history
v2.5.0Latest
[2.5.0] - 2026-08-13
Added
OutputNonepin — per-output "no source" feedback and clear: A new bidirectional pin per output reads True whenever that output carries no source, and clears the output when written True. It gives a UCI None/Off button both halves of its behavior in a single binding — lit when nothing is routed, clears the route when pressed. Like the Single Press grid buttons it does not toggle off: pressing it while already lit re-asserts, since "un-clearing" has no meaning. In Named Component mode with Component Feedback enabled it also tracks routes cleared externally, so every panel bound to the same mixer/router agrees.
Changed
OutputSourcenow reports0instead of"None"when an output is unrouted. The pin is a text control, so its string is what downstream logic reads;"None"forced every consumer to special-case it before converting to a number. Reading back a bare0meanstonumber()works unconditionally. The human-readable"None"is unchanged onOutputSourceName, which is the pin intended for operator-facing display. Migration: anything bindingOutputSourcedirectly to a UCI text label will now show0rather thanNoneon an unrouted output — point those labels atOutputSourceNameinstead. Writing0,"None", or an empty string to the pin still clears, unchanged.
Fixed
- Writing
"None"toOutputSourcere-routed the previous source instead of clearing. The handler fell through to the control's numeric.Valuewhen the string would not parse, and that value still held the previous input number — so a clear command re-commanded the route it was meant to remove. The written string is now resolved first, and empty/whitespace strings clear as documented. - Indicator refresh no longer re-commands routes.
UpdateOutputSources()writesOutputSource, which is itself a writable pin; its handler fired on the plugin's own refresh and re-issued a route from stale state. The refresh now runs behind a re-entry guard, so the indicators report routing without also driving it. SetCrosspoint()now suppresses the crosspoint's own EventHandler while writing. Every caller applies gains and refreshes indicators itself, so the handler's work was redundant — and in Single Press / Dual Press modes its "no toggle-off from the grid" rule fought the clear paths, re-asserting buttons that had just been cleared.
[2.4.0] - 2026-07-24
Added
- Component Feedback (bidirectional sync) for Named Component mode: The plugin now subscribes to the linked Matrix Mixer/Router and reflects external routing changes back into its own grid. Several plugin instances (e.g. one per touch panel) can drive the same target and stay in sync — a route made on one panel appears on all of them, while each panel keeps its own independent arm state. On link, a feedback-enabled instance adopts the target's current routing instead of overwriting it. New
Component Feedbackproperty (Enabled/Disabled, default Enabled); set to Disabled for the classic one-way behavior where the plugin is the sole source of truth.
[2.3.0] - 2026-07-15
Added
- Arm multiple outputs (Dual Press, Output > Input): Each
SelectOutputpress now toggles that output into an armed set instead of replacing the previous arm. The next input press routes that input to every armed output at once. Pressing an armed output again removes just that one.ArmedOutputnow reports a comma-separated list. - Arm All Outputs button: New
ArmAllOutputscontrol (Output > Input mode only) arms every output in one press so an input can be routed to all outputs at once; pressing again while all are armed clears the arm.
v2.1.0
[2.1.0] - 2026-06-04
Fixed
- On Gain / Off Gain property keyboard entry: Changed both gain properties from
integertodoubletype so negative values can be typed directly in Q-SYS Designer's property panel.
v2.0.0
[2.0.0] - 2026-05-29
Major release: the plugin can now drive a Matrix Mixer or Router directly by name (no crosspoint wiring), and the grid can be oriented to match the built-in Matrix Mixer. Routing, gain, and fade behavior from the 1.x line are unchanged.
Added — Named Component linking (drive a Mixer/Router without wiring)
Mixer Connection Modeproperty —Pin Wiring(default, the classic behavior) orNamed Component. In Named Component mode the plugin drives the target directly via the Q-SYS component API and theXpointGain(andOutputFadeGainin exclusive-fade mode) output pins are omitted entirely — no wiring of dozens or thousands of crosspoint pins.- Runtime target dropdown — in Named Component mode the integrator picks the target from the Mixer Target dropdown on the Router page, which is populated from the design's scriptable Mixer/Router components (with a Refresh button to re-scan after adding the target). An unselected dropdown shows a "Select Mixer / Router…" prompt.
- Matrix Mixer and Router targets, auto-detected — the plugin probes the
selected component's controls to classify it. A Matrix Mixer is driven via
crosspoint gains (
input.<i>.output.<o>.gain) and output masters (output.<o>.gain); a Router is driven via per-output selectors (select.<o>, fallbackoutput.<o>.select). - Router/Toggle guardrail — a Router holds one input per output, so it is only valid in the exclusive-family modes. Selecting a Router while Routing Mode is Toggle is refused (red status) rather than mis-routing. Routers have no gain, so On/Off Gain and fade have no effect on them.
MixerLinkStatusbar (full-width, Router page, Named Component mode) — colors green when linked (naming the kind, Mixer or Router), yellow when no target is selected, and red when the component is missing, isn't a Mixer/Router, is too small for the configured matrix, or is a Router in Toggle mode. Backed by theMixerTarget/MixerRefreshcontrols.- Channel-name sync at link time (Matrix Mixer targets) — the mixer's
input.<n>.name/output.<m>.namecontrols populate the plugin'sInputLabel/OutputLabeldefaults so the grid matches the mixer.
Added — Grid orientation
Grid Orientationproperty — choose Outputs as Rows (matches the built-in Q-SYS Matrix Mixer: outputs down the left, inputs across the top) or Inputs as Rows (the original 1.x layout). Purely visual — crosspoint indexing and all routing/gain/fade behavior are identical either way. Every per-row/per-column control (labels, CLR, Route-to-All, dual-press arm, gain, source indicators) follows the chosen axis.
Changed
- New default grid orientation: Outputs as Rows. Because
Grid Orientationis a new property, designs upgrading from 1.x adopt this default and their grid transposes (outputs become rows). The routing is unaffected; to keep the original look, setGrid OrientationtoInputs as Rows.
Notes
Mixer Connection ModeandGrid Orientationare design-time properties; the Named Component target selection is made at runtime from the dropdown and persists with the design.- Named Component sync is one-way (plugin → target); changes made directly on the mixer/router are not read back, so the plugin stays the source of truth.
- Named Component mode targets the standard Q-SYS Matrix Mixer and Router control naming; custom scripted components with other control names should use Pin Wiring mode.
- Pin Wiring mode behavior is unchanged; existing designs upgrade with no schematic edits.
[1.2.0] - 2026-05-27
Added
- Timed source fade: new
Enable Crosspoint Fadeproperty with a runtime Fade Time knob (FadeTimepin, Knob, 0–30 s, default 1 s;0= instant). Adds a snapshot-style fade when sources change.- Exclusive Per Output / Single Press / Dual Press: switching the source on an output ducks that output's master gain to silence, swaps the crosspoints instantly, then fades the master back up — the old source fades out, then the new one fades up, with only one audible at a time. The envelope is emitted on the new per-output
OutputFadeGainpins (wire to the matrix mixer output masters); crosspoints switch instantly in these modes. Fade Time is the total switch time (the out and in legs each take half). - Toggle mode: each
XpointGainramps linearly in dB to its target (On Gain / Off Gain) as crosspoints are added/removed (per-crosspoint fade). RequiresEnable XpointGain Outputs.
- Exclusive Per Output / Single Press / Dual Press: switching the source on an output ducks that output's master gain to silence, swaps the crosspoints instantly, then fades the master back up — the old source fades out, then the new one fades up, with only one audible at a time. The envelope is emitted on the new per-output
OutputFadeGaincontrol (Knob dB, per output): present only when fade is enabled in an exclusive-family mode; rests at unity (0 dB) and ducks to silence during a faded switch.
Notes
- The fade applies to bulk actions too (Clear All, Clear Input/Output, Route to All).
- Toggling
XpointGainEnableand startup gain sync apply final values immediately (no ramp), finishing any in-flight fade first.
v1.1.0
Added
- Larger matrices: maximum Input Count and Output Count raised from 16 to 48 (up to 2,304 crosspoints).
- Strict-direction Dual Press routing: in
Dual Press (Input > Output)andDual Press (Output > Input)modes, only the configured "from" side can begin a route. Pressing the wrong-direction ARM button first is silently ignored (button does not stay lit). This removes the previous symmetric-arm behavior in which either side could be pressed first. Dual Press From Arm Timeout (s)property (default 5, range 0–300): if the user arms a "from" but never presses "to", the from-arm auto-clears after this many seconds.0disables the timeout (from-arm stays until manually cancelled or fired).Dual Press To Clear Timeout (s)property (default 1, range 0–300): after a route fires, the "to" button clears immediately and the "from" arm stays lit for this many seconds as visual feedback before clearing.0clears the from-arm immediately.- Per-core Licensing support.
Changed
- Dual Press fire behavior: the "to" button no longer stays in its toggled-on state after firing — it is cleared immediately. The "from" arm now persists briefly after firing (controlled by
Dual Press To Clear Timeout (s)) instead of being cleared instantly.
Fixed
Dual Press (Output > Input)mode previously allowed the user to start a route by pressing an Input first (andDual Press (Input > Output)allowed starting with an Output). Both modes now strictly enforce the configured direction.
