[linux-audio-dev] jamin and FFT filtering

Alfons Adriaensen fons.adriaensen at alcatel.be
Wed Aug 11 11:56:52 UTC 2004


On Wed, Aug 11, 2004 at 12:04:16PM +0100, Steve Harris wrote:

> > 1.  input --> FFT --> complex x(f)   
> > 
> > 2.  y(f) = x(f) * r(f),  with r(f) a real symmterical function
> > 
> > 3.  y(f) --> IFFT --->  real output

> In this example r(f) = 1, its just a flat response.

Ok, in that case there should be no pre-echo at all, as you 
verified. But what then is that blob around the main impulse,
and the echo at 4.5 ms ? (not that it matters much, I don't
think any of them can be detected by ear).

The point of my example was to show that even a nearly flat,
'inaudable' frequency response can give audible artefacts in
the time domain when the filter is forced to be linear phase.

> > If the ripple is at "fs/2", it would be removed anyway by any windowing
> > that is apllied before overlapping parts are added together.
> > Could you try a cosine ripple at "fs/4" or "fs/8" ?
> 
> Applied where? 

Step 2. above. With "fs/n" a mean of course a ripple with a period
of n bins. But don't waste your time with this, unless you are
curious :-)
  
> > BTW, when do you apply windowing : before step 1, after step 3,
> > or both ? What is the FFT size ?
> 
> Before 1, the FFT is 2048 bins, 8x overlap.

With 8x overlap probably even the effect of "fs/4" and "fs/8" would
be attenuated if there is windowing after step 3. IMHO, this windowing
is necessary: there is no reason why, in the general case, the result
of the IFFT would start of and go back to zero amplitude. I'd use
a square root raised cosine before the FFT and after the IFFT.

The 8x overlap seems extreme. IF your bandpass responses are not
'brick wall', and the EQ curves are also smooth, 8x overlap should
not be necessary.

-- 
FA




More information about the Linux-audio-dev mailing list