Mod Matrix with Scriptnode / Hardcoded FX
-
Just curious if someone has an example on how to do this / best way to set this up? I'm literally just scratching the surface on the topic.
Does the modulation happen on the UI thread?
I see in Scriptnode you can right click the macro and set "ExternalModulation" as well as the ModulationBlockSize of the network. Just curious how this actually works (is it calling the scriptnode parameter every block and updating it) and if there is a better method if you need super precise modulation timing (per sample for instance)?
Also how do you connect the modulation to the scriptnode network/ hardcoded FX?
Thanks !
-
@HISEnberg You need these preprocessors
HISE_NUM_SCRIPTNODE_FX_MODS=8 HISE_NUM_POLYPHONIC_SCRIPTNODE_FX_MODS=0 HISE_NUM_SCRIPTNODE_SYNTH_MODS=0 NUM_HARDCODED_FX_MODS=8 NUM_HARDCODED_POLY_FX_MODS=0 NUM_HARDCODED_SYNTH_MODS=0and in the networks you use
core.extra_modnode
It is sample accurate if you use it in a frame container. Otherwise it is the ModulationBlockSize that is taken but I am not 100% sure how. Because if an audio block is 512 and the modSize is 16, I don't see how it works...The extra slots will appear in th scriptFX and in the hardcodedFX if you chose the preprocessors to do so

-
@ustk nice thank you will try this out later!
-
It is sample accurate if you use it in a frame container. Otherwise it is the ModulationBlockSize that is taken but I am not 100% sure how. Because if an audio block is 512 and the modSize is 16, I don't see how it works...
If the ModulationBlockSize is set, then HISE will split up the incoming buffers and send out parameter values with this control rate, so:
512 samples in, ModulationBlockSize = 16 - calculate all modulation values and send the parameter callbacks - process 16 samples - calculate all modulation values and send the parameter callbacks - process 16 samples ...Note that the frame container will not make this sample accurate because that's a inner property of the network and HISE has no idea whether you use frame processing from the outside.
That's why it's recommended for high-resolution modulation requirements to use the extra_mod nodes and connect it to the slots - they can fetch the modulation signal from within the node and apply it to the signal (using multiplication) or modulate any parameter with the resolution you want within your network.
-
I had a strange thing with this recently, where I turned on external modulation for all my parameters, and my script node parameters started resetting to zero, and causing oddness in the DSP stream and all sorts. I need to debug it, might've been a one off or a weird bug.
-
@Christoph-Hart
https://youtu.be/-XchgrM-yR8Things I notice, and I don't think this was happening to me a bunch of branches ago. Sorry, can't be more specific!
- Setting a parameter to use external modulation can reset all of the parameters that are already set to use external modulation, to zero.
- Right-clicking a parameter will reset any parameters that are already set to use external modulation, to zero.
- fuzzy glitching when assigned to certain parameters, even though no modulation signal is incoming.
Any ideas on those??
(btw, I've not yet tried turning modulation on directly inside the c++ code. Haven't gotten around to testing it)