Arduino selection for frequency filtering

Hi, I'm looking for an Arduino that can do real time signal processing preferably working with Matlab and Simulink, but if there is a better program/language to use I'll check it out. My goal is to achieve some filtering effects to remove specific sound frequencies. The Arduino is not going to be storing the audio data long term after it has been processed. Once the Arduino receives the signals, it is just supposed to analyze, filter, and spit it back out through a speaker. I have been looking around to find which one would have the adequate / optimal processing power for the task (a little vague, I know). Just estimating, would you say the Arduino Uno is powerful enough for the task, and is there another model or two you might suggest I look at? Overall I'm keeping it open to anything. Would love to hear what you guys think.

It'll depend upon which frequencies you expect to filter out and what the highest frequency in the signal will be.
They will determine the required sampling rate which will determine whether it is even possible to use an UNO.
If you want to sample at 44100Hz, the answer is already no.

Pete

Thanks Pete, the highest frequency I will probably be looking at is about 11000 Hz. So what I'm getting is that Uno will probably be good enough. Is there a common "best" arduino often used for audio filtering on this forum?

would you say the Arduino Uno is powerful enough for the task,

It is not.

is there another model or two you might suggest I look at?

The only one remotely suitable is the Due.

My goal is to achieve some filtering effects to remove specific sound frequencies.

Yes it can do that but you will have to design the digital filter to do this. A recursive band stop filter should be able to do that, but you are pushing it at 11KHz.

Maybe take a look at the Tinsey 3, that has an audio library that includes a bit of DSP with it.

A notch IIR digital filter using fixed-point arithmetic might be possible for high sample rates - digital filters
are just multiply-and-add sequences at the heart of things. Without an understanding of digital filter
techniques you'll need to do "some reading"...

This is a notch filter for a waveform of 20 samples if it is of any help to you:-

void notchFilter(){ // for a 20 sample wave
  // prime output buffer
   outBuffer[0] = 0; // inBuffer[0]
   outBuffer[1] = 0; // inBuffer[1]
   for(int i=2; i<(bufferSize); i++){
    outBuffer[i] = ((1.8523*(float)outBuffer[i-1] - 0.94833* (float) outBuffer[i-2] 
       + (float)inBuffer[i] - 1.9021*(float) inBuffer[i-1] + (float)inBuffer[i-2]));
   }
}

From my book:-

You should consider using Teensy 3.2 and probably the Audio Shield. (full disclosure: I'm the guy who makes these, so my opinion might be slightly biased) You can also use the on-chip ADC and DAC to get your signal in and out, but their quality isn't as good as the shield. I highly recommend using the shield while developing algorithms. Best to get things working the easiest way, then try reducing cost after you've solved the fundamental problem.

The Teensy Audio Library has a biquad cascade object which might meet your needs. You may need to add code to create your coefficients. It does have a setNotch() function which creates the coefficients for a basic single-stage notch filter.

The Teensy Audio Library has a large toolkit of working objects and it takes care of streaming the audio between them. If you do end up writing your own filter code, it's fairly easy to add it as an object to the library, so it can interconnect with all the other stuff.

Last year we made a 48 minute tutorial video. It's long, but in many short pieces. There's a written workshop manual too. If you haven't see this before, the video & workshop info can get you up to speed quickly.

You should consider using Teensy 3.2 and probably the Audio Shield. (full disclosure: I'm the guy who makes these, so my opinion might be slightly biased)

I didn't make the Teensy but I would still strongly agree with him.