Tools

Table of Content

OSC

Control CuePoints from a console or Companion using Open Sound Control

OSC (Open Sound Control) lets machines on a network send each other short messages. With it, your lighting desk, media server, tablet or Stream Deck can control CuePoints, and CuePoints can control them.

Set it up in Settings > OSC. This page is about what to do with it once it's on.

What You Can Do With It

  • Drive CuePoints from the desk. Press GO on the lighting console and a cue appears in CuePoints, at exactly the right moment. This is how most people record a cue list during a tech.

  • Drive the desk from CuePoints. Fire a cue here and the console jumps to it.

  • Run the transport from anywhere. Play, pause, skip and record, from a Stream Deck or a tablet.

  • Show the state of the show elsewhere. CuePoints reports its transport, playhead and record state continuously, so a status display always knows where the show is.

The Basics Of Getting Connected

Three things have to line up, at both ends:

  1. The same network. Both machines need addresses in the same range, 192.168.0.x talking to 192.168.0.x. If your Mac is on Wi-Fi and the desk is on a wired show network, pick the right network interface on the OSC pane so the messages leave by the right door.

  2. The same port.8000 is the usual one.

  3. The same message wording. Choose a preset for your console and this is filled in for you.

The message log on the OSC pane is the tool that solves nearly everything. Clear it, press GO once on the console, and look at exactly what arrived.

The Message List

The OSC pane lists every message CuePoints understands. Click one to copy it, and paste it into whatever is sending. The complete list is also at the foot of this page, see Message Reference.

Command templates support placeholders, so a single template can carry the cue number, name or timecode. An individual CuePoint can also carry its own command, which overrides the default for its type, useful when one cue in the show has to do something unusual.

Stream Deck, Using Companion

Bitfocus Companion is free software that turns a Stream Deck into an OSC controller. It also has a built-in emulator, so you can try all this with no hardware at all.

Download it from bitfocus.io/companion.

Set Companion up:

  1. Choose the network interface that matches the one CuePoints is using.

  2. Press Launch GUI.

Add CuePoints as a connection:

  1. On the Connections tab, add a Generic OSC device.

  2. Set Target IP to your Mac's address; the one shown for the network interface CuePoints is using.

  3. Set Target Port to the port on the OSC pane (8000 unless you changed it).

  4. Save.

Add the ready-made buttons:

  1. Download the CuePoints Companion config from cuepoints.com/download.

  2. Go to the Import / Export tab.

  3. Import the config file.

You now have a page of working buttons, transport, cue navigation, and cue creation.

grandMA3

grandMA3 can drive CuePoints directly, using a set of ready-made macros.

Set up OSC on the desk:

  1. Put the desk's network adapter in the same range as your Mac.

  2. Go to Menu > In & Out > OSC.

  3. Enable Output, with an active session.

  4. Fill in OSC line 1:

    • Name: CuePoints (or anything)

    • Destination IP: your Mac's address

    • Mode: UDP

    • Port: 8000

    • Send: Yes

    • Send Command: Yes

Install the macros:

  1. Download them from cuepoints.com/download.

  2. Put them in grandMA3/gma3_library/datapools/macros.

  3. On the desk, go to Menu > Import/Export.

  4. Import CuePointsOSCMacros.

Press a macro to fire it, or put it on an encoder for skipping. The macros are ordinary MA3 macros, so you can edit them if your show needs different amounts.

Keeping A Connection Honest

CuePoints watches incoming OSC. If a connection stops delivering, it stops reporting itself as connected, so what the pane shows is what is actually happening.

Incoming messages are also rate-limited, so a device sending far more than it should can't overwhelm the app.

Message Reference

Every message CuePoints understands, and everything it sends back.

You don't need this page to use OSC, pick a preset on the Settings > OSC pane and the wording is filled in for you. This is for building something custom: a Companion page of your own, a tablet layout, or a console template that isn't one of the presets.

All addresses use the /cuepoints/ prefix. Arguments use standard OSC types: i is a whole number, f is a decimal, s is text.

Transport

Address

Args

Description

/cuepoints/transport/playpause

Toggle play/pause

/cuepoints/transport/play

Play (only if stopped)

/cuepoints/transport/pause

Pause (only if playing)

/cuepoints/transport/stop

Pause, then jump to start ~100 ms later

/cuepoints/transport/stopandplay

Jump to start + play

/cuepoints/transport/skip

i seconds (signed: negative=back)

Skip N seconds. Coerced to Integer; a fractional value truncates (0.5 → no movement)

/cuepoints/transport/goto

f seconds

Jump to position. Ignored unless 0 <= seconds < clip length

/cuepoints/transport/gotocue

s type_name, f cue_id

Jump to the first CuePoint in the list with this manual Cue ID and this CuePoint type (exact name match). Cue ID 0 never matches




Cue Navigation

Address

Args

Description

/cuepoints/cue/next

Go to next CuePoint

/cuepoints/cue/prev

Go to previous CuePoint

/cuepoints/cue/goto

f cue_id ORs label

Jump to a cue by manual Cue ID, or by the CuePoint's Label text (exact match). Searches from the end backwards, so the last match wins. Cue ID 0 never matches; CuePoint type is not considered




Two ways to go to a cue, and they behave differently./cuepoints/transport/gotocue takes a cue type as well as an ID and finds the first match. /cuepoints/cue/goto ignores the type and searches backwards, so the last match wins. If you have the same Cue ID on more than one cue, that difference decides where you land.

Track

Address

Args

Description

/cuepoints/track/select

i index (1-based) OR s name

Load track by index or name. A no-op if that track is already loaded

/cuepoints/track/next

Load next track

/cuepoints/track/prev

Load previous track




Volume

Address

Args

Description

/cuepoints/volume/set

i or f level (0-255)

Set absolute volume, clamped to 0-255

/cuepoints/volume/adjust

i or f delta (signed: negative=down)

Adjust volume relatively, clamped to 0-255




This is the track's audio only. Timecode going out is not affected.

Loop

Address

Args

Description

/cuepoints/loop

i 0/1

Toggle Loopback to Start Point on Pause. Pressing Pause seeks the playhead to a designated start point

/cuepoints/abloop

i 0/1

Toggle A-B Loop for the loaded track. Playback wraps from B back to A. Sets absolute state




Timecode

Address

Args

Description

/cuepoints/timecode/input

i 0/1

Enable/disable LTC listener

/cuepoints/timecode/follow

i 0/1

Enable/disable auto-follow

/cuepoints/timecode/artnet

i 0/1

Enable/disable Art-Net timecode generator. Enabling it force-disables the MTC generator

/cuepoints/timecode/mtc

i 0/1

Enable/disable MTC generator. Enabling it force-disables the Art-Net generator




Art-Net and MTC are one or the other. Turning either on turns the other off, because there is a single timecode generator behind them. See Settings > Timecode.

Connection Settings

Arg 1 identifies the slot: i = 1-based index (1-8), s = the connection's exact Name. Mode aliases ignore case, spaces, hyphens and underscores.

Address

Args

Description

/cuepoints/connection/recordingmode

(i index OR s name), (i mode OR s alias)

Set RecordingMode. Valid: 1 / "donothing", 2 / "createcuepoint" (alias "createnewcuepoint")

/cuepoints/connection/notrecordingmode

(i index OR s name), (i mode OR s alias)

Set NotRecordingMode. Valid: 0 / "consoletriggers" (alias "consoletriggerscuepoints"), 1 / "donothing", 2 / "createcuepoint" (alias "createnewcuepoint"), 3 / "runcuesonconsole" (alias "runcues")

/cuepoints/connection/statusfeedback

(i index OR s name), i 0/1

Set Send CuePoints Status Messages. Non-zero = Send, 0 = Disabled




These are the Cue Trigger Actions from the Settings > OSC pane, changed remotely. Handy for a desk that should create cues during a tech and do nothing on a show day, without anybody touching the laptop.

Recording

Address

Args

Description

/cuepoints/recording/start

Start recording

/cuepoints/recording/pause

Pause recording (can resume)

/cuepoints/recording/resume

Resume a paused recording

/cuepoints/recording/stop

Stop recording and save the file

/cuepoints/recording/terminate

Discard/cancel recording without saving




stop keeps the file. terminate throws it away. Label those two clearly on whatever you build.

CuePoint Creation

Address

Args

Description

/cuepoints/cuepoint/create

s type_name [, s note]

Create CuePoint at the playhead. Type is matched by exact name, and must be editable and visible




The cue type has to be visible and editable for this to land. A hidden or locked type is skipped, which is the usual reason a create that looks right does nothing.

Big Label Display

Address

Args

Description

/cuepoints/label/show

Show the big label overlay

/cuepoints/label/hide

Hide the big label overlay




System

Address

Args

Description

/cuepoints/system/ping

Reply with /cuepoints/system/pong on all enabled connections

/cuepoints/system/version

Reply /cuepoints/system/version with s app version string on all enabled connections

/cuepoints/project/save

Save the current project (ignored when no project file is open)




ping is the first thing to try when a link isn't working. A pong back means the network, the port and the connection are all fine, and the problem is in the message you were sending.

Outbound Feedback

These are messages CuePoints sends you, so a Stream Deck or a tablet can show what the show is doing.

Sent only to connections whose Send CuePoints Status Messages setting is Send (default: Disabled). Each address is sent on change, plus a 1 Hz heartbeat.

Address

Args

Description

/cuepoints/recording/status

s state, i elapsed_secs

"armed", "recording", "paused", "stopped", "terminated". Sent every 1 s while armed/recording/paused, once on stop/terminate. elapsed_secs is 0 except for "recording" / "paused"

/cuepoints/status/playing

i 0/1

Playback state. 1 = playing, 0 = paused/stopped

/cuepoints/status/loop

i 0/1

Loopback-to-start-on-pause state

/cuepoints/status/abloop

i 0/1

A-B Loop mode

/cuepoints/status/abloop/a

f seconds

A-B Loop start point (A)

/cuepoints/status/abloop/b

f seconds

A-B Loop end point (B)

/cuepoints/status/tc-autoplay

i 0/1

Timecode auto-follow state

/cuepoints/status/volume

i 0-255

Master volume level

/cuepoints/status/connection/<N>/recordingmode

i mode

Current RecordingMode for slot N (1-based)

/cuepoints/status/connection/<N>/notrecordingmode

i mode

Current NotRecordingMode for slot N (1-based)

/cuepoints/status/connection/<N>/statusfeedback

i 0/1

Current status feedback state for slot N (1-based)




Nothing arrives until you turn it on. Feedback is off by default on every connection, switch on Send status messages for that connection on the Settings > OSC pane.

Because everything repeats once a second, a button that lights up when the show is playing recovers on its own if it misses a message or you plug it in halfway through.

Command Template Placeholders

These go in the messages CuePoints sends out: the per-connection Goto Cue Command template, and the OSC command on an individual CuePoint or a CuePoint type. CuePoints swaps each one for the real value as the cue fires, so a single template serves your whole show.

Case-insensitive.

Placeholder

Value

Notes

{CueID}

CuePoint's Cue ID

Formatted as integer when whole (5), decimal otherwise (5.1)

{CuelistID}

Last word of the CuePoint type name

E.g. type "Cuelist 2" → 2

{CuelistName}

Full CuePoint type name


{CueType}

Full CuePoint type name

Alias of {CuelistName}

{CueLabel}

The Label column text


{Command}

The Command column text


{Note}

The Note column text


{Info}

The Note column text

Alias of {Note}

{PositionSeconds}

CuePoint position in seconds


{PositionHHMMSSFF}

CuePoint position as timecode

Uses the track's primary LTC stripe frame rate

{Fade}

Fade time (seconds)


{OutFade}

Out-fade time (seconds)


A CuePoint of type "Cuelist 2" with Cue ID 5.1, Label "Blackout":




{CuelistID} is the useful one for lighting desks: name your CuePoint Types Cuelist 1, Cuelist 2 and so on, and one template fires the right cue list every time.