Matrix modulation connection is broken in exported plugin
-
So I have:
- UI sliders connected to Matrix Modulators via
matrixTargetId - networks using
extra_modnodes andExternalModulationfor their parameters - and of course because it is necessary, a Global Modulation Container.
Everything works fine within Hise.
But once exported, the sound does not change, neither from UI sliders nor from preset load.
- I tried to connect the UI sliders to the Value parameter of the Matrix Modulator for direct control, but it does not help.
- The same issue applies for interpreted networks (ScriptFX) and compiled DLL (hardcoded master FX)
so the connection is broken somewhere in exported plugin, but AI seems to be lost with it...
Should anything be taken care of in the script? Like a connection initialisation of some sort?
- UI sliders connected to Matrix Modulators via
-
@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.