Is there a way to give a custom c++ node parameter modulation support without wrapping in a network??
-
@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!
-

Woaaahhhh that's amazing!! I really dig it! And honestly, seems so much easier to my mind than messing around with scriptnode directly.

@Christoph-Hart Can I check with you... in the c++ code do we need to do anything special to support scale/unipolar/bipolar modes ... or does that just happen automatically when using the matrix modulator as a source, and an (for example) LFO in the global modulator container (set to bipolar itself)
-
And I assume these are the modulation colour references to use:
HiseModulationColours::ColourId::ExtraMod HiseModulationColours::ColourId::Midi HiseModulationColours::ColourId::Gain HiseModulationColours::ColourId::Pitch HiseModulationColours::ColourId::FX HiseModulationColours::ColourId::Wavetable HiseModulationColours::ColourId::Samplestart HiseModulationColours::ColourId::GroupFade HiseModulationColours::ColourId::GroupDetune HiseModulationColours::ColourId::GroupSpreadIs there any limitations around which colour a particular parameter should use? Or is it really just down to how you want it to appear in the module tree??
And for the ParameterModes, would it be these ????
modulation::ParameterMode::ScaleAdd modulation::ParameterMode::ScaleOnly modulation::ParameterMode::AddOnly modulation::ParameterMode::Pan modulation::ParameterMode::Disabled