Appearance
OSC Reference
Exaplay 3 receives OSC commands for transport, cues, show state and Inputs, and sends OSC to other devices — timecode, cue lines, Data Tracks. For a guided setup with consoles and show controllers, see External Show Control.
Receiving
| Parameter | Value |
|---|---|
| Protocol | OSC 1.0 over UDP |
| Default port | 8000 — always listening |
| Configuration | Menu → Settings → Communication → OSC Listen (ADDRESS:PORT; a change re-binds immediately) |
| Address prefix | exaplay by default (Settings → Communication → OSC Prefix). Compared case-insensitively; must not contain / |
| Bundles | Accepted — each message inside runs at once; the time tag is ignored |
The address pattern is /<prefix>/<composition>/<verb>, and the prefix is required: with the default prefix, /comp1/play is ignored. Only when OSC Prefix is left empty does Exaplay accept /<composition>/<verb> (and still /exaplay/<composition>/<verb>). /tuio/… and the timecode address never take the prefix.
<composition>is the composition's ID (its variable name,comp1) or its name — names are case-insensitive, with_standing for a space (Main_Show). If a reference matches both, the ID wins.- Verbs and IDs are case-sensitive:
/exaplay/comp1/Playdoes nothing. - While a project is loading, incoming messages are dropped.
Compositions
| Address | Arguments | Action |
|---|---|---|
/exaplay/<comp>/play | — | Start |
/exaplay/<comp>/start | — | Start (alias of play) |
/exaplay/<comp>/pause | — | Pause |
/exaplay/<comp>/stop | — | Stop |
/exaplay/<comp>/restart | — | Play from start (Playlist: the current item from its start, without stopping) |
/exaplay/<comp>/cue | i index, f (rounded) or s name | Timeline: jump to the cue and fire it (cue variable index or name). Playlist: play the item at that 1-based position, or by name |
/exaplay/<timeline>/frame | i (or f, truncated) | Timeline only: jump to that frame, counted at the Timecode frame rate |
There is no seek and no property write over OSC (a screen's calibration switches, below, are the exception). To seek, use TCP/UDP (comp1.set:time=12.5) or HTTP; on a Timeline, /frame jumps to a frame. To drive a value, send an Inputs channel (below) and map it in Inputs.
The addresses
cuetime,cueindex,cueframe,cueduration,statusandseekare Exaplay's own multi-client sync channel: a master sends them and only a client acts on them. A standalone or master engine ignores them.
Global
| Address | Arguments | Action |
|---|---|---|
/exaplay/global/start | — | Start all compositions |
/exaplay/global/stop | — | Stop all compositions |
/exaplay/global/showmode | on/off/toggle | Show Mode |
/exaplay/global/videomute | on/off/toggle, optional fade seconds (0–60) | Blank every output to black (and back). The fade seconds become the blank fade time, so later blanks use them too |
/exaplay/global/blankfade | seconds, 0–60 | Set the blank fade time without blanking |
/exaplay/global/identify | on/off/toggle | Label every output window (Identify) |
/exaplay/global/showguides | on/off/toggle | Outline every screen and field (Outlines) |
/exaplay/global/audiomute | on/off/toggle | Mute all audio. On a multiclient master it mutes every machine; each machine's master volume stays its own |
/exaplay/global/correctionbypass | on/off/toggle | Raw wall: every output without its calibration (no VIOSO, warp, edge blend or black level). On a multiclient master it switches every machine |
/exaplay/global/failover | promote / arm / disarm | Main/Backup failover, sent to the backup: promote takes over now; arm / disarm arm the backup for an automatic take-over (needed while Require Arming is on) — see Multi-Client › Main / Backup Failover |
/exaplay/global/restart | —, project, or clean | Restart the engine (reload the project, or start empty). default/reload = project; empty/blank = clean |
An on/off argument can be a string ("on", "off", "toggle", "1", "0", "true", "false") or a number (1 / 0). Every global verb also takes its argument as the last address segment, for devices that cannot send arguments: /exaplay/global/showmode/on, /exaplay/global/restart/clean, /exaplay/global/blankfade/3.
Screens (calibration)
A screen is addressed by its ID (screen1, screen2, …, shown in the screen's Inspector). The three switches of the calibration's Edit… dialog:
| Address | Arguments | Action |
|---|---|---|
/exaplay/screen1/calibration | on/off/toggle | Draw the screen's calibration, or not. Off draws the screen as if no calibration file were set (Exaplay's own warping and blending apply); on applies in the next frame |
/exaplay/screen1/calibration/blend | on/off/toggle | The calibration's edge blending |
/exaplay/screen1/calibration/black | on/off/toggle | The calibration's black level, a custom black level and the overall lift |
/exaplay/screen1/calibration/reload | — | Reapply the calibration from its file — the current one draws until the new one is ready |
The argument may also be the last address segment: /exaplay/screen1/calibration/blend/off. A switch applies in one frame on every output of the screen; on a multi-client master it switches every machine at the same moment. The switches are saved with the project.
Timecode
| Address | Arguments | Action |
|---|---|---|
/timecode (the configured OSC Address; no prefix) | f or i seconds, or s "HH:MM:SS:FF" | Timecode for slaved compositions |
The time is the argument, never part of the address. /timecode is only acted on by compositions whose own Inspector → Timecode Sync is a slave mode — with none, it is ignored. In Timecode Mode OSC Timecode (slave) the Global Offset is added. The address also matches when it is the first or second segment of a longer address. See Timecode Sync.
Inputs (tracking channels)
| Address | Arguments | Action |
|---|---|---|
/exaplay/track/<channel> | x [y] | Position |
/exaplay/track/<channel>/x | one number | X only |
/exaplay/track/<channel>/y | one number | Y only |
/exaplay/track/<channel>/click | optional number (default 1) | Click |
/tuio/… (no prefix) | TUIO 1.1 | Touch / objects, as channels tuio1…, tuio-obj<id>, tuio-blob… |
Numbers may be f, i, a numeric s, or OSC T / F.
Examples
/exaplay/comp1/play start comp1
/exaplay/Main_Show/play the same, by name ("Main Show")
/exaplay/comp1/cue 5 fire cue 5 in comp1
/exaplay/comp1/cue "Blackout" fire the cue named Blackout in comp1
/exaplay/Lobby/cue 2 play Playlist item 2
/exaplay/comp1/frame 750 Timeline comp1: jump to frame 750
/exaplay/global/showmode "on" Show Mode on
/exaplay/global/showmode 1 the same, as a number
/exaplay/global/showmode/on the same, word in the address
/exaplay/global/videomute "on" 3.0 blank to black over 3 s (3 s is now the blank fade time)
/exaplay/screen1/calibration/blend 0 screen1: calibration without edge blending
/exaplay/track/wand 0.25 0.75 Inputs channel "wand"
/timecode "01:00:00:00" chase timecode (slaved compositions)Sending
| What | Address and arguments | Set up in |
|---|---|---|
| Cue script line | OSC>host:port,/address[,i:<int>][,f:<float>][,s:<text>] — one message per line | A cue's script box — Action type Custom, the box with the ⚡ Wizard button (⚡ Wizard → OSC). See Cue Script Reference |
| Data Track | the track's OSC address (default /data-track) with one f | Data Track → Output → Format: OSC; sent while the composition plays, at the track's rate (1–120 Hz). See Data Tracks |
| Timecode (Master) | the OSC Address (default /timecode): a bundle with f seconds, i frame rate, s HH:MM:SS:FF | Timecode Mode Master, a Master Composition and OSC Timecode Out. Sent every ~8 ms (about 125 per second) to the OSC Clients lines. See Timecode Sync |
| Failover "On Promotion Send" | OSC> lines as above | Multi-Client › Failover |
OSC Clients (Menu → Settings → Communication) is a list of host:port lines. It receives the master timecode — and also Exaplay's own fleet telemetry, which runs at all times: per composition exaplay/<id>/cueindex, cuetime, cueframe, cueduration, status about 125 times a second, plus exaplay/global/… state messages. These addresses are sent without a leading slash. They are meant for Exaplay clients; a third-party device on that list simply receives them too. A line may be a $Name from System → Global Variables; a line that does not resolve is skipped.
Other UDP ports
| Port | Purpose |
|---|---|
12000 (UDP) | PatternGenerator control (domeprojection PG protocol), used by ProjectionTools — always listening |
See Also
- TCP Command API — the full dotted command set, including seek and property writes
- Cue Script Reference —
OSC>and the other lines a cue can send - External Show Control — console and show-controller setup
