Synchronized Lights and Music on the Doghouse
A little red doghouse has graced my yard every winter for 14 years. It started as a makeshift Christmas display, and then, as winter dragged on, the doghouse took on Valentine’s Day and St. Patrick’s Day before being stowed until Thanksgiving.
The winters took their toll, and last year, I replaced the siding and roof and retrofitted it with LED lights and a controller. It now makes a one-night appearance on Halloween before coming out again for a 4-month residency spanning from Thanksgiving to Easter, its lights and accessories changing with the holidays and seasons.
In a previous series of posts, I detailed the remodeling and outfitting of electronics for 2022.
For 2023, the dog learned new tricks—synchronized lights and music! (But if you read this post’s title, you already knew that.)
For the synchronization (and FM transmission for passing cars and pedestrians with Walkman Radios), I only needed to add three pieces of equipment:
- Raspberry Pi 3 running Falcon Player FPP
- Wi-Fi Router for a dedicated network
- FM Transmitter
I already had two of these (Raspberry Pi 3 and an extra Wi-Fi Router), so I only needed to purchase an FM Transmitter. Much less effort than last year! (Well, at least on the hardware infrastructure side. Programming the song sequences took many late nights, but I will get to that in another post.)
So how does it all work?
First, we have the doghouse, which is not only the focal point of the display but also the starting point as it contains the electronics to work as a stand-alone prop, be controlled by an external sequencer, or be combined and sequenced with other props.
The controller is an ESP32 with Wi-Fi mounted on a Dig-Quad running WLED. This controls the 947 LED lights along the edges of the doghouse, powered by a Power Supply Unit that can provide 5 volts at a maximum of 300 watts and 60 amps. (That’s the maximum, but I have it regulated to peak at 80% of the maximum.)
Raspberry Pi 3 Running Falcon Pi Player (FPP)
Luckily, there is a large, dedicated community devoted to light shows, which means there is active development, thoughtful integrations, and support.
Setting up the Raspberry Pi was as easy as running Raspberry Pi Imager, selecting Falcon Player as the image to install, and configuring the player through a browser from another computer (much like setting up a home router). No command lines, get-apt installs, or other messy work that I prefer to leave to my day job. I also didn’t need to hook up a monitor or keyboard to the Pi, as management is headless, and it can operate remotely.
The Falcon Player holds the songs and sequences and schedules a playlist at set times, intervals, or continuously loops through.
While I haven’t set up all the options yet, you can set up a public web page, integrate it with your home voice assistants, use the API to allow passers-by to request or vote on the next song, and much more.
When the doghouse is idle, it controls its lights with simple patterns provided by WLED. When the Falcon Player begins a scheduled playlist, it takes control by pushing lighting commands in real-time over the network, which brings me to the dedicated network router.
Since the Falcon Player on the Raspberry Pi sends out data to coordinate each of the 497 lights 20 times a second, a dedicated network is a must. Ideally, props like the doghouse would be connected via a wired network, but Wi-Fi works fine since it is just a doghouse.
The Raspberry Pi is connected directly to the router by Ethernet, and the router is connected to my home’s main router, which gives it Internet access for updates, API calls, and even streaming services to play music in between shows, which brings me to the FM Transmitter.
To not annoy my neighbors, I’m not putting speakers out in my yard and looping the same Christmas playlist for six weeks straight. It is a silent display that transmits music over an FM station with a minimal radius.
Under FCC (Federal Communication Commission) Rules Part 15:
Unlicensed operation on the AM and FM radio broadcast bands is permitted for some extremely low powered devices covered under Part 15 of the FCC's rules. On FM frequencies, these devices are limited to an effective service range of approximately 200 feet (61 meters). Low Power Radio - General Information | Federal Communications Commission (fcc.gov)
Being close to a metro area with not one but two major cities, Minneapolis and St. Paul, a.k.a. the Twin Cities, it is hard to come across unused frequencies, but I manage.
The Raspberry Pi’s audio output is connected to the FM Transmitter’s audio input. (Obviously, but I just had to state it to complete my documentation.)
The transmitter is plugged into a smart plug that turns it on before the nightly show and then off again at a reasonable time. I can also turn the smart plug on or off when I am testing during the day.
Creating the Sequences
With the infrastructure in place, it was time to create the sequences! This required songs in MP3 format, LED layout diagrams, planning, creativity, timelines, effects, and more—all combined using an excellent program called xLights, available for Mac, Windows, and Linux.
The program is free, actively maintained, and, speaking as a developer and software engineer, fully functional and polished.
Once installed, you start by drawing out your “model” by taking a picture of your house or setup and then drawing the lines for each light segment. Then, hopefully, you noted how many individual LEDs are in each segment and can enter the counts into xLights. If you went through the planning and calculations for your power supplies and setting up the controllers, you should already have this information.
You can name each segment, and then the magic starts to happen as it will connect to your controllers and pull information from them to complete your model's controller and light set-up.
To create a sequence, pick an MP3 and import it into the timeline with a “track” for each of your segments, much like a video or audio editor. Making the lights function is as easy as dragging effects into the timeline.
It takes a while to sequence a song, but many tools exist within xLights, including beat timing, audio speed (Ghostbusters is a whole new song at 1/4th speed), and the ability to isolate high or low tones to perfectly match the beat and synchronize. Some songs took me three days to sequence, others I finished in one night. I completed five songs over three weeks for Halloween and another five songs over two weeks for Christmas.
More magic happens when you are ready to export to your Raspberry Pi. There is a transfer tool built in! You choose the Pi player, connect, and upload. Everything is fully integrated!
This was just an overview to bring you behind the scenes and introduce you to how the light shows work. Check out the resources below to learn where to start and how to set things up.
If you’ve wanted to get into setting up light displays, begin with your lights and controllers, as I detailed in my first series of posts about the doghouse. Though it is just a doghouse, the principles, and resources can be applied to any sized house. Once the lights are up and the controller is working, the next natural step is to add music and synchronized lights—of course!
You can check out additional sequences on the Doghouse Lights official website.
Videos and How-To
- How To Connect WLED, FPP, and xLights (Bytes Of Pi on YouTube)
- Learn Christmas Lighting: How to Begin with xLights
- How to Use an FM Transmitter for a Computerized Christmas Light Show (Christmas on Crestline on YouTube)
- FM Transmitter: Retekess TR508 FM Transmitter
- Wi-Fi Router: Any will do if it is reliable and can send a signal. You don’t need Gigabit or 5Ghz as the ESP32 controller only connects to 2.5Ghz.
- Raspberry Pi: I’m using version 3 for the display, but 4 or later will work too. This is a great use if you have a version 3 or 4 lying around!
Here are some fun, whole-house displays that inspired me, from the simple to the extreme.