I have an audio signal and i want to process it sequentially. Is there an algorithm which allows to modify the spectrum of a signal when i remove a part of signal and add the other one?
For example, i obtain a set of 256 samples of input data. Then i do 256 FFT and i want to add the result spectrum to 16384 FFT which is the big buffer. So i have the big FFT buffer with the good frequency resolution and i should sometimes modify to correspond the spectrum as if i do 16384 FFT.
The main objective is i need to avoid 16384 FFT because it's quite expensive. The way i want to optimize is (in time domain):
- Shift the buffer to 256 samples;
- Place the new samples to last 256 entries in buffer;
- Make 16384 FFT.
So whenever the 256 sapmles come i need to recompute 16384 FFT whereas i've already have 16384 - 256 computed samples. Is there way perform such task (circular buffering FFT)?
My thoughs was (in frequency domain):
- Multiply the 16384 FFT buffer by the complex sinusoid (that coresponds to circular shift the signal in time domain to 256 samples);
- Calculate 256 FFT of new portion of signal;
- Expand the spectrum to 16384 by inserting zeroes between bins (it's corresponds duplication of time domain signal);
- Mix the signal with removing duplication of the expanded spectrum (by convolving with sinc function), and zero last 256 samples (by convolving with sinc function).
Is there way to avoid two comlementar convolving in the last step?