XFORMER Routing

The routing system is a modulation matrix: any source — a CV input, a bus, a modulator, a MIDI message — can drive any target: a track or sequence param, a play-state action, the transport, a global setting, or a CV bus. Routing is modulate-around-a-base, not overwrite — a route adds an offset on top of the value you set on the param's own page, so params stay editable while routed.

1 · Overview
2 · The three apply models
3 · The tab editor
4 · Sources
5 · Target families
6 · Play-state & global transport
7 · BUS & CV router
8 · MIDI routing

1 · Overview

A route is a wire from one source to one target. Up to 16 routes exist at once. The signal chain is always the same: a normalized source value is scaled, shaped, and combined, then applied to the target according to the target's apply model.

The defining property is modulate-around-a-base. A route does not replace the value you dial on a param's own page — it adds a modulation offset on top of that base. Your hand-set value stays live and editable; routing sweeps around it. This is the core difference from legacy Performer routing, which replaced the value outright.

Because the base is preserved, you can leave a route wired and still tune the param by hand. The route rides on whatever base you set.

2 · The three apply models

A route reaches its target through one of three paths. The target decides which — you don't pick the model, the param you aim at determines it.

2.1 Override (base + delta) continuous params

For continuous per-track and global params — Transpose, Scale, Divisor, Octave, Tempo. The route turns the source into a delta: scaled by the route's depth %, bent by its shaper, and combined per its combine mode. The effective value is your base plus that delta, clamped to the param's range. Your hand-set base is preserved — routing modulates around it.

2.2 Trigger (raw source) actions & transport

Run and Reset, plus the five global transport actions (Play, Play-Toggle, Record, Record-Toggle, Tap-Tempo), read the raw normalized source only:

Depth, scale source, shaper and combine do not apply to trigger targets. The tab editor hides those views for a trigger row and shows a source only.

2.3 Bus (sum-then-clamp) CV buses

Sources routed to a CV bus sum into the bus, clamped ±5 V, so several modulators can feed one bus. Bus routes are created on the dedicated BUS tab, not the param bands. A bus routing to itself is blocked; cross-bus feedback (bus1→bus2→bus1) is allowed — it is bounded and behaves like patching a CV output back to an input.

3 · The tab editor

The routing page is a tab editor: a ring of tabs across the top, each showing a column of param rows × 8 track cells.

TabWhat it holds
Fixed bandsPitch, Clock, Global — the cross-engine params grouped by concept.
Engine pagesOne per track mode: that engine's own routable params.
BUSThe four CV bus lanes.
MIDIThe learned MIDI routes.

3.1 The three fixed bands

Clock band: transport rows (Play/Toggle/Record/Tap) shown as source-only global rows

The Clock band. The transport rows (Play / Toggle / Record / Tap) are source-only global rows — no per-track cells, no depth.

3.2 Rows: per-track vs global

3.3 Views

Cycle with VIEW (F1): SOURCE → DEPTH → SCALE → SHAPER → SOURCE.

Global band, SHAPER view: fold/crease response curve per row

Global band, SHAPER view — the fold / crease response curve per row.

Trigger rows (Run / Reset / transport) offer SOURCE only. The VIEW cycle stays on SOURCE and the cells always show the source, since depth / scale / shaper are meaningless for a raw-trigger consumer.

3.4 Editing a route

Edits are staged in a draft — nothing changes until Commit, so Cancel truly reverts.

3.5 MOD+ / MOD− inline setup

From a track or sequence param page you can add modulation to the param under the cursor without opening the routing page:

4 · Sources

Every route picks one primary source. The source abbreviations shown in the SOURCE view:

TokenSource
IN1–4CV inputs
O1–8CV outputs
B1–4CV buses
G1–8Gate outputs
M1–8Modulators
MIDIconfigured on the MIDI tab
Noneinert — a route with no source does nothing

A route's scale source picker offers the same list minus MIDI, minus the route's own primary source (no self-squaring), and minus any self-routing bus.

5 · Target families

Each target belongs to a family that fixes its apply model and scope:

FamilyExamplesApply modelScope
Pitch / structuralScale, Root Note, Transpose, Octave, Slide Time, Rotateoverrideper-track
ClockDivisor, Clock Multiplieroverrideper-track
Transport (per-track)Run, Resettriggerper-track
Transport (global)Play, Play-Toggle, Record, Record-Toggle, Tap-Tempotriggerglobal
Play-stateMute, Fill, Fill Amount, Patternlevel-drivenper-track
GlobalTempo, Swing, CV-Router Scan/Route, CV/Gate-Output Rotateoverrideproject
BusBus CV 1–4sum-then-clamp—
Per-engineeach track mode's own params (Algorithm, Chaos, Fractal, Stochastic, DiscreteMap inlets, Indexed A/B)overrideper-track

6 · Play-state & global transport

6.1 Play-state targets Mute / Fill / FillAmount / Pattern

Per-track and level-driven: re-evaluated each frame and idempotent.

6.2 Global transport

The engine consumes these directly. Play and Record follow the source level; Play-Toggle, Record-Toggle and Tap-Tempo fire on a rising edge.

Routing both Play and Play-Toggle (or Record + Record-Toggle) is allowed but can fight — prefer one transport control per action.

7 · BUS & CV router

Four CV bus lanes. Each lane shows its live bipolar volts, its one feeding route (source + depth), and CVR / TT activity lights. Buses are a mixing node — multiple routes sum into one bus, clamped ±5 V.

BUS tab: four lanes with live volts, source+depth, CVR/TT activity lights

The BUS tab — four lanes, live volts, source + depth per lane, CVR / TT lights.

The independent interpolating CV router is a 4×4 matrix with Scan / Route targets that can also feed the buses.

8 · MIDI routing

A route whose source is MIDI is configured on the MIDI tab — port, channel, event, and CC-or-note. MIDI-learn assigns an incoming message to a route.

When a slot is reassigned from a CV source to MIDI, its value is cleared so it starts neutral until the first matching MIDI message arrives.