Detecting lower frequency sounds

Hey I have an arduino uno and I would like make something that can measure lower frequencies in an mp3 file for example and output a number for the intensity of some frequency, say 60 Hz. I don't exactly know where to start, I know of the arduino fft library but I am not sure how to use it with just an arduino and no LEDs or a microphone. Please help.

You first need a low pass filter that drops off rapidly after the maximum frequency you are interest in. This is so there is little energy in signals above the Nyquist rate. That is the point where you get less than two samples per second.

Then it is just a matter of using an FFT with sufficient samples to give you good resolution at the frequency bands you are interested in.

You should make sure your audio path is DC coupled to get the full range of low frequencies. Using the serial plotter for the output will help you visualise the results you get.

I’m very new to arduino so could you translate in simple terms what nyquist rate and dc coupled means

There is always google to explain things you don’t understand. Sure if that fails then come back and ask about what you don’t understand about what you found.

In short
nyquist rate - the maximum frequency you can apply to a system before severe distortion takes place. You need at least two samples in one cycle of audio.

dc coupled - no series capacitors in the audio line.

I'm very new to arduino

This is not a beginners project.

What would the circuitry look like in what you’re describing exactly

Qurp:
What would the circuitry look like in what you’re describing exactly

Are you asking me to design a low pass filter for you?
Are you asking me for a physical layout diagram ( I don't do these ) or a schematic?

As I said this is not a beginners project.

Maybe the best you could do is to download an application called Audacity ( its free and for all platforms ) onto your laptop and feed your audio into that from the audio jack socket on the laptop.

Then Audacity can be used to sample your sound, and when you have it then it will allow you to do things like an FFT, or auto correlation on your samples to examine what frequencies it contains.

This is much simpler than trying to make an Arduino do the job, which I think you will be struggling with, given your current state of knowledge.

and feed your audio into that from the audio jack socket on the laptop.
Then Audacity can be used to sample your sound, and when you have it then it will allow you to do things like an FFT, or auto correlation on your samples to examine what frequencies it contains.

Or, just open the MP3 in Audacity. :wink:

And if you want to feed a line-level or headphone-level signal into your soundcard/audio interface you need a regular soundcard with line-in. Most laptops only have mic-in and headphone-out.

Quote and output a number for the intensity of some frequency, say 60 Hz.

If it's a known-fixed frequency you can use a bandpass filter which will double as the anti-aliasing (Nyquist) filter. Or if you just want all of the energy below 60Hz a 60Hz low-pass filter will also do both jobs. The Arduino can't read the negative half of the AC audio waveform so the signal has to be biased. The bias can easily be built into your low-pass filter.

You can build a filter with an op-amp (and you can find the information online) but steep/sharp filters get a bit complex) or you can get a special filter chip.