Carts And Remotes
This chapter requires an iOS device running QLab Remote 4.1 or later.
Prior to QLab 4, most touchscreen button remotes were programmed by users using TouchOSC or Lemur. With the release of QLab 4, which added carts that can contain any sort of cue, many of the solutions devised in TouchOSC or Lemur can be achieved more simply using carts accessed via QLab Remote.
With the release of QLab 4.1 and QLab Remote 4.1, it became viable to construct even more complex control systems with multiple monitors and iOS devices without the need for any third-party tools. The new features in QLab 4.1 that facilitated this are:
- Cue lists and carts that can be opened in their own windows, allowing multiple lists to be visible and controlled simultaneously.
- Carts that can contain cues providing many utility functions, like adding slices to Audio or Video cues on the fly, changing the volume of selected cues, selecting understudy voiceovers and Video cues, etc.
- Under-the-hood changes to QLab Remote to enable it to integrate with these new features of QLab.
QLab Remote can connect to the Mac running QLab through a USB cables, for greater reliability (and simultaneous charging), or wirelessly over wifi. Multiple iOS devices running QLab Remote can be connected to the same workspace simultaneously, allowing multi-zone control and purpose-specific control devices that give you immediate access to various QLab features, good visual feedback, and good customization of layout.
This chapter explores many of the new operating methods made available by these new features.
A Complex Example
Our contrived, fictitious example is that of a theme park with a central arena, a holding area for audience members waiting for the next performance in the arena, and other spaces outside the arena.
This workspace spans two large monitors and can have many iPads and iPhones connected via USB or wifi as touchscreen remotes. It has three cue lists visible and controllable simultaneously, and a master window (the main QLab workspace window) where all these lists can be edited by the show programmer. In addition, it has a number of carts which can be displayed on the screen or on iOS devices running QLab Remote to provide easy access to a whole range of functions.
“Cue List 1” contains the cues for the main arena show, “Cue List 2” has some music cues which are played occasionally in the park surrounding the arena, and “Cue List 3” has some announcements which are played into the holding area outside the arena for the next audience. Cue List 3 has an additional feature allowing these announcements to be made by one of two announcers, each speaking either English or French.
On the primary monitor, with the menubar showing, is the primary QLab workspace window. Any cue list can be selected for editing in this window, and of course the sidebar can show either the list of cues and carts, or the Active Cues display.
The second monitor shows the three principal cue lists that are intended to be operated and controlled independently. These have been opened from the main workspace window in new windows, which means they behave as though they are in show mode regardless of whether the primary workspace window is set to show mode or edit mode. Their positions on screen are saved with the workspace, so once you place them where you want them, you can quit and reopen QLab and they’ll return to their saved positions.
The Cue Cart Controllers
There are six cart controllers available which can be used on screen with the mouse, hotkeys, or MIDI triggers. They can also be viewed and operated as touch screens on iOS devices using QLab Remote.
The Remote Cart
This cart has Go, Stop, Next, and Previous buttons for each of the three main cue lists. Here it is in action:
The Go and Stop buttons are Network cues which send OSC messages to the cue lists addressing them by their cue numbers, e.g.:
/cue/1000/start /cue/3000/panic etc.
The Previous and Next buttons are Script cues. They ignore groups and move through the cues in sequential order regardless of whether the cues in collapsed groups are visible. Currently, there is no viable method to move from sequence to sequence. The script used in these cues is the only current way of navigating cue lists that are opened in secondary windows.
tell application id “com.figure53.QLab.4” to tell (the first cue list in workspace 1 whose q name is “Cue List 1”) –- your hidden cue list name goes here set thecurrentcue to the playback position set thecurrentcue to cue before thecurrentcue -- change before to after for next cue set the playback position to thecurrentcue end tell
The Control Cart
This cart provides touchscreen buttons for adjusting parameters of whichever cue is selected in the main QLab window on the main monitor. It has buttons to raise or lower the master volume of the selected cue by 1, 2, 3, 4, or 5 dB, buttons to switch the loops of selected Audio and Video cues on or off, and a button to add slices to the selected cue “on the fly” during playback.
Here it is in action:
The buttons are Network cues with OSC messages like these for volume control:
/cue/selected/level/0/0/+ 5 /cue/selected/level/0/0/- 1
or these for loop control:
/cue/selected/infiniteLoop 1 /cue/selected/infiniteLoop 0
or this for adding slice markers:
All of these messages target the currently selected cue in the main window.
The Jingle Cart
This cart is set up like a broadcast-style playback cart, with one audio cue per slot. Here it is in action:
The cues in the top row are programmed to fade all other cues in the cart when they are triggered over five seconds. They also have numeric hotkey triggers.
The cues in the second row are announcements and are set to duck all other cues playing in the cart by 15 dB.
The cues in the bottom row are set to do their second trigger action, in this case to panic, when released.
This is one function that cannot be utilized using QLab Remote, because on-screen buttons in QLab Remote generally activate when they’re released. The thinking behind this decision is so that you can carefully rest your finger on a button in QLab Remote, then raise your eyes to the stage and watch for your cue. When the time comes, you can simply lift your finger to trigger the button. That same behavior would be very tricky if you were required to hover your finger over the button, not touching it, and then tap right on the moment. The drawback to this choice is that QLab Remote is unable to handle second triggers on release.
To observe the second trigger action of the bottom row of cues, you’ll need to operate them in show mode on the Mac or program them with MIDI Note triggers and play them sampler-style on a MIDI keyboard.
The Selector Cart
This cart is used in conjunction with Cue List 3 (Holding Area Announcements). It determines whether the announcements will be in French or English and which of the two announcer voices will be used. It also indicates the current choices. Here it is in action:
The four buttons are Start cues which target cues in the cue list “Selector Cues”.
This list consists of four Groups cues set to “start all children simultaneously”, each triggered by one button in the Selector cart. The Group cues each contain a series of Network cues which use OSC queries and wildcard pattern matching to arm and disarm the appropriate cues in Cue List 3.
There are also two Memo cues numbered
WHO which store variables in
their notes fields depending on which buttons have been pressed.
When the English button is pressed, it starts Group cue
ENG in the selector
programming list. The first Network cue within the Group sends the following OSC
This disarms every cue whose cue number matches the pattern defined by the
asterisk wildcards. A match is any cue whose number starts with
by a single digit followed by two characters. The result is that all the Audio
cues are disarmed, but the Group cues are not.
The next two Network cues send messages like these:
That sets the colors of the buttons in the selector cart to indicate which language is selected.
The next Network cue sends a message like this:
This sets the Notes field of the cue numbered LANG to “E”. We are using this to store “E” as a variable, indicating “English”. We send “F” when selecting French.
The final Network cue sends a message like this:
This message arms every cue whose cue number matches the pattern defined by the
wildcard. This one is tricky, because after the wildcard asterisk is an OSC
query (denoted by the hash symbols). The query gets the contents of the notes
field of the cue numbered
WHO, which is where we are storing a letter set by
the last press of the announcer select buttons. In this case, it’s “F” (for
Frankie). If we had last pressed the button for
Teddy, the notes field would
* matches any character, followed by the queried value, followed by “E”.
So this would match cue
ann1FE and cue
ann2FE but not
It would also match a cue numbered, for example,
SAFE, or any other cue with a
cue number ending in
FE so if you are likely to have other cues in your
workspace with numbers ending in
FE, you’ll want to adopt a more complex
wildcard for pattern matching like
The Room Remote Control Cart
This cart starts and stops the music in Cue List 2, and could be used with an iPhone or iPod connected to a USB extender to place control buttons wherever they are needed. The cart also has volume adjustment buttons.
The start and stop buttons target cues in the Room Cues Cue List
The volume buttons apply relative fades of plus or minus 3 dB to the cue
MUSIC in Cue List 2.
The Stop Reset Cart
This cart stops everything or resets the playhead in each cue list to the first cue in that list. Obviously, use this one with caution.
The stop button is a Network cue with the OSC message
which fades and stops all cues over the panic duration set in Workspace Settings → General.
The reset button is a Start cue which targets the cue numbered
RESET in the
“Reset” cue list.
This cue is a Group cue set to “start all children simultaneously” which contains GoTo cues that set the playheads for each of the three main cue lists to their top of show cues.
Chapter Author: Mic Pool with a pretty substantial rewrite by Sam Kusnetz.