Holiday Light Show 2022
It's back again this year, this time bigger and better. My original plan had been to use the same show every year, maybe making a few tweaks or adding a new song each time. There were a couple of changes I wanted to make this year, one thing led to another, and now I've rewritten basically the entire codebase.
First of all, I added a new song, "I Have a Little Dreidel," or more colloquially "The Dreidel Song." I am half Jewish and while my family usually leans toward our Christian side, I decided it was time to incorporate something Jewish into my work. There aren't that many Hanukkah songs out there but I'm glad I was able to find a public domain rendition of this one so I can share a bit of Jewish light with the world.
Secondly, I ditched the radio part of the system. I had never been a fan of using a radio transmitter, but at first I figured it was the easiest way to broadcast live music at a short range in sync with the lights. When I took the whole setup out of my closet for the year, I discovered that the radio transmitter was misbehaving. Rather than try to fix it or buy a new one, I decided to get rid of it entirely and switch to a WiFi-based timing system. Originally I was skeptical of using WiFi, but I made it work, switching the microcontroller to an ESP32-S2-based board, using a Network Time Protocol (NTP) server to sync the clock, and then creating the above interface for listening to the music live from essentially any device.
Lastly, the timing system was also completely rewritten in order to fix some of the syncing issues I had last year. This required me to rewrite the animations for all of the songs as well, which took ages. I think this was worth it though, since a lot of the animations make more sense now that they are properly synced with the music. The syncing still isn't great when coupled with the latency of the online player, but overall I'm happy with how it turned out.
See the Original Project from 2021