LV2 Controllers Groups

Hi @zynthianers!

Good news! I’ve just implemented “LV2 Port Groups”, a LV2 extension that allows to group the controllers and other ports in a convenient way.

It’s not very extended yet, so there is only a few plugins that currently have groups defined. You can try with the V1 series:

  • synthv1
  • samplv1
  • padthv1
  • drumkv1

Probably there are more plugins, so please, send feedback if you find more.

Anyway, we can add the “group info” to the plugins we want. Currently it must be done by hand, but we could develop a more friendly interface if convenient.

For testing this feature, please change your zynthian-ui branch to “ctrl_group” and update.



I missed to show how it looks. This is how it looks when the plugin has groups defined:


And this is how it looks when there is no groups defined, but several FX’s are chained:


And this is how the standalone engines looks with FXs:



1 Like

Would somebody like to create a “grouping TTL” for some of our favorites engines?

  • OBXd
  • Dexed
  • Noize Maker
  • etc.



This is huge! where are said TTL stored? Is this support for native lv2 parameter groups?
I’m trying to do the noisemaker one but i can’t find a ttl with groups as an example

this is fantastic news !

Okay, I’m figuring things out i think.

This is an implementation of the native parameter grouping in lv2 (it’s actually port grouping)
I’m trying to do calf for whatever reason, and I’m not sure when the ttl files are read, so i’m not sure how to test this without rebooting every change.

Okay, i got it working, I just did Raffosynth fully (here is the pull request to the original repo)
I’m gonna try noisemaker next.
EDIT: Oh just noticed noisemaker updated their UI, it looks great now!

So far I’ve not found any bugs with the control groups implementation, haven’t stressed it tho

1 Like

Hi @jofemodo - I am a bit confused as to what this actually implements. Is it purely a visual presentation thing with each group of controls being listed together below the group title?

Initially I did not see any change. I scanned for plugins (not sure if that was needed and at some point the UI restarted (not sure why) but after that I could see the change.

From what I’m seeing, yes, this allows for visualization of parameters in a grouped manner.
Other than that, the order within the group and the order of the groups is not something i could control. also if any parameters didn’t make sense I couldn’t hide or remove them with this group feature

You don’t need to rescan plugins. Check with the synthv1, for instance. you will see that the controller screen list, that before were shown as a numbered list, now it’s shown as named groups that have sense from a “sound design” POV. As i commented above, currently only a few plugins use this feature, but we can add the group info (ttl) for the rest, and everything is LV2-wise.

Also, as you have notes, the controller screen list format has changed a little bit:

When there are FXs on the chain, the controller screens from different chain elements (plugins) are separated with a “title bar” instead of adding the plugin name as prefix on every row. This saves some horizontal space so the group info can be better displayed.


Woaooo! That’s great! Pushing changes upstream is the better option, so +1 to your PR on RaffoSynth. Anyway, this is not going to work on all cases, so we should have an alternate way:

  • Forking. Not my favorite, specially for those plugins that we install from repo (deb package).
  • Applying the changes on zynthian, as a patch.

What do you think?

BTW, i will add groups to OBXd ASAP. Somebody wanting to do it for Dexed? :wink:


Where did you get this nice interface? Was it updated on your zynthian? :thinking:

No, I was looking to open it up on the desktop to map groups properly and went to the official page and saw it, it’s a new version so maybe our needs updating

Omg can’t wait for obxd!

Regarding forking or whatever, I’d honestly just try to pull things from repos when available, and patch them if need be with our own tweaks. In my opinion maintaining a patch is way easier then maintaining a fork, but I’ve not got a ton of experience either way. I actually really like the way modui does it, where they add their own layer, a “patched by design” sort of thing. It does create more friction when adding new plugins but I think integrating the ones we already have brings more value then adding more and more. And if any new plugins are worth it then they’ll probably get the work on them

1 Like

You don’t have to wait more:

Obxd.ttl (30.5 KB)

Simply replace the file on:


and restart the UI.

Please, update before. I’ve improved some details about how controller screen names are generated.

As you can see, i’ve totally refactored the TTL and added ScalePoints to lots of parameters, so now you have selectors with options, ON/OFF boolean controllers, etc.

I couldn’t fix the ordering because the UI use the port “index” for binding the widgets with the control ports. Also, i think there is some parameter with bad name or wrongly assigned.
Finally, there are a few parameters ungrouped because ican’t find them on the GUI and i don’t know what the hell they do :thinking: Somebody could help with this?



OK! the feature is merged on testing and i’ve included the 2 custom ttl files we have generated until now. So the list of plugins with grouped controllers is:

  • obxd => to improve!
  • raffo
  • synthv1
  • samplv1
  • patchv1
  • drumkv1
  • amsynth
  • MDA JX10 => partially grouped!
  • MDA DX10 => partiallly grouped!

simply update on testing and give it a try!! If you changed to devel branch “ctrl_group”, it’s time to change back to testing.

I hope more custom ttls will be coming very soon. Some volunteer for working on these:

  • Dexed
  • Noize Maker
  • Helm
  • YC20 Organ
  • Calf Monosynth
  • DrumSynth
  • Fabla
  • Nekobi
  • String Machine
  • Vex
  • etc.

Of course Audio & MIDI FXs are also good (and probably easier) targets. Choose your favorites and contribute with a good “controller grouping”!! :wink:



I notice a directory /zynthian/zynthian-data/lv2-custom. Does this directory relate to this topic?

When connected via VNC using a QWERTY keyboard to control the Zynthian, after pressing Enter to enable select mode the selection keeps jumping back to the top of the list.

Totally. In this directory we put the customized ttl files, while they are not merged in the upstream project.


But is the folder read? I tried to add Pianoteq config to that folder but it did not change behaviour so I had to change the config in /zynthian/zynthian-plugins/lv2.