LMMS / lmms

Cross-platform music production software
https://lmms.io
GNU General Public License v2.0
8.16k stars 1.01k forks source link

LV2 plugin layout #6798

Open zonkmachine opened 1 year ago

zonkmachine commented 1 year ago

Summary

Observations and suggestions for the LV2 instrument/effect plugin layout.

Screenshot

1 - master togglebad

2 - Test for toggle first togglefixed

3 - Search field on > 6 items patched2

4 - ComboBox text width, today 64 combobox64

5 - ComboBox text width, increased to 96 combobox96

JohannesLorenz commented 1 year ago

I was so free to edit your post to add letters A-D to the points.

(A) must be resolved with #6456 - I addressed it there. (B) agreeing - but probably ugly to fix. Feel free to try it out, or motivate anyone to do it :grin: (C) agreeing, but the code here will be changed in #6456 - Adding a comment there. Intermediate fix in #6799 . (D) agreeing that this should be fixed. The whole statement should be reversed IMO, starting to ask for the most specific (boolean) first, ending with the most generic (integer). Submitted #6799 .

@zonkmachine would be nice if you could review/test #6799 . It should fix C and D.

zonkmachine commented 1 year ago

(B) agreeing - but probably ugly to fix. Feel free to try it out, or motivate anyone to do it :grin:

Apparently the checkbox use the system application font size.

michaelgregorius commented 1 year ago

Hi @zonkmachine, hi @JohannesLorenz,

I propose to merge #2068 and then to use the new and adjusted controls to implement the generated LV2 GUIs. You can see the latest changes starting from this comment.

By doing so the LV2 plugin GUIs will be immediately usable on HiDPI displays which does not seem to be the case for the current implementation.

The pull request also contains a change to the LedCheckbox class which enables it to use the system font size by setting it to a new non-legacy mode. So that class becomes usable on HiDPI displays as well. This would solve problem (B).

What do you think?

JohannesLorenz commented 1 year ago

What do you think?

@michaelgregorius This is basically a cool thing. I think it would be weird to let Lv2 have redundant/different graphics to Ladspa. Better kill two birds with one stone.

When I wrote Lv2, I implemented the classes LinkedModelGroups and ControlLayout which abstrahize almost exactly the Ladspa behavior. These classes are the base for Lv2 and (soon?) VST2 and VST3. However, I was too lazy to let Ladspa reuse this class, too, so I fear we now have two worlds. Do you think your PR can easily be followed up by a PR that moves the new Ladspa UI into the LinkedModelGroups UI, effectively letting Lv2, VST2, VST3 and Ladspa all use LinkedModelGroups?

Also, it should be noted that the LinkedModelGroups/ControlLayout classes are currently being reworked in #6456 .

michaelgregorius commented 1 year ago

Hi @JohannesLorenz,

I guess it should at least be possible to use the controls with the dialog for LV2, VST2 and VST3. The possibility to abstract the LADSPA models the same way as the other ones depends on how similar they are and how well they map to each other. I think it would at least be a good step to make them look very similar by using the same controls wherever possible.

JohannesLorenz commented 1 year ago

OK, so anyways, this tells us that (B) will be solved with the new layout. And intermediate fix would be possible, but probably not recommended. All of this assumes though that #2068 will be accepted and merged.

zonkmachine commented 1 year ago

@michaelgregorius @JohannesLorenz #2068 looks like the way to go. Intermediate solutions doesn't sound necessary here.

michaelgregorius commented 1 year ago

@zonkmachine, @JohannesLorenz: do you want to review #2068?

zonkmachine commented 1 year ago

@michaelgregorius I'll have a go at it.

M4rotte commented 1 year ago

I don’t know if this has already been reported nor taken into account: in the new LV2 controls dialog, that the drop-down kind of control isn’t large enough to see the entire value label.

You can see that for example on the CALF Filter LV2 plugin: the filter type selection (which is an example of what I mean by “drop-down kind of control”), when folded, doesn’t show what’s the filter currently selected type. And you can’t see it either when the list is un-folded, because the selected one neither is placed first in the list or highlighted in any way.

zonkmachine commented 1 year ago

@M4rotte I don't think it has been reported before but I've noticed this and have experimented with different widths. Today it's a fixed 64 'of some unit'. Maybe 80 - 100 would be a better choice.

width today 64 combobox64

width increased to 96 combobox96

zonkmachine commented 1 year ago

@JohannesLorenz I added the text width as a task above. I don't know if it's possible to make the dropdown menus variable in size. I think it could work if you make a limited number of sizes available and then select size from the longest element in the menu. If you go with a fixed width the width should be increased. 100 is a better value I think.

https://github.com/LMMS/lmms/blob/fa05ce20b8578b77b19fd22d8c63eb59fe7ea0e1/src/gui/Controls.cpp#L74

michaelgregorius commented 1 year ago

Hi @zonkmachine, @JohannesLorenz,

I have merged #2068 today so the new controls like the bar control are now available in master.