August 7, 2015 at 8:35 pm #781
I am kind of new on the audio processing, sampling etc. I was wandering if it is possible to develop a spectrum analyzer with this shield.
I have done one to analyze noise on certain frequencies using an arduino and a sparkfun eclect microphone, basically with an FFT library for arduino, the microphone (with the necessary on board amplifiers and filters i needed) connected to an analog input on the arduino, and a c# program just to graph the decibels on its bands of frequencies.
The problem was that i could analyze up to less than 20 kHz (11 kHz aprox) and because the electronics, the piezo in the little microphone and some other factors, i had troubles regarding noise on the inputs.
I would like to do so, with a microphone connected on the audio input of this shield. But i really really new to this shield and how it works (the libraries). If possible, can someone guide on how this could work with the shield.
I would like to analyze 20Khz (sample rate at about 40khz) with a band of 50 hz if possible (the FFT library that i used had 128 bands of resolution.
Thank you very muchAugust 10, 2015 at 8:56 pm #2318
You can sample the ADC at that rate, and you should have enough memory in SRAM to store your data for the FFT. I am doing FFT on an Arduino now (for another project, and not using the Audio Hacker), and there’s enough memory for a 256 point FFT. I think it should work.August 13, 2015 at 11:13 pm #2322
Thank you very much for your reply, Michael.
Yes. It actually works. The thing is ( and at this point i don’t really know if I understood the full concept of FFT) for what i understand, a 250 point FFT means 128 bands of frequencies due to the nyquist theorem, right?
Because of the high noise level on the project and some other factors i came to the conclusion of using a 512 or even a 1024 point FFT and see the results, plus recording the noise for future references.
I was thinking of audio hacker to record samples and analyze the sound in FFT. Is it possible with arduino and audiohacker to do that?
Thank you.August 14, 2015 at 12:25 pm #2323
I think you could record sound to the serial SRAM chips (for large capacity), then in small chunks at a time (like 512 bytes) load data from serial SRAM into a normal SRAM buffer and pass it to the FFT code.
For example, sample 512 12-bit values and write each value with:
writeSRAM(0, 0, data)
Note that each sample will take up 2 bytes. Do this until memory is full.
For later analysis:
unsigned int buf; // buffer to store the 512 unsigned ints
readSRAM(0, 0, (byte *)buf, 1024); // do 1024 reads into the buffer, two bytes per sample. Now buf will contain 1024 bytes which are actually 512 unsigned ints.
// pass buf to your FFT code.August 17, 2015 at 10:45 pm #2328
Thank you very much Michael,
I will get my hands on to that!
Another question: Is it possible to use 3 analog pins for other purposes ( i want to connect a 3 axis accelerometer) or does the chip uses all of the analog pins to sample audio?
ThanksAugust 18, 2015 at 3:27 am #2329
You can use the analog pins. This shield uses an ADC chip to sample audio and does not use the ADC on the Arduino.
- You must be logged in to reply to this topic.