Skip to content

Triggering Cues with OSC

Organizing the track with cues is often required when building shows which interact with other systems or cast members. The OSC event transport provides a rich set of methods for calling these cues.

It is possible to use Disguise-supplied templates to call cues using a variety of external tools. OSC is an open protocol and many other systems use OSC for show control purposes.

Cue message formats

There are two main cue formats in use by Disguise for OSC control. The preferred method is to use the regular Cue trigger, but some applications are only able to send single floating-point values. Due to the nature of floating point values, this Float cue method is less flexible, but still allows show control from more limited systems.

Cue messages

The Cue command responds to a message with an array of between 1 and 3 float or integer value arguments. All values must be of the same type.

Each element in the array corresponds to a . separated sub-cue number. For example, an OSC message of the form /d3/showcontrol/cue [1, 2, 5] (where /d3/showcontrol/cue is the default address for cues, and [1, 2, 5] represents a list of arguments sent to that address.)

If the source sends floating point cue numbers, the values are rounded to the nearest integer and treated as above. If the rounding would change the number too much, an error is raised.

Such an OSC message would result in calling the cue 1.2.5, either on the local track, or somewhere else in the set list, according to the cue behaviour.

Float cue messages

The Float cue command responds to a message with exactly 1 floating point value argument.

This argument is treated as a decimal number with two decimal places. For example, sending 1.1 is treated at 1.10. Therefore, it is not possible to call cues with anything other than 2 numbers after the first major cue number. Only sub-cues with numbers in the range 0 to 99 are callable using this command.

This is because when sending floating point numbers using OSC, there is no difference between the number 1.1 and the number 1.10, because mathematically they are equal.

Users can think of this as there always being a large number of repeating 0s after every number. Designer will then sample the first two numbers after the decimal place. If there is a 0 in front of the number, it is discarded. So 01 is treated as 1.

If the user must use this scheme, then the cues must be laid out in such a way that they are callable by this system.

ValueCueReason
1.101.10Actually transmitted as 1.1, trailing 0 is assumed
1.11.10Decimal place numbers are evaluated as if there were 2 decimal values.
1.011.1Leading 0 is dropped, and treated as a single-digit cue.
1.1041.10Trailing 4 is rounded down.

Common control systems

It is useful as a quick reference to touch on the syntax needed to correctly format the OSC message from a number of control systems.

ETC Eos OSC cue triggering

Use the string /d3/showcontrol/cue=%3,%4

This will send an OSC message with every cue of the integer and the float past the decimal point. So, cue 1.1 on the Eos will trigger cue 1.1 in Disguise.

For more granular control, this can be changed to be /d3/showcontrol/cue=%2,%3,%4. That allows the first number to be cue list, second cue integer and third float. So cue list 3 cue 4.5 will trigger cue tag 3.4.5

QLab OSC cue triggering

An OSC message from QLab can hold multiple arguments, separated by a space. So in QLab make a generic OSC cue and for it’s string set it to /d3/showcontrol/cue 7 8 9 and this will trigger cue 7.8.9 inside Designer.