FX Routing

The Fusor player can route shared FX units to the correct deck automatically when a transition starts, so an FX instance you authored on the incoming side is routed to 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". If the host has FX1 assigned to the wrong deck, the effect is applied to the wrong deck, with no warning.

Auto-assignment prevents this. At transition start, the Fusor player goes through the active fusor's fx_unit instances, turns each unit on for its role's deck, and clears it from the other decks. In Traktor it also sets each unit's Routing Selector to that side's Mode. The routing runs with the fusor's pre-run actions: while you edit the fusor, its pre-run actions show it as a blue banner. Session View does not list it. See Pre-run Actions.


The setting

Settings > Guards > Auto-assign FX units to decks (Traktor, Mixxx).

Default: ON.

  • ON. At transition start, the Fusor player routes each fx_unit instance in the fusor to the deck that matches its role placement (incoming or outgoing). In Traktor it also sets the unit's Routing Selector to the side's Mode, Insert or Post Fader. The host's pre-transition FX-routing setup is left untouched until the transition plays; arming alone makes no MIDI changes here.
  • OFF. The player leaves FX routing entirely to you. Make sure the host's FX-unit-to-deck assignment matches the fusor's role placement, and each unit's routing matches its Mode, 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.

Changing either Guards switch applies immediately: the running engine picks it up right away, with no need to restart Fusor Studio or reconnect the MIDI bus.


Snapshot and restore

The Fusor player'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. In Traktor it also captures each of those units' Routing Selector. 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 the transition. An FX layout left on Traktor's mixer between transitions survives.

If Snapshot/Restore is OFF, no FX routing is restored; the deck assignment and the Routing Selector position the Fusor player emitted at start time are left in place.

A unit's routing and a unit's knobs end a transition by different rules. Everything above is about routing: which deck the unit is assigned to, and its Routing Selector. On the outgoing side, the knobs (Dry/Wet, the slot Amounts, the slot Enables) are governed by the domain's End of run setting, and the FX Unit domain ships on Home, so at the end of the transition the outgoing unit closes itself. That needs no baseline, so it happens with Snapshot/Restore off and in Blind Mode alike, where the routing needs both settings on. See Domains → End of run.

If your host doesn't send FX-assign feedback over MIDI ("Out" tab not configured), the Fusor player has no value for those addresses and the snapshot skips them; there is nothing to restore. Configure the FX Assign Out bindings (see Teach Mode) if you want the snapshot to capture them. The Routing Selector follows the same rule: it is put back at the end only when it is mapped as an output in Traktor. Without that, the unit stays at the routing the player set.

The routing snapshot is disabled entirely 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 each fusor's FX units routed correctly 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 are authoring or debugging an FX-routing flow yourself and don't want the Fusor player changing it.
  • Your host mapping doesn't include the FX Assign In bindings, in which case the auto-routing emits to nowhere.
  • You are controlling a host other than Traktor or Mixxx with a shared-unit variant that has not been validated.

The rules of an FX Unit domain

An FX Unit domain has two sides, the outgoing deck and the incoming deck, and you put effect curves on either or both.

  • A side you put no curves on has no FX unit. Nothing is routed to that deck and nothing in any unit is touched for it. If you only have effects on one side, the fusor uses a single unit.
  • One FX unit per side. A fusor has at most one on the outgoing side and one on the incoming side.
  • When both sides have effect curves, each gets its own unit, and the two are always different. Picking the unit the other side holds swaps the two, in the editor and in Session View alike.
  • Each side with curves has its own Mode, Insert or Post Fader, because each one is its own unit in your DJ app.
  • The unit is routed when the transition starts, not when you arm it. In Traktor that includes setting its Routing Selector to the Mode.
  • Dry/Wet belongs to the unit, and effects sit in its slots 1 to 3.
  • Both side tabs are always in the curve editor. You do not choose how many sides an FX domain has; you add a curve to whichever side you want.

Authoring: picking an FX unit

The card's 2×2 picker is where you pick a unit. The domain editor has no unit picker of its own.

A side's picker appears on the card once that side has a curve. A side with no curves shows no picker, has no unit and is not saved, so to keep a deck's FX unit free, don't author curves on that side.

A side starts on its role's default unit: 1 for outgoing, 2 for incoming. Clicking the unit a side already holds does nothing.

When both the outgoing and incoming sides have effect curves, each holds its own unit and the two never match. Clicking the unit the other side holds trades the two: your side takes the unit you clicked, and the other side takes the one you gave up.

When you add curves to a side that had none, its picker appears on a unit the other side is not using, usually its role's default. On reopening a fusor, such a side takes its role's default, or the other role's default if the other side holds it.

Importing a domain into a fusor that already has one follows the same rule: if the side being imported would land on the unit your existing side already holds, the imported side takes its role's default, or the other role's default if that is the one held, and your existing side is left alone.

This matches the trade Session View makes when you pick a held unit on a loaded fusor. See Loading a fusor → Expanding a domain card.


Authoring: a fusor owns the whole FX unit

An FX unit used in a fusor shouldn't be used for anything else during the mix.

The reason is the unit's Dry/Wet. There is one Dry/Wet for the whole unit, shared by all three slots, so a fusor that sweeps it is already moving whatever else you have running in that unit. A fusor therefore states what every slot is doing.

What that means in practice:

  • Every slot gets an Enable lane, whether you author one or not. Slots you author curves for are switched on; slots you leave empty are switched off. Fusor writes the missing ones when you save.
  • Starting the transition switches off the unit's other slots. If you had an effect running in slot 2 of that unit, it stops when the fusor starts.
  • Pick a unit you aren't using by hand.

Switching a slot on

A slot's Enable starts Off and stays locked until the fusor modulates that unit, which means until you author an Amount curve on any slot, or a Dry/Wet curve on the unit. Until then the curve editor shows "Off: set by the fusor" and won't let you create a lane, because there is nothing yet for the switch to enable.

Once you've authored anything on the unit, every slot's Enable becomes yours to set. Switch on the slot holding your effect. Two common shapes:

  • Modulate the effect. Amount curve on slot 1, plus its Enable switched on. The fusor moves the effect's own control.
  • Open the unit. Enable switched on for the slot holding whatever you already have loaded, plus a Dry/Wet curve. The fusor leaves the effect's settings alone and brings the unit in.

If you author a Dry/Wet curve and switch no slot on, the card warns you: "nothing will be heard." With every slot off, the unit is silent for the whole run and the sweep does nothing.

A fusor you load says it too, on the Session View card, in longer words: "No slot on the outgoing FX unit is switched on, so its Dry/Wet moves but nothing will be heard."

Naming the effect on a slot

A slot's Enable switched on says the fusor uses that slot. It doesn't by itself say what effect the fusor expects to find there.

Author an Amount curve on a slot and the editor asks for the effect's name the first time, then uses it as the slot's tab label from then on. See Curve editor → Empty state and creation. The Open the unit shape above never creates an Amount curve, so the editor never asks. Name the effect yourself by double-clicking the slot's tab. The warning below is for a slot switched on with no effect named, whether or not an Amount curve exists on it.

Fusor Studio warns rather than refuses: no fusor is rejected for it, and a fusor built this way still loads and runs. While you author, the domain card shows a chip: "Outgoing: no effect declared" (or "Incoming: …"). Its tooltip says the Fusor switches on those slots but names no effect, so it plays whatever is loaded, and tells you to declare the effect on the slot. Double-click the slot's tab in the curve editor to do that. Because the effect is whatever the unit holds, the transition sounds different whenever a different effect is loaded there.

A fusor you load shows the same warning on the Session View card, in longer words, and it does not end in an instruction to edit, because a DJ mid-set can load an effect into the slot but cannot declare one: "Slot 1 of the outgoing FX unit is switched on, but this Fusor does not say which effect it wants — it will play whatever is loaded there."

Where a side has more than one thing to say, this line sits between the other two: "nothing will be heard" first, since a side making no sound is the bigger problem, then this one, then whatever the side leaves behind once the run ends. A side can show this warning and a residue warning together. They describe different moments, the slot switched on during the run and what is left once it finishes.

Ending with the unit still open

A fusor can end with the unit's Dry/Wet still open, or a slot still switched on. Whether anything puts it back is the domain's End of run setting. End of run acts on the outgoing side; the incoming side has one exception.

Outgoing. Home closes the unit and Restore returns it to where you had it before you armed. Only Leave leaves it open. Set an outgoing FX Unit to Leave and end the curves wet, and the card warns you: "Outgoing: left enabled and wet." With the effect tail on, the tail fades Dry/Wet to dry by the end of the run, so Leave leaves the slot enabled but dry and the card reads "Outgoing: slot left enabled". Where the tail is available and off, the warning's tooltip also suggests turning it on.

Incoming. End of run never reaches an incoming Dry/Wet, so where the curve ends is where it stays. An incoming slot Enable is different: Restore switches it back once the controls that slot opens are back at their defaults, and Leave and Home do not. So an incoming side can warn even on Home, and the card names the lane it means: "Incoming: Dry/Wet left open", "Incoming: slot left enabled", or "Incoming: left enabled and wet" when it is both.

Three ways to clear the warning:

  • Bring the curve back down before the end.
  • Fade the effect out inside the run, over the last part of the curve. Bring a Dry/Wet back to dry, and step a slot Enable to Off.
  • On the outgoing side, set End of run to Home or Restore. On the incoming side, Restore covers the slot Enables; a Dry/Wet still has to come down in the curve.

The warning is not an error. The fusor is valid and saves. The warning states that the run ends with the effect still open and nothing puts it back.

On a loaded fusor. The same check runs on the domain card in Session View, so a fusor you did not author still says what it will leave behind: "Ends with the outgoing FX unit wet and switched on, and nothing puts it back." It names the side and the residue. Changing End of run on that card updates it, and a domain you switch off shows no warning, because it does not run.

A side that will make no sound reports that instead. The warning above (no slot switched on) replaces this line rather than sitting above it, because a unit with no slot on is off whatever its Dry/Wet reads. Each side is judged on its own, so one deck can report silence while the other reports what it leaves behind.


Authoring: Mode

Every FX Unit card, and the curve editor, has a Mode dropdown, one per side. It answers a single question: does the channel fader turn this effect down along with the track?

  • Insert. The effect sits in the channel. Pull the fader and the effect goes with it.
  • Post Fader. The effect is after the fader. Pull the fader and the effect keeps ringing.

A new FX Unit starts at Post Fader.

The Fusor player sets the routing. When Auto-assign FX units is on and your DJ app is Traktor, the player sets the unit's Routing Selector to the Mode when the transition starts, not when you arm it. With Snapshot / Restore on and the Routing Selector mapped as an output in Traktor, the Routing Selector is put back at the end of the transition; otherwise the unit stays as the player set it. In another DJ app, or with Auto-assign FX units off, set the unit's routing in the DJ app yourself to match the Mode. Each side starts on its role's default unit, 1 for outgoing or 2 for incoming (see picking an FX unit above); click another unit number on the card to change it.

Mode is authored. It lives in the fusor and is absent from Session View. Change it on the card or in the curve editor. Either one updates the other at once.

Three more things read it.

The first is the stand-down. When a fusor takes the outgoing channel fader to zero, the Fusor player normally stops modulating effects on that deck, because there is nothing left to hear. On a Post Fader unit there still is, so it keeps going.

The second is the same judgement on the way in. When the incoming deck is still silent as a run starts, the Fusor player normally sends its controls straight to wherever the fusor begins, because nobody can hear them move. A Post Fader unit is the exception: it can be heard even with the fader down, so the player treats it as it would a control on a deck that is already audible. If you have left it a long way from where the fusor starts, the player leaves it where it is for the whole transition and tells you on the status line (CTL1). Set it near the fusor's starting value before you arm, and it runs normally. A Mixer FX is judged the same way, without a Mode dropdown, because its wet output always survives the fader.

The third is the effect tail, which an FX Unit can have only in Post Fader.


Authoring: the effect tail

An Effect tail leaves room after End for an outgoing effect to taper off. The curves finish at End, and the tailed effect rings out and tapers off after it. The bars set for the transition are the length of the run to End. In Mixed Run Mode the DJ's crossfader sets how long the tail takes. In Auto the clock plays the tail out over a further 25% of the transition's length; to control when the tail tapers off, run the fusor in Mixed. What the Fusor player does during that run is in A run with an effect tail.

The switch. An Effect tail switch sits on the outgoing side of each FX Unit, FX Banks and Mixer FX card in the Domains tab, beside the Mode dropdown on an FX Unit. Incoming sides and other domain types have none, and Session View has none. It is off by default.

  • It needs the End mix point. With any other mix point it is greyed out and off, and its tooltip reads "Needs the End mix point." Moving the mix point off End turns every Effect tail switch in the fusor off.
  • On an FX Unit it needs Post Fader. In Insert the channel fader silences the effect, so the switch is greyed out and off with that reason in the tooltip. Setting a unit to Insert turns its switch off, whether you change the Mode on the card or in the Domain Editor. Setting Post Fader does not turn it on.
  • It needs a continuous curve on the parameter it fades: the FX Unit's Dry/Wet, each FX Banks slot's Dry/Wet, or each Mixer FX slot's Amount. A slot Amount on an FX Unit or FX Banks card is never faded. When that fade parameter is drawn as steps, the switch is greyed out and off, and its tooltip reads "Needs Dry/Wet drawn as a curve, not steps." (Amount on a Mixer FX). When it is not drawn at all, the switch is greyed out and off the same way, and the tooltip reads "Needs Dry/Wet drawn as a curve." Stepping or clearing the lane turns a switch that was on off. Drawing the lane as a curve again makes the switch available and leaves it off. Saving is not refused for either.
  • The Domain Editor has the same switch. It sits on the Outgoing tab of an FX Unit, FX Banks or Mixer FX domain, in the box under the curve between Step Set and Mode (alone in that box on FX Banks and Mixer FX, which have no Mode). The rules above apply to it. It is the same setting as the card's switch and is written with the editor's Save.
  • A domain copied into another fusor with Import Domain keeps its switch, which lands off if the receiving fusor's mix point is not End or the unit is in Insert.

A fusor has a tail when any enabled domain has the switch on. Switching a tailed domain off in Session View, or a DJ app change that turns it off, removes its tail from the run, and if it was the only one the fusor becomes a plain End fusor until the domain is switched back on. That can be done only before the run, and the choice is frozen once the run starts.

What the card says. Status goes in the card header, and the tooltip gives the sentence.

Header textWhenSaves?
Tail: nothing to fadeThe switch is on, but at End the effect is already silent or switched off: the fade parameter sits at its silent position (Dry/Wet at 0, Mixer FX Amount at center), or its own enable is off.Yes
May be cut offThe switch is off on a card that could take a tail, and at End the effect is still up and on. The run ends and the end-of-run setting switches the effect off, which may cut off its ring.Yes

The May be cut off hint does not appear when the effect is authored off at End, or when the card's end-of-run setting is Leave, because nothing then switches the effect off.

Choosing between a tail and a cut. To get a tail, leave the effect enabled at End and turn on Effect tail. The tail fades the effect out, and the end-of-run setting then switches it off. When you don't want a tail, author the effect off at End: its enable off, and its Dry/Wet at zero or, on a Mixer FX, its effect amount at center. That is a deliberate cut and gets no hint.

The curve editor does not change: its full width is still the mix, and the tail is generated rather than drawn.


Authoring: fading an effect out

Without an effect tail, a transition ends when the progress meter reaches 100%, and every curve in the fusor ends there. On an Insert unit that is enough: the fader takes the effect down with the track. On a Post Fader unit, and on a Mixer FX, the outgoing track can be gone while the effect is still ringing, and nothing closes it unless the curve does or the effect has an Effect tail.

To fade an effect out inside the run instead, hold the effect up while the outgoing deck leaves, then over the last part of the curve bring its Dry/Wet back to zero or, on a Mixer FX, its effect amount back to center.

Set the fusor's mix point to Middle if the listener's attention shifts to the incoming track halfway. The mix point does not change how the run plays in Auto Run Mode; see Mix Points.

A curve that ends wet leaves the effect wet when the run finishes. To have it off at the end, end the curve dry or, on the outgoing side, use the domain's End of run setting to put it back (see Domains → End of run).


Preflight note

An FX Unit domain arrives with the preflight note for your DJ app, taken from the domain registry at the moment you add the domain:

  • Traktor. "Set {unit} to Group mode and assign {effects}."
  • Mixxx. "Enable {unit} in group mode, assign it to the target deck and load {effects}."

Fusor Studio fills in the words in braces. {unit} becomes the FX unit the domain uses, and {effects} becomes each effect you named with its slot number. With a Gater named in slot 1 of FX 1, the Traktor note reads "Set FX 1 to Group mode and assign Gater to slot 1." The effect name is the one you typed when the editor asked for it, kept exactly as typed. Rename the effect, or reassign the FX unit before a run, and the note follows. A slot with no name reads "the effect to its slot".

Mixer FX and FX Bank domains work the same way. A Mixer FX note reads "Set Mixer FX to {effect} on the {side} channel.", where {side} is outgoing or incoming.

To say something else, click Override on the domain card and write your own. The same words in braces work in your own text. See Domains → per-card preflight.


App support

AppBehavior
TraktorSupported. Routing emits to the canonical deck.{a-d}.fx.assign.{1-4} addresses (notes 20–23 × channels 1–4), and sets each unit's Routing Selector to its Mode.
MixxxSupported. Same canonical addresses, bound in the bundled Fusor.midi.xml to [EffectRack1_EffectUnit{N}].group_[Channel{M}]_enable. The Fusor player does not set the unit's routing; set it to match the Mode yourself.
djayNot applicable. djay uses per-deck FX Banks rather than shared FX units, so there is no routing to assign.
VirtualDJ / SeratoDeferred. The setting is harmless if the canonical bindings are not taught, because the routing emit goes nowhere.

Three things to know

  • Auto-assign FX units = ON with Snapshot/Restore = ON is the combination where the fusor takes over for the transition and then puts everything back.
  • After teaching a fresh mapping, check it with a simple fusor on incoming-side FX: arm it, start it, and watch the host's FX assign LEDs. The correct deck lights up at the moment the transition starts, and not at arm.
  • FX routing changed in the host while a transition is running is picked up by the next snapshot, at the next transition's start. The previous transition's restore is unaffected.