William Waters III - N7IPY

Home | Projects | AmateurRadio | Contact Info | Portable Rotation | Live Steam

Lighting Display Design and Construction

NOTE - I have Retired this Project

No More Christmas Light Show

Design Goal: Design and build an expandable digitally controlled lighting system that can control a large number of lights synchronized to a sound track.

Play Video of Song2

(Note this is a 13MB file and takes a few seconds to download on a high speed connection, and not worth trying over dial-up)

When the 2010 Christmas Season ended I decided to retire the Light Display after 4 seasons.  The displays were getting old and I was just tired of working on the project every year.  It was a fun and challenging project from the beginning to the end.  Most of the stuff went to the recycle center but I did keep the controllers and electronics, just in case…


Some History:

Back at the end of November of 2005 I watched an internet video of a house that had a large number of flashing lights synchronized to music, and challenged me to figure out how he did it.  At the same time my wife who loves Christmas lights saw the video and told me to do it.  So I went forward and came up with the current design, not really knowing how the other guy made his display work. 

Just recently I found a Google search string that got me to information regarding the above mentioned lighting display.  The creator of the display, Carson Williams of Mason Ohio built up the display on his home using a commercial lighting system made by a company called “Light-O-Rama” and set the standard for how I developed my system and the quality of the display needed.  There are a number of adventurous people out around the US that have built up advanced lighting displays.


This is my story:


My interface is 100% home grown.  It uses a digital music technology called MIDI (Musical Instrument Digital Interface) to control the sequencing of the lights and the playing of audio files.   I chose this method because this is a very stable and defined interface with a lot of existing MIDI hardware and software around at affordable prices.

The design idea is simple; use the MIDI Note On and Note Off commands to control a number of solid state relays.  The MIDI interface can communicate with up to 16 channels (or devices), and each channel can control up to 127 notes.  I wanted a design that was modular and supported the incremental addition of light control, the basic specifications follow: 


Basic Specification:

  • 20 Light Channels/PCB
  • PCB Addressable to MIDI Channel 00, 01, 02, or 03
  • Code Addressable to any of 16 Channels
  • PCB Note addressable in 2 ranges allowing up to 40 light channels per MIDI channel used.
  • Maximum number of Light Channels addressable using hardware is 160 (8 PCB x 20 Light Channels)
  • Maximum number of Light Channels addressable using Code and Hardware is 1920 (96 Controllers - hahahah)
  • Each PCB can switch a total of 64 AMPS @ 120VAC.  Split between 4 individual AC circuits rated at 16AMPs MAX and 5 AMP MAX per Light Channel.  7000 Watts Max
  • The PCB allows for a mix of 5 AMP and/or 2 AMP Solid State Relays.


After doing the initial design requirements and researching component availability and specifications, I set out to develop the Light Controller.  As I have a lot of experience working with the Zilog Z8 products and a large library of functions that I have developed over the years, I chose to work with what I knew for a fast design project (ya right).


The final design uses 3 Zilog microcontollers, each with custom firmware to control the particular controllers function.  Using the Zilog Z8 products had some limitations, the biggest being CPU clock speed which limited the number of instructions that can be processed between MIDI data sequences.  That and the number of I/O bits needed caused me to separate the functions into 3 areas:

  • MIDI Interface
  • Display Control
  • Light Control

- The MIDI Interface takes incoming MIDI data, Decodes the channel number, converts the data from Serial to Parallel, and if the channel matches the current hardware address, passes the note on/off data to the other 2 processors. 

- The Display Controller is an optional part and not needed but adds lots of user information during the operation of the Light Controller.  I initially built this into the design to help debug and trouble shoot the hardware as I got tired of looking at Logic analyzer traces and counting timing data on the color scope.  It also adds real ‘bling bling’ to the finished product.

- The Light Controller takes the same data as the Display Controller and controls the 20 solid state relays. 


Once the hardware was designed I set out to writing the code to control the first of the 3 controllers, the MIDI Interface.  During that time I built up the prototype hardware.  As getting a PCB made from an untested and changing design is outside my budget I hand soldered the prototype.  It was built in 2 parts, the logic hardware and the power switching hardware.  As with all software UARTS, timing is critical, so I spent a number of evenings developing code that worked properly with the fast 32Kbs data stream.  The current code revision is rock solid, never misses a sequence.


I next focused on the Display Controller code.  It was rather simple to develop as I have used this technology in past projects so libraries all ready exist for the basic display functions.  Other than displaying an initial sequence of start up messages, the displays purpose is to show the note (light) number and an on or off indication.  This was very useful in the final debug of the MIDI Interface code and the Light Controller code.  The hardware for this part of the design can be left out but is worth the investment in parts just to see the data ‘flying’ by on the display when valid MIDI data is received, again ‘Bling-Bling’.


The Light Controller code was developed after a few days of thinking about how best to do the task of tracking which light is on, which is off and how to act when new light on/off values are received. 


From concept to working prototype, I spent about 1 month of evenings in my home lab before I was ready to try putting the prototype into use.  I then hung short light strings all over the lab and went about setting the lights to the music.



Prototype Logic circuit board is hand wired


Prototype AC interface board is also hand wired


MIDI Light controller Finished Prototype


Debugging the Display Controller firmware


Corner of Home Lab used for this project


4 Cuts and Jumps in the final production PCB.

I found the task of choreographing the lights to complex music a difficult one.  After viewing a number of other home lighting displays I came to realize that of prime importance is the timing of the lights to the music.   Getting the lights timed was hard and time consuming; listen to the section of music, edit midi notes, play it and see what happens.  It took many hours of tinkering to get a minute or 2 of light/sound, way too much work for the results.  Then it occurred to me that the midi interface and PC software I was using allowed over-dubbing or the recording of audio or midi tracks while playing the existing tracks.  The solution: build a small hand held MIDI keyboard to record the light on off sequences real time while the audio track is playing.  In a few evening time, I had built a microcontroller based 2 note keyboard.   This allowed playing along with the song audio, 1 or 2 light channels at a time.  No more guessing on the timing of the lights, problem solved.


The final design for the 2006 Christmas Season will consists of:

  • WindowsXP based computer
  • Cubasis Audio/MIDI software
  • 2 Channel Audio/MIDI Interface
  • 3 20 Channel Light Controllers for a Total of 60 Channels
  • mini-MIDI-Keyboard
  • Low Power PLL FM transmitter for remote audio

Each Light Controller is mounted in a metal enclosure with the following specifications: 

  • 20 Light Channel Control
  • MIDI Channel Addressable
  • MIDI Note (light) base selection
  • MIDI Through port
  • 2 20 AMP AC inputs with Circuit Breaker protection
  • Fuse protection on each Light Channel
  • 5 and/or 2 AMP solid state relay per channel
  • Vacuum Florescent 2 line x 24 character display
  • Manual light control on 4 channels (useful when you want some lights on but don’t want to run the whole display
  • Dual Fan forced air cooling (needed with high current loads)
  • Logic Level Output 5 Volt TTL) for each light channel

 The pictures below show some of the detail about the finished models.  I found that I had 4 traces wrong in the final PCB after having them made.  It turned out that this was the results of a mistake I made about 4 months earlier.  The schematic capture software that I use did not have the Zilog CPUs in it's library, so I had to creat the part.  In doing this, I misslabeled 4 pins on the 44 pin PLCC part.  It was an easy fix ond only took a few hours to figure out what I did wrong.  

Metal parts for the first unit ready for paint.
Mounting parts to the front and back of the enclosure.
Custom PCB and power supply mounted to enclosure base.
Finished controller - back view.
Finished Enclosure - Front view. (Click Picture for Full Size)
Two Controllers attached to model house for testing.

Next, I start the lighting design.  Being a visual person, I will build a scale model of the front of the property (I have lots of Balsa wood left over from my RC airplane days) and used LEDs to represent lights/strings of lights.  When I designed the electronics I had this in mind so I built into the circuit the hardware to also drive LEDs on a remote location for troubleshooting and light to music choreography.  I have found, that for me it is a difficult and time consuming task to choreograph the lights, picking the right light for the 'feel' of the music.  These pictures show detail of the model house and gives an idea for the light layout that will be used this year.



House Model getting the LEDs installed.
All but 9 Channels of LEDs mounted, total of 60 Channels
Model attached to 3 light controllers, ready for use.
Using modified protptype as the 3rd Light Controller

The lights went on line November 25, 2006 at 7:30PM.  Other than a few small technical issues, the system has been running for the past 5 days from sun down till about 10:00 in the evening.


December is over for the year and the lights have come down and most of the project has been boxed up for the year.  I have noted changes to be made for next year and still thinking about where to add more lights. 


All-in-all is was a smashing success with cars lined up outside from sun down till after 10PM on most nights during the month of December.

4 of the 10 mini 3 foot tall Christmas Trees, each with 150 white mini lights.
View of the 16ft tree.  Tree used 19 channels, 16 for the body, 2 for the lights on the 'trunk' and 1 for the ball at the top.
Outside located controller that runs the 16 foot tree.  You can also see the majority of the cables that route through the wall.
Installation of the inside located controlleres and the small WindowsXP PC that ran the show.

Click here to play video of Song2

Click Here to Return to the Main Project Page: Project Page

(C) 2007 - 2018  William Waters   Last Updated February 2018