A classmate asked me to stage-manage a senior thesis production of a devised play called Outbound. The play has a unique technical element: In act two, a character has a light appear on their heart. I set about creating a remotely controlled device that would be able to light up the actor’s chest.
In technical theater we use a piece of software called QLab, which is mainly used to run sound cues. QLab is also able to dispatch Open Sound Control (OSC) commands. Since I would already be using QLab for the show, it made sense to use it to control this special light as well.
My device uses an ESP32 to receive the OSC signals using a library created by the Center for New Music and Audio Technologies (CNMAT) and the built-in WiFi library. Controlling a ring of 12 neopixels, it receives OSC commands to flash the lights, set their brightness, and turn them on and off. The device also has a test button and a small OLED status screen to test them before the show and help troubleshoot should something go wrong. The NeoPixels and OLED screen are both controlled with libraries from Adafruit.
I designed and 3D printed a box to hold the electronics, and I also designed a custom PCB to reduce the project’s size and keep it organized. The PCBs were fabricated by PCBWay. The outside of the box has two mini-xlr ports so it can be connected to the light the actor is wearing and to a manual trigger button in case of a network failure during the show.
Another feature I added was a change in the hue of the lights as they dim. I plotted functions for the red, green, and blue channels in Desmos (you can see the graph here), tweaked them to my liking, and then put them in the code.
Unfortunately, I do not have footage of me testing the lights with QLab. QLab requires a license in order to send OSC signals, and I do not currently have a license. Instead, I have been testing it with TouchOSC.
As of this writing, Outbound has not been performed, so this project has yet to see real-world use.