Symetrix
The Symetrix page manages Symetrix Composer audio DSP matrix modules and their mappings to GEM AV zones and sources. You can define matrix modules with their controller ID ranges, map AV zone outputs and source inputs to those matrices, and use a visual crosspoint test grid to verify routing.
Open Symetrix
Symetrix is a premium integration. Adding a symetrix_composer device — and using this page — requires the Symetrix product in your license. Existing devices keep running if a license later changes. See License.
Prerequisites
Create a Symetrix device in System > Devices with the driver set to symetrix_composer and Enabled set to Yes. Configure the device with:
- DSP IP — the LAN IP of the Symetrix DSP.
- TCP Port — the Composer Control Protocol port. Defaults to 48631; leave it unless you have changed it on the DSP.
Two optional device settings tune AV-zone behavior:
- Status Poll Interval (ms) — how often GEM runs a full reconcile read of each AV zone's volume and mute back from the DSP (default
60000). DSP push is the primary real-time sync, so this poll is only a slow safety net that catches anything a push may have missed (for example during a reconnect gap). After a reconnect or a Composer design reload, GEM holds the reconcile poll until the DSP returns actual read values again — a DSP that is still loading its design, or whose single control session is busy, accepts commands but won't answer reads — and leans on push to stay in sync until then. The poll resumes automatically once the DSP is ready, so no action is needed. - Volume Step (%) — the percentage step used by volume up / volume down, mapped onto the controller range (default
3).
Tabs
The page has two tabs: Matrices and AV Sources.
Matrices Tab
The Matrices tab lets you define and manage Symetrix matrix modules. Each matrix module represents a crosspoint router in the Symetrix Composer design, identified by its controller ID ranges.
Matrix Table
The table at the top lists all configured matrix modules with the following columns:
| Column | Description |
|---|---|
| Module | The numeric identifier for this matrix module. |
| Output Start | The starting Symetrix Composer controller ID for the output volume controls. The mute controls occupy the block of the same size immediately after these — see the controller layout note below. |
| Grid Start | The starting Symetrix Composer controller ID for the crosspoint grid. |
| Inputs | The number of audio inputs (sources) on this matrix. |
| Outputs | The number of audio outputs (zones) on this matrix. |
| Actions | The View and Delete buttons described below. |
Each row has two action icons:
| Icon | Description |
|---|---|
| View (eye icon) | Loads the matrix into the visual test grid below the table. The active matrix's row stays highlighted while its grid is open. |
| Delete | Removes the matrix module and clears the matrix assignment from any AV zone that referenced it. A confirmation prompt appears. (The prompt mentions clearing related source/zone addresses, but the input/output numbers you mapped are left in place — only the zone-to-matrix link is removed.) |
Adding a Matrix
Below the matrix table is an input row for adding a new matrix module. Fill in all five fields and click the Add icon:
| Field | Description |
|---|---|
| Module ID | A unique number to identify this matrix (e.g., 1, 2). |
| Output Start ID | The Composer controller ID of the first output's volume control. The remaining output volume controls, then all of the mute controls, follow as sequential IDs — see the controller layout note below. |
| Grid Start ID | The Composer controller ID of the first crosspoint. Crosspoints are numbered output by output: the first Input Count controllers are output 1's crosspoints (one per input), the next block is output 2's, and so on. |
| Input Count | Total number of inputs on this matrix. |
| Output Count | Total number of outputs on this matrix. |
All fields are required. The controller IDs must match the actual controller IDs in your Symetrix Composer design. You can find these by opening the Composer project and inspecting the matrix module's controller properties.
GEM does not store a separate mute controller ID. It derives each output's mute controller from Output Start ID by assuming the mute controls are the block that immediately follows the output volume controls. For a matrix with Output Count outputs:
- Output volume controls occupy
Output Start IDthroughOutput Start ID + Output Count − 1— one per output, in output order. - Mute controls occupy the very next block:
Output Start ID + Output CountthroughOutput Start ID + (2 × Output Count) − 1— one per output, in the same order. - Crosspoints are a separate range that starts at Grid Start ID (numbered output by output, as above).
So in your Composer design the output level controls and their mute controls must be numbered as two back-to-back contiguous blocks starting at Output Start ID. If a mute control is numbered anywhere else, volume will still work but mute will silently write to the wrong controller. The Grid Start ID range is independent and can sit elsewhere.
Visual Test Grid
When you click the View icon on a matrix row, a visual crosspoint grid appears below the table. This grid lets you test and verify the matrix routing directly from GEM.
Grid Layout
The test grid is structured as a table, one column per output:
- Column heads: Output labels (
Out 1,Out 2, etc.). - Vol row: A level indicator per output that fills proportionally to the output's level and shows the percentage (0-100). It reads
--until the grid syncs. Click a Vol cell to open a popover and set that output's level. - Mute row: A mute button (labelled M) per output. It turns red when muted and stays neutral when unmuted.
- Input rows: One row per input (
In 1,In 2, etc.). Each cell is a crosspoint toggle button at the intersection of that input and output. Connected crosspoints turn green; disconnected crosspoints stay neutral.
A small legend above the grid keys the three colors (volume, connected, muted). When the grid is subscribed to the DSP, a green Live chip appears next to the legend; its dot pulses briefly each time a pushed update lands.
Interacting with the Grid
- Click a crosspoint button: Toggles the crosspoint on or off. When toggled on, the button turns green and the DSP routes that input to that output. When toggled off, the route is cleared and the button returns to neutral.
- Click a Mute button: Toggles the mute state for that output. Red means muted, neutral means unmuted.
- Click a Vol cell: Opens a small popover anchored under the cell with a slider and a number field (0-100). Dragging the slider previews the level on the cell's fill bar; releasing the slider, committing the number field, or clicking Set scales the percentage onto the controller's range and writes it to the DSP as a single command. Close the popover with the × button, by clicking outside it, or by pressing Escape. The Vol cell still shows the output's current level (with a proportional fill) and reads
--until the grid syncs.
Live Updates and Sync
The driver subscribes to the volume and mute controllers it manages via the DSP's push channel, so volume and mute changes update the grid in real time — whether they originate from GEM, a physical control, or another control system — without any manual refresh. The Live chip in the grid header indicates this subscription is active.
Crosspoint routing is outside the push range, so crosspoint colors refresh only on a manual sync. A Sync button sits in the test grid's header, to the right of the legend. The grid reads the DSP's current state automatically the moment you load a matrix; click Sync to re-read it at any time. It pulls the live controller values from the Symetrix DSP and repaints the whole grid — crosspoint colors, mute state, and the per-output volume percentages. Use it after changing crosspoint routing in Composer or from another control system so the grid reflects the actual hardware state.
If you have a volume popover open while editing a cell, a pushed update for that exact cell is ignored until you close the popover, so your in-progress drag is not overwritten.
Use the test grid to verify that your matrix module controller IDs are correct before mapping AV zones and sources. If crosspoints do not toggle as expected, double-check the Grid Start ID and Output Start ID values against your Composer design.
AV Sources Tab
The AV Sources tab maps GEM AV zones and sources to specific matrix inputs and outputs, enabling automatic audio routing when users select sources in the GEM interface.
Mapped Sources Table
The top of the tab shows a table of all currently mapped AV source-to-zone relationships:
| Column | Description |
|---|---|
| Matrix | The matrix module ID this mapping belongs to. |
| AV Zone | The GEM zone (shown as [id] name). |
| AV Source | The source device (shown as [id] name). |
| Input | The matrix input number assigned to this source. |
| Output | The matrix output number assigned to this zone. |
Each row has a Delete icon to remove the source-to-input mapping (clears the source's address).
Adding a Mapping
Below the mapped sources table is an input row for creating new mappings:
| Field | Description |
|---|---|
| Matrix | Select the matrix module from a dropdown of defined matrices. If the selected AV zone already has a matrix module assigned, this field is auto-populated and locked. |
| AV Zone | Select the GEM AV zone. A Reload icon next to this field reloads the AV zone device. When a zone is selected, its sources are loaded into the AV Source dropdown. |
| AV Source | Select the source device from the dropdown (populated after selecting an AV zone). |
| Input | Enter the matrix input number for this source. |
| Output | Enter the matrix output number for this zone. If the zone already has an output address, this field is auto-populated and locked. |
Click the Add icon to save the mapping. This sets three things:
- The
matrix_moduleattribute on the zone. - The
addresson the AV zone record (output number). - The
addresson the AV source record (input number).
Once an AV zone has mapped sources, the Matrix dropdown becomes locked for that zone to prevent accidentally changing the matrix assignment.
How Matrix Routing Works
When a user selects an AV source in a zone through the GEM interface, GEM automatically calculates and sends the correct crosspoint command to the Symetrix DSP:
- GEM looks up the source's matrix input number.
- GEM looks up the zone's matrix output number.
- GEM clears whatever input is currently routed to that output (routing is exclusive — one source per zone at a time), then calculates the crosspoint controller ID:
The stride between outputs is Input Count, because each output owns a contiguous block of one crosspoint per input.crosspoint_id = grid_start_id + (output - 1) * input_count + (input - 1)
- GEM sets that controller to full scale (controller value 65535) to make the connection.
Example:
Matrix: Grid Start ID = 1, Input Count = 16, Output Count = 8
Source "Blu-ray" mapped to Input 3
Zone "Living Room" mapped to Output 2
crosspoint_id = 1 + (2 - 1) * 16 + (3 - 1) = 19
GEM sends: set controller 19 to full scale (65535)
Result: Blu-ray audio routed to Living Room
A zone or source address is normally a plain number (the matrix output or input). When the same zone is also routed through a separate video matrix, GEM stores a combined address of the form vr=…|ve=…|ar=N|ae=…, where ar holds the Symetrix audio routing number. The driver reads the audio (ar) component in either case, so audio routes correctly for combined zones. A video-only zone (an empty ar) has no Symetrix output and is skipped rather than routed.
Troubleshooting
Matrix Not Routing
- Verify the Symetrix device is online in System > Devices.
- Check that the matrix module controller IDs match the Composer design.
- Ensure both the source (input) and zone (output) mappings are complete.
- Use the visual test grid to manually test crosspoints.
- Verify routing works directly in Symetrix Composer first.
Wrong Controller IDs
- Open the Symetrix Composer project.
- Inspect the matrix module's controller properties to find the actual controller IDs for the grid and outputs.
- Update the matrix configuration in GEM to match.
- Click Sync on the test grid to verify.
Volume or Mute Not Reading Back
The DSP accepts roughly one control session at a time. If another client holds it — another control system, or a Composer session left open and connected — the DSP keeps accepting commands but stops returning read values, so the test grid shows -- for levels and the reconcile poll backs off instead of piling on. The driver logs a warning after several consecutive ignored read probes naming this cause.
- Close any open Symetrix Composer connection to the DSP and disconnect any other control system holding its session.
- If reads still do not return, power-cycle the DSP.
- The grid and poll recover automatically once the DSP starts answering reads again.
Related Documentation
- AV Zones - AV zone configuration
- AV Sources - AV source configuration
- Devices - Symetrix device setup