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 that played back on a Christmas tree.
WS2811 Pixel Addressable LEDs
Arduino Uno Microcontroller
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.
xLights Project Sequence
The sequencing for the LEDs was done in an open source application called xL ights. 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 that supports WS2811 pixel strands. The code is constantly listening for DMX messages, which it reads into a 300 slot buffer that it 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 in a projection output sized Adobe Illustrator document. 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 also 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 translated through Rosetta 2.
The work around for this issue was to offload video playback from xSchedule and move it 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. To synchronize video playback, it is run out of a QLC+ show that also 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.
Most of the elements are either recreations of or take inspiration from 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 said section plays in on the Disneyland attraction.