Matrix modulation connection is broken in exported plugin
-
@ustk
Do you have this in your script:Engine.addModuleStateToUserPreset(“Your Global Modulator Container Name”)I don't remember 100% for sure, but I think I had the same issues as you. Adding the Global Modulator Container to the preset solved all the problems.
-
Are you exporting a FX plugin?
-
@Oli-Ullmann I have seen this! Testing...
@Christoph-Hart Yes
-
@Oli-Ullmann So in the end it's not this. I have it noted in my project check list like so:
/* In the case the modulation is deleted when loading a DAW project, do this: Engine.addModuleStateToUserPreset("Global Modulator Container"); https://forum.hise.audio/topic/14137/modulation-is-deleted-when-loading-a-daw-project/5 */Thanks anyway!
-
@ustk
Okay, here’s something else that comes to mind regarding an FX plug-in:
You need to check theEnable Sound Generators FXbox in the settings for it to work in the compiled plug-in.Additionally, I have the following in the extra definitions:
HISE_ENABLE_MIDI_LEARN=1
Otherwise, you won’t be able to access the context menu for the buttons. And just to be safe, I also checked the box forEnable Midi Input FXin the settings.I think that might solve your problem.
-
@Oli-Ullmann Mmmm... I have them all already...
Do you mean you actually have an FX plugin working with the matrix modulation system? (extra_mod nodes, UI matrixTargetId, etc...)
-
@Oli-Ullmann @Christoph-Hart Alright I got something!
When setting the hardcoded DLL to "" then back to the original one, the connection is made.
So why it's not connecting at init I don't know...@Oli-Ullmann Do you set your networks/DLL from script or are they just set in the module tree like I do?
Perhaps I should also add those module states to the presets?
-
@ustk
Okay, I have a working FX plug-in with modulation. However, I control the parameters usingHardcodedFx.setAttribute(parameter, value)because I’m controlling multiple parameters simultaneously with a single UI element. So I’m not usingextra_modnodes. Since modulation in an FX plug-in is usually monophonic and I don’t need sample-accurate modulation, this works for me.The UI element has a
matrixTargetId, and I’m using HISE’s modulation system.I load the HardcodedFX dynamically via script. I haven’t added the module states to the preset. Just the Global Modulator Container.
So it’s possible that it works for me because I control the parameters via
setAttributeand the UI elements aren’t directly linked to the effect parameters. But that’s just a guess.If it helps and you're really stuck, I'd be happy to send you my project without the effects DLLs and C++ files....
-
@Oli-Ullmann Thanks a lot for the detailed explanation!
This confirms what I see, so the main difference is that you load your hardcoded DLLs dynamically.
I doubt the setAttribute is the origin of the problem because when I force the DLL it then works.
I need sample accuracy so the targetId is what I want.Now, when you say "I load the HardcodedFX dynamically via script", do you mean once at init or on preset load CB? (or other behaviour to swap them on the fly)
-
@ustk
I load the effects via the ControlCallback of my UI elements usingSlotFX.setEffect(String effectName). The UI elements aresaveInPreset.I can also swap the effects on the fly.
What do you mean by “when I force the DLL”?
Here’s some additional information that might be important:
I created the basic effects in Max and then imported them into HISE via RNBO. I then combined these effects further in a ScriptNode network. I compiled this network and loaded it into a HardcodedFX.