Technical discussions related to Audio Signal Processing (digital effects, acoustics, noise reduction, musical signal processing, etc).
Hi, I'm currently developing a multiband compressor having three bands. I didn't find much info on the internet regarding multiband compressors implementation details, but this is what I did: - feed signal into each band's FIR filter; - the output of each filter goes into each band's singleband compressor; - the three filtered/compressed signals mix together and go into a final singleband compressor that acts more like a limiter; The good part is that no mater how much I pre-gain, the final output will not get distorted (less than 0.01% overall). The bad part is that if I pre-gain a lot, the output spectral image is highly altered. Somehow, logically, this makes sense: - suppose you pump in signal having boundaries from -100 to +100 in 64bit float (+20db); - suppose each band's compressor is configured to act as limiters: threshold:0db, ratio:inf, attack:0ms, release:1000ms; - obviously, no matter how much signal will cross through band compressors, the output of each will not exceed -1..+1 values (or will very rarely); - now, when I mix again the signals from the three compressed bands, each band will have equal contribution in energy and this turns out to be a great problem; imagine how the output would sound if the high band would filter from 12khz to 20khz -> extremly boosted treble. I tried to overcome this issue by applying an attenuation for each band's threshold. The attenuation factor is computed to be proportional with band width. This way a band that contributes with less width would also contribute less in the output signal. Pretty fair, but still didn't fix the problem completely. Further I applied log scale to frequency. The results are better, but the problem still persists and it's quite noticeable. So my questions are: - did I miss something important about multiband compressors? - is there something special about signal distribution in multiband compressors that I should know? - did I go wrong anywhere in the whole picture described above? Regards, Alex ------------------------------------
Hello Alex, Maybe you should use the Fletcher-Munson curve and calcul a different gain level to apply on each band separately. An easier way is to apply that curve like an eq on your result when you mix bands together. This should give you better sound. I see you use a 12khz to 20khz filter for high frequencies. I think it is to high just for one of the tree bands. A larger band like 4KHz to 20KHz should be better... Generaly I use 0Hz->500Hz/500Hz->4KHz/4KHz->20KHz for a tree multibands compressor. But can I suggest you to add possibility to change that frequencies to be able to adjust frequencies with your ears ;-) Regards, Matthieu --- In a...@yahoogroups.com, mp_nova_2004@... wrote: > > Hi, > > I'm currently developing a multiband compressor having three bands. I didn't find much info on the internet regarding multiband compressors implementation details, but this is what I did: > - feed signal into each band's FIR filter; > - the output of each filter goes into each band's singleband compressor; > - the three filtered/compressed signals mix together and go into a final singleband compressor that acts more like a limiter; > > The good part is that no mater how much I pre-gain, the final output will not get distorted (less than 0.01% overall). The bad part is that if I pre-gain a lot, the output spectral image is highly altered. > > Somehow, logically, this makes sense: > - suppose you pump in signal having boundaries from -100 to +100 in 64bit float (+20db); > - suppose each band's compressor is configured to act as limiters: threshold:0db, ratio:inf, attack:0ms, release:1000ms; > - obviously, no matter how much signal will cross through band compressors, the output of each will not exceed -1..+1 values (or will very rarely); > - now, when I mix again the signals from the three compressed bands, each band will have equal contribution in energy and this turns out to be a great problem; imagine how the output would sound if the high band would filter from 12khz to 20khz -> extremly boosted treble. > > I tried to overcome this issue by applying an attenuation for each band's threshold. The attenuation factor is computed to be proportional with band width. This way a band that contributes with less width would also contribute less in the output signal. Pretty fair, but still didn't fix the problem completely. > > Further I applied log scale to frequency. The results are better, but the problem still persists and it's quite noticeable. > So my questions are: > - did I miss something important about multiband compressors? > - is there something special about signal distribution in multiband compressors that I should know? > - did I go wrong anywhere in the whole picture described above? > > Regards, > Alex > ------------------------------------
Hi, No, I didn't say I use a 12khz to 20khz filter for high frequencies. I said "imagine how the output would sound if the high band would filter from 12khz to 20khz" - it was just an example to emphasize my problem. And yes, I have floating cross-points for bands. In the beginning I wanted to apply the Fletcher-Munson curve, but at that time I didn't think it was a good ideea. There was also the problem that I didn't find a way to generate the curve.. Do you know how to do it? Use interpolation points? And besides that, the curve is not 1-dimensional, as it has different shapes at different intensities. Any ideea how to deal with this? Regards, Alex. Hi, > >I'm currently developing a multiband compressor having three bands. I didn't find much info on the internet regarding multiband compressors implementation details, but this is what I did: > - feed signal into each band's FIR filter; > - the output of each filter goes into each band's singleband compressor; > - the three filtered/compressed signals mix together and go into a final singleband compressor that acts more like a limiter; > >The good part is that no mater how much I pre-gain, the final output will not get distorted (less than 0.01% overall). The bad part is that if I pre-gain a lot, the output spectral image is highly altered. > >Somehow, logically, this makes sense: > - suppose you pump in signal having boundaries from -100 to +100 in 64bit float (+20db); > - suppose each band's compressor is configured to act as limiters: threshold:0db, ratio:inf, attack:0ms, release:1000ms; > - obviously, no matter how much signal will cross through band compressors, the output of each will not exceed -1..+1 values (or will very rarely); > - now, when I mix again the signals from the three compressed bands, each band will have equal contribution in energy and this turns out to be a great problem; imagine how the output would sound if the high band would filter from 12khz to 20khz -> extremly boosted treble. > >I tried to overcome this issue by applying an attenuation for each band's threshold. The attenuation factor is computed to be proportional with band width. This way a band that contributes with less width would also contribute less in the output signal. Pretty fair, but still didn't fix the problem completely. > >Further I applied log scale to frequency. The results are better, but the problem still persists and it's quite noticeable. >So my questions are: > - did I miss something important about multiband compressors? > - is there something special about signal distribution in multiband compressors that I should know? > - did I go wrong anywhere in the whole picture described above? > >Regards, > Alex >------------------------------------ ------------------------------------
Hi,
I am not a specialist, but I suppose you can easily find or create a reference 2d tab with the
"main" curve points, and I'm sure you can interpolate points if you need.
But finally, it is just similar to apply some frequencies filtering/eq on signal for each band
of compression with that tab as reference.
Maybe you should simply add an eq on each compressor band output?
[reference tab for gain/frenquency]
|
|
v
|->1st band comp -> bass eq |
input signal-> |->2d band comp -> middle eq | -> output signal
|->3d band comp -> treeble eq |
Another way is to apply gain reduction or amplification on frequencies, with the invert of the
Fletcher-Munson curve. (For each comp band)
[reference tab for gain/frequency]
|
|
v
|-> bass eq^-1 ->1st band comp |
input signal-> |-> middle eq^-1 ->2d band comp | -> output signal
|-> treeble eq^-1 ->3d band comp |
I hope it can help you ;-)
Regards,
Matthieu
Hi,
>
>I'm currently developing a multiband compressor having three bands. I didn't find much info
on the internet regarding multiband compressors implementation details, but this is what I
did:
> - feed signal into each band's FIR filter;
> - the output of each filter goes into each band's singleband compressor;
> - the three filtered/compressed signals mix together and go into a final singleband
compressor that acts more like a limiter;
>
>The good part is that no mater how much I pre-gain, the final output will not get distorted
(less than 0.01% overall). The bad part is that if I pre-gain a lot, the output spectral image
is highly altered.
>
>Somehow, logically, this makes sense:
> - suppose you pump in signal having boundaries from -100 to +100 in 64bit float (+20db);
> - suppose each band's compressor is configured to act as limiters: threshold:0db,
ratio:inf, attack:0ms, release:1000ms;
> - obviously, no matter how much signal will cross through band compressors, the output of
each will not exceed -1..+1 values (or will very rarely);
> - now, when I mix again the signals from the three compressed bands, each band will have
equal contribution in energy and this turns out to be a great problem; imagine how the output
would sound if the high band would filter from 12khz to 20khz -> extremly boosted treble.
>
>I tried to overcome this issue by applying an attenuation for each band's threshold. The
attenuation factor is computed to be proportional with band width. This way a band that
contributes with less width would also contribute less in the output signal. Pretty fair, but
still didn't fix the problem completely.
>
>Further I applied log scale to frequency. The results are better, but the problem still
persists and it's quite noticeable.
>So my questions are:
> - did I miss something important about multiband compressors?
> - is there something special about signal distribution in multiband compressors that I
should know?
> - did I go wrong anywhere in the whole picture described above?
>
>Regards,
> Alex
>------------------------------------
------------------------------------