Summary of Create a Christmas Light Show with Arduino
Summary: An Arduino-based Christmas light show synchronizes lights to music by converting MIDI signals from a DAW into relay commands. MIDI notes (C3–E6, excluding sharps) are sent via a MIDI-to-serial bridge to the Arduino, which sets bits in three bytes controlling three 74HC595 shift registers that drive three 8-channel relay boards, allowing precise, software-timed light effects.
Parts used in the Christmas Light Show with Arduino:
- An Arduino Uno
- 74HC595 IC (3 nos)
- 8 channel relay board (3 nos)
- 1μF capacitor
The Christmas light show with Arduino is a project that controls a number of lights according to a song in sync with the music. It can be used to control stage lights and fog machines (that don’t have DMX) with a computer to achieve wonderful synchronization for performances on stage, which is not always possible with manual lighting control consoles.

During last year’s holidays, I was watching videos of Christmas songs on Youtube and the video above of Christmas lights flashing according to the music caught my eye. So I wanted to make my own Christmas light show with Arduino. I was wondering how I would sync the lights according to a song and how I would send data in sync with a song. I got the idea to use MIDI signals when I was working with a song using sound editing software. I hacked the MIDI signals from the software (which was in sync with a song) and turned them into light control data.
Required Materials
- An Arduino Uno
- 74HC595 IC (3 nos) (1 for each 8 channels)
- 8 channel relay board (3 nos) (1 for each 8 channels)
- 1μF capacitor
How does it work?
Controlling Lights in Sync with a Song
Above is a screenshot of Studio One software (Digital Audio Workstation software) that I used for this project. The MIDI track in the DAW software is in sync with a song. I turned the notes from C3 to E6 (excluding sharp notes) on and off in the MIDI track to control the lights. I used ‘Hairless MIDI to serial bridge’ to send the MIDI signals to the Arduino and programmed it to turn specific relays on and off according to the notes received. Now the DAW software actually controls the lights according to the song’s rhythm.
I did not use sharp notes (the black keys) because, if you have a real MIDI keyboard, you can program the lights with it. You can play a Glissando and control all the lights!
Block Diagram: Christmas Light Show with Arduino

The lights are connected to the relays on the relay boards. The three 74HC595’s are used to control the relays. Three bytes are used to store the light states in the program (on/off). The music software sends out the MIDI data which is received by the Arduino and sets the corresponding bit of one of the three bytes to 0 or 1. The three bytes are shifted out of the registers and then are latched on so the relays turn on/off. After all the bytes are sent and the process is finished, they are latched, which prevents the relays from turning on/off while shifting the data. Now get ready to build your own Christmas light show with Arduino!
Read More: Create a Christmas Light Show with Arduino
- What microcontroller is used in the project?
An Arduino Uno is used in the project. - How are the relays controlled?
Three 74HC595 shift registers store and shift three bytes of light state data to control the relays. - How is the lighting synchronized with the song?
MIDI notes from a DAW are sent via a MIDI to serial bridge to the Arduino, which turns relays on and off in sync with the song. - Which MIDI notes are used to control the lights?
Notes from C3 to E6 are used, excluding sharp notes. - Why are sharp notes excluded?
Sharp notes are excluded so a real MIDI keyboard can be used to program lights and to allow glissando control across lights. - What prevents relays from changing state while data is shifting?
After shifting all bytes out of the registers, the outputs are latched so relays do not change state during shifting. - How many relay channels does the project support?
The project uses three 8-channel relay boards, providing 24 relay channels. - What software was used to create the MIDI track?
Studio One digital audio workstation was used to create the MIDI track in the project.
