Detecting a pattern of a certain pitch amongst loud background noise

Hi All,

I am completely new to arduino and have a project in mind that requires monitoring a repetitive tone generated by a piece of equipment but in the presence of lots of (fairly constant pitch and amplitude) background noise.

I would ideally like to know the frequency with which that tone occurs (ie x tones per minute) and also if the pitch of the tone changes by much.

Any advice on the suggested arduino, breakout boards and sensors and method for such a project would be greatly appreciated.

In general this may be very difficult. For example, it you have a musical recording, it's impossible to isolate a particular instrument (you can't un-mix audio). You can isolate a particular frequency (pitch*) but with real world sounds there are usually multiple overtones & harmonics, and the frequency/harmonics/overtones from different sound sources often overlap.

The Arduino may not be the best tool. A computer already has a soundcard, and if it's a laptop it's got a microphone. With an Arduino, you'd have to build the hardware and write the software (and the Arduino may not have the necessary processing power).

With a computer, you'd only have to write the software and you may not even have to do that.

If you know the audio-frequency (pitch, not the repetition-frequency) you can make a band-pass filter to block everything except the frequency of interest. And, a notch filter (or multiple notch filters) can be used to knock-out noises of a particular frequency, but real-world noise is rarely a single frequency.

A program like [u]Audacity[/u] can record the sound, and after recording you can apply filters. There iare a couple of ways to view the audio spectrum (after recording) so you can "see" audio frequencies.

Audacity won't automatically find the repetition rate, but it's a start.

I've never used MATLAB, but it (or a MATLAB clone) can do FFT or other mathematical/statistical operations on an audio file. So you wouldn't have to write an application, but you may still have to create some algorithms and do some programming-like work.

  • Pitch related is the perception of frequency, A trumpet an violin playing the same note will have the same pitch and the same fundamental frequency but they sound different because of different harmonics & overtones.

Hi DVDdoug,

Thank you so much for the in-depth response.
I was worried the arduino may be a lil lightweight for the task.
My only problem is that the project I have in mind is not an environment or budget that lends itself to using a laptop or pc.. thats why I was hoping to go with a microcontroller appeoach such as arduino or pi.

I am considering however using a program like audacity to do an analysis so I have at least an idea of the feasability of using some bandpass and notch filters etc.
Thank you for this push in the right direction. I will let you know how it goes.