In 2021, I was hired to program an automated audio/visual experience for Washington Ensemble Theatre. As the world had not yet fully emerged from Covid, the performance was conceived of as a multi-room gallery space at 12th Avenue Arts. Groups of patrons would enter the main space together, and automated lighting and sound cues guided them through the approximately 25 minute “show.”
QLab functioned as the system controller, synchronizing audio, lighting and video cues via OSC messaging to an ETC Ion lighting control console, and a MadMapper instance on a secondary MacBook Pro.
From the initial GO command, the cue list progressed without operator input until the patrons were presented with a room where they needed to initial an action to proceed – pressing a large arcade button to start a new lighting and sound sequence that approximated a disco.
The performance automation required extensive, repeatable setup steps:

Once initiated, the cue list progressed from room to room, guiding patrons through the space:

Multiple performances occured on a given day, and it was important to the creative team that teh disco playlists not repeat. The arcade button sent a relay trigger to teh Eos console, which in turn sent an OSC message to QLab to run a Script cue that selected a playist group at random, and then disabled that group once completed, preventing it from being selected again until all playlists had been played:

The AppleScript randomization and repeat-prevention steps are as follows:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
-- Randomize a group cue and prevent repeat playback tell application id "com.figure53.QLab.4" to tell front workspace set triggerCues to cues of cue "501" whose armed is true -- this is your group cue, change cue number as necessary try -- In case there aren't any possible cues set someCue to some item of triggerCues if armed of someCue is true then start someCue end if delay 1 set armed of someCue to false end try end tell |