This maybe helps:
int calcComboBoxValue(float value, int param)
{
int numItems = this->getNumComboBoxItems(param);
return (int)floorf(value * (numItems - 1.0f) + 1.0f + 0.5f);
}
float calcComboBoxValueNormalized(float value, int param)
{
int numItems = this->getNumComboBoxItems(param);
return (value - 1.0f) / (numItems - 1.0f);
}
int getNumComboBoxItems(int param)
{
int numItems = 1;
switch(param)
{
case VOICES: numItems = 6; break;
case PORTAMENTOMODE: numItems = 3; break;
case LFO1DESTINATION: numItems = 8; break;
case LFO2DESTINATION: numItems = 8; break;
case FREEADDESTINATION: numItems = 6; break;
case FILTERTYPE: numItems = 12; break;
case OSC1WAVEFORM: numItems = 3; break;
case OSC2WAVEFORM: numItems = 5; break;
case ENVELOPEEDITORDEST1: numItems = 8; break;
case ENVELOPEEDITORSPEED: numItems = 6; break;
}
return numItems;
}
