@MSGEQ7: At about $10.00 in total (assuming stero, you'd need two ICs and they're about $5 each over at SparkFun), it's a fairly affordable solution.
I just ordered them -- they should be here in a few days -- apart from anything else, it will be interesting to compare the results using these as compared to something more complex (and expensive) -- a lot of the sophistication will be in my display routines -- watch this space :-)
@Keyoke: Have you looked at the MSGEQ7 IC? Not sure if you're familiar, but this is a 7-band graphic EQ IC and it's rediculously easy to use...
Oooh -- I do like easy to use ... as you say, I could divide the display into left and right -- and have one column for each display the averaged volume or something -- or I could display these 7 channels on vertical columns leaving blank columns in betweeen, and then interpolate between the two real columns.
The great thing about the way I'm implwementing this -- using my Arduion Mega to drive the display, and something else to do the spectrum analysis -- means I can try a variety of different solutions -- I will certainly add the MSGEQ7 IC into the mix -- thanks for the suggestion.
Have you looked at the MSGEQ7 IC? Not sure if you're familiar, but this is a 7-band graphic EQ IC and it's rediculously easy to use, only consumes 3 pins on your MCU, and only needs a couple of capacitors for supporting components! If you're looking for "peak detection" only, it might be something to consider.
The drawback to this is, of course, is some loss in flexability (peak output only), and that the MSGEQ7 is limited to 7 frequency bands (63 Hz, 160 Hz, 400 Hz, 1 kHz, 2.5 kHz, 6.25 kHz, and 16 kHz) only. I noticed your diagrams show your display with 16 columns.. so you'd have two extra if you were displaying both channels of a stereo signal. I'm not sure how married to 16 columns you are (Maybe use the other two for an averaged volume?).
At about $10.00 in total (assuming stero, you'd need two ICs and they're about $5 each over at SparkFun), it's a fairly affordable solution.
Anyway, I didn't see it mentioned yet in the comments, figured I'd point it out as a possability.
Looking foward to seeing how the project turns out!
I think I should have commented on your project earlier. :)
We (ZPUino team and John English from Boulder Eng.) developed an interactive image device with a few (lots!) stripes of LED a few years ago, called "SoundPuddle". It was displayed at Apogaea that same year, and has been used since then in some outdoor displays and even indoors.
The design applies a 1024-point FFT to the incoming signal, and maps the "perfect" frequencies (as in musical notes) to the leds, using a hue table to map amplitude of the notes into colors. All of the leds are individually mapped in memory, despite the "shifting/ripple" effect giving impression that we only set one led at a time and just shift the colours along the stripes.
The design was fully implemented in a Spartan3E-500, including CPU (ZPUino) and all HW required to drive 12 stripes simultaneously. All memory mapped, with a ROM (SPI flash) translation array for the mappings. We had not enough RAM, so we used this extra SPI ROM for the large mapping that was required. Sub-optimal, but worked great.
I have also designed a "VU-meter" like display, very similar to what you are attempting to show. I can publish some details of it if you want. The HW is the same as for the SoundPuddle, the software is indeed a bit more complex because it uses fast and slow bars to give you a "retro" effect.
I am also playing with some 32x32 RGB panels, results are very good, I will publish some videos soon.
Perhaps we can share our knowledge here, and rule the world of visual music display :)
Max...I'm not qualified to tell you how to drive your LEDs...but I can tell you that it is usual to have logarithmic amplitude scales on these sorts of display. The LM3915 IC was commonly used for these and it has logarithmic 3dB steps (the sister LM3914 is linear). This will cover a wider range and require less tweaking of the input amplitude to get the display right.
It's also common to use logarithmic steps in your frequency bands, or octaves; eg you can have your filters at 20 / 40 / 80 / 160 / 320 / 640 / 1.25K / 2/5K / 5k / 10k / 20K Hz (you could probably eliminate the first and last for most audio). These steps are a factor of 2 apart. If you want more steps, use square root of 2 as your factor. If you've ever seen frequency response plots of amplifiers they usually use logarithmic scales on both axes.