Today I implemented better UI generation for LV2 plugin controls in
Jalv, particularly grouping
controls under headings which makes a big difference. Unfortunately few
plugins group their controls currently, but hopefully more host support
will provide the incentive to do so.
Other improvements:
- Added a spinbutton to slider controls for precisely setting values
numerically
- Much more efficient layout to pack more controls on the screen at
once
- Support for named scale points ("ticks") on non-enumeration ports
Here is the UI generated for
Amsynth (after I added the
necessary metadata):

Still pretty utilitarian, but much more usable, which is the important
thing. Of course, this plugin is quite large, and has a pretty good
custom UI, but I happened to be polishing up its metadata anyway and the
controls group nicely so I used it as my test case.
Maybe some day this code will get smarter and evolve into a library that
can be used by other Gtk hosts. Better group layout is the obvious "next
level" advancement, a flat linear list of controls is pretty limited.
Unfortunately there's no stock Gtk container which can do text-like
reflow, which would be ideal. Perhaps a simpler scheme based on a
maximum reasonable width for a controller would do, where the table will
expand to have more columns if the window is wide enough for several.
Most of the metadata required to generate a good UI is also useful for
other purposes, for example groups make building a decent menu of many
controls feasible (e.g. to add automation lanes in
Ardour), and some types of host UIs like a modular
patcher inherently need to generate
their own "UI" of sorts.
Good metadata is not at odds with custom UIs, they each have their uses,
but it is important to remove the burden of custom UIs for simple
plugins with just a few controls that really don't need them. It's a
waste of that most precious of all resources - developer time - to have
to code UIs for a few sliders and toggles. Hopefully better host
generated UIs and support for more advanced controls like file
selectors
free up developers to spend more time making useful plugins and less
time wrestling with GUI toolkits.
It is, after all, all about the sound.