Is there a way to give a custom c++ node parameter modulation support without wrapping in a network??
-
I've written a bunch of c++ effects, and I notice that they appear as options in the HardcodedMasterFX and HardcodedPolyFX modules, even without wraping them in a scriptnode network.
I was wondering if the parameters can be linked to the wider HISE modulation system, without wrapping them in a scriptnode network?
I have these preprocessor definitions specified in my project:
HISE_NUM_SCRIPTNODE_FX_MODS=32 HISE_NUM_POLYPHONIC_SCRIPTNODE_FX_MODS=32 NUM_HARDCODED_FX_MODS=32 NUM_HARDCODED_POLY_FX_MODS=32But I'm not really sure what I would need to do in my c++ for the effects, to make this happen... if it is even possible?
-
Oh, I didn't know that this high number works.
NUM_HARDCODED_FX_MODS=32 NUM_HARDCODED_POLY_FX_MODS=32Have you already compiled your project with these preprocessor definitions and does it work?
-
@Orvillain I think you'll only be able to modulate the parameters (aka UI parameter modulation) without the whole MatrixModulation benefits. Also it might not be polyphonic
-
@Oli-Ullmann said in Is there a way to give a custom c++ node parameter modulation support without wrapping in a network??:
Oh, I didn't know that this high number works.
NUM_HARDCODED_FX_MODS=32 NUM_HARDCODED_POLY_FX_MODS=32Have you already compiled your project with these preprocessor definitions and does it work?
Yep it does work!
-
@Orvillain
Cool, thank you! :-) -
yes, it's a new method that you need to overwrite in your C++ node where you can specify the modulation layout just like you do with scriptnode root parameters. It works similar to the
createParameters()callback where you need to populate a list of data objects which will then be used by HISE to setup the modulation scheme:void createExternalModulationInfo(OpaqueNode::ModulationProperties& info) { // Create a list of modulation slots modulation::ParameterProperties::ConnectionList list; // Create a modulation connection info object modulation::ConnectionInfo slot1; // modulate parameter with P==1 slot1.connectedParameterIndex = 1; // yellow slot1.modColour = HiseModulationColours::ColourId::Gain; // only scale (like gain modulation) slot1.modulationMode = modulation::ParameterMode::ScaleOnly; list.push_back(slot1); modulation::ConnectionInfo slot2; // modulate parameter with P==5 slot1.connectedParameterIndex = 5; // purple slot1.modColour = HiseModulationColours::ColourId::Pitch; // bipolar / unipolar add mode slot1.modulationMode = modulation::ParameterMode::AddOnly; list.push_back(slot1); // pass the list to the modulation property object to initialise // the first two modulation slots info.fromConnectionList(list); } -
Is this the recommended method to use for modulating a c++ node? Works with the matrix modulation system and such? I've been needing to investigate the best way to do modulation.
-
@griffinboy yes that‘s how I do it in sbb too.
-
Also, note to self. Don't name your custom c++ node the same name as the network. It won't compile. Dohhhhh.
-
@Christoph-Hart Amazing! So what I've said is just wrong!