DSPRelated.com
Forums

Question about filterbanks

Started by John April 22, 2011
Hi,

I have a question about filter banks.

From a frequency domain point-of-view I would guess that a filterbank is 
just a set of equally or un-equally spaced bins in the frequency domain 
where
you apply some processing to the power in each bin (or should I call it 
band).

Now...my question is...how do you make a filterbank in the time-domain...Do 
you just create N band-pass filters and apply some processing to the
signal-output from each bandpass filter before summing up the N processed 
filter outputs? Or is there more to it? Any links to a good tutorial on
the subject?

Thank you. 

John wrote:
> Hi, > > I have a question about filter banks. > > From a frequency domain point-of-view I would guess that a filterbank > is just a set of equally or un-equally spaced bins in the frequency > domain where > you apply some processing to the power in each bin (or should I call it > band).
As a relative neophyte [there is an ELDER of group who objects to me saying that I'm a 'newbie' even if I am ;] to DSP, that comment seems to be reasonable. Did you get hint of a major *CAVEAT* to follow ;/
> > Now...my question is...how do you make a filterbank in the > time-domain...
WHY?
> Do you just create N band-pass filters and apply some > processing to the > signal-output from each bandpass filter before summing up the N > processed filter outputs?
Before the purists of this group inundate you: 1. what do you wish to accomplish? 2. why do you pose your question this way?
> Or is there more to it? Any links to a good > tutorial on > the subject? > > Thank you.
On 04/22/2011 07:24 PM, John wrote:
> Hi, > > I have a question about filter banks. > > From a frequency domain point-of-view I would guess that a filterbank > is just a set of equally or un-equally spaced bins in the frequency > domain where > you apply some processing to the power in each bin (or should I call it > band).
Uh, yea. You may wish to place additional constraints, i.e. a graphics equalizer is a filter bank who's filter outputs, when summed, generate a flat response and that 'behaves nicely' when the gains on the individual filters are changed.
> Now...my question is...how do you make a filterbank in the > time-domain...Do you just create N band-pass filters and apply some > processing to the > signal-output from each bandpass filter before summing up the N > processed filter outputs? Or is there more to it? Any links to a good > tutorial on > the subject?
Subject to the constraints above. Google "graphics equalizer", or perhaps "DSP graphics equalizer". I don't do much at all with audio DSP, but there are established techniques that I have seen talked about here. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com Do you need to implement control loops in software? "Applied Control Theory for Embedded Systems" was written for you. See details at http://www.wescottdesign.com/actfes/actfes.html
On Apr 23, 1:48&#4294967295;am, Tim Wescott <t...@seemywebsite.com> wrote:
> On 04/22/2011 07:24 PM, John wrote: > > > &#4294967295;From a frequency domain point-of-view I would guess that a filterbank > > is just a set of equally or un-equally spaced bins in the frequency > > domain where you apply some processing to the power in each bin (or > > should I call it band). > > Uh, yea. &#4294967295;You may wish to place additional constraints, i.e. a graphics > equalizer is a filter bank who's filter outputs, when summed, generate a > flat response and that 'behaves nicely' when the gains on the individual > filters are changed. >
...
> > Google "graphics equalizer", or perhaps "DSP graphics equalizer". &#4294967295;I > don't do much at all with audio DSP, but there are established > techniques that I have seen talked about here.
Tim, *I* would be interested in hearing more about the established techniques. as best as i can tell, it's kinda a bitch to sum up a bunch of parallel BPFs with resonant frequencies nicely spaced and get a perfectly flat "wire". i know the old analog graphic EQs *did* sum up parallel BPFs, but i am suspicious that when all the sliders are set to 0 dB, they came out to be a wire. maybe they did, but i would like to see how they were designed. i've thunked about this a little (as have some others), and, to me, if you wanted a graphic EQ that guaranteed flatness when all of the sliders are set to 0 dB, we can imagine first a *cascade* of these biquad peak/cut EQ (sometimes called parametric EQ) with fixed center frequency (log spaced) and fixed bandwidth (in log freq) and controllable boost/cut gain. each section would be a wire if set to 0 dB, so the whole thing would be flat if all sliders were set to 0 dB. now the overall transfer function for those cascaded biquads (which are a bunch of 2nd-order biquad transfer functions multiplied) can be separated into 1st-order partial fractions (with complex coefficients) and, it had occurred to me, those coefs could be determined (given the specified slider gains) by a machine using a procedure like the Heaviside partial fraction expansion method (sometimes called the "cover-up method"). i had tried to see if i could get to anything like a closed-form solution, but have not succeeded. (has anyone tried something like this?) anyway, even with no closed-form solution, a deterministic program could do the Heaviside cover-up method and convert from the cascaded biquads (each with 5 coefficients that the cookbook gets from specified resonant freq, bandwidth, and boost/cut gain) to parallel biquads with 4 real coefficients each (and one big wire with scaler summing in with the parallel biquads). but otherwise, i just don't see how a bunch of parallel BPFs would be expected to easily add up to a truly flat response. not without some trick that i'm clueless about. it's not a Linkwitz&#4294967295;Riley thingie, is it? curiously... r b-j
> > WHY?
Because I am interested in learning about how the equivalent of such frequency domain processing is done in the time-domain.
> Before the purists of this group inundate you: > 1. what do you wish to accomplish?
I would like to create a noise suppression algorithm for speech signals.
> 2. why do you pose your question this way?
I am just interested in knowing how altering the power in a certain frequency bin is done in the time domain. My guess would be that you adjust the variance of the bandpass filter output signal; in other words you scale the filter output. And can you just send a signal through N parallel bandpass filters and sum up the filter outputs and get the same signal ?
I just tried to run a simulation where I send a speech signal
through 10 bandpass filters. I sum up the filter output and get
more or less the same signal....So I guess that's how you do it.
Now I am just wondering what the effects of time-varying gains
in the bandpass filters will be....I imagine that the gain control
will depend on some VAD algorithm and an estimate
of the SNR of the filter-output. I am also wondering if there are
any advantages to splitting up the signal like this...







John wrote:
>> >> WHY? > > > Because I am interested in learning about how the equivalent of > such frequency domain processing is done in the time-domain. > >> Before the purists of this group inundate you: >> 1. what do you wish to accomplish? > > I would like to create a noise suppression algorithm for speech > signals.
I would like to build a Space Shuttle. I do know Space Shuttles use diodes. Would the 1n4004 be a good diode for a Space Shuttle?
>> 2. why do you pose your question this way? > > I am just interested in knowing how altering the power in a > certain frequency bin is done in the time domain. My guess would > be that you adjust the variance of the bandpass filter output signal; > in other words you scale the filter output.
Design H(z) to approximate the desired frequency response all at once.
> And can you just send a signal through N parallel bandpass filters > and sum up the filter outputs and get the same signal ?
Only if the filters satisfy perfect reconstrunction condition (Vetterli theorem). Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com
On Apr 23, 8:41&#4294967295;am, "John" <j...@nospam.thanks> wrote:
> ... > And can you just send a signal through N parallel bandpass filters > and sum up the filter outputs and get the same signal ?
You can if the filters are perfect reconstruction and the filter paths have equal delays. You almost can if the filters are near perfect reconstruction and the filter paths have equal delays. There is a considerable literature on FIR and IIR "perfect reconstruction" and "near perfect reconstruction" filters. Google is your friend. Audio equalizer implementations may have been somewhat less than perfect reconstruction. Dale B. Dalrymple
On 23.4.11 9:30 , robert bristow-johnson wrote:
> > but otherwise, i just don't see how a bunch of parallel BPFs would be > expected to easily add up to a truly flat response. not without some > trick that i'm clueless about. it's not a Linkwitz&#4294967295;Riley thingie, is > it? > > curiously... > > r b-j > >
Linkwitz-Rileys can do it, if the output polarities are selected correctly before summing. It is used in audio bandsplit compressors. -- Tauno Voipio
>> >> I would like to create a noise suppression algorithm for speech >> signals. > > I would like to build a Space Shuttle. I do know Space Shuttles use > diodes. Would the 1n4004 be a good diode for a Space Shuttle? >
I don't understand the analogy, but it's funny though.. :o)
> > Design H(z) to approximate the desired frequency response all at once. >
Are you suggesting that I should just set the gains for each frequency bin and then do an ifft to get the impulse response for the filter which the speech signal should be passed through?
> Only if the filters satisfy perfect reconstrunction condition (Vetterli > theorem). >
Thank you. I will read up on that.