client: Personal Project
This personal project involved the creation of a short multimedia show with lighting and visuals inspired by and set to music from the Disneyland Park holiday attraction, Haunted Mansion Holiday.
Most of the elements are either recreations of or inspired by assets in the Haunted Mansion Holiday attraction and the original The Nightmare Before Christmas film. The things that happen during different parts of the music are inspired by the show scenes that occur during that section of the Disneyland attraction.
Two 50 bulb strands of WS2811 LEDs are controlled via an Arduino Uno. The strands are daisy-chained together with the end of the first connected to three pins on the Arduino. Ground, 5V, and Digital Pin #2 which functions as the data pin and controls the strands.
WS2811 Pixel Addressable LEDs
Arduino Uno Microcontroller
xLights Project Sequence
The sequencing for the LEDs was done in an open source application called xLights. It communicates with the Arduino Uno using the DMX 512 standard over USB and is defined as a controller in xLights. The program running on the Arduino is a modified version of DMXUSB_FastLED.ino created by Perry Naseck (DaAwesomeP).
This modified version disregards the FastLED library method of communicating with LEDs and instead includes the more efficient AdaFruit NeoPixel library—which supports WS2811 pixel strands. The code is constantly listening for DMX messages, that it reads into a 300 slot buffer that cycles through to set the Red, Green, and Blue value for a pixel. Those color values are then fed into the setPixelColor method of the strand and shown on it.
After Effects projection map
Still from rendered media
The base projection map was drawn out in an Adobe Illustrator document with the same dimensions as the projector output. That file was taken into After Effects and then pre-comps set aside to hold different elements were manipulated with mesh warp effects to fit the map. All animation was then done in the After Effects using elements created in Illustrator.
xLights show playback is executed in a companion program called xSchedule, which allows you to playback video in sync with your light sequences. Unfortunately Mac development for xSchedule stopped in 2020 and older versions of the software do not run natively on Apple Silicon. The application is not able to playback video and lighting sequences without experiencing significant lag when translating through Rosetta 2.
The work around for this issue was to offload video playback from xSchedule and into a different program. Sequence playback alone is able to run without experiencing lag on xSchedule, but there needed to be some sort of mechanism that started playback at the same time in both programs. Video playback is run out of a QLC+ show that has a MIDI note at the beginning of the sequence. Said MIDI note feeds into a MIDI/OSC routing program called OSCulator which in turn sends it to the receiver features of xSchedule and triggers an event that begins lighting playback.