Fingers On Buzzers

[updated to v2 which can be expanded to any number of iPads or buttons]

This project is a Quiz Buzzer system that uses iPads running  Touch OSC

Later in this section, we will look at using alternative buttons and displays that can be used with the example QLab workspace, if you don’t want to use iPads. . For clarity, this workspace only uses 2 iPads for 2 contestants but could, in theory, be expanded easily to any number.

Here it is in action (Best viewed full screen):

How it works:

The entire surface of each iPad is a button. When an 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 by pressing R on the QLab keyboard.

Contestants names can be edited without editing the OSC messages, by typing the contestant names into the Q name column. The edited names can be sent to the iPads by pressing the Hotkey combination shift-S. This also edits the Text cues that display winning contestants names on the video output.

Network Set Up:

For Best results, it’s best to use a dedicated wi-fi router with static IP addresses. In Mac system preferences/network set up a static IP like this. I have used for my Mac


Each iPad needs to be connected to the router via wi-fi and needs a unique Static IP address. Here is iPad 1 connected to the router with the IP address iPad2 could use etc.

iPad setupjpg needs to be configured on each iPad with the IP address of the Mac running QLab (, the outgoing port QLab expects the OSC messages to arrive. (53000) and the incoming port (53001) QLab will send OSC messages to control TouchOSC on the iPads. These settings are the same for all iPads used (although the Local IP address  shown will be that set for each iPad in WiFi settings.)

ipad2 setup

QLab needs to be set up to be able to send network cues to each iPad individually. In QLab settings/network, the setup will look similar to this


While we are in settings we can set QLab to run the reset cue when it opens so that it is in a state to immediately receive input from the iPads.


TouchOSC is programmed using TouchOSC editor on the Mac. I am assuming that you are either proficient with TouchOSC or will learn how to use it using the documentation provided with the app.  For each iPad, there are three main elements.

  1. A push button covering the whole screen:


This has a custom OSC message. for iPad1 the OSC will be /cue/1/start. This means when the button is pressed it will start cue 1 in QLab

2. A circular ‘LED’ which will be switched on and off by qLab to indicate the winning contestant for each round.


This uses the default (auto) OSC address /1/led1.  This is the same on all iPads. The iPad whose LED illuminates is set with the patch on the Network cue in the  QLab workspace.

3. An 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 also allows QLab to change contestants names by sending an OSC message to the iPad  e.g. /1/label1 DAVE

Here’s the pushbutton for iPad2


I’ve used a different color for all the elements on iPad2. The custom OSC message for the pushbutton on this iPad is /cue/2/start. This means when the button is pressed it will start cue 1 in QLab.

You can download the TouchOSC editor files here

Here’s a screenshot of the QLab workspace

fingersOnBuzzers 2

Here’s what happens when iPad 1 is pressed first.

iPad1 sends the OSC message to QLab on port 53000 /cue/1/start, which starts cue 1.

Cue 1 is a start cue which starts the start all children simultaneously Group cue numbered iPad 1.

When this group is triggered it does the following:

Disarms all start cues so no further button presses will be registered, by disarming the group cue numbered STARTS

Play an audio cue to give an aural indication the button is pressed. You can use different sounds in each group.

Play a Text cue to display the winner’s name on a video output.

Stop the default state of the video screen (The “Fingers on Buzzers” message)

Light the ‘LED’ element of the touchOSC app on the winning iPad (iPad1) by sending the OSC message /1/led1 1 to the network patch destination 2-ipad1 which we set up earlier.

network led cue

If iPad 2 had pressed first. cue 2 would have started cue iPad2. This does exactly the same as the group cue for iPad1, but the group cue has different sound and text cues and sends the OSC message /1/led1 1 to destination patch 3-ipad2

When the reset group cue is run, usually by pressing the hotkey [R], the following happens:

All TouchOSC ‘LED’ elements are turned off on the iPads by sending /1/led1 0 to each iPad destination patch

All iPad group cues are stopped, turning off the winner name on the video screen.

A Text cue is run to put “Fingers on Buzzers!” on the video screen

All cues are armed by arming the group cue numbered STARTS

All cues are loaded

Editing Contestant Names [Requires QLab 4]

To save having to edit the OSC messages and text of Text cues you can just type the names into the Q Name column in the names group cue at the bottom of the list, replacing contestant 1 and Contestant 2.

When the cue numbered names is run, either using the hotkey shift-S, or by selecting the cue and triggering GO, the names in the Q names column is transferred to the iPads using this OSC message

/1/label1 #/cue/ipad1N/name#

The OSC between the hashtags is an OSC query. So this message sends /1/label1 and the name in the Qname column which it gets using the OSC message which gets this information from the relevant cue.

You can find out more about OSC queries here

It also sets the text of the Text cues to the new contestant names.

You can download the complete QLab workspace for QLab 3 and QLab 4 with associated files here

Using the QLab workspace without iPads

The winner’s name is already displayed on a QLab video output so you can dispense with the iPads as display devices, without altering anything in the workspace.

If you want to use hardware pushbuttons then a contact closure to MIDI device like a Midi Solutions F8 would facilitate this.

If your device was set up to send MIDI note on 60 when button 1 was pressed you would set the trigger of Q1 like this

MIDI trigger

You would probably use note on 61 for Q2 etc.

Happy Buzzing!!


Chapter Author: Mic Pool

Chapter Graphic: original image by wlodi
Licensed under a Creative Commons Attribution-ShareAlike 2.0 Generic License.
Cropped image distributed under the same terms.
Creative Commons License