Hello everybody!
I have some technical questions about the Teensy 3.6 in combination with the audio shield.
So I would like to do quiet lot of big FFTs, then do some spectral processing and finally iFFT the signal. If possible I would like to do it in real time, but if thats not possible at least somewhat online. I am aiming at a FFT size of 4096. Is that even in the realm of possibilities? The code and benchmarks I've red so far mostly use 512 or 1024 samples.
I know I have to write the FFT/iFFT classes myself and I understand it has to be as fast as possible, but I am wondering whats available for this purpose? Can I use the floating point unit for this and if so how? Are there SIMD instructions available?
From the code/forum posts I've been reading so far (mostly the analyze_fft1024 in the Audio lib, Teensy-ConvolutionSDR, Teensy-FFT-Convolution-Filter) most implementations seem to use the CMSIS library, which to my understanding seems to be something like an abstraction library over different ARM chips offering an interface to performance critical operations. Is that correct? In the past there seemed to be different discussions about what version of the library to use. I was unable to find the version of the library currently in use on the Teensy 3.6 (with Arduino 1.8.5 + Teensyduino 1.41). Where is this lib bundled anyway? I couldn't find it in the anywhere...
Another thing I was wondering is that I saw a lot of arm_q15_to_float or similar functions containing q15 in the above mentioned code. This got me confused. What data format is the Teensy using internally? I always assumend its int16_t, but I couldn't find documentation verify that anywhere. Also whats the advantage of using q15 over f32? Wouldn't floats be faster and more accurate? Or am I overlooking something here?
I was planning on using arm_cfft_f32 with arm_cfft_sR_f32_len4096 for my purposes, but with so many open questions I would like to hear from some people, who maybe have already spent a lot of time with this. I know this is quiet a lot of questions, but maybe somebody can shed some light on my confusion
Thank you very much in advance,
Foaly
I have some technical questions about the Teensy 3.6 in combination with the audio shield.
So I would like to do quiet lot of big FFTs, then do some spectral processing and finally iFFT the signal. If possible I would like to do it in real time, but if thats not possible at least somewhat online. I am aiming at a FFT size of 4096. Is that even in the realm of possibilities? The code and benchmarks I've red so far mostly use 512 or 1024 samples.
I know I have to write the FFT/iFFT classes myself and I understand it has to be as fast as possible, but I am wondering whats available for this purpose? Can I use the floating point unit for this and if so how? Are there SIMD instructions available?
From the code/forum posts I've been reading so far (mostly the analyze_fft1024 in the Audio lib, Teensy-ConvolutionSDR, Teensy-FFT-Convolution-Filter) most implementations seem to use the CMSIS library, which to my understanding seems to be something like an abstraction library over different ARM chips offering an interface to performance critical operations. Is that correct? In the past there seemed to be different discussions about what version of the library to use. I was unable to find the version of the library currently in use on the Teensy 3.6 (with Arduino 1.8.5 + Teensyduino 1.41). Where is this lib bundled anyway? I couldn't find it in the anywhere...
Another thing I was wondering is that I saw a lot of arm_q15_to_float or similar functions containing q15 in the above mentioned code. This got me confused. What data format is the Teensy using internally? I always assumend its int16_t, but I couldn't find documentation verify that anywhere. Also whats the advantage of using q15 over f32? Wouldn't floats be faster and more accurate? Or am I overlooking something here?
I was planning on using arm_cfft_f32 with arm_cfft_sR_f32_len4096 for my purposes, but with so many open questions I would like to hear from some people, who maybe have already spent a lot of time with this. I know this is quiet a lot of questions, but maybe somebody can shed some light on my confusion
Thank you very much in advance,
Foaly