[LV2] Control ports vs lv2:Parameter
Stefano D'Angelo
zanga.mail at gmail.com
Fri Jan 17 08:03:30 PST 2025
Il 30/06/24 08:40, Stefano D'Angelo ha scritto:
> Il giorno mar 25 giu 2024 alle ore 23:27 David Robillard
> <d at drobilla.net> ha scritto:
>> On Thu, 2024-06-06 at 12:05 +0200, Stefano D'Angelo wrote:
>>> Hi all,
>>>
>>> Is there a way to provide "graceful degradation" for hosts that do
>>> not
>>> support lv2:Parameter but still use lv2:ControlPort? Should/could
>>> both
>>> mechanisms be used to refer to the same parameter?
>> Both mechanisms can be used to refer to the same "conceptual" parameter
>> in a sense, by giving ports an lv2:designation. This doesn't amount to
>> a graceful degradation mechanism for old hosts, though (it could be
>> useful for version and/or state migration among other things, but it's
>> not a mechanism).
>>
>> I guess you could invent one - a message to disable actually using the
>> value of the control ports or something - but it seems like it would be
>> quite a mess.
>>
>> I'd suggest just being the chicken or the egg instead, so to speak.
> Ok, clear. I guess I'll have to support one mechanism per plugin,
> perhaps having different versions of the same plugin if I want to
> support both.
>
> Maybe in the future we could have something like
> "is-an-advanced/better-version-of" predicate in the RDF - like dc:
> replaces -, so that hosts might actually hide the "not advanced/worse"
> plugin if the better one is supported?
Sorry to resurrect this discussion after such a long time.
I just noticed that the documentation of lv2:Parameter says that "a
parameter could be controlled via a ControlPort, messages, or both", so
I was wondering if it would be ok to have both a mandatory ControlPort
and a lv2:connectionOptional Atom port "writing to"/"reading from" the
same lv2:Parameter (the Atom port would be also normally operate on all
other input our output controls). If that's the case, the plugin could
also lv2:requiredFeature urid:map, and thus effectively provide graceful
degradation in a sense.
Before I give it a try, do you think this is blasphemy or does it sound
reasonable and feasible?
(BTW, in case you wonder, I am interested in supporting Ardour, Reaper
and Pipewire, and AFAIK Pipewire doesn't support reading/writing
lv2:Parameters via Atom ports, see
https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/4042.)
Cheers,
Stefano
More information about the Devel
mailing list