Introduction: Universal Sound Reactive Lights for Drums / Guitar
I've been looking for a way to improve my band's presence on stage for a long time until I figured out the best way is yet again, the DIY way.
I aimed to create a compact, versatile and reliable system that would allow to turn any instrument into a sound reactive light device. That was not easy, and the current version sure is not perfect. But the final result is already so satisfying I felt the obligation to spread the love!
Codename: CaptainCaptain PowerLights.
I could not have achieved this project without the help of other guitar/arduino oriented Instructables :
And now for the serious stuff.
Step 1: Materials
- 1 Arduino Uno or Mega (it should also be fine tu use a smaller one like Genuino) + power source
- Proto boards or DIY PCBs
- 1 op-amp chip (TL082 for example) + socket
- 1 9v battery
- 1 strong stomp interruptor
- 2 basic LED lights + matching resistors
- 3 100 kohms resistors
- at least 1 300 to 500 ohms resistor
- 2 10 kohms variable resistors
- 1 1 uF capacitor
- 1 47 nF capacitor
- at least 1 1000 uF capacitor
- A bunch Neopixels or similar LED system + 5v power source
- A couple of female 6,35mm jack sockets, preferably stereo
- A couple of male and female XLR sockets
- Wires, solder... basic tools owned by every electronics enthusiast
- An audio source (microphone, instrument, piezo trigger...) and soms jack and XLR cables
Then you will need to pack everything in nice looking cases. I did everything with laser cut plywood but this is the part where you are expected to be creative. It all depends on what you are planning to do with your own PowerLights set!
Step 2: How It Works (roughly)
From the beginning I had decided to use Neopixel LED lights from Adafruit, driven by an Arduino board. So the coding part would not be much trouble, and still provide a lot of flexibility.
For the electronics part, I simply copied circuits from Arduino-based effect pedals. I can't guarantee this was the simplest or the smartest way to achieve this project but it works well enough. Still, there is a lot of room for improvements.
The first diagram explains shows the whole system, from the audio source to blinking lights.
The "brain" looks like a standard guitar pedal. It is able to read audio signals from piezo sensors, non-amplified or amplified electrical instruments, mp3 players... The pedal converts the input signal into something readable by Arduino, which drives Neopixel strips. Several LED units can be chained with XLR cables that convey power and data.
A short explaination of the electronics part:
- Audio input and output. However, I don't recommend chaining the pedal with effects, as the sound could be slightly altered by the presence of an amplier in the circuit. Also, something not pictured in the schematic: I used the input jack plug as switch for powering the amplification, so that no energy could be drained from the battery when the pedal is not in use.
- Normalization stage, here a simple op-amp. I had to power it with to sources, that is why there is a 9v battery in the mix. But there is surely a way to get rid of it. A potentiometer controls the amplification gain, and an LED indicates if the op-amp is powered.
- Transposition then. Our audio signal's offset is zero. But Arduino can only read values between zero and 5v. This part transposes the signal's offset to 2,5v.
- The LED is a software activity indicator. The second potentiometer is plugged on an arduino input. It allows to change a parameter of your choice in the code. Last but not least, the usual stomp switch you can find on any effect pedal. It is plugged on an Arduino input that constantly reads its state. It is used to mute the software, and therefore the light effects.
- XLR and power plug dedicated to the Neopixel set of lights. I designed it in a way that any light module is able to supply power for the whole modules chain.
Step 3: PCB and Soldering
The PCB is designed to fit with an Arduino UNO and my set of Jack and XLR plugs. You will probably need to modify the PDF file according to your needs. In my project, there are three types of PCBs:
- The main one inside the pedal. It works as a shield for the Arduino and welcomes all input and output plugs plus the op-amp circuit and connection for the switches
- The secondary PCB inside the pedal is connected to the main one thanks to a small pin strip. It holds the potentiometer and the two control LEDs
- One PCB per light module with power XLR in and XLR out plugs.
There are many Instructables like this one that teaches how to make PCBs at home. You need some uncomon materials, but it is quite easy to do in the end.
Step 4: Code
I am not great coder. Basically, I didn't know anything about Arduino. Luckily, I found really well documented pieces of code on the Adafruit forum, and I managed to adapt it to suit my hardware.
This code listens to the audio source and instructs the Neopixels to light up as long as the sound is above a certain level. The routine is paused when the stomp buton is down (it still listens but the Neopixels are instructed to stay at a low level no matter the sound level). One potentiometer sets the maximum brightness but something in my wiring doesn't make it fully usable. Anyway while on stage, it is always set to maximum brightness :-D
Step 5: Enclosure
does everything work fine? Yes? Then let's pack it up in robust and nice looking enclosures. I did all mine from plywood with a laser cutting machines but metal could be a better choice for the pedal if you can do it that way. I also needed somenthing I could easily travel with, and set on any stage on any drums. That is why I went with light and foldable solutions that allow me to pack everything in a regular case for one pedalboard.
Step 6: Rock On!
I intended to use the CaptainCaptain PowerLights mainly with a drum set. That is why the code is designed to send flashes of light. But you can easily choose other colors or effects, for example a Vu-metre for a guitar or a bass (code available here).
In a further version I would like to implement several effects and a controller to switch from one another. This will require to modify a huge part of th code. I should be doable to merge the power supplies and event better: share it with supplies from other effect pedals. An other one: going wireless.
I would be glad to see, and learn from your own improvements of the system.