Panel Patching Matrix

An interactive 2-D routing grid that assigns each device (a sub-output of a physical port) to one or more speakers. Speakers are organised as Group → Array → Speaker, read from a Usine chunk, and the whole patch state is mirrored to a flat float-array output that downstream modules can read or write.

Patching Matrix draws a grid where the rows are the ports and their devices, and the columns are the speakers. Each lit cell is an active connection between one device and one speaker.

  • Rows come from two simple inputs: num ports (how many physical ports) and devices per port (a CSV giving the device count of each port). Each port is a collapsible header; under it sit its devices.
  • Columns come from a chunk describing the speaker topology as a hierarchy of groups, arrays and speakers. Groups and arrays are collapsible headers; expanding them reveals the individual speaker columns. If no chunk is connected the grid still renders with placeholder speaker columns so it can be wired up first and populated later.

The authoritative state lives in the patchable slots array (one 0.0/1.0 per device × speaker). It is bidirectional: clicking in the grid writes it, and an external module writing to it is reflected back into the grid on the next frame.

Interacting with the grid

  • Click a body cell (device row × speaker column) — toggles that single connection.
  • Click a device row under a group/array header column — bulk-toggles every speaker of that group/array for that one device.
  • Click a port header row under a group/array header column — lays a 1:1 diagonal across that port's devices versus that group/array's speakers (or clears it if the diagonal is already set).
  • Click a column header — expands / collapses a group or an array.
  • Click a row header — expands / collapses a port.
  • Ctrl + wheel zooms, wheel scrolls vertically, Shift + wheel scrolls horizontally, and the scrollbar thumbs can be dragged to pan.

Exclusivity

When row exclusive is ON a device row may hold at most one connection; when col exclusive is ON a speaker column may hold at most one. Exclusivity is enforced only when a cell is being turned ON — turning cells off never disturbs the rest of the grid. Both modes apply uniformly to single clicks and to the bulk / diagonal fills.

The speaker chunk

The column hierarchy is reconstructed from a chunk whose name is given by chunk name, with group count groups. For each group NNN (3-digit, 1-based) the module reads these chunk items:

  • group-name-NNN — the group label,
  • nb-arrays-NNN — number of arrays in the group,
  • nb-speakers-NNN — number of speakers per array,
  • array-name-NNN — CSV of array names (consumed across the group),
  • speaker-name-NNN — CSV of speaker names (re-read from the start for each array of the group).

Note — the chunk is only read when chunk name / group count change, when a structural input changes, or when refresh is pressed. Missing items fall back to default labels (GROUP n, ARRAY n, SPK). If the chunk is empty or absent the grid shows a flat set of placeholder columns.

All visual styling — the canvas background, cell sizes, colours, fonts, rounding, header sizes, vertical-text headers and the scrollbars — lives in the module's DESIGN tab and is applied live as you edit it.

Settings

chunk name

Name of the Usine chunk that holds the speaker topology. Changing it rebuilds the column hierarchy.

group count

Number of groups to read from the chunk, range 0 – 999. 0 (or an empty chunk name) disables the chunk and falls back to placeholder columns.

num ports

Number of physical ports — the top-level rows — range 0 – 64 (default 2).

devices per port

CSV of integer device counts, one per port (default 6,6). The list is padded with 0 to match num ports; the running total is the number of device rows.

port names

Optional CSV of human-readable port labels. Empty entries fall back to Pnn.

device names

Optional CSV of human-readable device labels, one per global device index. Empty entries fall back to Dnn.

row exclusive

When ON (default), turning a cell on clears every other on-cell in the same device row.

col exclusive

When ON (default), turning a cell on clears every other on-cell in the same speaker column.

clear

Momentary button. Clears the entire patch matrix (every slot set to 0).

refresh

Momentary button. Forces a full rebuild of the device layout and the chunk-driven schema on demand.

reset ui

Momentary button. Collapses all groups and arrays and expands all ports, restoring the default view.

zoom

Cell-size zoom factor, range 0.25 – 4.0 (default 1). Also driven by Ctrl + mouse wheel.

scroll x

Normalised horizontal scroll position, range 0 – 1. Bidirectional — written by the mouse / wheel and readable on the next frame.

scroll y

Normalised vertical scroll position, range 0 – 1. Bidirectional, as scroll x.

patchable slots

Bidirectional float array holding the authoritative patch state: 0.0 or 1.0 per slot, indexed device × speakerCount + speaker. Wire it out to drive a router / mix matrix, or write to it to set the grid from elsewhere.

status

Read-only text line summarising the current structure, e.g. groups=… arrays=… spk=… ports=… dev=… cols=… rows=…. Handy for debugging the chunk / device configuration.

Common Settings

info

show manual

Opens the web browser to display information or help about the selected object, if it exists.

For more details about information/help creation, see create-help-file.

description

Description of the module for internal help purposes only. The description is not displayed in the interface.

ID's

visible only in god mode, see setup-panel-tab-expert.

unique ID

Current private ID for this control used to identify the object.

preset ID

Current private preset ID for this control used for presets.

recreate ID

If you experience difficulties in Polyphonic mode, try to recreate new id(s) with this button.

repair ID s

Each Patch shared on the local network uses its own ID (identification number). If you experience issues of Patches that don't send information to the good target, this button will rebuild all these id's.

Object Remote Address

absolute

Absolute remote address. see objects-address.

local

Local to the current patch remote address. see objects-address.

user addr

User defined remote address. see objects-address.

See also

version 7.0.250121

Edit All Pages