HISE 4.1 Hardcoded Master & Poly FX P1 P2 Modulation Bug. RESOLVED
-
Hey peeps
I am not sure if I am going nuts so please help me out.
Just upgraded to v4.1 off the dev branch and and all the P1 P2 Modulation slots inside HardcodedMasterFX and Hardcoded Poly FX stopped working. Mods from Global Modulators and built ins like the time variant LFO dont seem to modulate inside HISE.
I have NUM_HARDCODED_FX_MODS=2 & NUM_HARDCODED_POLY_FX_MODS=2 in the pre processors of the build of HISE and inside the project settings.
Enable Sound Generators FX is active inside Project Settings.
Here's a simple project as a zip which contains a basic stock RNBO filter compiled as a DLL (32mb). You may need to recompile the DLL from the RNBO src folder inside third party. The P1 slots associated to cutoff does not seem to get any modulation signal from a Global Modulation LFO.
Any thoughts? I have a few fairly massive projects that use a ton of P1 P2 mods from loads of custom RNBO stuff so I am kinda stuck!!
The P1 P2 slots are greyed out inside all of my projects.
I'm using a load of mono and ploy RNBO patches that have been compiled into DLLs and all mods are dead.
@Christoph-Hart Am I nuts?
Thanks for any insight.
Phelan -
Ok. I am def not going nuts. Here is a screen grab of a project running a Hardcoded Master FX DLL compiled from a RNBO patch on HISE 3.6.2 on an old system.
The Global Modulator signal is passed through to P1.
Any pre-processor changes needed in 4.1 to get these working?
P
-
Ever since the mod matrix update, I've needed an extra_mod in any script/hardcoded poly fx to get the modulation chain working.
-
@Goodflow Ok. Thanks. I take it you are referring to the ScriptModulationMatrix? I built my own in HISE script and dont use any Scriptnode. All the DSP is from RNBO DLLs.
Hope there's a way to get P1 P2 etc working in both Hardcoded and Hardcoded Polys FXs withour rolling back. 3.6.2 doesn't play well compiling with silicon on my newer system.
p
-
I take it you are referring to the ScriptModulationMatrix?
Yeah, though I should have just said "the June commits", as I'm not 100% on this being a consequence of the ScriptModulationMatrix rewrite.
I built my own in HISE script and dont use any Scriptnode. All the DSP is from RNBO DLLs.
I got my 3rd party nodes responding to P1 modulation by wrapping them into scriptnodes with the parameters linked as described on that extra_mod doc (the extra_mod node itself isn't needed, but the parameter settings in scriptnode seem to be).
I can't speak to whether the necessity of the scriptnode parameter setting is a bug or a choice, but I can confirm the P1 chains worked directly with 3rd party nodes in past HISE versions.
-
Yes this is an intentional (breaking) change which introduces more control and versatility to the scriptnode to modulation bridge but it requires you to modify your existing networks.
Before:
- every parameter from 0 up to
HISE_NUM_HARDCODED_MODS
was simply modulated with the gain modulation mode unless the parameter range had a zero crossing, then it switched to pan mode. This was weird and a result of me just blindly implementing some feature requests without thinking it through. Also the modulation update rate was limited to 64 samples.
Now:
- no parameter is modulated by default, but you can set the exact modulation mode for every single parameter which also can have gaps (so if you have two modulation slots, you can assign parameter 1 and 7 to be modulated with these two slots by setting the modulation mode of only those two to anything else than disabled.
However I have forgot to handle the RNBO exported effects so with those you're currently dead in the water - for scriptnode networks you can just change each parameter's
ExternalModulation
property and with C++ nodes you can directly call a method that defines the parameter's modulation connections, but with RNBO (and if you directly use Faust exported nodes), the modulation is currently not working.Now what you could do (and what's likely to be the most pragmatic solution going forward) is to wrap the RNBO effects into a network where you then can define the parameter modulation and decide whether to hook them up to an extra_mod or use the parameter connection), then setup all the properties, compile the network and use this instead.
- every parameter from 0 up to
-
@Christoph-Hart This was good to know, will there be an option later to modulate RNBO parameters without scriptnode or is using the scriptnode "shell" the best way to go?
-
@ulrik while it looks like unnecessary overhead to wrap a RNBO node into a network (we already had that discussion with Faust nodes), I think it will increase the maintainability of the system - I'm hardly using it myself so trying to keep the special handling to a minimum ensures the functionality in the long run.
Also I would have to add some kind of API & interface to the RNBO wrapper dialog which would basically be duplicating what we have in scriptnode already.
One workflow tool that I could think of that would be generally helpful would be a function that automatically wraps any node into a DSP network by creating the exact amount of parameters with the range and connect them - this is agnostic of the node type (so you can do this with Faust / RNBO / SNEX / C++ nodes) but will save you 99% of the boring work.
TLDR: I wouldn't hold my breath for a custom RNBO solution for this.
-
Thanks everyone for your input and advice. Embedding the RNBO DLLs into Scriptnode and recompiling using the ExternalModulation param worked a treat. P1 P2 mods working for Hardcoded FX and Hardcoded Poly FX.
Considering binning my HISE script mod matrix that took a year to build for the ScriptModulationMatrix as it has proper bipolar etc.
@Christoph-Hart we still need those Berlin beers!
Phe