In shows with voice-over recordings, click tracks, or videos featuring characters, it is often necessary to have a quick and reliable way of selecting which cues will be used in a performance based on who will be performing. There have been lots of solutions to this problem using AppleScript. With the introduction of OSC cues, which can use wildcards in custom OSC strings, this process has been made much easier. The method illustrated here is based on an OSC method by Chris Ashworth. The version described below works in all versions of QLab 3, QLab 4, and QLab 5. If you’re using QLab 4 or QLab 5, there is another, much better method devised by Andy Leviss which uses cue carts. This method is described at the end of this article.

In QLab 3, the type of cue which sends OSC messages is called the “OSC cue”. In QLab 4 and QLab 5, that cue type is called the “Network cue”.

The selection of cues is made from a dialog at the top of the main list. The current selection is clearly visible in a Memo cue at the top of the cue list. This is a simple example which allows the operator to choose to activate a single set of course out of a choice between three sets. The method can be easily adapted to suit more complex requirements.

How It Works

A Script cue with the hotkey ? displays a list of actors to choose from. Depending on which actor is selected, a different cue is run. Here’s the script:

set actorlist to {"ANN", "BRIDGET", "CAZ"}
set actor to (choose from list actorlist with title "VO Selector" with prompt "At this performance Cosette will be played by?") as string
tell application id "com.figure53.qlab.3" to tell front workspace
    if actor = "ANN" then
      start cue "9991"
    else if actor = "BRIDGET" then
      start cue "9992"
    else if actor = "CAZ" then
      start cue "9993"
    end if
  end try
end tell

The 9000-range cues are in a separate cue list and contain groups of OSC cues, which arm or disarm the relevant voiceover cues.

Arm Actor

They use wildcards to select the cues. So, for instance, the OSC:

/cues/*ANN/armed 1

would select any cue whose number was (anything) ANN. So if all voiceover cues have the name of the actor after their number, then they will all be selected for the arm or disarm.

IMPORTANT: all OSC is case-sensitive!

The final cue in each group is a Script cue, which sets the cue name of the Memo cue, numbered CAST, in the main cue list, to the name of the cast member selected.

tell application id "com.figure53.qlab.3" to tell front workspace
  set q name of cue "CAST" to "ANN" & " SELECTED"
end tell

Using Carts as the Selector Interface

This requires QLab 4 to work at all, and QLab 4.1 or later to pop out the cart list so you can see both the cart and your main cue list at once.

This method is a simplified version of a workspace programmed by Andy Leviss. His original controls photographs and name captions for a video title sequence for a large number of roles with many alternates or understudies. It also has sophisticated features like mirroring changes to a backup QLab system. This simplified example is for voiceover audio cues in a play with two characters with a single understudy for each part. Here it is in action; best viewed full screen:

On the right is the cue cart which contains six Start cues. Each column represents a character and contains buttons for selecting which cast member will be playing each character, or in the case of the third column whether an announcement appropriate for a matinée or evening performance is played. As each cue is clicked, the selection is indicated by a change in color and by the disarming and arming of cues in the main cue list, on the left, to correspond to choices for that performance. Because each selection requires a number of cues to be executed, the cart cues are Start cues which trigger a Group cue in a separate cue list which contains Network cues appropriate for each selection. Here’s a closer look at the cue list:

Cue list

At the top is a pre-show announcement which has two versions, one of which is armed to play depending on the cart selection, and the other of which is disarmed.

Then, there is a short recorded dialogue sequence between two characters, Thomas and Florence. For each voiceover, there is an Audio cue for each cast member who may be playing the part in a Group cue set to “start all children simultaneously.” Only one cue is armed. The example only uses two roles, each one covered by two actors, but it is easy to expand the number of roles and alternates for each role.

Cart inspector

If the Thomas Played by Daniel Fogerty cue is clicked, a cue numbered select.thomas.daniel is started. This is in a cue list called “Understudy Handlers” which contains one Group cue for each Start cue in the cart:

Disarm Thomas

When the cue select.thomas.daniel is triggered, it first disarms all cues in the main cue list whose numbers start with thomas by means of a Network cue, which sends an OSC message composed from the information in the settings tab: thomas.* for the cue number, armed as the command, and 0 as the parameter. This will result in this OSC message being sent:

/cue/thomas.*/armed 0

The asterisk denotes a wildcard which means any other text, so cues including thomas.oliver.3 and thomas.daniel.1 would also be disarmed.

The next cue in the group arms the selected cast members voiceovers for that character using a network cue which results in this OSC message:

/cue/thomas.daniel*/armed 1

Thomas.Daniel arm

This will arm all cues that start with thomas.daniel so all voiceovers including thomas.daniel.1 and thomas.daniel.4 will be armed. The next two cues set the colors of the Start cues in the cart to indicate the selection in a similar way. The color is cleared in all carts whose cue numbers begin cart.thomas, and then switched to purple for cart.thomas.daniel

The clever thing with this approach is the dot numbering style.

  • Cues are numbered characterName.castMember.number
  • Carts are numbered cart.characterName.castMember
  • Group cues triggered by the Start cues in the cart are select.characterName.castmember

This makes it easy to use wildcards to apply the arms and disarms to each set of cues that you want to activate or deactivate. A useful addition, if you are thinking of using a similar workspace frequently, might be some helper scripts to automatically create, name, and number your cues using this complex dot structure. For instance, a script could ask for a character name and cast member in a dialog box, and then create a Start cue in the cart and a Group cue in the handler list with all the wildcard Network cues automatically created. Another script might go through a cue list and find all the cues with the name of a character and “VO” in the cue name, and generate a cue number for it.