DSPRelated.com
Forums

Audio FFT Filter Banks

Started by ajr61 May 5, 2014
I have been working through the paper entitled "Audio Filter Banks" by J.O.
Smith ( http://dafx09.como.polimi.it/proceedings/papers/paper_92.pdf )
attempting to replicate the results presented in the paper. I am ultimately
wanting to re-create the real signal non-uniform filter bank illustrated in
Figure 11.

My question has two main parts.

The description for creating the complex non-uniform filter bank (in Figure
4) is a little vague in that there is no real definition of what the
complex signal is, how the spectrum filters are applied and how the 128
times interpolation is achieved. I can replicate aspects of this figure,
but not simultaneously. So my questions is: has anyone implemented figure 4
in Matlab and is you able to share your solution?

In the second part of my question, which is more general, I do like the
simplicity that this approach for a filter bank implementation proposes,
but I have not found any other research documents that follow on from this
and as a consequence was wondering if there is a fundamental flaw in the
method proposed to implement a multi-channel non-uniform filter bank?

I realise that as this question stands it is a little vague, but please ask
questions and I will attempt to clarify what I am trying to ask. I have a
number of Matlab/Octave scripts that I can share if that helps.

Thanks

Andy

	 

_____________________________		
Posted through www.DSPRelated.com
i remember seeing this paper a few years ago and i did not completely 
grok the "Basic Idea" (as depicted in Fig 1): "FFT implementation of one 
frame of the simple octave filter bank of Fig. 2 on page 3. Successive 
frames are nonoverlapping (rectangular window advances its full length 
each frame)."

while it may not be as efficient, i think it's better to split into 
these constant-Q filter banks in the time domain first, so you have, 
say, 8 or 10 different octave outputs, then frame (with 50% overlapping 
frames) and FFT each octave output separately.  the frame rate for each 
octave output is proportional to the frequency range of that output, so 
the lower octaves have a slower frame rate than the upper octaves.  also 
decimation may be applied to the lower octaves.  (the effect of this is 
that the FFT size is the same for each octave output.)  this is a lot 
like what them wavelet and filterbank people do.  it's multirate.

i'm a big fan of JOS, but i don't entirely get this.


-- 

r b-j                  rbj@audioimagination.com

"Imagination is more important than knowledge."



On 5/5/14 8:55 AM, ajr61 wrote:
> I have been working through the paper entitled "Audio Filter Banks" by J.O. > Smith ( http://dafx09.como.polimi.it/proceedings/papers/paper_92.pdf ) > attempting to replicate the results presented in the paper. I am ultimately > wanting to re-create the real signal non-uniform filter bank illustrated in > Figure 11. > > My question has two main parts. > > The description for creating the complex non-uniform filter bank (in Figure > 4) is a little vague in that there is no real definition of what the > complex signal is, how the spectrum filters are applied and how the 128 > times interpolation is achieved. I can replicate aspects of this figure, > but not simultaneously. So my questions is: has anyone implemented figure 4 > in Matlab and is you able to share your solution? > > In the second part of my question, which is more general, I do like the > simplicity that this approach for a filter bank implementation proposes, > but I have not found any other research documents that follow on from this > and as a consequence was wondering if there is a fundamental flaw in the > method proposed to implement a multi-channel non-uniform filter bank? > > I realise that as this question stands it is a little vague, but please ask > questions and I will attempt to clarify what I am trying to ask. I have a > number of Matlab/Octave scripts that I can share if that helps. > > Thanks > > Andy > > > > _____________________________ > Posted through www.DSPRelated.com
Thanks for the comments and pointers Robert,

As luck (and the various laws of engineering) would have it, I managed to
replicate what I was trying to achieve with regard to (Figure 4) 30 minutes
after posting to comp.dsp despite working on it for a number of days!

 So, I now have a complex non-uniform filter bank based on an aliased sinc
function, but with poor stop-band performance (as shown by JOS).

I will now proceed with the the Dolph-Chebychev implementation.

Going back to my second question, I am still interested in looking at
alternatives. Computational performance is less of an issue for me it is
more the technical specification - I am wanting to minimise amplitude and
phase distortions to the signals passing through the filter-bank.

I have read quite a bit about the different approaches (QMF, Constant Q,
Gammatone, Wavelets etc.) and was thinking of exploring the constant-Q and
wavelet approaches in parallel to get a feel for the relative performance
(and also the computational complexity to a lesser degree).

Are you aware of any simple Matlab implementations of the constant-Q
non-uniform filter-bank that I can use to compare with the JOS STFT based
filterbank? I can obviously create from scratch, but would take advantage
of any existing code if available.

Regards

Andy

> >i remember seeing this paper a few years ago and i did not completely >grok the "Basic Idea" (as depicted in Fig 1): "FFT implementation of one >frame of the simple octave filter bank of Fig. 2 on page 3. Successive >frames are nonoverlapping (rectangular window advances its full length >each frame)." > >while it may not be as efficient, i think it's better to split into >these constant-Q filter banks in the time domain first, so you have, >say, 8 or 10 different octave outputs, then frame (with 50% overlapping >frames) and FFT each octave output separately. the frame rate for each >octave output is proportional to the frequency range of that output, so >the lower octaves have a slower frame rate than the upper octaves. also >decimation may be applied to the lower octaves. (the effect of this is >that the FFT size is the same for each octave output.) this is a lot >like what them wavelet and filterbank people do. it's multirate. > >i'm a big fan of JOS, but i don't entirely get this. > > >-- > >r b-j rbj@audioimagination.com > >"Imagination is more important than knowledge." > > > >On 5/5/14 8:55 AM, ajr61 wrote: >> I have been working through the paper entitled "Audio Filter Banks" by
J.O.
>> Smith ( http://dafx09.como.polimi.it/proceedings/papers/paper_92.pdf ) >> attempting to replicate the results presented in the paper. I am
ultimately
>> wanting to re-create the real signal non-uniform filter bank illustrated
in
>> Figure 11. >> >> My question has two main parts. >> >> The description for creating the complex non-uniform filter bank (in
Figure
>> 4) is a little vague in that there is no real definition of what the >> complex signal is, how the spectrum filters are applied and how the 128 >> times interpolation is achieved. I can replicate aspects of this
figure,
>> but not simultaneously. So my questions is: has anyone implemented
figure 4
>> in Matlab and is you able to share your solution? >> >> In the second part of my question, which is more general, I do like the >> simplicity that this approach for a filter bank implementation
proposes,
>> but I have not found any other research documents that follow on from
this
>> and as a consequence was wondering if there is a fundamental flaw in
the
>> method proposed to implement a multi-channel non-uniform filter bank? >> >> I realise that as this question stands it is a little vague, but please
ask
>> questions and I will attempt to clarify what I am trying to ask. I have
a
>> number of Matlab/Octave scripts that I can share if that helps. >> >> Thanks >> >> Andy >> >> >> >> _____________________________ >> Posted through www.DSPRelated.com >
_____________________________ Posted through www.DSPRelated.com