Stage Effects with QLab

I recently assisted Chris Walker with Holiday Inn at the 5th Avenue Theatre, where I set up a MIDI-controlled relay array for LED/solenoid valve effects in “Let’s Say It With Firecrackers”. As this was rented equipment from the Broadway production (Roundabout Theatre at Studio 54), the challenge was to do a bit of reverse engineering, as the gear shipped without operating instructions.

The backbone of the controls were a pair of MIDI Solutions R8 relay array controllers. Performing a MIDI dump command gave me information about how each contact closure port was programmed (what sort of MIDI events it was looking for to close and open the connected relays).

The keyboard 2 book had a special Mainstage scene dedicated to sending Note On messages on its lowest key, which were sent up to the QLab host machines at front of house. These messages advanced the playhead in a dedicated workspace, which moved through Note On/Off fire-all groups that corresponded to each relay output controller.

We used an iConnectivity MIDI4+ at front of house, linking the primary and backup QLab machines to one MIDI interface. The 4+, by means of a RTP MIDI network running on each QLab machine, sent MIDI messages over Ethernet to an iConnectivity mio4 in the trap room, where the relay controllers were located (I highly recommend the iConnectivity MIDI devices).

The contact closures connected to an elaborate series of Arduinos with screw terminal shields and large electrolytic capacitors to run the diodes and control the solenoids, to make the flash and burst of “smoke” (fine powder in a tube, shot up by the solenoid-controlled air tube) of each firecracker effect. With the GO commands being sent by a musician in the orchestra pit, the effects were on beat and musical, allowing them to live as part of the choreography.

Additionally, QLab was used to send MSC messages to the Eos lighting console to synchronize another air effect (an air valve controlled by an RC4 relay), as well as to host a single video file and control projector shutters, power on/off and input selection via ProjectorManager from SigmaSix (using AppleScript automation).

Some info on how to use Script cues in QLab to control ProjectorManager:

# Control script syntax for ProjectorManager from SigmaSix (

# Useful for sending PJ Link commands from QLab


# Command syntax:

# PowerOn (int) -- power on the selected projector. Use 0 for all projectors.
# PowerOff (int) -- power off the selected projector. Use 0 for all projectors.

# AvMute (int) -- close shutter and mute sound of selected projector. Use 0 for all projectors.

# AvUnMute (int) -- open shutter and unmute sound of selected projector. Use 0 for all projectors.

# Inpt {list of integers} -- list of two integers. Set input of selected projectors. First integer is the input number (0 to n), second integer is the projector number to apply the change (1 to n). Use 0 for all projectors.


# The following examples show typical QLab script cue formatting to control projectors. All examples are in AppleScript


# Example 1

tell application "ProjectorManager"
AvMute 1 #close shutter and mute audio of the first projector in the list.

end tell

# Example 2

tell application "ProjectorManager"
PowerOff 2 #place the second projector in the list into Standby mode.

end tell

# Example 3
tell application "ProjectorManager"
Inpt {3, 2} #select the fourth input type (0 to n) on the second projector in the list. 

#Note the required braces as the list container.

end tell

The following is a diagram of the show control network:


Author: kreivalabs