I I think arduino FFT library only provide max # of bin of 256 to filled in the real data. It doesn't go up to 512. I was definitely confused by ADC resolution and FFT resolution. Thank you for clear that out. Amanda from instructable.com was able to turn down ADC resolution to 8 bit in order to speed up the sampling rate, but you're saying to lower it down to get better resolution, and I can clearly see your point. If I were to lower it down, how would I be able to cover all the frequency range? from 27hz to 4186hz.
No, you wouldn't. My project covers 4 octaves only
I read your blog about pushing arduino to the limit. That was a very impressive project you made! A few questions after reading your blog:
1. How could you have 1024 bins for the FFT? The one comes with arduino IDE is limited to 512 bins as the max. Half of the bins are filled with the data taken from analog input, the other half is set to zero manually. Do you use different library?
Code is linked, not a library, written by myself.
2.The shadow masking technique you used, is it setting a range for the detected frequencies to fall in, and then light up corresponding LED even though the resolution limited to 7.8hz?
Requirements to distinguish two notes and for tunning are different
3. If you already pushed arduino mega to the limit in that project, does it mean I have to either get a Due board or call off my project, or do something similar to yours just to understand how micro-controllers works? What if I use multiple mega boards? having each of them detecting different frequency ranges?
You may try Due, I used UNO btw, not Mega.
4.From arduino FFT documentation, it suggests to set imaginary part to zero if the samples are taken from analog input. Is that what you did?
Using fft may be appropriate if there are a few notes play simultaneously, which is not the case for you project. Freq. measuremets library linked in reply #18 and #28 is better approach for tunning.