showstack / compare / osc-vs-midi-show-control
OSC vs MIDI Show Control
Should show control run on OSC or MSC? Below is every field we hold on both, side by side. Each one is sourced on the individual entry, and anything nobody could source is left blank rather than guessed.
Side by side
| OSC | MIDI Show Control | |
|---|---|---|
| Category | show-control | show-control |
| Flow | Control — small, urgent, must arrive | Control — small, urgent, must arrive |
| Ports | UDP 53000, TCP 3032, TCP 3037 | |
| Transport | udp, tcp | midi-din, usb |
| Multicast | no | no |
| Spec availability | open-published | open-published |
| Steward | CNMAT, University of California Berkeley | The MIDI Association (MIDI Manufacturers Association) |
| First published | 2002 | 1991 |
| Status | current | current |
| Our confidence | verified | reported |
Both are control flows. Latency and loss on the messages that fire once. A repeating level survives a dropped packet; a GO does not. That applies equally to either, so it is not a discriminator here.
Speaks both (20)
These are the safe choices if you have not committed to either, or need to bridge the two.
- ChamSys MagicQ ChamSys
- disguise Designer disguise
- Eos Electronic Theatre Controls (ETC)
- Isadora TroikaTronix (Mark Coniglio)
- Medialon Control System Medialon (Barco)
- Millumin Anomes (Philippe Chaurand)
- ONYX Obsidian Control Systems
- Protokol Hexler
- QLab Figure 53
- Show Cue System (SCS) Show Cue Systems
- WATCHOUT Dataton
- 7thSense Delta Media Server 7thSense
- Avolites Diamond 9 Avolites
- ChamSys MagicQ MQ500M Stadium ChamSys
- disguise gx 3 disguise
- Eos Apex 5 ETC
- ETC Eos Apex 10 ETC
- ETC Ion Xe 20 ETC
- Hog 4 High End Systems
- Medialon Showmaster Pro Medialon (Barco)
OSC only (79)
- Ableton Live Ableton AG
- Ardour Ardour Community
- ArKaos MediaMaster ArKaos
- Capture Capture Visualisation AB
- CasparCG Server CasparCG project
- Chataigne Ben Kuper
- Bitfocus Companion Bitfocus AS
- Daslight Daslight (Nicolaudie)
- DMXControl 3 DMXControl Projects e.V.
- Go Button Figure 53
- Godot Engine Godot Foundation
- grandMA3 onPC MA Lighting
- HeavyM HeavyM
- Hippotizer Green Hippo (an ACT Entertainment brand)
- L-ISA Controller L-Acoustics
- Lightkey Lightkey
- Lightwright Lightwright LLC (John McKernon Software)
- MadMapper garageCube
- Max Cycling '74
- Mitti Imimot
- Mixing Station David Giga
- Modul8 GarageCUBE
- Node-RED OpenJS Foundation
- Notch Notch (10bit FX Limited)
- OLA (Open Lighting Architecture) Open Lighting Project
- Open Stage Control Jean-Emmanuel Doucet
- openFrameworks openFrameworks community
- PIXERA AV Stumpfl
- Processing Processing Foundation
- ProPresenter Renewed Vision
- ProVideoPlayer (PVP) Renewed Vision
- Pure Data Miller Puckette and contributors
- QLC+ QLC+ project
- REAPER Cockos Incorporated
- Resolume Arena Resolume
- Smode Smode Tech
- Stage Precision Stage Precision
- TouchDesigner Derivative
- TouchOSC Hexler
- Unity Unity Technologies
- Unreal Engine Epic Games
- Ventuz Ventuz Technology
- vMix StudioCoast
- vvvv vvvv group
- Wireshark Wireshark Foundation
- Alcorn McBride A/V Binloop HD Alcorn McBride
- Allen & Heath dLive S7000 Allen & Heath
- Allen & Heath SQ-6 Allen & Heath
- Analog Way Aquilon RS4 Analog Way
- Analog Way Picturall Mark II Analog Way
- Avid VENUE S6L-32D Avid
- Avolites Ai Q3 Avolites
- Avolites Tiger Touch III Avolites
- Barco Event Master E2 Barco
- Behringer X32 Behringer
- ChamSys MagicQ MQ80 ChamSys
- Christie Pandoras Box Christie
- Crestron CP4N Control System Crestron
- Dataton WATCHPAX 60 Dataton
- d&b audiotechnik DS100 Signal Engine d&b audiotechnik
- DiGiCo Quantum 338 DiGiCo
- DiGiCo SD12 DiGiCo
- disguise vx 4 disguise
- grandMA2 full-size MA Lighting
- grandMA3 full-size MA Lighting
- MA Lighting grandMA3 light MA Lighting
- Green Hippo Hippotizer Karst+ MK2 Green Hippo
- Hippotizer Boreal+ MK2 Green Hippo
- Kinesys Elevation 1+ Kinesys
- Midas HD96-24 Midas
- Modulo Kinetic Modulo Pi
- Obsidian Control Systems NX4 Obsidian Control Systems
- AV Stumpfl PIXERA one AV Stumpfl
- Q-SYS Core 510i QSC (Q-SYS)
- TAIT Navigator TAIT
- TTA StageTracker II TTA — Track The Artist
- Yamaha CL5 Yamaha
- Yamaha RIVAGE PM7 Yamaha
- zactrack PRO zactrack
MIDI Show Control only (3)
- Bome MIDI Translator Pro Bome Software
- dot2 onPC MA Lighting
- MIDI-OX
What goes wrong with OSC
OSC defines no port and no transport. Every product picks its own, and the receiver usually needs telling the reply port as well as the listen port, so a link that "works" one way often has no return path at all.
Over TCP or serial there are two incompatible framings. OSC 1.0 prefixes each packet with a 32-bit length; OSC 1.1 uses SLIP. ETC put them on separate TCP ports (3032 and 3037) precisely because you cannot detect which is which.
There is no formal 1.1 specification document, only a NIME 2009 paper. When a datasheet claims "OSC 1.1 support" it can mean SLIP framing, the new argument types, or almost nothing.
Address patterns support wildcards on the receiving side, so a stray /eos/chan/* reaches far more than one channel. Test pattern messages against a rehearsal state, never against a running show.
Bundle time tags are 64-bit NTP timestamps and assume the two machines agree on time. Many entertainment implementations ignore the tag entirely and execute on arrival, so do not build sample-accurate timing on it.
UDP has no delivery guarantee and OSC adds none. A single lost GO is simply gone with no error anywhere. If the cue matters, use a TCP link where the product offers one.
What goes wrong with MIDI Show Control
The message is F0 7F <device_id> 02 <command_format> <command> <data> F7. Device ID 127 (0x7F) is all-call, so a receiver left at 127 acts on every message on the line including ones meant for another department.
Command format is a category, not an address. 01 is Lighting (General), 02 Moving Lights, and a receiver only acts on the formats it is set to accept. A format mismatch is the most common cause of "MSC is doing nothing".
Cue data is ASCII digits with 0x00 delimiters between cue number, cue list and cue path. Cue 5 and cue 5.0 are different byte strings, so cues can fire on some numbers and be silently ignored on others.
Nothing acknowledges an MSC message. If the receiver was powered down, on a different device ID or on the wrong command format, the sender reports a perfectly successful GO.
A DIN MIDI line runs at 31.25 kbit/s and everything shares it. A continuous MTC quarter-frame stream on the same cable will delay cue messages by a measurable and variable amount.
MSC is one-directional and has no state. A receiver that missed the GO will not catch up, so a device that came back from a reboot mid-act stays where it was until you send it somewhere.
Sources
- The Open Sound Control 1.0 Specification — CNMAT / Stanford CCRMA primary
- OpenSoundControl.org — history, authorship and versions — CNMAT / Stanford CCRMA primary
- OSC 1.1 — there is no 1.1 specification in the style of 1.0 — CNMAT / Stanford CCRMA primary
- TCP port for OSC communication with Eos software — Electronic Theatre Controls
- QLab 5 OSC Dictionary — Figure 53
- MIDI Show Control — RP-002-014 v1.1.1 specification — The MIDI Association primary
- MIDI Show Control — WATCHOUT 7 User's Guide (device IDs, all-call, sysex layout) — Dataton
- MIDI Show Control and MIDI note (command formats, commands, cue encoding) — Electronic Theatre Controls
- Cognito Console — MIDI Show Control — Pathway Connectivity / City Theatrical
- MIDI Show Control — ratification dates — Wikipedia
Disagree with any of this?
Every claim above comes from one of the two entries and carries a source. If one is wrong, correcting it is a single file and it fixes this page automatically. Edit OSC or edit MIDI Show Control.