The seven band graphic equalizer IC is a CMOS chip that divides the audio spectrum into seven bands. 63Hz, 160Hz, 400Hz, 1kHz, 2.5kHz, 6.25kHz and 16kHz. The seven frequencies are peak detected and multiplexed to the output to provide a DC representation of the amplitude of each band. No external components are needed to select the filter responses. Only an off chip resistor and capacitor are needed to select the on chip clock oscillator frequency. The filter center frequencies track this frequency.
Other than coupling and decoupling capacitors, no other external components are needed. The chip supply can be between 2.7 and 5.5 volts with 5 volts providing the best performance. The device has very low quiescent current (less than 1ma typical) for portable audio devices. the multiplexer is controlled by a reset and a strobe, permitting multiplexer readout with only two pins. The multiplexer readout rate also controls the decay time (10% decay per read), so no external pins are needed for this function.
This skill defines how difficult the soldering is on a particular product. It might be a couple simple solder joints, or require special reflow tools.
Skill Level: Rookie - The number of pins increases, and you will have to determine polarity of components and some of the components might be a bit trickier or close together. You might need solder wick or flux.
See all skill levels
If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.
Skill Level: Rookie - You will need a better fundamental understand of what code is, and how it works. You will be using beginner-level software and development tools like Arduino. You will be dealing directly with code, but numerous examples and libraries are available. Sensors or shields will communicate with serial or TTL.
See all skill levels
If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.
Skill Level: Competent - You will be required to reference a datasheet or schematic to know how to use a component. Your knowledge of a datasheet will only require basic features like power requirements, pinouts, or communications type. Also, you may need a power supply that?s greater than 12V or more than 1A worth of current.
See all skill levels
Based on 18 ratings:
1 of 1 found this helpful:
I used this to make a color organ, and I got it up and running without any troubles. The only issue is a little bit of noise, but that may be because of my design more than anything else. Would definitely buy again.
1 of 1 found this helpful:
For a while ive been wanting to make a simple Spectrum visualizer. but to do that meant i would i either have to mess with a lot of bandpass amplifier circuits or have to realy on digital filters using Fourier which i lacked the knowledge to do.
This little chip solved the issue pretty well. instead of lots of analog circuitry or digital wizardry i just use this single chip and i get the information i need with enough precision for some fun experiments involving lights and patterns.
2 of 2 found this helpful:
Nifty little IC, very simple to use.
The problem is that the datasheet is very, very limited. One key aspect is that its output should look into a high impedance load to work correctly. There is a small note mentioning the test load (1 Meg, 22 pF), but it is not emphasized.
After wrestling with erratic behavior, I asked myself, "What if a buffer the output?" I added a TLC272 opamp unity gain follower, and it fixed it completely. Works like a charm now.
4 of 4 found this helpful:
Everyone knows what this thing is for - and it works as advertised. If you want a spectrum analyzer without doing all the fancy math in-code, get this thing.
Beware, however, of noise and input sensitivity. I had this champ hooked up to an Arduino with the BOB-09964 microphone and COM-12999 addressable RGB LEDs.
First, the LEDs turned on and permanently burned my retinas. Once I could see again and adjusted the brightness, the "output" was still all over the place. This is due to the sensitivity of the microphone - the chip was just doing its thing. So taking the raw-input from the MSGEQ7 and subtracting 127 eliminated most of the noise. Except for the 63Hz band.
I fought this for hours. Replaced the chip three times, turned off my TV, radio, fans, everything I could think of, but the 63Hz band kept flickering even in the quietest room I could make it.
While sitting there, cooling off from frustration, I hear the soft click of my refrigerator's compressor turning off - which was in the other room. The 63Hz band light stopped flickering.
Moral of the story - just because you can't hear it that well, doesn't mean your device will have the same problem.
1 of 1 found this helpful:
The fall off rates for each filter are smooth and even, as shown in the datasheet. When analyzing audio sources, there is a lot of distinction between each frequency band, so this makes for a nice 7 band graphic equalizer display. This chip blew my expectations away, making the steep price worth it.
2 of 2 found this helpful:
I wanted to have more interactive lights with my sound stage setups, but most of the "sound reactive" projects just involve a simple beat detector, which gives a tempo based on the loudest sound. I wanted to have each color of an RGB led respond independently to different frequencies (Red for highs, blue for mids, etc.) at the same time, rather then just blink lights to a beat. While I read an Arduino can do frequency analyses, the code was huge and beyond my understanding.This chip almost eliminates the need to do sound analyses in your code, and greatly simplify it.
If your looking for guides, use the "The MSGEQ7 tutorial from skoba" and not the "Blinking LEDs to the Frequency of Music by davidwangdw" instructable, as it has the wrong resistor value on the clock pin.
0 of 1 found this helpful:
The device produced horrible amounts of noise. Nearly unusable for filtering waves.
Sorry you're seeing issues with this. If you contact our (tech support team)[https://www.sparkfun.com/technical_assistance], they should be able to help you resolve them.
Does what it is supposed to do, with precision.
Used this little gem to program my rgb leds to light to respective frequencies on an aux input. Does the job nicely.
I have not fully tested this gem yet but so far it has shown me out standing narrow band response.
No matter what I do, this thing outputs the same value on all channels and doesn't react to any audio signals. All components I used are good so I give up on this project.
I stumbled upon this convenient chip when creating an LED cube. I wanted to turn the cube into a visualizer for music and thought I would have to create individual filters for different frequency bands, BUT I happened to find this beauty and it worked pretty well! It isn't very hard to get it to work. The only downside is that it is fairly expensive with shipping.
I bought the MSGEQ7 chip and this PCB: https://oshwlab.com/trayko67/spectrum-analizer-dms-307-v-1#P6. Programmed Arduino Mini, wired up LED string and it worked correctly the first time it was powered on. That rarely happens for me.
I was happy with speed of shipping. It did not take 1 month like other suppliers.I as like how cheap and small this chip is.
Works well and easy to install. Wish it could work a tad faster (~200ms to get all seven bands) but not too bad.
Expensive, but well worth the money. Easy way to make audio spectrums, saves lot of space from board.
0 of 6 found this helpful:
I used components that were close to what was recommended but not exactly and all I got was each channel outputting the same value
Looking for answers to technical questions?
We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.
Log in or register to post comments.
Does anyone have information on normalizing the input or adding gain from a smartphone aux cord? I'd like to be able to play music without having it to be at a certain volume for a cool equalizer effect. Thanks!
The data sheet wires the left and right channel from the audio into the msgeq7 with 2 22k resistors for each channel into the .01uF(10nF) capacitor then into the Audio In pin but I've seen other people hook it up with the capacitor only either 10nF or 1nF. what is the difference between using the 22k resistors+capacitor vs the capacitor only? and also is there a benefit when it comes to output readings when using 1 msgeq7 for mono or using 2 msgeq7's for stereo reading left and right independently? thank you to anyone who responds :)
Experiment with different capacitors, but for an aux cord from my phone I have found a 10nF to be good. I only see 2 chips being good at individually analyzing each channel.
Wrote a tutorial that may be of interest: http://tronixstuff.wordpress.com/2013/01/31/tutorial-arduino-and-the-msgeq7-spectrum-analyzer/
As always, another great tutorial. Thanks for sharing!
just a warning: don't buy these chips on ebay even though those are cheaper. I bought two and they were both defective. Each channel was broke (tons and tons of noise, completely unusable). Someone else had the same problem, so my guess is that an ebay vendor (or a few of them) is selling defective chips. at any rate, stay away from them. I wasted days trying to troubleshoot them.
I'm trying to hoop up the msgeq7 to electret microphone (I've tried both sparkfun's adafruit's microphones).
I'm hooking it up as follows:
Pin 1 - 5v (.10uf between pin 1&2) Pin 2 - Gnd Pin 3 - A0 (Arduino) Pin 4 - D4 (Arduino) Pin 5 - .1uf cap to OUT/AUD of the electret microphone Pin 6 - .10uf cap to GND Pin 7 - D5 (Adruino) Pin 8 - through two 100kohm resisters to power, 33pf cap to 5v
I'm getting numbers from 40-200 on channel 0 and 6 and number around 830-930 on channels 1-5.
that seems pretty constant regardless of my music volume
Where can I find this in a smd package?
Anyone use this at 3.3V? I've got it connected to BOB-09964 but it seems completely unusable at that voltage. I'm testing on an Arduino but want to eventually switch to an ESP8266.
Can the multiplexer be controlled without the reset pin if I just want to cycle thru all of them?
Any ETA on this? Bought ~20 from EBay, shipped from China. Nearly all of them are defective. Lots of noise or simply DoA.
i'm reading through the datasheet and description, and i m getting a bit confused.
I had good luck with this chip by running the input from my 3.3v powered electrete microphone through an op amp set up as a unity buffer, and then through a second set up as a log amplifier (pair of diodes between output and inverting input) to implement kind of auto gain control. Make sure to use an op-amp that can go rail-to-rail and play nice with low voltages. Try various types of diodes to change the volume gain curve. Then in software I implemented auto muting and un-muting of channels so little pops wouldn't show up occasionally, combined the data from the upper two channels since my microphone did not capture much high frequency, and added some additional level normalization. Next time around I want to try a microphone with AGC built in, and see if that is easier.
Here is my code and schematics: https://github.com/Swap-File/tron-suit/tree/master/Jacket
How can I still listen to music from the same audio source, when I already have it connected to this chip? (How can hear the song at the same time the song is been processed by this chip?) What parts do I need for that?
The MSGEQ7 has a high input impedance. It doesn't take the entire signal. it merely samples it. You can pass the signal to a different part with the chip merely being connected by its 1000pf capacitors to the signal.
Take a look at the "Spectrum shield" here on SF. its a arduino shield that does pretty much what you request. Its schematic should show how easy it is to use this chip!
I have a problem with my set up. I have followed the spec sheet circuit, and hooked it to an arduino with code from http://nuewire.com/info-archive/msgeq7-by-j-skoba/ (I added the following lines to the void loop to bring the numbers down a bit): int PWMvalue = map(analogPin, 0, 1024, 0, 255); // scale analogRead's value to Write's 255 max if (PWMvalue < 50) PWMvalue = PWMvalue / 2;
The problem is that I am getting readings that are all over the map, regardless of the presence of an audio source. Here are a few lines from the serial readout without audio: 99 0 255 415 185 267 129 73 0 201 361 185 129 115 129 320 441 376 413 369 281
Is there a problem with my chip, the circuit, or the code? I'm a bit at wits end here.
Is the MSGEQ7 DIP package eagle part available in the sparkfun libraries? I found a MSGEQ7 but I am not sure if it is surface mount of DIP.
When using a 200k resistor and 33pf capacitor to select the oscillator frequency, what frequency should I be measuring on pin 8? Would I see 165khz like specified in the datasheet? Or is that frequency only present somewhere else internally on the chip?
Note: The MSGEQ7 chips I ordered from eBay were all defective, replacements from sparkfun worked perfectly. Be careful, or you might waste time troubleshooting defective chips!
This is still true in 2015. 7 out of 10 chips are defective. All from eBay.
I second this. The 2 chips I ordered from ebay had ridiculous amounts of noise on each channel that made them completely useless, despite adding noise filter caps. Both chips had the same problem. I spent days trying to get them to work. Anyway, I realized what happened thanks to your comment. I bought 2 new chips from sparkfun after reading this. Hopefully they'll work much better than the ebay ones -_-
Put it in stock literally the day after I bought it from eBay. Too bad for you guys I guess :(.
can you change the frequencies this chip detects?
Yes. There's an oscillator clock pin (8)
By varying the 200kohm resistor and 33pf capacitor, you can achieve different oscillator timings for the bandpass filters, essentially shifting the detection/filter range down/up.
Mixed-Signal integration verified that there would be no problems shifting the range.
"The formula is: fo=1/(R*C) Hz
The clock to corners are:
Filter 1: 2620:1 Filter 2: 1030:1 Filter 3; 410:1 Filter 4: 156:1 Filter 5: 66:1 Filter 6: 26:1 Filter 7: 10:1"
I'd like to try interleaving two chips for more total bands, I'll be curious to see if it is noticeable, or if the bands overlap so much it won't be useful.
Does anybody know how to run this off 3.3V? Every schematic I can find has 5V for VCC.
I made a project with this. Got it onto Hack a Day
The link to the MSGEQ7 tutorial created by J Skoba is broken, but I have posted a copy on my site at:
Is the datasheet here outdated? This is the latest one from the Product Page: http://www.mix-sig.com/datasheets/MSGEQ7.pdf
The capacitor that should be on the input pin is now 0.1uF as opposed to 0.01uF?
That's exactly what I was thinking when I saw the old data sheet I thought to myself "that .01 uf cap is probably gonna clip my bass response a little." So I decided I would use use a .1uf when the time came. Then here I see your post and I go look at the new datasheet and lo and behold! They read my mind!
I've been playing with these and yes you should be able to drive the LM3914 series of chips OK. Each output is fairly linear over 25db. But be aware that the output is refenced at around 500mv, so for best results use an rail to rail opamp to ground reference the output. You would connect the output of the MSGE7 to the positive input of the op amp. Place a 1K resistor from opamp output to negative input. Then connect a 50K pot from negative input to +5V, adjust pot for 0 volts out with no audio input to the MSGE7.
If you want to run standalone (no micro), things become complicated. You would need to use an analog switch to demux the output into seven outputs. Each output would drive a separate LM3916. This would require a 1 of 8 decoder to drive the analog switch and a divide by seven counter circuit to drive the 1 of 8 decoder (eighth output is not used). The counter would divide the strobe pulses from the timer.
The timer which drives both the counter and the MSGE7 strobe input could be a LM555. To avoid flicker, set the timer to produce a low duty cycle positive pulse. To adjust decay of display adjust the timer frequency higher for faster decay.
No need to drive separate LM3916s. Just use one and a multiplexed 10x7 display (or two 5x7 dot matrix modules) with the anodes driven by a decoder. This is the same method used in the now (sadly) discontinued Velleman Spectrum Analyzer Kit. One bargraph driver and a 1-of-10 decoder (in that design, a CMOS 4017 decade counter). Less parts.
But still, the design is complex with passive ICs only (no-microcontroller.)
If I wanted to use this in an analog audio spectrum display, sending the voltages for each frequency band to power 7 LEDs for example, is there a demultiplexer I could use, instead of reading the values with an Arduino?
What's a "DC representation of the amplitude"? An analog DC voltage between VDD and VSS? That datasheet is pretty rough.
It looks like this would work great with a set of LM3916s and a demux to make a simple spectrum analyzer
This listing is same as COM-10024 which is marked as retired now. What gives? We just lost those 14 comments.
This new package is RoHS compliant, while the old one wasn't. You can still see the comments on the old product page, linked to above.