Skip to main content
Topic: an idea can't be implemented in analysis/synthesis filter banks (Read 2322 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

an idea can't be implemented in analysis/synthesis filter banks

Firstly, I'll appologzie that my problem is so long.
My idea is:
There is an Low Pass Filter follow a Synthesis Filter bank
So, I think if I "remove the high frequency component at the input of synthesis filter", the result show be equal.
But the fact is NOT true.

Show bellow, Input is a Chirp(Swept-frequency cosine) signal whose fs=48000, duration=2 seconds,  from 40Hz to 23000Hz. The LPF filter the frequency above 6000Hz

Figure 1. The spectrogram of the input Chirp

Figure 2. The spectrogram of LPFed synthesis filter's output

Figure 3. The spectrogram of MY Method's output
according to subband's frequency distribution, i.e. the frequency abve 6000Hz should be located in the subband 8,9,10.....31, I remove them. And the synthesis the other subbans.

Zoon In at the aliasing area

Here, the Analysis/Synthesis filter banks is from MPEG1-LayI/II/III Audio Codec's 32 bands filters.
I have no idea about the reason of frequcncy aliasing at about 0.5 second, Zoomed in above figure.

I am appreciated your answer. My MSN:

an idea can't be implemented in analysis/synthesis filter banks

Reply #1
That's simply because your filterbank is critically sampled & uses filters with overlapping magnitude responses. So, you'll have frequency alias in the subband domain which is however cancelled again during the synthesis stage. If you simply fill some subbanbds with zero samples before synthesis this cancellation doesn't work anymore.

You can minimize these artefacts if you apply a simple lowpass filter within the "last active band" (#7 in your case) with a cutoff frequency located right in the middle of the band. So, you'll get roughly 7.5 of 32 bands of bandwitdh. Since the cutoff frequency is centered within one subband you'll get much less aliasing.


I guess a simple half-band filter already does the trick (= acceptable amount of aliasing).
H(z) = 256/512 + 150/512 * (z^-1 + z^1) - 25/512 * (z^-3 + z^3) + 3/512 * (z^-5 + z^5)

Be sure to apply this filter before you flip the sign of every 2nd sample of every 2nd subband so it'll work for all cases and not just all the "even bands" (#0, #2, #4, counting from zero).

I wonder what LAME's "polyphase lowpass filter" is doing. I havn't checked but it may be the case that the LAME devs don't bother with this at all and just set the subband samples of upper bands simply to zero since the region around the cut off frequency is supposed to be inaudible anyways. ;-)


SimplePortal 1.0.0 RC1 © 2008-2020