FX Routing
Fusor Studio can route shared FX units to the correct deck automatically when a transition starts, so an FX instance you authored on the incoming side lands on the incoming deck regardless of how the host application currently has its FX units assigned.
This applies to apps with a shared-unit FX model: Traktor and Mixxx. djay uses per-deck FX Banks instead and is unaffected.
Why it matters
In Traktor and Mixxx, each FX unit (FX1–FX4) is a shared resource that has to be routed to one or more decks before it has any audible effect. The fusor's role-based addressing says "this FX instance applies to incoming," but if the host has FX1 currently assigned to the wrong deck, the effect lands silently on the wrong audio.
Auto-assignment closes that gap. At transition start, Fusor Studio walks the active fusor's fx_unit instances, turns each unit on for its role's deck, and clears it from the other decks. The routing is injected as a system-managed contribution to the fusor's prerun queue. See Pre-run Actions.
The setting
Settings > Guards > Auto-assign FX units to decks (Traktor, Mixxx).
Default: ON.
- ON. At transition start, Fusor Studio routes each
fx_unitinstance in the fusor to the deck that matches its role placement (incoming or outgoing). The host's pre-transition FX-routing setup is left untouched until the transition actually plays; arming alone makes no MIDI changes here. - OFF. Fusor Studio leaves FX routing entirely to you. Make sure the host's FX-unit-to-deck assignment matches the fusor's role placement before you arm the transition.
The setting lives next to the Snapshot/Restore switch on the same Guards tab because the two compose; see below.
Flipping either Guards switch applies immediately, mid-session: the running engine picks it up right away, with no need to restart Fusor Studio or reconnect the MIDI bus.
Snapshot and restore
Fusor Studio's Snapshot / Restore captures the host's pre-transition control positions and restores them when the transition completes. When both Auto-assign FX units and Snapshot / Restore are ON, the snapshot is widened to also capture the deck.{a-d}.fx.assign.{1-4} addresses the auto-routing is about to overwrite right before it emits, up to 16 values depending on how many FX units the fusor uses. On completion, those values are restored.
The result: the host's "manual" FX routing (whatever you had set up before the transition) is preserved across an automated transition. You can leave a favourite FX layout on Traktor's mixer between transitions and Fusor Studio will respect it.
If Snapshot/Restore is OFF, no FX routing is restored; the routing Fusor Studio emitted at start time is left in place.
If your host doesn't send FX-assign feedback over MIDI ("Out" tab not configured), Fusor Studio's state cache stays cold for those addresses and the snapshot quietly skips them; there is nothing to restore. Configure the FX Assign Out bindings (see Teach Mode) if you want the snapshot to capture them.
This entire mechanism is disabled in Blind Mode; there is no telemetry to snapshot from. See Blind Mode.
When to leave it ON vs OFF
Leave it ON (default) when:
- You use Traktor or Mixxx with a properly taught canonical mapping (FX Assign In bindings present; see Teach Mode).
- You want fusors to "just work" regardless of the host's current FX setup.
- You want your manual FX routing preserved across transitions (combine with Snapshot/Restore ON).
Turn it OFF when:
- You're authoring or debugging an FX-routing flow yourself and don't want Fusor Studio stepping on it.
- Your host mapping doesn't include the FX Assign In bindings, in which case the auto-routing emits to nowhere. Better to know that explicitly.
- You're driving a host other than Traktor or Mixxx with a shared-unit variant that hasn't been validated yet.
Authoring: picking the same FX unit on both sides
The FX Unit domain editor's 2×2 picker makes collisions visible. If you pick the same FX unit number on both sides (for example, FX2 on incoming when outgoing was already on FX2) the side that previously held that unit is unset rather than silently swapped to a different unit. The unset side shows a dashed orange ring with a "Pick a unit" tooltip.
To resolve a collision, click an unused FX number on the unset side, or pick a different unit on the side that caused it.
Click-to-toggle
The picker also supports click-to-toggle on a single side:
- Clicking an FX unit number on a side selects it.
- Clicking the same number again on the same side clears that side's selection, restoring the dashed-orange empty-state ring.
Click-to-toggle gives you a direct way to clear a side without having to stage a collision.
The cross-side collision rule also applies: picking a unit already used by the opposite side unsets that opposite side.
Preflight note
An FX Unit domain arrives carrying the preflight note for your DJ app, taken from the domain registry at the moment you add the domain:
- Traktor. "Assign each FX Unit instance to an FX Unit (1-4) in group mode, configure effects in slots (1-3)"
- Mixxx. "Ensure FX units are enabled in group mode and assigned to target deck"
That text is a snapshot frozen when the domain is added. It doesn't track the auto-assign setting, and turning auto-assign on later won't reword it. If the note no longer describes what your fusor needs, click Override on the domain card and write your own. See Domains — per-card preflight.
App support
| App | Behaviour |
|---|---|
| Traktor | Supported. Routing emits to the canonical deck.{a-d}.fx.assign.{1-4} addresses (notes 20–23 × channels 1–4). |
| Mixxx | Supported. Same canonical addresses, bound in the bundled Fusor.midi.xml to [EffectRack1_EffectUnit{N}].group_[Channel{M}]_enable. |
| djay | Not applicable. djay uses per-deck FX Banks rather than shared FX units; there's no routing to assign. |
| VirtualDJ / Serato | Deferred. The setting is harmless if the canonical bindings aren't taught; the routing emit goes nowhere. |
Tips
- Combine
Auto-assign FX units = ONwithSnapshot/Restore = ONfor the cleanest "fusor takes over for the transition, then puts everything back" experience. - After teaching a fresh mapping, sanity-check with a simple fusor on incoming-side FX: arm it, start it, and watch the host's FX assign LEDs. The correct deck should light up at the moment the transition starts, not at arm.
- If you tweak FX routing in the host while a transition is running, the next snapshot (next transition's start) will pick up the latest values. The previous transition's restore is unaffected.