Remote Control: Sequencers

Last updated 7 August 2026

How to drive a sequence from outside Backstage — transport, position, speed and fades, plus live playback state.

This page covers controlling a sequence. Building one is done in the Sequencer window.

Before you start

  • A sequence exists, with its channels assigned and its assets placed as events
  • Its name is settled — every route addresses it by name
  • For the protocol: Settings > Remote Control > Enable Show-Control Protocol is on (off by default)

JSON protocol — domain seq

Send newline-delimited JSON to TCP 7400 (or UDP 7401 if enabled), with target set to the sequence's exact name, case-sensitive.

Actions

Action

Args

Effect

list

—

Every sequence in the project, each as a status object. Use it to discover exact names

status

—

The status object for one sequence

play, pause, stop, restart

—

Plain transport

bang

—

Fire the sequence's trigger input

fadein, fadeinplay

—

Fade up; fadeinplay also starts playback

fadeout, fadeoutpause, fadeoutstop

—

Fade down, optionally pausing or stopping at the end of the fade

seek

{"frac": 0.0–1.0}

Jump to a fractional position within the duration

jump

{"time": <seconds>}

Jump to an absolute time position

tempo

{"value": <speed>}

Playback speed: 1.0 normal, 0 paused, 2 double, negative runs in reverse

fade

{"value": 0.0–1.0}

Set the fade multiplier directly, rather than running a fade action

{"domain":"seq","action":"list"}
{"domain":"seq","action":"play","target":"Show A"}
{"domain":"seq","action":"seek","target":"Show A","args":{"frac":0.5}}
{"domain":"seq","action":"jump","target":"Show A","args":{"time":42.5}}
{"domain":"seq","action":"tempo","target":"Show A","args":{"value":0.5}}

The fade actions belong to sequences, not to steppers. That is why a stepper's custom command patch describes itself as "forwarding actions to the active sequences" — over the protocol you address those sequences directly in this domain.

Status

Field

Meaning

name

The sequence's name — the sole identifier

state

Playing, Paused or Stopped

time / duration

Current position and total length, both in seconds

looped

Whether the sequence repeats instead of ending

tempo

Current playback speed

fade

Current fade multiplier, 0–1

Live status

{"domain":"sys","action":"subscribe","args":{"domains":["seq"]}}

Backstage then pushes an immediate snapshot, an event on every state change, and a heartbeat roughly every 3 seconds — so a dropped frame self-heals without a polling loop. time advances during playback, which makes this the natural feed for a progress readout on a control surface.

Web Console — the Sequencer block

Drop a Sequencer block onto a Web Console page for play, pause and stop plus a live progress bar, pre-bound to that sequence. Sequencer (Node) binds by node label instead, so the block follows whichever sequence that node currently drives.

Node editor — pins and custom schemes

A Sequence:Sequence node references a sequence and exposes it to the graph:

  • Action input — takes a transport action, the same vocabulary as the protocol

  • Set time input — drives the playback position, which is how timecode chasing is wired

Tick Advertise in the node's options, with a Sequence:Announcer node set to Advertised, to broadcast sequence state onto the network for another Backstage or a Conductor to follow.

Common Mistakes

  • 404 sequence not found — target must match the name exactly, including case. Run seq.list to read back the real names.

  • seek and jump confused — seek takes a fraction of the duration, jump takes seconds. Sending {"frac": 42} does not go to 42 seconds.

  • A fade appears to do nothing — check fade in the status. If it is already at the target value there is nothing to fade, and a fade action sets the multiplier immediately rather than ramping.

  • Playback looks frozen — tempo may be 0, which is a paused sequence still reporting Playing. Read the status rather than inferring from the transport command you sent.

  • A response does not mean it happened — accepted: true only means the command was queued. Subscribe, or read status, to confirm.

Remote Control — the three routes, and every other controllable element

Remote Control: Steppers — steppers, which drive sequences step by step

Enable and Configure the Show-Control Protocol — the protocol in full: transports, auth, allowlist, the reference client

Sync to Timecode (LTC) — chasing LTC timecode, the clock-driven alternative to commanded transport