Written by William
June 21, 2023
As part of our ongoing collaboration with local musician Nava Onti, we were recently tasked with hosting and recording a live performance in our office. Operating on a zero-budget basis, with the deadline quickly approaching, we had to figure out a way to quickly program the limited equipment we had on hand to meet our goals for the shoot.
Inventory was slim. We settled on using a projector, 4 color changing "smart bulbs," and two Profoto strobe lights designed primarily for photography. In conjunction with the strobes, we also had some gels (for color) and a variety of grids that can be used to focus the light.
We replaced our regular overhead lights with the smart bulbs, for casting large swathes of color across the room. The strobes were strategically positioned around the room for creating pulses of light, which we later synced to music. The projector was placed so that it cast over Nava Onti, and illuminated the back of the "stage."
The next challenge was programming. Our goal was to have the lights follow a sequence in time with the music, changing the ambiance as Nava played through his setlist. Since the equipment we used was not designed for this purpose, we realized we would have to design some custom software.
The first task was to figure out a way to control the lights programmatically. For the smart bulbs we were lucky to find a 3rd party Python API called python-kasa that allowed us to easily send commands over WiFi. The Profoto strobe lights were not so simple.
The only way to remote control the strobes was using their app for iOS or Android. To bypass this, we used a tool called ADB or "Android Debug Bridge" to send touch event commands to an old phone via USB. We could then remotely control the strobes by sending touch commands to the Profoto app from a Python script.
Finally, we implemented a custom scripting language that allowed us to sequence commands to the various lights. This made it significantly easier to create lighting sequences that were in time with the music and projected video. Below is an example sequence that turns all four overhead lights to red, and then flashes the strobe light 8 times.
!define RED 0 100 100
!define GREEN 120 100 100
[0.000]
BULB CEILING_1 RED
BULB CEILING_2 RED
BULB CEILING_3 RED
BULB CEILING_4 RED
[3.840]
STROBE DESKTOP 100
REPEAT(8 0.05) STROBE DESKTOP FLASH
We think the end result was pretty cool. Check out the final video of the event on our YouTube channel. The source code for the project can be found here.
Thanks for subscribing!