[LV2] Multiple questions related to parameter handling and UIs

Reuben Thomas reuben.thomas at me.com
Tue Feb 16 00:35:17 PST 2021

I'm currently investigating adding LV2 support to a plugin framework. For the
most part, the process has been very straightforward and enjoyable, thanks to
the documentation and also to the abundance of open-source plugins and hosts
that are available for testing. It's clear that a lot of work has gone into the
LV2 ecosystem, so thanks for that!

Unfortunately, I've run into a few issues that I'm not sure how to resolve.

Would anyone here be able to answer these questions?

- Firstly, I have some questions about parameters. Plugins built in the plugin
  framework currently have VST-like parameters which can change themselves at
  any time. It seems that such parameters should not be exposed as control
  ports, because hosts expect that control port values will never be changed
  directly by the plugin. The 'patch' extension seems like a better fit, but
  it's not clear how to replicate some features of control ports with the patch
  API. Specifically:

    - The 'touch' feature of the UI extension expects that each parameter
      corresponds to a unique port, but the patch API uses a single port for
      multiple parameters. Is there a convention for communicating 'touch'
      information with the patch API?

    - Some of the PortProperties in the core spec would be useful to apply to
      parameters, rather than individual control ports. Is it valid to declare
      `ScalePoint`, `enumeration`, `integer`, and `toggled` on a Parameter
      rather than a Port? If not, is there some alternative way of conveying
      this information?

    - My plugin framework allows defining parameters with custom functions to
      convert to/from string. This is a little more flexible than the LV2
      system, which provides the host with parameter ranges and units, and
      leaves all the string conversions to the host. Is there any way to allow
      an LV2 plugin to format its own parameter value strings?

- I also have a UI-related question: When a UI requests a resize via the resize
  struct, should the returned size incorporate the scale factor passed as an
  option to the UI? That is, is the requested value in pixels or points? I
  could work this out empirically by testing some plugins which implement
  'scaleFactor', but it'd be nice if this was documented in the spec.

I hope that's not too much all at once. Thanks for reading!

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lv2plug.in/pipermail/devel-lv2plug.in/attachments/20210216/390db79a/attachment.html>

More information about the Devel mailing list