lets say I have 3 audio filters for a realtime DSP application. For simplictity each has length 256 (as well as the input signal). The filters should work in series. Starting with filter IR h1(n) and input x(n), zeropadding to 512, FFT, then multiplication and IFFT, delivers the first stage output Y1(n).
Since they input vector was padded to 512 the output has 512, too.
Second filter stage: input to this stage is y1(n) which has already 512 samples, and has to be convolved with filter h2(L=256). So y1 and h2 have to be zeropadded to 788, FFT, Multiplication, IFFT... Output y2 has lenght 768
Third stage: will add another padding, so final output vector will have length 1024
Since my app is realtime I would, for performance reason, like to avoid multiple FFT->iFFT for each stage. Moreover there will be a growing input length for the FFT with each filter stage. I would prefer doing FFT for each filter individually to get H1,H2,H3 then do X*H1*H2*H3, then IFFT. As far as I understood from a previous post, this would work, if I would zero pad each filter (and input) already in the beginning to length L=N+N1+N2+N3. Unfortunately this I want to avoid since some filters are laying already pre-FFt´ed in big buffers already from the app start to grant fast access, and others (Equalizers e.g.) can be optionally switched on/off during runtime. So I have no way to know at program start to know how much "padded" zeros I will need to apply to those pre-FFT´ed filters.
Is there a way to get arround this? Maybe zero padding those static filters in frequency domain "on the fly" if there should be added e.g. another EQ filter on runtime? If yes, how?