First, thank you for all the information and code you put up on this website. I read them and it was helpful learning that I can implement FFT algorithm with Arduino board.

I’m an engineering student who is trying to use Arduino board for my degree project. I’ve been using MATLAB to use FFT algorithm and filter the sound I have. Now, implementing the data to real product is the problem. I was planning to use Arduino board, but I don’t know which board I should buy. I’m trying to receive sound as an input source through microphone sensors and filter it so data will have certain frequencies, and send the output signal to vibration motors and LED light panel. Do you think I’ll be able to program these with Arduino board? There is no one who can help me with this in my school!!!!

Please help me!

I suggest that you look after the FIR which is way faster and should fit your needs as far as I understand them. ]]>

If you are using an Arduino UNO, like most users, you will have to save one byte data (-127 to 127 counts) in order to fit the 2k RAM. You may also decide to compress your data as described in Arduinoos posts. I did not maintain this option as the result depends very much on the signal shape.

44.1kHz

No big deal with PlainADC which can be pushed to 130kHz when recording 2 bytes integers and to 80Khz when recording 32 bits floats.

PlainADC does the job; on the other hand, as you are new to Arduino, you may follow the latest series of post dedicated to PlainDDS which is a combo of the PlainADC and PlainFFT libraries.

HTH

I am quite new to Adruino and I would like to know how to get out from approx 1024 samples (Voltage levels), Sampled at Fs=44.1 kHz = 20 ms of sample time a Spectrum.

I have used before the Soundcard of my PC , Mic-In (16 bit,44100 Hz) and did the postprocess in MATLAB.

Do you have any sketch ready? I would like to see it in the Monitor

Many Thanks in advance

Y3G ]]>

Let me put it in right manner. Suppose you are getting some voice analog sample. You are discretizing it using sampling frequency am i right? Then out of those discrete samples you are considering N points to apply FFT on it.

Considering your microLS project. You are considering sampling frequency = 16000Hz and no. of samples 64. That means it is considering 64 points for applying FFT right? My question is out of large no. of sampled points which points it gonna use to apply FFT? My understanding is correct?

]]>So far, these are the funciton which required the sampling frequency argument

void MajorPeak(double *vData, uint16_t samples, double samplingFrequency, struct strPeakProperties *result);

void MajorPeak(double *vData, uint16_t samples, double samplingFrequency, double loFrequency, double upFrequency, struct strPeakProperties *result);

void Normalize(double *vData, uint16_t samples, double normalizingValue);

void TargetPeak(double *vData, uint16_t samples, double samplingFrequency, double targetPosition, double tolerance, struct strPeakProperties *result);

Each of them retourn a time domain information, thus the need for sampling frequency value.

None of the other functions require this arguments. Your understanding is fine, but your question is ambiguous…

HTH

Really nice work appreciation is implicit :).

My field is computer science so not good in electronics and electrical concepts. I understood FFT algorithm.

We do require N (no. of points) only to execute this algorithm but doubt is why we are passing samplingfrequency to the functions?

Nope, I won’t! Please check this thread http://goo.gl/qIMQW, no exceptions.

Regards

Didier ]]>