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.
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.
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 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.
Name of the Usine chunk that holds the speaker topology. Changing it rebuilds the column hierarchy.
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.
Number of physical ports — the top-level rows — range 0 – 64 (default 2).
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.
Optional CSV of human-readable port labels. Empty entries fall back to Pnn.
Optional CSV of human-readable device labels, one per global device index. Empty entries fall back to Dnn.
When ON (default), turning a cell on clears every other on-cell in the same device row.
When ON (default), turning a cell on clears every other on-cell in the same speaker column.
Momentary button. Clears the entire patch matrix (every slot set to 0).
Momentary button. Forces a full rebuild of the device layout and the chunk-driven schema on demand.
Momentary button. Collapses all groups and arrays and expands all ports, restoring the default view.
Cell-size zoom factor, range 0.25 – 4.0 (default 1). Also driven by Ctrl + mouse wheel.
Normalised horizontal scroll position, range 0 – 1. Bidirectional — written by the mouse / wheel and readable on the next frame.
Normalised vertical scroll position, range 0 – 1. Bidirectional, as scroll x.
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.
Read-only text line summarising the current structure, e.g. groups=… arrays=… spk=… ports=… dev=… cols=… rows=…. Handy for debugging the chunk / device configuration.
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.
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.
visible only in god mode, see setup-panel-tab-expert.
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).
Read-only, not saved. Private ID used to store and recall the values of this control in presets.
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.
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.
Read-only, not saved. Address of the object relative to the current patch, valid inside that patch only. See objects-address.
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.
version 7.0.250121
Edit All Pages