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

Button. Opens the manual page of the selected object (or of its parent module for a control) in the web browser. If no page exists for this object, an error is traced in the trace panel.

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

description

Free multi-line text attached to the module, saved with the patch. It is only meant as an internal note for the patch designer: it is not displayed in the interface.

ID's

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

unique ID

Read-only, not saved. Current private numeric ID of the object, used internally to identify it (for example as the target of a bind ID).

preset ID

Read-only, not saved. Private ID used to store and recall the values of this control in presets.

recreate ID

Button. Generates a new unique ID, original ID and preset ID for the object. Use it if you experience difficulties in Polyphonic mode or if two objects share the same ID. Preset values and binds referring to the old IDs are lost.

Object Remote Address

absolute

Read-only, not saved. Absolute address of the object in the Usine objects tree, built from the workspace root. This is the address to use to reach the object from scripts, the objects panel or remote messages. Only shown for objects that are registered in the objects list. See objects-address.

local

Read-only, not saved. Address of the object relative to the current patch, valid inside that patch only. See objects-address.

user addr

Free user-defined address for the object (empty by default). When set, the object is also registered in the objects tree under this name, so it can be reached independently of its position in the workspace (the value is also reported in the mouse-over and mouse-down chunks). Changing it rebuilds the objects list. Only available on objects that support a user address. See objects-address.

See also

version 7.0.250121

Edit All Pages