-
Notifications
You must be signed in to change notification settings - Fork 29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Help on mod gui #31
Comments
@mikeoliphant thinking about it. That might as well be an issue of the LV2 plugin itself without the MOD gui. You might want to check that in reaper? |
that is a great start! the path update stuff should be handled automatically assuming we have defined all the right properties. (I havent looked at your code yet, will do that very soon) |
@rominator1983 I have added your modgui to https://github.com/moddevices/mod-lv2-data, seems best to continue discussion there. please send PRs for changes, will happily merge them quickly when I am online. I have pushed the current plugin to the store as beta, as a way to verify there are no blockers. |
actually maybe easier to talk in the team chat, @rominator1983 any way to contact you outside of github? |
Wow. blown away that my stuff from tonight is already in the store. Other than the GUI I haven't touched anything on the plugin side (c/c++ code). Except for build steps and metadata which I was basically for building locally. But that's all in the past. I'll change my setup to do PRs on your repository then. So the issue I described could really be in the plugin code in this repository. So I will check things again with all the new code/setup maybe tonight or tomorrow. I will also send you a PR to get the newest code from THIS repository. I think this is in the .mk-file of plugin-builder? I have to check. Last time I saw it, the git-URL was pointing to some other fork but not here. I still have to make correct screenshots/thumbnails and the knob-stuff. Signal might be best. I'll send you an e-mail with my contact. |
Somebody already took care of that. |
I took care of the screenshots, easy to do on my side so dont worry about it. (I have an in progress tool that auto-generates these) |
A couple of commments:
|
@mikeoliphant you're right with both points of course. I did first remove the meters but it ended up looking worse so I went with the version with meters. |
@mikeoliphant @falkTX I am stuck with checking out the load error. I can confirm that the MOD GUI (and probably other lv2-hosts) does not show the loaded model after an application start or a pedalboard load. The model is loaded (which I can confirm by looking at the MOD console and the trace ouputs) but this does not reflect in the GUI. I have seen this exact thing working with cabsim and with the adia-x-plugin (there seems to be some duplicated code here too but I could not figure out what's going on). |
Yes, I'm seeing that as well. The model also isn't showing as selected in the default gui interface. The was originally an issue in other hosts before @rerdavies submitted patch #17. That fixed it in Ardour. And it works for me in Reaper. |
maybe just missing reporting the file change to the host when it happens after changing state (either pedalboard load or preset). |
It looks to me like this is being done. LV2 atom code makes my head hurt, though, so there could be an issue with it. |
The plugin currently sends an LV2_STATE__Changed message after the filename property changes in response to LV2_PATCH__Set,. It assumes that the host will issue an LV2_PATCH__Get if it wants to, and will do so to get the current filename after a state is loaded. Both Ardor and Reaper are satisfied with that. The procedure being used in the code you cited seems to send either an unsolicited LV2_PATCH__Set or a custom notification (I can't find the source for it, but they seem to send the pathname). I don't think it's appropriate for a plugin to send an unsolicited LV2_PATCH__Set message. And the authors of the Aida-DSP plugin seem to be concerned enough about it that they saw fit to compile the code conditionally. I'm open to arguments to the contrary; but I think the AIDA_DSP code is purpose-built for MOD GUI, and isn't generically correct. The host should be looking for a STATE_Changed message as notification that a property has changed due to a PATCH__Set; and the host should be issuing a PATCH__Get if knows that a state restore has been executed. For what it's worth, I'm pretty sure that a MOD UI can do a PATCH__Get to retrieve a property, and that's probably a good path for you if you're trying to write a MOD UI for this plugin. |
if the state has changed, I dont think the roundabout waiting for the host to send a patch-get should be used. from my experience building 2 hosts (carla and mod-host) the extra step to fetch state is superfulous and introduces a sort of race condition because there is a step between a parameter being loaded/changed and the host knowing what that parameter changed to. by the time a state changed request is received and host asks about the plugin state, the plugin might have initiated another parameter change already. but I do not really see a reason NOT to give this info back to the host. it is obvious that after a state restore, the plugin state will have changed. sending "state changed" flag to the host after a state restore, only for the host to then listen to that and request the current state... just seem a layer of roundabout for no good reason. when the host calls state restore, it can expect the plugin state to have changed. |
Rather difficult to argue with your impeccable credentials, sir. :-) I'll make the changes in my plugins (ToobAmp). You want an LV2__PATCH__Set notification, right? @mikeoliphant Do you want me to put together a pull request for you, or do you want to do it yourself. If the latter, you should also probably modify the code to issue the PATCH__Set when the message is received, rather than when the load completes. |
only when changed by the plugin, for now I think that only happens during state restore (which is called both during pedalboard load and preset load) |
@falkTX: Ok, while we're here, walk me through your feelings on the plugin sending STATE_Changed in response to PATCH_Set. The argument being that a host can't assume that a setting a property changes the saveable state. |
if the host cant assume that, then a lot of things break. how can the host even know that a simple float parameter value was set correctly? the patch API is similar to a REST one used in HTTP, for those there is a clear response for each request. so in my opinion if we want a response to check the validity of a patch-set, the plugin ought to give something in return with a matching "call id" or whatever we define to match that patch-set. I mean, if the host tries to change 5 parameters at once, and one fails. should the plugin send state-changed? seems the wrong approach and the wrong thing to use, there must be some another mechanism for it. |
That would be much appreciated - thanks! |
@mikeoliphant I have written confirmation from @statkinson regarding the license for the resources.
|
@falkTX: I have implemented your suggestions in ToobAmp convolution reverb, in preparation for porting the code into NAM (easier for me to debug). But I'm having problems with saving and restoring carla workspaces. The paths don't round-trip property. The file path is broken after opening the saved Carla project. I've made a detailed report in the Carla github repository: falkTX/Carla#1784 (comment) |
@rerdavies for the case of NAM, does the issue also happen? there is only 1 piece missing from NAM-lv2 side for the report of file changes, so I am guessing it doesn't apply here. |
The pull request has been sent. I have not tested on MOD. Let me know if it works. |
linking to here: #32 |
Model "sticking" in the gui resolved via #34 |
@falkTX I made a mod gui for the NAM based on the original plugin (0.7.3 has a new look) here https://github.com/rominator1983/neural-amp-modeler-lv2
But I have one issues with it.
At the moment it does not seem to load the last model from the state into the UI. Though as I see it it just does not get loaded in the UI.
If I load a pedalboard and change the input gain and save it, the state of the effect in the pedalboard shows the old model but it never showed up in the UI (also the basic lv2 UI not just the new UI).
Knobs need to be painted to look like the original plugin. That is ongoing.
@mikeoliphant sorry to post this here but at least I suppose that is where I can talk to you two.
The text was updated successfully, but these errors were encountered: