Feasibility of music synced RGB LED strips for festival stage

Hi all,

I have been trying to figure out the best way to control 8 RGB LED strips so they flash in time to a beat and change colours randomly or to a pre-set pattern.

I am essentially trying to emulate the lighting on this project: http://www.instructables.com/id/LED-UV-Ship-Bar/?ALLSTEPS

Would an arduino be able to control this if I had the right code and a sound sensor?

Has anyone got any experience with similar projects?

Thanks

Google 'msgeq7 arduino' for a possible idea to suit your needs.

You can make lots of different effects limited only by your imagination and the number of outputs/channels you want to wire-up. 8 strips x 3 colors could be 24 channels.

The simplest thing you can do is flash the lights on when the sound is louder than a preset threshold. My simplest effect is a variation on that where I set-up a random pattern with some lights/channels on and the others off. Then when the loudness is above the threshold the state changes to the opposite with the on-lights flashing off and the off-lights flashing on.

Then, there's one more enhancement - I "sample" the loudness once per second and save that value in a 20-element circular buffer (see the Smoothing Example). From that array (buffer) I take an average and I use that 20-second moving average as my threshold. That way, it automatically adjusts to volume changes and quiet or loud songs. By using the average, the signal is above average (approximately) half the time and below average half the time for lots of "light action".

I use that same moving-average array for all of my effects, sometimes using the average as a threshold/reference and sometimes using the 20-second peak as a reference (i.e for a "VU Meter" effect).

I've got to get back to work, but I'll write some more later today...

...I'm home from work.

Would an arduino be able to control this if I had the right code and a sound sensor?

INPUT -
A "sound sensor" would be a microphone. :wink: But if possible, it's better to use a line-level signal from the sound system. A microphone needs a preamp to boost it's few-millivolt output to around 1V (approx. line level). If you want to use a microphone, you can buy a microphone module [u]like this[/u] that has the power supply circuit for an electret mic element, a preamp, and a biased output for the Arduino.

The Arduino can be damaged by negative voltages which means it can't directly handle the negative half of the AC audio waveform (the negative half of the audio signal could be "damaged"/distorted too). The simplest solution is to [u]bias the input[/u] at half the supply voltage (two equal-value resistors and a capacitor).

I use a [u]peak detector circuit[/u] which ignores the negative half of the signal and puts-out a changing DC voltage that follows the peaks. One advantage of this is that my software can read the volume/loudness at about 10 times per second instead of reading the actual audio waveform thousands of times per second. Another advantage is that my software can automatically switch to the optional 1.1V ADC reference if the signal is low. (You can't do that with the input biased at 2.5V.)

If you want to respond to frequency content (one color or one LED strip to the bass, one for the highest frequencies and others for the center frequency bands etc.), the [u]MSGEQ70[/u] that gives you 7 frequency bands time-multiplexed into one Arduino ADC input. It works similarly to a peak detector and it takes care of the negative voltage issue. The software is a little tricky, but not nearly as tricky as programming digital filters (or using FFT).

OUTPUT -
The Arduino outputs can only "power" about one standard little LED each, so you'll generally need a driver circuit.
If your LED strips have a driver built-in and a "control" input, you can directly connect an output pin to that control input.

If your LED strips only have "power" inputs for each color, you'll need a transistor or MOSFET to switch it on & off (or to dim it). Independently dimming 24 channels would be tricky because the Uno only has 6 PWM outputs and the Mega 15.

With serial shift registers you can have on-off control of an almost unlimited number of channels using only 3 Arduino outputs. I've got a serial-controlled lighting effect with 24 individually addressable on the left and 24 on the right.

Another completely different approach for "stage lighting" effects is [u]DMX 512[/u]. With that kind of setup you'd buy DMX controlled lighting and you simply add a DMX shield to your arduino (and program it). DMX is an addressed bus connection so you can control many lights over the same bus connection. (Your LED strips won't work with DMX unless you build a DMX receiver for each strip.)

SOFTWARE -
Again, software is only limited by your imagination...

I've built 3 lighting systems with the Arduino and they all have the same basic "functions". All of these only react to volume (not frequency) and sort-of to "the beat" (derived from volume changes). The modes/functions change randomly about once per minute. All of the effects can be reversed in direction, and/or inverted (where the LEDs get turned-off when they would be otherwise turned-on).

...Just to get your imagination started, here are my effects:

  1. I described the flicker effect above.

  2. Toggle effect that sets up with a random pattern like the flicker effect, but the lights toggle between two states, and that state is held 'till another beat or loud part comes along to switch it back. (i.e. It has two stable states, whereas the flicker effect has one stable state.)

  3. A VU meter effect. It randomly operates in the "dot" mode (with one light on at a time), the "normal" bargraph VU mode, or a "dots" mode with a random number of lights on.

  4. Bounce effect (Knight Rider or Larson scanner). The number of lights on is random. The "distance" is random, and the speed is controlled by the volume.

  5. Chase effect. A basic chase/sequencing effect. The patterns are random. Speed is controlled by volume. Direction changes by volume/beat or randomly. There's a Johnson Counter mode where the data is inverted as it "loops around".

6 Volume Shooter effect. A sequencing effect where the light sequence "moves" from bottom to top (or left to right, depending on the physical arrangement) and the loudness determines when the effect is triggered and how many lights are triggered-on at any time.

  1. Beat Shooter effect. This "shooting" sequence is triggered by loudness/beat, and the number of lights-on is randomly set when the effect starts.

Like I said. all 3 of my effect systems have the same 7 basic effects above but the number of channels varies between 4 and 48 (2x24), and the output connection varies between regular LEDs and AC power.

One of my lighting "systems" was conceived as a giant (8-foot tall) stereo VU meter with 24 regular "high brightness" LEDs in a row, spaced a few inches apart on the left & right. But, since I have a microcontroller I added the other effects to keep things interesting. The LEDs are powered/controlled by a serially controlled MAXIM LED drivers.

Another "bigger" effect is a 4-channel setup with solid state relays to run AC powered floodlights. The normal configuration is 4-pair of 100W floods (4 colors). I can also plug-in 16 30W white floods (mostly for chase/sequencing effects.)

The last system is 7-channels running 28 12V lamps that came in the ceiling of my van. (The van came with the lights, and I added the sound activated Arduino controller.) This setup also uses solid state relays, although I could have (should have?) used MOSFETs.

Hi all-

I know it's been a quick minute since this post. @jackP did you ever get this built?

@jackP is a one post wonder from 5 years ago. Don't hold your breath waiting for a reply.

It is hopeless to wait for an answer, but I am still interested to know how it ended. I hope you figured out how to make that all work good. I love to visit different festival and concert and I adore when there are awesome sound and light effects to watch. It is so cool effect when led strips flash in time to a beat and change colours randomly or to a preset pattern. I think this adds a special effect to the event, everything starts to look magical. Last summer I arranged a birthday party for my husband. I wanted that everything was great, so I hired an event equipment from this company ontourevents. They created the unique lighting and sound design for my party.

An MSGEQ7 chip is used to drive 7 band sound level displays. It has filters and analog out for 7 bands.

Using FastLed library just to fill the led color array and call the show function, you can get creative.

For example suppose you have 60 leds and want each to have a color from red/amber/yellow/green/cyan/blue/violet.
So you fast 8-bit analog read all 7 bands and add the values.

For each band fill led array this many elements ( band_value * 60 / total_value ) with the band color and do not fill past the end of the array. Show the array on the leds and do this every 5 or 10ms.

Or add bands 1 & 2 then divide by 2 to get red level 0-255. For green level, add bands 3&4 and divide by 2. For blue level, add bands 5,6,7 and divide by 3. The color "now" is that composite. Move the existing led array elements up 1 and make the 1st pixel "color of the moment" about every 25ms (40 FPS) and 60 leds will show the last second and a half as 60 pixels.

You can buy 1 for $7 to $10, buy a few to get them cheaper and have mistake insurance.
Also not that if you want stereo it will take 2 chips.

See about a 3-way splitter for speakers if 7 bands is too many or even build your own filters from components.