Re: [linux-audio-dev] Paper on dynamic range compression

From: Dan Mills <dmills_00@email-addr-hidden>
Date: Wed Oct 18 2006 - 02:48:59 EEST

--- John Rigg <ladev@email-addr-hidden-man.co.uk> wrote:

> If the control signal is derived from the upsampled
> input
> to the compressor, that is taken care of.

But that puts potentially expensive gain calculations
into the fast sr code, also I was rather planning on
using the impulse used for the upsampler to provide
the band limiting for free.
 
> > ...
> > With both the audio and control bandlimited to
> >0.25 * FS, we can safely multiply them, any more
then
> >that (split any way you like) and it all falls
apart.
>
> Yes; that more or less makes 2x upsampling
> essential.

True as far as I can see, and there is a sting in the
tail - you cannot just upsample at the input to
something like jamin and have done with it, you would
have to band limit between each stage as otherwise the
HF crud from the first stage will just get aliased in
the second!
 
BEAST was the project that had the SSE 2* up/down
sampler code that seems to be reasonably quick.

> Isn't there always a discontinuity here anyway? When
> it changes fromattack to decay the rate of gain
change switches
> suddenly from negative to positive. A bandwidth
limit on the
> control signal should take care of that, as long as
the cutoff is
> steep enough.

True when I think about it.

That is why I am trying to do the upsampling **JUST**
before the gain multiplication, so that the upsampler
also provides the band limiting.

The downside (Apart from the CPU load) is the need to
add a Latency port to things that would not otherwise
need one.

I might (depending on how manic work gets) have
something based on SC4 using libsamplerate by the
weekend.
I doubt that libsamplerate is the correct tool for
this however, we don't need the features and given we
know the ratio is 2, we can gain some serious speedups
with vector optimisations.

Would an 'Aliasing free gain cell' library be of
interest to anyone? The idea would be that it could be
dropped in place of the whole

output = gain * sample;

thing and would handle upsampling gain and sample
arrays, multiplying them and downsampling the result.

This would potentially make fixing a LOT of the LADSPA
dynamics much easier and would be one place to bugfix
rather then scattering that pain all over the place.

The API is likely to be 'interesting' as most dynamics
plugs don't generate an array of gain values then
apply them, and a single sample streaming resampler
doesn't bear thinking about.

Regards, Dan.

Send instant messages to your online friends http://uk.messenger.yahoo.com
Received on Wed Oct 18 04:15:04 2006

This archive was generated by hypermail 2.1.8 : Wed Oct 18 2006 - 04:15:04 EEST