On Wed, Mar 2, 2011 at 2:55 PM, Stefano D'Angelo <zanga.mail(a)gmail.com> wrote:
Plugins expose "control ports" (which, to
me, are a design mistake how
they're done, but whatever) for the purpose of managing how they work.
no different than any other plugin API, except that the concept is a
bit more unified than "data" and "parameters" as found in, say, VST
or
AU.
Since it's stuff for the user, they should be
effective and
understandable for the user. And here's the first problem: parameters
and GUIs don't necessarily have to match! E.g., my amp simulator
algorithm should really expose stuff like "air impedance" or
"triode's
magnetic perveance", that's stuff the "average user" ("dumb"
guitar
player) doesn't understand. I would prefer to show "air temperature"
and "triode model" instead.
AU, which is the only other plugin API to explicitly support
plugin<->GUI separation (even across processes) works in exactly the
same way as LV2. there are many AU plugins which do precisely what you
describe, yet still use a host-mediated parameter accessor API to both
control and represent current plugin state. this conceptual issue has
been thrashed out many times on the coreaudio mailing list as far back
as 1994, and nobody ever convinced the coreaudio guys (who are a smart
bunch of guys) that they had done it wrong.
the principle remains: access to plugin parameters is mediated via the
host to facilitate several things that would be impossible to do
properly, if at all, if they instead happened directly.
meta-parameters are used to provide the kind of thing you're
describing, and the "real" parameters are marked as "not for display"
in the (unlikely) event that the host creates the GUI for the plugin.