A Very MIDI Christmas Lightshow

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.

22 thoughts on “A Very MIDI Christmas Lightshow

  1. > 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.

  2. 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?

    1. 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.

        1. 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.

    1. “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?

  3. 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.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.