Fingers On Buzzers
This chapter shows how to create a quiz buzzer system that uses iPads running Touch OSC. One iPad is placed in front of each contestant, and they tap the iPad screen to “buzz in.”
Later in the chapter we’ll look at using alternative buttons and displays that can be used with the example QLab workspace in case you don’t want to use iPads.
For clarity, the example uses two iPads for two contestants. The methods described can be expanded easily to any practical number of contestants.
Here it is in action; best viewed full screen:
How it works
The entire surface of each iPad is a button. When the iPad is pressed, QLab registers the press and locks out any other iPad button presses. It switches on the circular ‘LED’ area of the winning iPad and additionally displays the winner’s name on a video output (shown in the screen recording in the audition window in the lower left of the frame.)
The system is reset for the next question with the hotkey R.
In QLab 4, contestants’ names can be changed by simply editing the cue names of cues within the workspace. After changing the names, the hotkey ⇧S updates the iPads with the new names. This also edits the Text cues that display the contestants’ names on the video output.
For best results, use a dedicated wifi network with static IP addresses. On the Mac, Visit System Preferences → Network and set up a static IP as shown here:
The example uses the
192.168.x.y address space, but any private IP address
scheme will work.
Each iPad needs to be connected to the same network and each needs a unique
static IP address. Here is iPad 1 connected to the router with the IP address
iPad 2 could use
Next, TouchOSC needs to be configured on each iPad with the IP address of the
Mac running QLab (
192.168.0.21), the outgoing port that QLab uses to listen
for OSC (
53000), and the incoming port that QLab will use to send OSC
These settings are the same for all iPads used, although the local IP address shown on each iPad will of course be unique to each iPad.
Next, QLab needs network destinations for each iPad, so that it can send OSC messages to each. Go to Workspace settings → Network and set up two network patches like this:
While we’re here in Workspace Settings, we’ll set QLab to run the reset cue when the workspace opens so that it is in a state to immediately receive input from the iPads:
iPad TouchOSC Setup
The interface of TouchOSC is programmed using TouchOSC Editor on the Mac. Basic proficiency in TouchOSC Editor is outside the scope of this chapter, so you may wish to take some time to familiarize yourself with it before proceeding.
For each iPad, there are three main interface elements shown here in TouchOSC Editor:
First, a “Push Button” covering the whole screen:
On iPad 1, the button sends
/cue/1/start via OSC. This means when the button
is pressed, it will start cue
1 in QLab. The Value Range for the button is
irrelevant here and can be ignored.
Second, a circular “LED” which will be switched on and off by QLab to indicate which contestant buzzed in first for each round:
The LED uses the default (auto) OSC address
/1/led1, which will be the same on
all iPads. Since each iPad has a different IP address, and is therefore reached
by QLab using a separate network patch, the OSC address itself can be the same
on each iPad without creating a conflict.
Third, a “Horizontal Label” to indicate which contestant the iPad is being used by:
This is initially programmed to “CONTESTANTx” in the text field and the OSC
address is the auto default
/1/label1. This address allows QLab to change the
contestant’s name by sending an OSC message to the iPad. For example, sending
/1/label1 DAVE will change the label from “CONTESTANT1” to “DAVE”.
Here’s the pushbutton for iPad 2:
The example uses a different color for all the elements on iPad 2. This is purely aesthetic, however, and you can make your own color choices without affecting the functionality.
The custom OSC message for the pushbutton on iPad 2 is
means that pressing the button will start cue
2 in QLab.
Putting It All Together
Here’s the QLab workspace, standing by for the contestants to buzz in:
Here’s what happens when iPad 1 is pressed first:
- iPad 1 sends the OSC message
/cue/1/startto QLab on port 53000, which starts cue
1is a Start cue which starts Group cue
iPad1. When this Group is triggered it does the following:
- Disarms Group cue
STARTSwhich prevents further iPad button presses from registering.
- Plays an Audio cue to give an aural indication that the button was pressed. The example uses different sounds for iPad 1 and iPad 2.
- Starts a Text cue which displays the contestant’s name on a video output.
- Stops the default “ready” text state of the video screen (The “Fingers on Buzzers” message.)
- Turns on the TouchOSC “LED” on iPad 1 by sending the OSC message
/1/led1 1to the network patch destination “2 - ipad1” which we set up earlier. Here’s a screen shot of the Network cue that does this:
If iPad 2 had pressed first, cue
2 would have started Group cue
does exactly the same things as the Group cue for iPad1, has different content
for the Audio and Text cues, and sends the OSC message
/1/led1 1 to
destination patch “3 - ipad2”.
When the reset cue is run, usually by pressing the hotkey R, the following happens:
- All TouchOSC ‘LED’s are turned off on the iPads by sending
/1/led1 0to each iPad destination patch.
- All iPad Group cues are stopped, turning off the contestant name on the video screen.
- A Text cue is run to put “Fingers on Buzzers!” on the video screen
- Group cue
- All cues are loaded to make sure QLab responds as quickly as possible.
Note: cues which are left loaded for a long time may be invisibly unloaded by macOS, because macOS is inscrutable when it comes to background memory management. There is no way to know how long “a long time” is, and there is no way to see whether it’s happened or not. For practical purposes, unless the Mac is busy doing all kinds of things, or unless the Mac has less than 4GB of RAM, you can trust loaded cues to stay loaded for at least several minutes, and possibly much longer. We really wish we could be more specific about this, but we really cannot.
Editing Contestant Names (QLab 4 only)
In QLab 3, if you want custom contestant names you’ll need to manually enter them in TouchOSC Editor, then edit the Titles cues in QLab.
In QLab 4, however, you can enter contestant names by simply renaming the two
Network cues in the Group cue numbered
names at the bottom of the list,
replacing Contestant 1 and Contestant 2.
names is run, either using the hotkey ⇧S or by selecting
the cue and triggering GO, the cue names of those two Network cues (numbered
ipad2N) are transferred to the iPads using OSC messages like
The OSC between the hash marks is an OSC query. So this message sends
/1/label1 plus the name of cue
You can find out more about OSC queries here.
The Group also sets the text of the Text cues to the new contestant names.
Using the QLab workspace without iPads
If you don’t have, or don’t want to use, iPads for the contestants, the workspace can also work with MIDI input. A contact closure to MIDI device such as the Midi Solutions F8 works nicely, allowing you to wire up any button, switch, or foot pedal to a 1/4” TS plug, and send a MIDI note when that contact is closed.
All you’d need to do is add MIDI triggers to the Start cues at the top of the workspace.
If, for example, you configured your MIDI hardware so that pressing button 1
sent MIDI Note On 60, you’d need to set the trigger of cue
1 like this:
You would then need to set a separate note for cue
2, maybe Note On 61.