In an earlier posting, I had written about what a wonderful thing Quadrature Mirror Filter was, and that it is better to apply the Daubechies Wavelet than the older Haar Wavelet. But the question remains less obvious, as to how the process can be reversed.
The concept was clear, that an input stream in the Time-Domain could first be passed through a low-pass filter, and then sub-sampled at (1/2) its original sampling rate. Simultaneously, the same stream can be passed through the corresponding band-pass filter, and then sub-sampled again, so that only frequencies above half the Nyquist Frequency are sub-sampled, thereby reversing them to below the new Nyquist Frequency.
A first approximation for how to reverse this might be, to duplicate each sample of the lower sub-band once, before super-sampling them, and to invert each sample of the upper side-band once, after expressing it positively, but we would not want playback-quality to drop to that of a Haar wavelet again ! And so we would apply the same wavelets to recombine the sub-bands. There is a detail to that which I left out.
We might want to multiply each sample of each sub-band by its entire wavelet, but only once for every second output-sample. And then one concern we might have could be, that the output-amplitude might not be constant. I suspect that one of the constraints which each of these wavelets satisfies would be, that their output-amplitude will actually be constant, if they are applied once per second output-sample.
Now, in the case of ‘Polyphase Quadrature Filter’, Engineers reduced the amount of computational effort, by not applying a band-pass filter, but only the low-pass filter. When encoding, the low sub-band is produced as before, but the high sub-band is simply produced as the difference between every second input-sample, and the result that was obtained when applying the low-pass filter. The question about this which is not obvious, is ‘How does one recombine that?’
And the best answer I can think of would be, to apply the low-pass wavelet to the low sub-band, and then to supply the sample from the high sub-band for two operations:
- The first sample from the output of the low-pass wavelet, plus the input sample.
- The second sample from the output of the low-pass wavelet, minus the same input sample, from the high sub-band.
If somebody was to say, ‘The input from the high sub-band must also first be filtered, in order not to be as inferior as the Haar Wavelet,’ then the implication would be, the same amount of computational work as when using QMF, which PQF tries to avoid.
But I suspect that the Haar Wavelet actually does more damage in its low-pass component, than it does in its band-pass component.
Furthermore, since it seems to be a goal with PQF to stack them 5 levels deep, to result in 32 sub-bands, then it will only be the very-highest sub-band, which was not filtered at all when recombined. After all, every other sub-band was also a low sub-band at least once.
All of this offers one advantage, to the compression of sound based on the Frequency-Domain, which is being stated last.
When signals are compressed by way of the Discrete Cosine Transform, this transform does not provide an accurate metric for how much signal energy is present at each frequency. Instead, an alternative way to optimize this method would have been, first to compute the Fast Fourier Transform of the signal – thereby requiring 1024-sample intervals in practice – in order to derive both the audibility thresholds, and the scales by which the DCT needs to be quantized. So two transforms would need to be computed in parallel.
If the signal has been passed through a PQF bank first, the mere amplitudes of the resulting 32 sub-bands can be used instead. It does not need to follow, that a scale-factor be recorded for each of these 32 sub-bands, as scale factors may be recorded for sub-bands closer to being logarithmic in frequencies. But 32 amplitudes are still easier to simplify, than a 1024-sample FFT.