How to Trigger ETC Eos Cues from the Music
Eos speaks OSC out of the box. The exact command surface, why the Go key is not a cue fire, and how to drive the desk from music without an operator.
CueSync TeamShow Control Engineers
Why Eos Is the Easy One
Automating a lighting console usually means finding out which of several half-documented control surfaces the vendor expects you to use. Eos is the exception: OSC is native, documented, and switched on from the console.
Setup → System → Show Control → OSC. Enable RX and TX, set the OSC TCP mode to OSC 1.1 (CueSync's TCP connection is SLIP-framed; Eos's default, OSC 1.0, will connect and then fail), and note the IP and port. That is the whole console-side configuration. No plugin, no middleware, no macro scaffolding in the show file, and nothing that has to be re-done when the show file changes.
Which means the interesting question is not how do I connect but what should I send.
The Command Surface
| Command | Effect |
|---|---|
/eos/key/go_0 | Press Go — advance the active cue list |
/eos/key/stop | Stop / back |
/eos/key/resume | Resume a stopped cue |
/eos/cue/<list>/<number>/fire | Jump to and fire a specific cue |
/eos/cmd | Send a command line, such as selecting a channel |
/eos/sub/<number> | Set a submaster level — float argument |
/eos/macro/<number>/fire | Fire a macro |
Three details in that table are worth stating explicitly, because each one is an easy mistake to make.
The Go key is not a cue fire. /eos/key/go_0 is the operator's Go button: it advances the active cue list from wherever it currently sits. /eos/cue/<list>/<number>/fire jumps to a named cue regardless of position. Sequential playback wants the first. Event-driven triggering that must land on a specific look wants the second. Using Go where you meant an explicit fire produces a show that is correct in rehearsal and wrong the first time anything runs out of order.
Submasters take a float argument, on /eos/sub/<number> — the level is the argument, not part of the address. This is the form that maps cleanly onto a continuous audio parameter.
Macros fire on /eos/macro/<number>/fire. An older form, /eos/macro/fire/<number>, appears in circulated examples; the argument form /eos/macro/fire with the number as an argument is equivalent. Pick one and be consistent.
One more, easily missed: /eos/key/sneak is a valid key and an unrelated function. It is not a pause. Pause is /eos/key/stop.
Discrete Cues or Continuous Levels
Two different mappings, and most shows want both.
Discrete — fire a cue. A drop, a section change, a phrase boundary. The console owns the look; the trigger only decides the moment. This is where beat-phase accuracy matters, because a cue that lands a beat late reads as a mistake rather than a design.
Levels — set a submaster. An action sets /eos/sub/<number> to an authored level when a trigger fires: lift the haze sub on a build, settle it on a breakdown. The rig moves between programmed states rather than only stepping between them, which is what makes automated lighting look intentional instead of mechanical, and it costs nothing on the console beyond having submasters to drive.
A show built only from cue fires looks like a slideshow. A show built only from levels never lands a moment. The combination is the point.
Reading the Console Back
Eos also transmits. It publishes the active cue on /eos/out/active/cue/... and the show name on /eos/out/show/name.
This matters more than it first appears. A controller firing cues blind accumulates a belief about console state that drifts from reality the moment anyone touches the desk — and on a real show, someone always touches the desk. Subscribing to the outbound feed lets a controller reconcile what it thinks is active against what actually is.
CueSync reads this feed to keep its own view of the desk aligned. The equivalent on grandMA3 is that console's OSC-out configuration; the principle is the same, and a controller that does not do it will eventually fight the operator.
What This Does Not Do
It does not program the desk. Every cue fired here was built by someone in the console, and the console remains the source of truth for what a look is. The automation layer decides when, never what.
That boundary is what makes it usable on a real production. On a show with no dedicated Eos operator, this can drive the desk end to end. On a programmed show, it fires the automated cues while an operator keeps a hand on manual override — and because Eos is receiving ordinary OSC rather than being remote-controlled at a lower level, the operator can always take over at the desk with manual override.
Setup, End to End
- On the console: Setup → System → Show Control → OSC. Enable RX and TX, set the OSC TCP mode to OSC 1.1, and note the IP and port.
- In CueSync: Network → Outputs → Add Output → Lighting → ETC Eos, with that IP (the port fills in as 3032, CueSync's Eos default; use the one you noted if it differs), then Test Connection.
- On Cues, pick a trigger — beat, phrase, energy, timecode, or manual — then Add Action → your Eos output → ETC Eos and choose Go, a Cue number, a submaster Fader with Fader %, a Macro, or a Raw Eos command.
- Validate before the rig is live: plan the first live cue on a bench console or ETCnomad.
- Test with ETCnomad on a loopback if the console is not available yet. The OSC surface is identical.
Built for: Eos Ti, Gio, Gio @5, Ion Xe, Element 2, ETCnomad, Nomad Puck. CueSync's Eos output speaks ETC's OSC interface, which all of them share.
Further Reading
- Audio-Reactive Cues Over OSC — the same idea aimed at QLab
- What Is Music-Driven Lighting Automation? — the category, from the top
- ETC Eos Integration — command surface, compatibility, setup steps
- CueSync for Theatre Operators — cue stacks, Show Editor, Run Mode
ETC® and Eos® are trademarks of Electronic Theatre Controls, Inc. CueSync is an independent product and is not affiliated with or endorsed by ETC.
Frequently Asked Questions
No. OSC is built into Eos and is enabled from the console itself under Setup → System → Show Control → OSC, where you turn on RX and TX, set the OSC TCP mode to OSC 1.1, and note the IP and port. There is nothing to install on the desk, no plugin, and no show-file preparation beyond having cues to fire. This is the main practical reason Eos is straightforward to automate compared with consoles that need a command-line bridge or a vendor-specific middleware layer.
Keep Reading
Audio-Reactive Cues Over OSC: What QLab Can and Cannot Do
Reacting to live audio usually gets built from QLab network cues, OSC queries and patience. What that does, where it stops, and what analysis adds.
ReadWhere Should Your Show's Timecode Come From?
Reaper, QLab, the console's internal clock, or the live performance itself: four architectures, how to choose, and where a hardware generator fits.
ReadWhat Is Music-Driven Lighting Automation? A Definition
Music-driven lighting automation is lighting control that follows the music's beat and structure, from analysed tracks or live deck data. How it works.
Read