[LAD] Plugin 1/oct frequency controls (AMS/MCP/VCO)

Fons Adriaensen fons at linuxaudio.org
Mon Aug 20 16:06:23 UTC 2012

On Mon, Aug 20, 2012 at 11:24:17AM -0400, David Robillard wrote:
> On Mon, 2012-08-20 at 10:18 +0000, Fons Adriaensen wrote:
> > On Mon, Aug 20, 2012 at 12:27:12AM -0400, David Robillard wrote:
> > 
> > > tl;dr: I think the most reasonable standard for an absolute 1/oct
> > > frequency unit is 0.0 = 440Hz
> > 
> > You're confusing two things: unit and reference point. The second
> > you have only on a log scale, for example if you use dB you need
> > to define what 0 dB means.
> Good point, but a "unit" in general can include a reference point as
> part of its definition.  When used relatively, as with dB for e.g. gain,
> it's usually obvious what the reference point is.  When used absolutely,
> sure, you need a reference point, but multiple reference points is hell.
> Augmenting "octaves" is probably a bad idea though, I will probably make
> a new unit for "octaves centered around <whatever>".
> > The unit here is 'octaves'. The reference point is not a property
> > of any port AFAICS. It could be a property of the plugin: the
> > frequency it is set to when all control inputs are zero.
> That is a sensible way of looking at it, but a plugin /could/ have two
> ports in octaves with different reference points.

If have som difficulty in imagining what that would mean in practice...
Could you give an example ?

As I see it, all (frequency) ports are relative. +1 means 'add an
octave to whatever you have'. If they are all zero (which means they
don't have any effect) you get the internal reference frequency.
What difference could there be between two ports, both 'octaves',
both zero, but having a different reference ?

> I guess, since it's your code... how do you feel about using 440 instead
> (at least in LV2 versions), and how difficult would this be to adjust?
> It's not immediately obvious to me what magic number twiddling would
> have to happen.

I you couild give a list of the ones you're working on, I could give you
the magic numbers.

Note that these plugins really were designed for AMS. Some controls (those
that map to GUI sliders etc) are 'control rate', the others are audio rate.
The latter ones are never used as such, they are subsampled and interpolated,
with the interpolation being done on the internal variables rather than the

Alsa note that the VCO ones are really out of date. I have much better
replacements, but they'll have to wait. 

> I realize in reality I am probably stuck with this (IMO ill-considered)
> convention... oh well.  Seemed worth mentioning anyway.

The thing that matters is consistency. For example if you have something
that converts MIDI note numbers to a 'voltage', that should use the same
reference point as the plugins. I probably followed the convention used
by AMS' midi controller modules.



A world of exhaustive, reliable metadata would be an utopia.
It's also a pipe-dream, founded on self-delusion, nerd hubris
and hysterically inflated market opportunities. (Cory Doctorow)

More information about the Linux-audio-dev mailing list