← All docs
Mapping

Edge dispatch modes — parallel, sequential, after-prev

By default, when a source fires multiple sinks at once, every edge fires in parallel — all sinks start back-to-back without waiting for each other. v0.5 adds two more modes you can pick per-edge:

  • Sequential — each edge waits for the previous one in the same source group to finish before firing. Optional delayMs between.
  • After-prev — like sequential, but you can also tick "skip if previous failed" to bail on the rest of the chain when an upstream send returns an error.

Selecting an edge

Click an edge on the canvas. The inspector switches to Edge with mode + order + delay controls. Edges with non-default modes render dashed with a small badge at the midpoint:

  • parallel (default; no badge unless you've set an order)
  • ▶ N sequential, position N in the queue
  • ↪ N after-prev, position N

Order

Edges from the same source share a queue. They fire in order ascending; ties keep insertion order. Order applies to all modes (parallel groups also respect it for log readability), but the wire delivery order matters most for sequential / after-prev since those actually wait.

Delay

For sequential / after-prev edges only. Sleep delayMs before firing. Use it to give a downstream system (lighting console, slow OSC peer) time to settle. The router awaits IPC return, not wire flush — so for true sub-frame precision on DMX (when that ships) we'll need a sink-side awaitFlush.

When to use what

  • Parallel (default) — almost always right. Press a button, hit five Resolume parameters at once.
  • Sequential — use when one downstream sink needs the previous one's effect to be visible first. Common case: send a resolume-out set opacity = 1 then a trigger on a clip — the trigger should land after the opacity change.
  • After-prev with skip-on-error — use for cleanup chains where step 2 is meaningless if step 1 didn't succeed. E.g. step 1 connects to a lighting controller and step 2 sends a cue; if step 1 failed there's no point sending step 2.

Example: settle, then trigger

KbInput "1" ──┬─► Resolume Out  set /layer/1/opacity = 1   (sequential, order 1)
              └─► Resolume Out  trigger /layer/1/clip/1     (sequential, order 2, delay 50ms)

Press 1 → opacity ramps up → 50 ms later the clip triggers. Without sequential mode the trigger could land before Resolume processed the opacity change.

Visual cue

  • Solid line — parallel.
  • Dashed line — sequential or after-prev. Look for the badge at the midpoint to read the mode + position.

Caveat

Sequential mode adds latency proportional to the number of edges (each step's IPC roundtrip plus any delayMs). For typical OSC / Resolume sends a single edge is ~1 ms, so a chain of 5 with no delays is ~5 ms — imperceptible for performance use. Don't use sequential mode on continuous (axis / fader) edges; it'll back up.