DSPRelated.com
Forums

Time-varying overlap-add FFT filtering?

Started by Matti Viljamaa August 12, 2016
I'm thinking of trialing with overlap-add FFT filtering, but rather than ha=
ving a static filter (the filter stays the same after the design) I'd like =
to implement a time-varying overlap-add FFT filter. So that I can modify th=
e gain and frequency characteristics of the filter perhaps in an "adaptive"=
 way over time.

However, my question regarding this is how can I get smooth adjustments if =
the changes to the filter can be made only in FFT length periods? I believe=
 doing parameter changes would require a rather low number of samples betwe=
en parameters changes e.g. something in the range of 1-32 samples. But if t=
he FFT length is say 1024, then isn't it so that I can only change the filt=
er at every 1024 samples, which is perhaps too long?
On 12.08.16 10.05, Matti Viljamaa wrote:
> I'm thinking of trialing with overlap-add FFT filtering, but rather than having a static filter (the filter stays the same after the design) I'd like to implement a time-varying overlap-add FFT filter. So that I can modify the gain and frequency characteristics of the filter perhaps in an "adaptive" way over time. > However, my question regarding this is how can I get smooth adjustments if the changes to the filter can be made only in FFT length periods? I believe doing parameter changes would require a rather low number of samples between parameters changes e.g. something in the range of 1-32 samples. But if the FFT length is say 1024, then isn't it so that I can only change the filter at every 1024 samples, which is perhaps too long?
It depends on what you want to achieve. If you have an adaptive filter the latency is usually the limiting factor. I.e. you will not get new measurement values before the FFT has completed. So there is no need to change that rapidly. On the other side, if you have very frequent changes you need to keep in mind that there is no exact definition of the term frequency in small frames of only a few samples. So it make no much sense to define a precise response function that changes frequency. Maybe FFT is not what you seek for in this case and you should have a look at wavelet transformations. Marcel
perjantai 12. elokuuta 2016 23.14.08 UTC+3 Marcel Mueller kirjoitti:
> On 12.08.16 10.05, Matti Viljamaa wrote: > > I'm thinking of trialing with overlap-add FFT filtering, but rather tha=
n having a static filter (the filter stays the same after the design) I'd l= ike to implement a time-varying overlap-add FFT filter. So that I can modif= y the gain and frequency characteristics of the filter perhaps in an "adapt= ive" way over time.
> > However, my question regarding this is how can I get smooth adjustments=
if the changes to the filter can be made only in FFT length periods? I bel= ieve doing parameter changes would require a rather low number of samples b= etween parameters changes e.g. something in the range of 1-32 samples. But = if the FFT length is say 1024, then isn't it so that I can only change the = filter at every 1024 samples, which is perhaps too long?
>=20 > It depends on what you want to achieve. >=20 > If you have an adaptive filter the latency is usually the limiting=20 > factor. I.e. you will not get new measurement values before the FFT has=
=20
> completed. So there is no need to change that rapidly.
Can you define what you mean by "adaptive" here? So that I can understand w= hy it doesn't require fast changes, whereas the one below requires.
> On the other side, if you have very frequent changes you need to keep in=
=20
> mind that there is no exact definition of the term frequency in small=20 > frames of only a few samples. So it make no much sense to define a=20 > precise response function that changes frequency. Maybe FFT is not what=
=20
> you seek for in this case and you should have a look at wavelet=20 > transformations.
Good point.
The Matlab site seems to have somewhat informative small site about this topic, which implies that overlap-add FFT is at least one option for this kind of processing:

http://www.mathworks.com/examples/audio-system/mw/audio_product-olamodel-dynamic-range-compression-using-overlap-add-reconstruction

However,

"This system decomposes the input signal into overlapping sections of length 256. The overlap is 192 so that every 64 samples, a new section is defined and a new FFT is computed."

So here we see that the FFT overlap has a compromise in speed of filter changes versus frequency resolution.
I'd like someone to ensure that my intuition about this is correct.

I'm thinking of doing the following kind of "sliding FFT":

http://pichoster.net/images/2016/08/24/slidingfft.png

I also think of using the 1024 length FFT for analysis purposes for designing the FIR filter.

But I think of designing the FIR filter to length of 32/64 samples and filter the signal in 32/64 sample blocks so that I can make parameter changes (i.e. redesign the filter) every 32 or 64 samples.

But how should I perform the filtering on the 32 or 64 samples? In time domain (then I wouldn't need to FFT/iFFT them at all) or in frequency domain (then I'd need to FFT and iFFT them)?

If I perform frequency domain filtering on those 32 or 64 samples, then is recombining the block merely about playing the blocks back one after another or does FFT/iFFT generate some problems (e.g. discontinuities in the start or end of the block)?
On Friday, August 12, 2016 at 3:05:33 PM UTC+7, Matti Viljamaa wrote:
> I'm thinking of trialing with overlap-add FFT filtering, but rather than having a static filter (the filter stays the same after the design) I'd like to implement a time-varying overlap-add FFT filter. So that I can modify the gain and frequency characteristics of the filter perhaps in an "adaptive" way over time. > > However, my question regarding this is how can I get smooth adjustments if the changes to the filter can be made only in FFT length periods? I believe doing parameter changes would require a rather low number of samples between parameters changes e.g. something in the range of 1-32 samples. But if the FFT length is say 1024, then isn't it so that I can only change the filter at every 1024 samples, which is perhaps too long?
All reason being for againt the noise(Information Theory famous quotes by authors you know, Senior Engineers). Do you have the Readery Meter counld store datum to computer in Matlab code ?