OSC, DMX and Remote Inputs
AllWhat it's for — This page is about everything that lets the outside world fire CueSync: an OSC message from a phone, a script or another console; a DMX channel from a house desk; a MIDI note from a footswitch; a key on the keyboard. It also covers the other direction, sending your own OSC to a device CueSync has no built-in protocol for. Each input is off, or limited to this machine, until you turn it on.
How can I trigger a cue from…
| From | Use | Set up in | Editions |
|---|---|---|---|
| A footswitch that sends MIDI, firing Show Editor cues | MIDI Transport: a GO note (default note 63, MIDI channel 1) | Settings → Show Control → MIDI Transport | Theatre, Production |
| A footswitch or MIDI keyboard, firing Cues screen cues | A MIDI trigger on the next cue, or a MIDI mapping to Go | Cue Editor → Trigger → MIDI; a cue's Assign → Assign MIDI… | All |
| A phone or tablet OSC app | An OSC Input trigger | Settings → Advanced → OSC Input Listener, then the cue's Trigger | Theatre, Production |
| Another lighting console, over OSC | An OSC Input trigger | Same as above | Theatre, Production |
| A lighting desk's GO, while you build the show | Desk GO: capture a cue at the playhead, or move the Show Editor to the cue the GO names | Show Editor → the transport bar's Rehearsal chip → Desk GO | Theatre, Production |
| A house desk or wall panel, over DMX | A DMX Input trigger | Settings → DMX Input, then the cue's Trigger | Theatre, Production |
| The computer keyboard | A Hotkey trigger, in Run Mode | Cue Editor → Trigger → Hotkey | Theatre, Production |
| A script (Python and so on) | An OSC Input trigger, optionally signed | OSC Input Listener | Theatre, Production |
| A tablet at front of house, firing only pads you chose | Show Companion's Deputy surface | Show Companion | All paid |
| An Elgato Stream Deck | USB, direct | Stream Deck | All |
| A Launchpad or APC grid | USB, direct | MIDI Grid Controllers | All |
| External music structure (energy, drop countdown) | The CueSync Bus, accepted as input | The CueSync Bus | All |
| A timecode source (LTC, MTC, TCNet, Art-Net timecode) | A Timecode trigger | Timecode | Theatre, Production |
"Show Companion" is CueSync's own tablet surface. CueSync's manual describes no separate Bitfocus Companion integration. Any control app that can send a plain OSC message can use the OSC input below.
Two rails, and one rule that applies to all of them
CueSync has two places a cue can live, and the triggers on this page belong to only one of them.
- The Cues screen holds the reactive and external cues. OSC Input, MIDI, Hotkey and DMX Input are triggers of these cues.
- The Show Editor holds the scored cues of a Theatre show. Those fire on Timecode, Manual, Follow or Auto. They have no OSC, MIDI or hotkey trigger. To fire them from hardware, press GO on a surface that reaches the show: Run Mode's GO, Space, the Stream Deck, or the MIDI transport below. A lighting desk can also arm, start, stop and pause the whole show over OSC; see Remote show control.
One rule for every trigger on the Cues screen: only the next cue is looked at. When a message arrives, CueSync checks the trigger of the next cue in the stack, and fires it only if it matches. Any other cue's trigger is ignored, even if it would have matched. So a stalled or misconfigured cue at the head of the stack blocks the ones behind it. The usual pattern is a run of cues that all carry the same trigger (say OSC /cue/go), each message advancing one cue.
OSC input
Turn it on
- Open Settings → Advanced and find the OSC Input Listener card.
- Set Listen Port. It ships at 0, which means off. Valid ports are 1024–65535, and 9001 is the usual choice. It applies immediately, with no restart.
- Leave Allow other devices on the network off if the sender is on this computer. Turn it on for a phone, a tablet or another machine. Off binds the listener to this machine only (127.0.0.1); on binds all interfaces (0.0.0.0), so any device on the network can send to the port. With it on, name the addresses that may send under Accept from (the desk's address, or a range such as
10.0.0.0/24): a message from any other address is ignored, and a line under the field counts what was turned away and names the last address, so a desk typed wrong is easy to find. Everything that sends to this port has to be on the list — the desk, the grandMA3 bridge, a phone. Empty accepts any device. It filters by sender address; it does not authenticate anyone, and a device on the same network can pose as the desk, so keep the desk on a separate control network. - Decide about Require signed messages (see below). It is off by default.
The same port also carries the grandMA3 bridge and feedback and the CueSync Bus input, so a port of 0 also stops those.
Build the cue
- On Cues, press
+, and in the Cue Editor set the trigger to OSC. - Enter OSC Address, for example
/cue/go. - Optionally enter Value to match. Leave it blank to match any message on that address.
- Add the actions and save.
What matches
- The address must match exactly. It is case-sensitive, and there are no wildcards.
/cue/*does nothing. - Only addresses used by an OSC Input cue are accepted at all. Anything else is dropped, so a random address cannot fire anything. A few fixed addresses are also admitted: the grandMA3 bridge, the grandMA3 desk's feedback (display only, it never fires a cue), the CueSync Bus addresses when bus input is on, and the remote show control addresses when that is on. The Show Editor's Desk GO address is admitted only while Desk GO is on, and it cannot be one of the five remote-control addresses or an address the grandMA3 bridge uses.
- Numbers are compared by value, anything else as text. CueSync reads the message's first argument as text, so an integer
1reads as1and a float one as1.0— and Value to match1matches both, as it does1.00. Words are exact:introis notINTRO. - A button that sends a value on press and another on release fires twice if Value to match is blank. Set it to the press value.
- Bundle time tags are ignored. A bundle is acted on as soon as it arrives.
- A flood of messages is rate-limited. A sender that streams far faster than a show needs has the excess dropped, and a warning is logged. The OSC Input Listener card counts what was dropped since launch: messages dropped because the listener was flooded or its queue was full, and messages that arrived on addresses CueSync does not listen to, with the last address (a console OSC-line Prefix puts text in front of every address, and a mistyped address does the same). Each line appears only when its count is not zero.
- It is UDP. OSC over TCP is not accepted here.
Signed messages
Turn on Require signed messages when scripted senders share a network you do not trust. CueSync then accepts a message only when it carries a valid signature made with your Shared secret. Generate makes a random secret for you; use a different one per show on a shared network.
- A message that is not correctly signed is dropped. A counter under the toggle reads N message(s) rejected since launch when a sender gets it wrong.
- With signing on and no secret set, every inbound OSC message is rejected. This includes the grandMA3 bridge, which cannot sign.
- Signing suits scripted senders (a Python or Node script, a custom tool). TouchOSC, lighting consoles and the grandMA3 bridge cannot sign, so leave signing off when they are the sender. For the developer specification of the signed format, contact support.
- Send one message and watch the rejected-message counter before you rely on it.
Remote show control
A lighting desk can start a Theatre show from the top of a Part, with its timecode, and stop or pause it, with one OSC message each. It is off by default.
Turn it on. In Settings → Advanced → OSC Input Listener, set a Listen Port (see above) and switch on Remote show control. A console on another computer also needs Allow other devices on the network switched on, and Require signed messages off, because a console cannot sign; a grandMA3 onPC on the same computer as CueSync needs neither. Without them CueSync never hears the console, and the badge in Run Mode says why: it reads REMOTE · NO PORT while the listen port is 0 and REMOTE · SIGNED ONLY while signed messages are required, and plain REMOTE once a desk can be heard. Choose what a start does while the show is already playing:
- Switch (the default). The desk wins: the show jumps to the Part it asked for and carries on.
- Ignore. The running show is left alone and the start is reported as refused.
Either way, a start for the Part that is already playing is never a restart, wherever it has got to: it answers that the Part is already playing, and to play a song again you stop the show and start it. A start of a Part that is muted in Run Mode, or shut out by another Part's solo, still plays it and says its cues will not fire.
Choose also what happens at the end of a Part you started:
- Hold (the default). The show pauses where the Part ends, the timecode stops with it, and the desk decides what plays next. A notice says why the show stopped moving. Start the next Part, or send resume, to go on.
- Continue. The show plays on into whatever follows, as it always did.
Hold needs to know where the Part ends: an end you set on the Part, or its audio length once analysed. A Part whose end is not known yet cannot hold; the start tells you it will run on until stopped.
The messages. A Part is named by its number. Give each Part a number under Part numbers in the same card (or press Number Parts 1…N): the number stays with the song when you reorder the show, so a desk macro that says 3 keeps meaning the same song. Until you number any Part, a Part answers to its place in the running order, counting from 1; once any Part is numbered, only numbered Parts answer, and a number on two Parts is refused until one changes. Send the number as a whole number; an integer, a whole float or a number in a string all work.
| Address | Argument | What it does |
|---|---|---|
/cuesync/show/start | Part number | Plays that Part from its top and runs its timecode. |
/cuesync/show/arm | Part number | Puts the show on that Part's top without playing, ready for the start that follows. While the show is playing it moves nothing: it only loads that Part's audio, so a start of it that follows begins without a pause. When the audio has to wait for a free slot the answer says "not loaded yet", and the start that follows may pause briefly to load. |
/cuesync/show/stop | none | Stops the show. |
/cuesync/show/pause | none | Pauses a playing show. |
/cuesync/show/resume | none | Resumes a paused show. |
Every message may carry one more whole number, a sequence number of your own. A desk that sends each command twice for safety should send both with the same number: CueSync then treats the second as the first. A sequence number of 0 means none, which is what a fixed macro sends.
Desk macros. Export desk macros (USB)… writes one grandMA3 macro for every message a desk sends: start and arm for each Part, and stop, pause and resume. It also writes a README with the exact Import Macro line for each and the line to type by hand if a macro does not import intact. Set the desk's OSC line and the first macro slot beside it, and press Apply: the macros are written for the saved values. Give the Parts numbers first (Number Parts 1…N) — a macro that named a Part by its place in the running order would start a different song once the show was reordered, so an unnumbered show is not exported. When the export finishes, this card says which line and slots it wrote, which older macro files are still in the folder (delete them: a macro keeps the number it was exported with, so an old one starts whatever Part carries that number now) and which Parts have no number and so got no macro. On the desk, import into empty slots of the Macro pool: an import onto an occupied slot replaces the macro there without asking. With the bridge plugin 1.8.0 or newer running on the console, the export also names the slots in the pack's range that already hold a macro of yours, so you can pick another first slot; it says so when the console's list was too long for the bridge to report whole, or when a bridge has not reported, and then you look at the Macro pool yourself. It also says how many files of the same name it replaced. The export needs a working licence: a read-only install is told "Subscribe to export the desk macros — you're in read-only mode" before any folder chooser opens, and nothing is written. Import one macro and run it first, and watch Last command in this card: the show starting is the proof, not an OK on the desk's command line. Re-export after you renumber.
On a grandMA3 a macro line sends it, for example SendOSC 1 "/cuesync/show/start,i,3". The OSC line needs Send and Send Command on and an empty Prefix, and a console on the network needs the line to reach this machine's listener port; a desk on the same computer as CueSync needs its own line, because a line's port is also the port it listens on.
What to expect.
- Start never goes through Stop. The playhead moves to the Part's top and the show plays, so a start does not fire the venue's end-of-show state.
- Stop is one message. A desk does not press twice, so the double-press confirmation the buttons use does not apply; a repeated Stop does nothing.
- A hold is a pause, not a stop. Stop resets the show and fires the venue's end-of-show state; a Part that merely ends should not. A hold also drops if you stop the show or arm a Part, and it never fires on a jump you made yourself.
- A repeated message does nothing twice. Duplicates and a bounced macro are recognised and ignored.
- A loop is cut where it can be. A start for the Part that is already playing does nothing, so a desk cue that sends its own Part's start back into the show changes nothing. If starts that really move the show keep arriving in quick succession, as when two Parts' cues start each other, CueSync stops obeying starts and arms for a few seconds and says so. A loop that bounces between the same two Parts is cut after a few starts inside a minute. Only a start that really started or moved the show counts toward a loop, so stopping and starting a rehearsal every few seconds does not trip it. Stop, pause and resume are never held back by the loop protection, whatever else has arrived. A loop that comes round more slowly than that is not caught, so keep a command that sends a start out of the cues on a Timecode that plays this show.
- It tells you when it was sent something and could not use it. If a desk is sending and nothing happens, the card counts the messages that arrived on a remote-control address but were not accepted, and says why: text in front of the address (a console OSC-line Prefix), remote control switched off, or an address that is not one of the five.
- It tells you what it did. Settings → Advanced shows Last command with how long ago it arrived ("just now", "12 s ago", "3 min ago") and what became of it, or "No command received since launch." Run Mode's REMOTE badge turns amber for a while after a command was refused. A refusal also raises a notice: a Part number the show does not have, a show that follows an incoming clock (a start would play nothing), the Show Editor running the show (a desk's stop, pause and resume are refused too, so it never ends an audition you are running in the editor), the Confirm start when cues aren't Ready check, or a licence refusal. A start while the timecode output is held (a dry run, Hold TC, a Panic) plays and says the desk hears nothing.
- The timecode is the show's. The show's own clock drives the timecode out to the desk, exactly as it does when you press Play. A remote start loosens nothing about who may run the show.
- Author a lead-in. Leave a second or so at the head of a Part before the first desk event, so the desk's timecode slot is running before that event is due.
- Network use. Switching on Allow other devices on the network lets any device on the network send these messages, and a console cannot sign them. Name the desk under Accept from so other addresses are ignored — it filters by sender address, which a device on the same network can fake — use a separate control network, and leave remote show control off when you do not need it.
- What has been checked. The desk macros have been run on a grandMA3 onPC on the same computer. Remote show control has not been run from a physical console on a venue network, so rehearse it on your own rig before you rely on it.
Security in one paragraph
Out of the box the listener is off. Once on, it accepts UDP only from this machine until you allow the network. When you allow the network, any device on it can send to the port, but only the addresses your OSC cues use get through (and the Show Editor's Desk GO address while Desk GO is on, and the remote show control addresses while that is on), and a flood of messages is rate-limited. Signing is the only thing that authenticates a sender, so use it on any network you do not control. The shared secret belongs to this machine: it is not saved in the show file and is left out of exported settings and support bundles, so you re-enter it on a spare machine.
DMX input
A house desk, a wall panel or an architectural controller that already puts DMX on the network can fire a CueSync cue by taking one channel up through a level.
Turn it on
Open Settings → DMX Input. It is off by default, because both wires are network-wide.
- Switch on Receive DMX-over-IP.
- Switch on Art-Net and/or sACN (E1.31). Art-Net input needs nothing more; it shares UDP 6454 with node discovery, and universes appear as the desk sends them. If another program holds that port (a console, a node tool, a second copy of CueSync) the page says so and Art-Net input stays off. sACN needs the universes named in sACN universes, for example
1, 2, 5, at most 16, because each one is a multicast join. - Optionally fill Accept from with the desk's address or a range such as
2.0.0.0/8. Empty accepts any sender. It filters by sender address; it does not authenticate anyone. The same list decides who may send CueSync Art-Net timecode, when chasing it is on. - On a machine with a separate lighting network, pin sACN interface.
The On the wire card then shows, per universe, whether anything is arriving. A universe you named and heard nothing on is listed by name. The card also counts frames ignored from senders that are not on the Accept from list, and frames skipped from a sender that floods a universe far faster than any console; Art-Net timecode chase counts the same on its own row.
Build the cue
On Cues, set the trigger to DMX Input and fill in Universe, Channel (1–512), Fires at level (1–255) and Wire (Any wire, Art-Net or sACN). Number the universe as its wire does: Art-Net Port-Addresses start at 0, sACN universes at 1. The same number on two wires is two different universes, which is why the wire is part of the address.
When it fires
It fires once, on the frame where the channel crosses up through the level. It does not fire while the fader stays up, and a channel that jitters across the level (127, 128, 127, 128…) does not fire on every swing: after it fires it must fall clear below the level — an eighth under it, at least two steps, and to 0 for a level of 1 — before it can fire again. A button that goes back to 0 re-arms at once. It does not fire when a source appears with the fader already up, because there is no earlier frame to have crossed from; take the fader down and put it up again. It ignores sACN preview data, ignores a lower-priority sACN source on the same universe, and counts a second live source that already holds the channel above the level as "the rig was already there", so a backup console mirroring the primary does not fire twice.
MIDI input
Trigger on the next cue
Connect the device under Settings → MIDI & Sync. In the Cue Editor set the trigger to MIDI, then either press MIDI Learn and move the control, or fill in Message Type, Channel (1-16, blank = any), Note (0-127, blank = any) or Controller (0-127, blank = any), Value (0-127, blank = any) and Device.
- Learn does not fix the device. It leaves Device at Any device, because a port name changes with the USB port and the machine. Pick a device by hand only if you need to.
- Learn pins a value only for a switch. A control captured at 0 or 127 keeps that value, so a footswitch CC fires once. A fader or encoder leaves the value open.
- A CC trigger with Value blank fires on every value. A button that sends 127 on press and 0 on release fires twice.
- A Note On trigger does not fire on Note Off; those are separate message types. SysEx and aftertouch are not trigger types.
- A device that floods MIDI far faster than a show needs has the excess dropped. A flood of CC or aftertouch messages does not cost the GO note that follows it (a flood of notes is still limited), and a CC mapped to Set Intensity applies the newest level, in order, so a sweep ends on the last value you moved it to.
- A CC button that only ever sends 127 (a footswitch in fixed-value mode) fires on every press.
- A lost input comes back and says so. When an open input's device leaves, a notice that stays up reads "MIDI input disconnected: … - anything you trigger from it is dead until it returns". Every input that was open is reopened when its device returns, and the notice goes once the input is usable. If the device is listed again but cannot be reopened, the notice becomes "… is listed again but could not be reopened - anything you trigger from it is dead until you toggle it off and on in MIDI settings".
- A binding pinned to a port name still matches when the system lists the same port under a different prefix or letter case. The press that completes a MIDI Learn does not fire its binding.
Map a control to a global action
On a cue row, choose Assign → Assign MIDI…. The MIDI Mappings dialog opens already listening (Listening for MIDI input...) with Fire Cue set to that cue. Move the control, change the target under 2. Target Action if you want something else, and press Save Mapping. Add New starts another mapping. Targets: Go (Fire Next Cue), Stop All, Release Freeze, Next Cue, Previous Cue, Fire Cue, the Local Audio targets below, the Auto Pilot targets below, the Timecode Nudge targets below, the Looks targets below, and Set Master Intensity (uses MIDI value). Mappings are saved in the show. Output → Export MIDI Mappings… and Import MIDI Mappings… move them between machines as a file.
A mapping to a Go, Stop, Next, Previous or Fire target that is bound to a CC fires when the value crosses up through 64 and re-arms below it, so a CC button fires once per press. Stop All holds the current look and cancels what is pending; it does not rewind your place in the show. Release Freeze lifts that hold and nothing else, so a Blackout that is on stays on, and Auto Pilot Resume on its own does not lift it.
A pad has its own Assign MIDI… in its context menu.
Map a control to the Local Audio set
For a DJ running a set from Local Audio, the Local Audio (Set Run) section of the target list has Play / Pause, Next Track, Previous Track and Stop — so a footswitch or a deck button can run the queue. They call the same verbs as the buttons on the Local Audio transport strip (Previous restarts the track once it is more than 3 seconds in, else goes back one; Stop releases the cue pipeline and does not start the next track), and they run on the screen's own thread, not the MIDI one. A CC button bound to one of them fires once per press, like the Go targets. (Play / Pause and Stop here are the queue's, not the Theatre show's.) An older CueSync that opens a show with these mappings loses only those bindings, never the show.
Map a control to Auto Pilot
In 2. Target Action, the Auto Pilot section has Pause, Resume, Hold 1 Phrase, Hold 4 Phrases, Skip Next Moment and Force Fire Next Moment, so a footswitch or a pad can steer Auto Pilot while your hands are on the mixer:
- Pause stands Auto Pilot down until you resume it (the same pause as a double GO; it also ends when the next track loads). Hold 1 Phrase and Hold 4 Phrases stand it down for that many phrases and it takes over again by itself.
- Skip Next Moment drops the next planned moment, and the lead-in before it if that has not started; Recent fires lists it as skipped by the operator. Force Fire Next Moment fires it now, even while Auto Pilot is paused or held, and is refused during a Blackout or Freeze and while a Theatre show is playing.
- Resume ends whichever of those is in force.
A CC button bound to one of them fires once per press, like the Go targets. A control with nothing to act on does nothing and says why on screen — no armed track, or no moment ahead in the plan. The same five controls are on the Stream Deck's AutoPilot page — see Stream Deck. A CueSync older than these targets still opens the show; it ignores those mappings.
Map a control to the timecode nudge
In 2. Target Action, the Timecode Nudge section lines a desk up with a deck a frame at a time without leaving the controller: Nudge 1 Frame Earlier, Nudge 1 Frame Later, Nudge 10 Frames Earlier, Nudge 10 Frames Later, and Aim Nudges at the Next Wire. The nudges move one wire at a time, so five buttons cover them all: Aim Nudges at the Next Wire steps round the deck routes, then the LTC, MTC, Art-Net and TCNet outputs, and back to the deck routes, and the nudges move whichever it last stopped on (the deck routes after a restart). A nudge on a leg changes that output's Output Compensation, up to 10 frames either way; a nudge on the deck routes moves every route that is switched on, by whole frames, and an offset you typed as a timecode stays a timecode.
Every press says on screen what it did, or why it did nothing: LTC output trim: +2 frames., 2 deck routes moved 1 frame later., or a calm refusal — timecode is held (Dry run or Hold TC is on), no deck route is switched on, or the trim is already at its limit. A CC button bound to one of them moves once per press, like the Go targets. The nudge keys are also on the Stream Deck XL's AutoPilot page — see Stream Deck — and the same steps are in the command palette (Timecode: nudge …). A CueSync older than these targets still opens the show; it ignores those mappings. Restart Set Clock is deliberately not a controller verb: it asks a question first, and a control surface cannot answer one.
Map a control to a look
A MIDI control can fire, bank and release the Palette's looks. In 2. Target Action, under Looks:
- Fire Look — pick a look in the Look picker. The control fires that look wherever it sits. A look tile's own Assign MIDI… (in its menu, in Edit) opens this dialog with the look already picked.
- Fire slot N of the bank the Palette shows — the control fires whatever is in that slot, so it follows Show bank, Next Look bank and Previous Look bank the way the Palette's fire keys do. An empty slot fires nothing.
- Show bank, Next Look bank, Previous Look bank — change the bank the Palette shows. Next and Previous stop at the first and last bank.
- Release Bank (the bank the Palette shows) and Release All Looks — the same as the Palette's Release Bank and Release All buttons (⌘. and ⇧⌘.).
A controller fires a look exactly as a tap on its pad does: a switched-off look, an unlicensed install and rehearsal mode refuse it the same way, and the look's Press setting applies. A Toggle look is taken down by a second press. A Flash look is on while you hold the control: a pad's note is held until its note-off, a CC button until it falls back to zero. A control with no release to give (a Program Change, a Pitch Bend) fires a Flash look and leaves it on; take it down with Release Bank or Release All Looks. If a release never arrives, CueSync lets the look go after 30 seconds and says so. Fire Look does not pause AutoPilot. If the look a control fires is deleted, the control refuses and names the look it was mapped to; the mapping's row in MIDI Mappings turns red, the look's delete confirmation counts the control, and Flight Check lists it. A CueSync older than these targets still opens the show; it ignores those mappings.
The MIDI transport for a Theatre show
In Settings → Show Control → MIDI Transport, switch on MIDI transport control and set the Play note, Stop note, Pause note, GO note, MIDI Channel and Device filter. Defaults are notes 60, 61, 62 and 63 on channel 1, from any device. It is off by default, and while it is on, those four notes are taken by the transport and no longer reach pads or mappings. Play and GO fire on the first press. Stop and Pause need two presses inside the safety window, and GO honours your GO confirmation mode. Pick notes your pads do not send.
The Play note starts a stopped show through the same checks as Run Mode's Play and the Stream Deck's PLAY key: the pre-show heads-ups, and, when you have switched on Confirm start when cues aren't Ready, that check. A footswitch cannot answer a dialog, so it refuses instead and names the door that declined ("… won't start the show. Start it from Run Mode, where you can confirm, or turn off …"). A resume, or a show that is already running, is not held.
Keyboard hotkeys
A Hotkey trigger fires its cue when you press one key in Run Mode, as long as that cue is next. In the Cue Editor set the trigger to Hotkey and type the Key: a letter, a digit or F1–F12. P, L, R and SPACE cannot be used, because Run Mode keeps them for pause, the log, the rehearsal mode and GO, and the editor warns you. The key does nothing outside Run Mode, which is why the trigger is Theatre and Production only. Do not confuse it with the Key trigger, which matches the musical key of the playing track. See Run Mode and Keyboard Shortcuts.
Sending your own OSC
Generic OSC: one message to any host
Click Add Action, choose Generic OSC under No output needed, and fill Host, Port, OSC Address and Arguments — space separated. Each argument is read as an integer if it parses as one, then as a float, then as text. 1 goes out as an integer, 1.0 as a float, go as text. A text argument containing a space cannot be written here.
It does not appear in the Network screen, has no health check, and a panic does not send it anything. An action of this type that fires after a panic is suppressed.
Custom OSC: your own device schema
Use Custom OSC to drive something that has no built-in protocol, for example a media server with a documented OSC list.
- Output → Quick Add → Show Control → Custom OSC, enter the device's host and port (the port starts at 8000).
- In the OSC Schema field choose Manage schemas… (or No schemas yet — create one…). In the OSC Schema Manager, press + for a schema, give it a name, and add parameters: Name, OSC Address, Type (FLOAT, INT, STRING, COLOR, BOOLEAN, TRIGGER). Choose the schema on the output. Import… and Export… move schemas between shows.
- Click Add Action, open the Custom OSC output under Your outputs, choose Custom OSC, then set Target Device, Parameter and a value.
Each parameter sends one argument. FLOAT and INT must parse, BOOLEAN must be true or false, TRIGGER sends the integer 1, and STRING and COLOR go as text. A value that does not parse fails the cue with a message such as Invalid value 'x' for /layer/1/opacity — expected float, instead of sending a zero. The address is sent exactly as typed; nothing inside braces is expanded. A parameter's minimum, maximum and default are stored but have no editor and are not enforced. Schemas are saved in the show file. Fade (OSC ramp) can also ramp a Custom OSC address. A panic sends nothing to a Custom OSC device.
Use cases
1. A stage manager's footswitch (Theatre).
- Plug in the footswitch and check it appears under Settings → MIDI & Sync. Find out which note it sends and on which channel.
- Open Settings → Show Control → MIDI Transport, switch on MIDI transport control, and set GO note and MIDI Channel to match.
- Load the show and open Run Mode. Press the pedal.
- You should see the next armed or standby cue fire, exactly as the on-screen GO does. If GO confirmation is set to double-press, the pedal arms on the first press and fires on the second.
2. A lighting desk that triggers CueSync over DMX.
- On the desk, put the fader that will act as the button on a spare channel of a universe it sends over sACN, say universe 5 channel 1.
- In Settings → DMX Input switch on Receive DMX-over-IP and sACN (E1.31), enter
5under sACN universes, and enter the desk's address under Accept from. - On Cues, create a cue with the trigger DMX Input: Universe
5, Channel1, Fires at level128, Wire sACN. Make sure it is the next cue. - Take the fader down, then up through half. You should see the cue fire once, and On the wire show universe 5 arriving. Holding the fader up fires nothing more.
3. A tablet OSC surface.
- In Settings → Advanced → OSC Input Listener set Listen Port
9001and switch on Allow other devices on the network. Note the warning. - Create a cue with the trigger OSC, OSC Address
/cue/go, and set Value to match to the value your button sends on press. - In the tablet app, send
/cue/goto this machine's address, port 9001. - You should see the cue fire when the button goes down. If it fires twice, the release value is matching too; set Value to match. If nothing happens, check that the cue is the next one and that the address matches exactly.
4. A custom OSC schema for a media server.
- Output → Quick Add → Show Control → Custom OSC with the server's host and port.
- Open Manage schemas…, add a schema, and add a FLOAT parameter named Opacity with OSC Address
/layer/1/opacity, and a TRIGGER parameter named Cut with/layer/1/cut. Choose the schema on the output. - On a cue click Add Action, open the output under Your outputs, choose Custom OSC, and set Parameter to Opacity and the value to
0.5. - You should see the server's layer move to half when the cue fires. Watch the server's own OSC monitor: a UDP send reads as sent whether or not anything is listening.
Tips & gotchas
- Only the next cue is checked. A cue whose trigger is an OSC address, a note, a key or a DMX channel does nothing until it is next. The cue list marks the next cue.
- A port of 0 is off, and it silently disables more than OSC triggers. The grandMA3 bridge and feedback, and CueSync Bus input, use the same listener.
- Signing with no secret rejects everything. Turning signing on to harden the network and forgetting the secret kills the grandMA3 bridge too.
- Numbers match by value, words exactly.
1and1.0are the same value to CueSync;introandINTROare not. - A CC or button with no value filter can fire on release. Fix it with Value to match (OSC) or Value (MIDI).
- The MIDI transport steals its four notes. With it on, a pad on note 63 stops working. That is why it ships off.
- Show Editor cues have no external trigger. Fire them from GO, the MIDI transport, the Stream Deck, timecode, or a desk's remote show control.
- A DMX trigger needs the universe arriving. For sACN, name the universe in Settings → DMX Input; a trigger alone does not join it.
- Inputs are unauthenticated unless you sign them. DMX and MIDI-over-network are trusted the way the network is. Use Accept from and a separate lighting network.
Before a show
Test each input with your own device before a show: your tablet app, your house desk's DMX, your footswitch. For Custom OSC and Generic OSC, watch the receiving device's own OSC monitor: a UDP send reads as sent whether or not anything is listening.
Related
- Stream Deck — a USB cue surface with GO and STOP keys
- Show Companion — tablet surfaces, including the Deputy that fires published pads
- MIDI Grid Controllers — Launchpad and APC surfaces
- MIDI and MIDI Show Control — sending MIDI and MSC
- The CueSync Bus — the OSC vocabulary CueSync sends and accepts
- Art-Net and sACN (DMX over IP) — sending DMX
- Trigger Reference — every trigger and when it fires
- Cues and Show Editor — the two cue lists
- Settings — the Advanced, DMX Input and Show Control pages
- GrandMA3 — the bridge that uses the OSC input port
Looking for a quick fix?
The Help Center has short task-focused articles and a support team that responds within 24 hours.