Subject: Re: [linux-audio-dev] LADSPA problem
From: Steve Harris (S.W.Harris_AT_ecs.soton.ac.uk)
Date: Mon Oct 23 2000 - 20:12:05 EEST
On Mon, Oct 23, 2000 at 01:33:43AM +0200, David Olofson wrote:
> Well, a host cannot actually choose a signal range at all, as it
> can't know how all plugins will affect the signals. For example,
> filters (resonant ones in particular) can affect the peak amplitudes
> to great extent, and dynamically.
>
> So, what do you do; apply a dynamic compressor after every plugin,
> passing the current attenuation over a sidechain channel, or just do
> nothing?
Implicity compressing after every plugin is a non starter.
> To me, the latter makes a lot more sense, as that's what happens in
> analog systems. Also, one of the major advantages of using floating
> point data is just that you get rid of the restricted dynamic range
> of integer data. This makes things a lot easier inside the DSP loops,
> and I really think this advantage should serve the user as well, by
> letting entire plugin nets operate along the same principles.
I agree that floats are convienient for plugins, and, in a lot of cases the
plugin can do its stuff without caring what the amplitude of the signal
is, but not always.
> > This causes problems with amplitude dependent plugins. I don't seem to be
> > able to specify upper and lower bounds on audio ins (analyseplugin gets
> > confused, anyway, always shows 0 to 0).
>
> Do you have upper bounds on analog inputs when designing hardware FX
> boxes?
>
> Well, yes you do, due to limitations of how high reference voltages
> you can use in the cirquitry, but in general, you try to keep these
> limits way above any sane signal levels, so that clipping won't
> distort the signals in ways that the FX box cannot control.
Most hardware fx have a switch to deal with -4/+10 dB, and here was me
writing a plugin expecting -1 to +1 and it was getting -16000 to +16000.
Admittedly that was my fault for not reading the docs properly, but...
As you can work with low and overload signals in floats without much
loss, why not just propose -1/+1 (or whatever) as the nominal 0dB, and
and allow pre/post gain control to prevent fx nets clipping? Many fx will
work fine with any input anyway, and those that don't can be trimmed so
they get sane imput levels. That's more or less what you do in hardware.
Hell, this is computer land, you can just shove in an amp plugin if you
need to trim.
> > What are you supposed to do? The limiter I looked at works by asking
> > for the threshold (in arbitary units), but this isn't a very good
> > solution.
>
> How about dB?
Yeah, but relative to what? If you built a limiter which assumes and
asks for +-1, and it's getting +-16000, your limiter setting will be
+80dB odd, that's confusing.
> Or how about just saying that -1.0 .. 1.0 is the desired 0 dB
> amplitude of signals? This doesn't restrict anyone from using a
> completely different range, but it would make things a lot easier for
> users.
That would be good, might be better to use the AES(? or is it SMPTE)
standard for analogue 0dB. That way the float programs will be fine
(no resolution loss) and the int packages will have plenty of
headroom. Gives compressors and limiters traditionaly meaningful values.
IIRC 0dB analogue was decided to be -18dB dbFS, a bit low for my liking,
but hey, in 24bit land it probably doesn't matter, and you can always
drive into the "red" if you're in 16 bit.
That would make the "you're not supposed to clip" input range +-3 if I
did my arithmetic right, which sounds a bit odd, but when you say +-1 is
0db, and you have 18dB of headroom, it makes more sense.
> We have discussed this on LAD, but I can't remember if any final
> decision was made, or if it's in the offcial spec...
I couldn't find it. Not that it means it isn't there.
- Steve
-- Stephen Harris MALIBU Technical Officer & JoDI Webmaster IAM Research Group University of Southampton, UK 07970 557047 swh_AT_ecs.soton.ac.uk 023 8059 2774
This archive was generated by hypermail 2b28 : Mon Oct 23 2000 - 21:11:36 EEST