I'm attempting to implement kiss FFT real calculations.
As I'm sure everyone is aware I'm not the first person asking about kiss FFT here, nor about kiss_fftr specifically. I am fairly new to FFT, but have gotten most of the basics down, and am now trying to implement it in an audio frequency analyzer in an ATxmega192A3.
Here is the basic code I've copied and modified in an attempt to input 512 8 bit ADC samples into an FFT in order to get 256 output frequency bins.
int size = 512;
int isinverse = 1;
kiss_fft_scalar zero;
memset(&zero,0,sizeof(zero));
kiss_fft_cpx fft_in[size];
kiss_fft_cpx fft_out[size];
kiss_fftr_cfg fft = kiss_fftr_alloc(size*2,0,0,0);
//load 512 samples from ADC into fft_in[].r and zero out fft_in[].i, fft_out[].i, and fft_out[].r
kiss_fftr(fft, (kiss_fft_scalar*) fft_in, fft_out);
Here are my questions:
Is there any overlap in the out bins? Meaning if I'm viewing.. say the 12Hz out bin is it showing ONLY 12Hz and not rounding in 12.1Hz partially (I am aware audio is not quite that precise so there will be residual physical effects causing interference)?
I am having a hard time figuring out how to use the kiss_fftr_cfg. I am unsure of where all of the options are labeled as far as using it with 8 bit ints (or 16 bit, but doesn't that mean all my input samples need to be 16 bit? Everything in the previous code before and including the cfg's declaration I don't understand outside of the first two int declarations he made, and am not sure why he used memset instead of allowing kiss_fftr to allocate space. Where might I find more information?? I've looked through most of the included files with kiss_fft, and don't seem to find much helpful info digging through the code at the expense of hours and hours.