Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What is?
This is a first (partial) implementation of lv2 port groups extensions for mod-ui:
https://forum.mod.audio/t/support-in-mod-ui-for-lv2-port-group-extension/12798
It involve only the effect settings dialog and nothing more.
Why
Sometimes find the right control in the settings effect dialog is difficult.
The feature has some valuable pros and cons.
Pros:
Cons:
Example screenshots
Mixer before:
Mixer after:
Code Notes
Ttl files
In the
example-port-group-ttls
folder I added some files with added port group annotations, these file should be copied on the relevant bundle directories in order to test the patch.CPP backend
I tried various approaches and in the end I decided to load and cache groups while reading plugin ports.
A first implementation was loading all the groups defined in advance and then associate every group with the right plugin port, but I didn't like it because lilv doesn't allow to query nodes using partial wildcard on a subject so for each plugin I had to iterate over all the world group to match the right one: a waste of resource.
I think that I got all the memory management right, but a review from a more expert cpp developer is very welcome.
Python
Nothing special there, just bindings updates to the cpp structure involved
HTML / JS
My approach was to move the port group logic on the client side in order to spare some cpu cycles from the python server.
The code I'm talking is here: html/js/host.js row 374
The other relevant changes are in the css and settings templates:
.mod-group-item-title
in order customize all the title easlyIn the end I really don't get all the structure and details of this part of mod ui, but the solution seam to work well.