It’s more than likely something stupid I’m doing at this end
Basically I’m controlling the plugins from a control surface :
jrrshop.com/catalog/mackie-c … 951be6cc27
expand the picture – you’ll get the idea.
For the discreet value types (e.g. Bombardier Mode) I take advantage of the fact that the 32 VPots (rotary encoders) on the surface also have switch behavior – you depress the VPot top – it’s a typical membrane momentary.
I then use table lookup to cycle through the available values on each press – it’s much more clean and predictable than using the rotary encoder to set the discreet values:
FXSwitchParameter *BombardierMode = new FXSwitchParameter("Mode", 12, this);
BombardierMode->numDiscreetValues = 5;
BombardierMode->discreetValues[0] = 0.0;
BombardierMode->discreetValues[1] = 0.25;
BombardierMode->discreetValues[2] = 0.5;
BombardierMode->discreetValues[3] = 0.75;
BombardierMode->discreetValues[4] = 1.0;
Bombardier->Add(BombardierMode)
or in the case of the Vibe EQ:
FXComboSwitchParameter *VibeEQMF2Freq = new FXComboSwitchParameter("MF 2 Freq", "", 5, this);
VibeEQMF2Freq->numDiscreetValues = 7;
VibeEQMF2Freq->discreetValues[0] = 0.0;
VibeEQMF2Freq->discreetValues[1] = 0.16;
VibeEQMF2Freq->discreetValues[2] = 0.33;
VibeEQMF2Freq->discreetValues[3] = 0.5;
VibeEQMF2Freq->discreetValues[4] = 0.66;
VibeEQMF2Freq->discreetValues[5] = 0.83333;
VibeEQMF2Freq->discreetValues[6] = 1.0;
VibeEQ->Add(VibeEQMF2Freq)
This approach works perfectly on the Bombardier, Rocket, 1973, and Vibe EQ everywhere except the 2 chunks cited above.
I got the parameter values by breakpointing the debugger on the Reaper SDK call:
value = TrackFX_GetParam(trackSelectedForC4, FXInstances[i].index, currentFXParameter->index, &min, &max);
and I also use :
TrackFX_SetParam(trackSelectedForC4, FXIndex, index, parameterValue);
TrackFX_FormatParamValue(trackSelectedForC4, FXIndex, index, parameterValue, parameterValueString, sizeof(parameterValueString));
So, for instance on the Vibe EQ:
Setting the value to 0.8333 sets the GUI and the plugin itself to 6.0KHz, but the string reported in “parameterValueString” in the code above is still 3150.
If you then increase to 1.0 everthing (the GUI, the plugin, the reported string) all line up again at 8.0KHz.
All other values work perfectly.
The Bombardier behavior is noted in an earlier post.
Just curious to find out if it’s something I’m doing wrong at this end.