Averaging or simply summing seems like the best solution. You may have to adjust the sensitivity of the various bands anyway, since there tends to be more energy in the lower frequency range than in the high range.
You might actually get a better visual effect if you use only 3-bands, leaving gaps in-between. I assume you are making an effect
rather than to accurately represent the music.
I've make some lighting effects (nothing with the MSGEQ7 or frequency-related) and one trick
I use is make it "auto-calibrate".
I do that by taking a "reading" once per second and saving it in a 20-element array configured as a circular buffer. (Take a look at the "Smoothing Example".) From that array I can get a maximum or an average to automatically adjust my reference/threshold to the loudness. The maximum isn't the true maximum, since I'm only saving a reading once per second but it's close-enough. For example, one of my effects is a "Giant VU Meter" and the maximum value in the array represents the top (maximum) meter reading... I get good "meter action" with quiet or loud songs, or if I adjust the volume.
In your case, you could make 3 separate auto-calibration levels for lots of "color action". If you set the threshold for each channel at it's own average, you'll get lots of "action" with each light on half the time and off half the time.A couple of other software suggestions-
If you get bored* with the basic color organ effect, you can make it randomly switch the colors around (so sometimes red represents bass and other times represents treble, etc.) and/or you can randomly invert it (so that loudness turns the lamps off instead of on). i.e. If you independently randomize inversion of the 3-channels, you'll have 8 variations.
* I got bored with my color ogran in the 1970s.
I converted it to a random-color effect that pops-up a different pattern with each beat. Later, I added a 4th color. That was done without a microcontroller... With the Arduino, I can add do all kinds of random or sequencing/chasing effects, etc.
You sir, have set off an explosion of ideas in my brain.
Since I may never meet a color organ guru such as yourself again, I figure I should pick your brain.
So I have a couple questions:
1.) The calibration you're referring to.
I have been trying to think of a way to solve this problem for a couple days now, considering doing one of those auto gain circuits or whatever they are called, but your idea sounds a lot better. Just wondering if I am understanding it correctly. For example, the output of the ic I am using is a number between 0 and 1024 for each of the 7 bands. You suggest taking a periodic measurement of these values and if for a while the values for one band didn't reach above 300, 300 would become the new maximum?
2.) Could you describe the chasing idea? Specifically, how I could approach this problem, and the type of code (basic idea) to achieve such an effect.
If it helps, I'm using the ic aforementioned, an arduino Leonardo, leds, transistors, and such.
The arduino simply just writes a pwm to the base of the transistor to control the leds.
As far as the leds go, I've ordered 6 red diodes, 6 blue, and 6 green.
Planning on setting them up in groups of three, so 6 groups total, having 2 for bass, 2 for mid, and 2 for treble. Any input or suggestions?