MIDI Show Control

MIDI Show Control (MSC) is an industry-standard protocol for controlling show equipment. It defines a set of commands inside the MIDI System Exclusive (SysEx) specification. Theatrical productions, theme parks, and live events use it to trigger cues across devices from different vendors.

WATCHOUT receives MSC messages through the MIDI Bridge. It translates them into timeline playback commands.

This page documents the MSC command set and how each command maps to timeline playback. For MIDI Bridge setup, see MIDI Bridge. For the raw HTTP endpoint, see HTTP REST API.

How MSC Reaches WATCHOUT

The MIDI Bridge listens for MSC SysEx messages on its MIDI input. It parses each message and checks the device ID.

The MIDI Bridge forwards a message only when its device ID matches the configured MSC Device ID or the all-call ID 127.

Matching messages are sent to the Director's /v0/msc endpoint on port 3019. The Director runs the timeline command.

Set the input port and MSC Device ID in the MIDI Bridge settings. Different IDs let multiple WATCHOUT systems on one MIDI network respond to different messages.

Supported Commands

WATCHOUT supports four MSC commands.

  • GO — Runs a timeline. With a Q-number, the timeline jumps to the matching cue and runs.
  • STOP — Pauses the timeline at its current position. With a Q-number, the timeline jumps to that cue and pauses.
  • GO OFF — Stops the timeline. With a Q-number, the timeline jumps to that cue and stops.
  • RESET — Stops every timeline in the show. This command takes no Q-number or list number.

Q-Number and List Number

GO, STOP, and GO OFF accept optional Q-number and list number fields. These fields select the target cue and timeline.

  • Q-number — Matched against cue names on the target timeline. WATCHOUT uses the start time of the earliest matching cue as the target time.
  • List number — Matched against timeline names. The command targets the timeline with the matching name.
  • No list number — The command targets the timeline with the lowest ID.

A list number without a Q-number is an error. Always send a Q-number when you send a list number.

A Q-number that names no cue returns a 400 error, "MSC Cue not found".

To run or pause from the timeline's current position without jumping to a cue, send Q-number 0. This value bypasses the cue search.

MSC Message Format

WATCHOUT processes standard MSC SysEx messages with this structure.

F0 7F {device_id} 02 {command_format} {command} {data} F7

  • F0 — SysEx start byte.
  • 7F — Universal System Exclusive (real-time).
  • {device_id} — 0–126 for a specific device, 127 (0x7F) for all-call.
  • 02 — MSC sub-ID.
  • {command_format} — The device type being controlled.
  • {command}0x01 (GO), 0x02 (STOP), 0x0B (GO OFF), 0x0A (RESET).
  • {data} — Optional Q-number, list number, and path fields. WATCHOUT splits the fields on 0x00 delimiter bytes.
  • F7 — SysEx end byte.

Use Cases

  • Theatrical show control — Trigger WATCHOUT cues from a stage manager's MSC console.
  • Multi-vendor coordination — Sync WATCHOUT with lighting, sound, and automation systems that share one MSC cue stream.
  • Theme park automation — Run WATCHOUT inside ride and attraction control systems that use MSC for sequencing.