Christmas light displays winking and flashing in sync to music are a surefire way to rack up views on YouTube and annoy your neighbours. Inspired by one such video, [Akshay James] set up his own display and catalogued the process in this handy tutorial to get you started on your own for the next holiday season.
[James], using the digital audio workstation Studio One, took the MIDI data for the song ‘Carol of the Bells’ and used that as the light controller data for the project’s Arduino brain. Studio One sends out the song’s MIDI data, handled via the Hairless MIDI to serial bridge, to the Arduino which in turn sets the corresponding bit to on or off. That gets passed along to three 74HC595 shift registers — and their three respective relay boards — which finally trigger the relay for the string of lights.
From there, it’s a matter of wiring up the Arduino shift register boards, relays, and connecting the lights. Oh, and be sure to mount a speaker outdoors so passers-by can enjoy the music:
Be sure to set up a secondary power source for the relays, as drawing the power from the Arduino is likely to cause big problems. If your preferred digital audio workstation doesn’t have a virtual MIDI instrument, [James] used loopMIDI for the desired effect. He has also provided the code he used to save you some trouble if you’re building this during an invariably hectic holiday season.
Of course, you could always plug your lights into an IoT power bar and have fun that way.
‘Carol of the Bells’ probably the best Xmas tune to use for a light show – although this version leaves a great deal to be desired.
…aaaaaaaaaaaand ginormous freaking GIF.
No chocolates for you guys after all >:(
You said you didn’t want them in the body! This one’s in the banner. Sheesh!
(Want my chocolates!)
I don’t want them at all.
gif is so pretty
In Firefox menu Tools> Add-ons and search for “Toggle animated gifs”
byebye brainless gifs
> Oh, and be sure to mount a speaker outdoors so passers-by can enjoy the music:
Or use a FCC Part 15 low-power AM or FM transmitter so you don’t annoy your neighbors too much.
Surely there is a better and faster way of buying cheap 10 pin 0.1 pitch ribbon cables with than soldering them individually with perfboard, right? I mean, you can easily buy individual ones in any gender or color you want and just gang them together but does anybody make ribbon cable types that are ganged and can be peeled apart in various genders instead of having to wire up each one individually?
There are ribbon cable connectors like these http://www.digikey.com/en/product-highlight/t/te-connectivity/amp-latch-ribbon-cable-connectors
Shove the ribbon in, crimp down, test continuity, plug and play.
Amusing. I submitted a very similar project a couple of years ago that was completely ignored.
Oh, and there is no need for a MIDI-to-serial bridge. It’s a simple circuit that is all over the internet to connect the MIDI to an Arduino. MIDI data IS serial data. Also, while relays are OK, it is also quite easy for the Arduino to drive RGB LEDs that allow for more exciting effects.
A few of them sure, but you are going to fairly quickly overload a regular Arduino with a surprisingly small amount of LEDs.
Hairless MIDISerial Bridge is the easiest way to connect serial devices (like Arduinos) to send and receive MIDI signals. 100% Free Software. For Mac OS X, Windows & Linux.
http://projectgus.github.io/hairless-midiserial/
Once again, I repeat: MIDI is serial. No need for some random software that basically just buffers to a different baud rate. And our system runs 15 m of RGB led strands per MIDI channel. That’s what FETs are for, you know.
I also built a system that does relays, for those strings of lights where that is required, but it is much less interesting than the others. I am now working on getting neopixel-type LED strings (individually addressable) to work, but there are problems because the driver for the neopixels disables the interrupts while updating the strand so MIDI commands get lost. Same would happen with serial, of course. I am hoping that a Teensy with good hardware-buffered serial can fix the problem.
How do you enforce 31250bps on both ends without workarounds?
MIDI is serial. You “enforce” the bitrate by setting the UART to that bitrate. Nothing complicated in the least.
Here’s the video of my system: https://www.youtube.com/watch?v=6KjWQ5Ze40U&list=PLo-LHpkrHZqeD_rjZzgNZORupRFLxbOlz&index=15
Is carol of bells royalty free? what about other christmas light shows to pop music? does public performance licence have a category for christmas lights? does anyone care?
“Shchedryk” (from Ukrainian: Щедрий вечiр, “Bountiful Evening”) is a Ukrainian shchedrivka, or New Year’s carol, known in English as “The Little Swallow”. It was arranged by composer and teacher Mykola Leontovych in 1916.
“Shchedryk” was later adapted as an English Christmas carol, “Carol of the Bells”, by Peter J. Wilhousky following a performance of the original song by Alexander Koshetz’s Ukrainian National Chorus at Carnegie Hall on October 5, 1921.
The original musical composition is not copyrighted.
Works published from 1909 through 1921.
The initial copyrighted term of the work was 28 years from the date of publication. If the copyright was renewed during the 28th year, the copyright was extended for an additional 28-year period.
Putting lights to music is not quite the same as performing the piece. Are your lights responding to your ABC’s or Twinkle, Twinkle Little Star? Under Pressure or Ice Ice Baby? Is there audio? Is this a personal show with a 500′ FM transmitter?
Very nice build. I would suggest consider using SSR rather than electromechanical relays. The SSRs will have a much longer life over the relays even when switching low current LED strings. I built an xmas light controller that used a 8 channel SSR board that was just a few $$ more than a board with EM relays. Less noise also. I am a retired reliability and FA engineer from the semiconductor industry that has worked on both active and passive components.
Here is my very not-MIDI music-controlled light display. It uses incandescent mini-lights, because they’re still a bezillion times more pleasant to look at than harsh LEDs (the same PWM-based controller will work with LED strings, but the effect totally sucks in comparison).
http://www.youtube.com/watch?v=hPsbHmZ0KL4
Why does my attempt at embedding YouTube videos never, ever work here… Yes, I have embedding enabled for this one, and I’ve had it embedded before.
i tried this project and i am having difficulty with the studio 1 part, can anyone help?