[LV2] Idea for extension to handle Midi CC controls

Jeremy Salwen jeremysalwen at gmail.com
Fri Jun 8 02:45:56 PDT 2012

Currently, a plugin writer is in a bit of a sticky situation: if the plugin
supports MIDI CC events, then the internal parameters are hidden from the
host.  You can do something where you have a switch which toggles between
MIDI CC control, and Control Port control, but this is not a fun thing to
do, and I think it is additionally confusing for the user.

I was thinking about the ideal behavior from the user's point of view, and
a realize that a knob which sends midi CC events to the plugin would be
ideal.  It would be bonus if this knob listened to the MIDI stream and
adjusted its value to match.  If there were an extension which specifies
"virtual ports" in the .ttl which are actually just refences to a midi port
+ a CC index, and the host just displays a knob which generates events for
the MIDI port, then the plugin would be relieved of the duty of having
"duplicate" inputs.  I think this is simple enough that it could be easily
be transparently implemented in lilv or whatever successor library.

On top of the nice behavior for CC controls, this sort of extension could
easily use the atom:sequence extension to allow control ports which are
event based (again transparent to the host application if desired).  I know
some people on the mailing list consider such a mechanism superior, and
this could be a stepping stone towards widespread LV2 support for this sort
of control (with plugins getting parameter changes before they happen,
etc), while still providing perfect backwards compatibility for hosts who
don't want that fine level of control.

As always, I may be far off track, so let me know where I'm wrong.  I'm
happy to help with code, etc, and I'm currently working on a host and
synthesizer in tandem, so they could easily become a proof-of-concept for
this sort of extension.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lv2plug.in/pipermail/devel-lv2plug.in/attachments/20120608/c97c42f9/attachment.htm>

More information about the Devel mailing list