Thanks for your suggestion. I just tried building the Note Expression Synth sample and running it inside Cubase. This sample appears not to have the problem I had where the tuning min/max ranges snap to zero, however I’ve identified several other problems.
OS: Windows 11
Cubase v14.0.10 Build 144 (x64)
By default the value next to label “Max. Value” reads -12, and for “Min. Value” it is 12. These labels are backwards.
When dragging the tuning ranges, they always snap to the values -12/-11/-7/-2/0/2/7/11/12. If I understand the source code for the Note Expression Synth sample correctly, the tuning range for the plugin is binary, supporting either 1 tone or 1 octave.
This is set up using this parameter here:
// note_expression_synth_controller.cpp
auto* tuningRangeParam = new StringListParameter (USTRING("Tuning Range"), kParamTuningRange, nullptr, ParameterInfo::kIsList);
tuningRangeParam->appendString (USTRING("[-1, +1] Octave"));
tuningRangeParam->appendString (USTRING("[-3, +2] Tunes"));
parameters.addParameter (tuningRangeParam);
Am I correct in my understanding?
Please help me to understand how the change the tuning range like this, and customize them, and please help me to understand how Cubase expects to interact with VST3s when a user changes these ranges.
Do I need to set up an associatedParameterId within ::getNoteExpressionInfo()? Do I need to implement the INoteExpressionPhysicalUIMapping class?
I cannot find anything in the documentation mentioning how to control these ranges, and sample source code is a bit of a wild goose chase through several files and classes, making it hard to understand the logic flow for setting up parameters what each of their requirements are.
Ultimately what I need in my plugin is for our users to have the ability to set a small ranges like 2 semitones, or larger ones like 12 semitones, or even 120. How can I do this?