lmms
lmms copied to clipboard
Lv2 UI - Testing
This is solely for early testing yet. From the code review perspective, there are still a few things to be done.
When reporting an issue, please try to answer the following questions:
- Does this issues occur in any other host, like Ardour/Jalv/...?
- If the issue happens with UI, does it also happen if UI is turned off? (Edit -> Settings -> Performance -> Plugins -> External plugin embedding -> "No embedding")
Open issues:
- [ ] Wait for SUIL vcpkg port?
- [x] Regression: The old ZASFX window is oversized (but TripleOsc is not)
- [ ] Always show LMMS UI (allow to hide it), even if Plugin UI is available
- [ ] The size and the resizability seem sometimes buggy in this PR (LV2_UI__noUserResize. LV2_UI__fixedSize)
- [x] "Rotary Speaker - simple" is way too small
- [x] Issues with Cardinal Synth
- [x] Effects have the resize markers even if not resizable
- [ ] Sometimes, plugins UIs do not have optimal size. Reason: Lv2ViewProc inside Lv2ViewBase might be embedded wrong? Waiting on L/R routing, see below
- [x] Ban plugins if they are GUI only AND GUI is not enabled
- [x] LSP EQs cannot use any filters
- [x] Implement requestValue (this has to wait for the Patch extension)
- [x] Implement ShowInterface (will not be implemented for now)
- [x] Implement touch - NO, separate PR
- [x] Add Mono-Effects to ban-list if there are analogue Stereo effects (especially LSP)
- [ ] Rebase on messmerd's L/R routing (after it has been finished, also waiting on #7247 )
- [x] X42 effects have only GTK UI - are not loadable with this PR - jalv has the same problem - x42 effects need Qt UI for that
- [x] Effects do not seem to load anything (Ping Pong Pan, 3 Band EQ)
- [x] setBfree/Dexed issues
- [x] Dexed octave issues
This now runs successfully in the CI, and it supports UI there for Linux and Macos, but not Windows yet. @DomClark , as discussed, I would appreciate if you would submit a vcpkg PR (and then add suil to our vcpkg.json in this PR or tell me to). In the end, the CI for Windows should not show
* SUIL for plugin UIs : not found, install it or set PKG_CONFIG_PATH appropriately
but
* SUIL for plugin UIs : OK
Dexed.
-
When I press it's built-in keyboard there is only sound in the left channel. Sending a note from lmms presents sound on both channels but if I change sound on Dexed, the left channel will follow the new setting but the right will stay with the default sound.
-
Octaves. Dexed C4 corresponds to LMMS C5. Both can't be right. Right?
- When I press it's built-in keyboard there is only sound in the left channel.
I assume it's related to this PR: https://github.com/LMMS/lmms/pull/7247
I assume it's related to this PR: https://github.com/LMMS/lmms/pull/7247
The LV2 implementation in LMMS uses linked models, so mono plugins are actually 2 linked plugin instances (L and R) behind the scenes. Linked models need to be kept in sync for parameter updates which is already a complicated task, but adding a UI where updates can come not just from LMMS but also the plugin itself makes the linked model design untenable in my opinion. The issue with dexed sounds like exactly the type of synchronization problem I feared.
I would strongly recommend to @JohannesLorenz to replace the linked model design with the L/R routing design from #7247 once it's merged. I've been using it successfully for both CLAP and VST plugins and it works great. Making the switch will almost certainly be less work than trying to fix the bugs with linked models.
Not only is the L/R routing approach dramatically simpler and less buggy than trying to use linked models, it is also very flexible and intuitive from a user standpoint and uses roughly half the resources in the common situation where you only want a mono-to-stereo mix from your mono plugin.
I assume it's related to this PR: #7247
The LV2 implementation in LMMS uses linked models, so mono plugins are actually 2 linked plugin instances (L and R) behind the scenes. Linked models need to be kept in sync for parameter updates which is already a complicated task, but adding a UI where updates can come not just from LMMS but also the plugin itself makes the linked model design untenable in my opinion. The issue with dexed sounds like exactly the type of synchronization problem I feared.
Has this already been fixed? It sound like a waste of resources, a source for tons of bugs and a complete misunderstanding of how these things work. Sorry, if I am a bit blunt here but keeping it like this would take the implementation in a completely wrong direction. I am pretty sure that no other DAW implements it like this.
If a plugin reports as mono then simply copy the resulting mono output buffer of the single instance into the left and right channel buffers of the stereo track.
I would strongly recommend to @JohannesLorenz to replace the linked model design with the L/R routing design from #7247 once it's merged. I've been using it successfully for both CLAP and VST plugins and it works great. Making the switch will almost certainly be less work than trying to fix the bugs with linked models.
100% agree!
I pushed a few commits to help with AppImage findings over on Discord's #testing
channel.
For now, I copy the suil-0
modules to <APPDIR>/lib/suil-0/
, but I can't find a suil API to notify it of this location, so per @JohannesLorenz's advice, I set SUIL_MODULE_DIR
in our launcher script.
(Until #7252 is merged, I can't test this on ARM64, so I'm just hoping this fixes the AppImages)
Initial testing on MacOS is OK but we don't use a launcher script for MacOS, Perhaps qputenv()
combined with qApp->applicationDirPath() + "../Frameworks/suil-0/
? Thoughts welcome
Initial testing on MacOS is OK but we don't use a launcher script for MacOS, Perhaps qputenv() combined with qApp->applicationDirPath() + "../Frameworks/suil-0/? Thoughts welcome
Done via 5bb73b0. Feel free to move the code elsewhere if needed.
When I reload a project the lv2 gui doesn't update. The settings seem to stick, just the gui is showing it's init setting.
When I reload a project the lv2 gui doesn't update. The settings seem to stick, just the gui is showing it's init setting.
@zonkmachine Can you please elaborate?
I did:
- Creat a new Lv2 project, opened Vitalium, changed some params, saved the project
- File -> Recently Opened Projects ->
- Reopen the Vitalium UI
=> All params are as before.
Did I understand "reload" wrong?
* Creat a new Lv2 project, opened Vitalium, changed some params, saved the project * File -> Recently Opened Projects -> * Reopen the Vitalium UI
=> All params are as before.
With nekobi I do:
I save and reload and I get:
The sound is the same as when I saved but the settings show a default nekobi.
@zonkmachine Thanks. I fixed it.
@zonkmachine Thanks. I fixed it.
This took care of the instruments but the effects see the same issue and this is not fixed by 3bcf80b.
This took care of the instruments but the effects see the same issue and this is not fixed by 3bcf80b.
Actually, this commit should have fixed it for both... Which effect do you mean?
Sometimes, producing input for an effect (i.e. pressing a key) might force a lazy UI to update. Not sure if this helps here.
Actually, this commit should have fixed it for both... Which effect do you mean?
Ping Pong Pan 3 Band Eq GxRedeye Chump
There were more. Actually, the only Lv2 effect with gui that I've come across that works in this regard is Calf Analyzer (not an effect per se but the stored parameters are displayed correctly when reloading a project).
Sometimes, producing input for an effect (i.e. pressing a key) might force a lazy UI to update. Not sure if this helps here.
Nope.
Oh, I get it. For instruments, first, the instrument is loaded, which includes loading the savefile. Only after that, the UI is initiated - at which time the mentioned fix sends all port values (knobs, sliders etc) to the UI. For effects, the UI seems to be opened immediately, and the default values are sent to the UI. Only after that, the savefile values are being loaded, but they are not sent to the UI anymore.
Thinking about a fix...
Confirming: Ardour sends port updates of all ports to UI after loading a preset (LV2PluginUI::queue_port_update
).
New issue. The setBfree organ plugin doesn't save the settings at all.
New issue. The setBfree organ plugin doesn't save the settings at all.
Does this work in Ardour or another DAW ~~(my favorite question to procrastinate all bugs)~~?
Does this work in Ardour
Yes. Works fine in Ardour.
setbfree gui explained here: https://setbfree.org/lv2/lv2_setbfree_up.html I think it could be because it uses presets and it's not implemented yet. Like Dexed.
I think it could be because it uses presets and it's not implemented yet. Like Dexed.
I think some use "Preset" and some use "State". Multiple of them contain "organ" in the description. Do you mean any specific one?
Do you mean any specific one?
No. I'm very unspecific here.
I cannot reproduce your Dexed issues: I turned all 8 "EG" level in "1" to 0, and when loading, they were still 0 and I think it sounded correct. How do I reproduce?
With X42 whirl (from the b_free plugins), I can reproduce the issue.
I cannot reproduce your Dexed issues: I turned all 8 "EG" level in "1" to 0, and when loading, they were still 0 and I think it sounded correct. How do I reproduce?
Yes. I can modify the default preset (1. Say again) and save different versions of it. This works. I cannot save another preset, like number 2 (2. LAURIE). Preset 1 will open up on reload.
77f2490 should now finally fix all loading issues.
However, saving does not seem to work (as you reported) - even on the same effects that did not load: Ping Pong Pan and 3 Band EQ. Investigating further...
The setBfree organ, Dexed and Zyn all are unable to save anything. This requires the "State" extension, since these do not have ports.
I think we should (independently) ban all plugins that use state - until this is implemented. Otherwise, users will get annoyed because their GUI values are not being saved.
However, saving does not seem to work (as you reported) - even on the same effects that did not load: Ping Pong Pan and 3 Band EQ.
Fixed in dbe71a5762652ab12a6ae83a04b95e88c3e2c34c. From now, all know load/save issues should be fixed!
- Octaves. Dexed C4 corresponds to LMMS C5. Both can't be right. Right?
Right. How is it with Ardour? If Ardour does not tell you what C4/C5 is, you could compare it with help of a different instrument.
Right. How is it with Ardour? If Ardour does not tell you what C4/C5 is, you could compare it with help of a different instrument.
Right, right. Did a quick test in Ardour and it's the same issue there. I'll look into this some more.
I fixed really a lot of issues. One remaining issue though is that the opening LMMS effect window sometimes is a bit too small to contain the UI. This will hopefully be fixed soon.
Aside from this, if anyone finds any issues with the current version, please post it.
Also, keep in mind the "When reporting an issue" section from above, and keep in mind that the PR does not cover automation of UI controls, presets and LMMS file browsers inside of the UI.
I can't believe I did this again... Oh, lawd!