I'm working on some oscillator classes right now and perform FFT around 100 times per second. The issue I'm running into is interpolating between the bins so there is not a noticeable change from each execution of FFT. I'm fairly new to using FFTW right now and I'm still getting to know its functions.
For some more context, I'm working on some spectral morph functions and other fun like that. As of right now, I'm not using SIMD for my interpolation and it's just a basic for loop that writes to a
fftw_complex pointer based on the two
fft_complex bins I'm interpolating on. The idea is that I only do FFT when needed, at a max of roughly 100 times per second, and between every n number of frames or so, calculate the interpolated bin between the current one and the last one. My FFT length is currently 2048 samples because I've found that's the sweet spot for CPU and low harmonics. This makes the FFT bin a size of .
I'm also only a few months into SIMD, and plan on using it for the final interpolation algorithm. Am I missing an FFTW function that can do a lot of this for me, or is there some other method out their that is faster?
Edit: My bad - When I mean interpolating the bins, I am referring to them being in the time domain, not frequency. I am storing my waveform in the bin in time domain so I don't need to do memory stuff when I want to do forward FFT.
Second Edit: I suppose I was a little off, but I had the right idea. I was working with another FFT library for a while that did not allow easy conversions from complex objects to arrays. I was under the presumption that I had to be restrained to only using FFT bins. This clears a lot up