Re: [LAD] LADSPA extension for periodic control values?

From: Fraser <fraser@email-addr-hidden>
Date: Tue Jun 16 2009 - 20:07:18 EEST

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

David Robillard wrote:
> On Mon, 2009-06-15 at 18:28 +0200, Stefano D'Angelo wrote:
>> 2009/6/15 David Robillard <dave@email-addr-hidden>:
>>> On Sun, 2009-06-14 at 23:44 +0200, Stefano D'Angelo wrote:
>>>> 2009/6/13 Jörn Nettingsmeier <nettings@email-addr-hidden-hochschule.de>:
>>> [...]
>>>>> sorry if this has been discussed before, but i didn't find anything in
>>>>> the archives...
>>>>> consider the case of periodic control values of LADSPA plugins, for
>>>>> instance the azimuth in a horizontal panner or the phase shift in a phaser.
>>>>> currently, they are usually marked as BOUNDED_BELOW and BOUNDED_ABOVE,
>>>>> but the host has no way of knowing that the upper bound is next to the
>>>>> lower bound, so that it can chose the shortest path to the next value
>>>>> when interpolating automation control points.
>>> [...]
>>>> * An LV2 extension would allow you to do that quite easily in LV2,
>>>> which is probably preferable these days.
>>> Maybe belongs in the units extension?
>> I don't think so: periodicity and units are quite different things.
>> For example: an angle could be used also to indicate direction (-180°
>> != 180°) or distance in space (0° != 360°), while integers for example
>> could be cyclic (rhythms, tones/semitones/harmony, musical cycles,
>> etc.)...
>
> Sounds an awful lot like units to me... "degrees out of 360" is a cyclic
> unit

Yes, but there is a bit more to it too. As input controls have a min/max they are rendered UI as either a slider or knob with a fixed upper
and lower bound that cannot be transgressed. This isn't true for a cyclic parameter. Although the values produced will be in some range (0
- -> 360, -pi -> pi, -1 -> 1) a UI knob would have no limits placed on it's movement (slider won't cut it here) - it can go round past the max
or below the min (max and min are actually the same point).

Obviously there is more that just rendering the UI, the host would need to know there are two paths to between points on a cyclic control
and hence must have a method for choosing the direction with automation etc (remember direction along with values?). It would be nice if it
also took care of shifting values to within the the desired range but a plugin with a cyclic parameter should be able to do the shifting itself.

Declaring the control as being in some angle UOM isn't enough to know if the control is cyclic, as the values may just represent an arc (and
why stop at just angle UOMs), there would need to be a flag to indicate to the host that a control is cyclic so that it could handle it
properly.

IMO if this is required it's a PortProperty.

regards,
Fraser

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFKN9FFNZroiEh4erwRAg7wAKCvELQJ9ntNvJQVqIlcHPC+1KVEdwCfemPK
FFHIsKjQ6iGvYSkQD3rB/Nw=
=ybbB
-----END PGP SIGNATURE-----
_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@email-addr-hidden
http://lists.linuxaudio.org/mailman/listinfo/linux-audio-dev
Received on Tue Jun 16 20:15:04 2009

This archive was generated by hypermail 2.1.8 : Tue Jun 16 2009 - 20:15:04 EEST