Here are a bunch of variations of parameter types that I use in my plugin. I don’t know about Ableton, but I know these work in Logic and others. Hope this helps.
// integer - 3 values [0, 1, 2]
parms.createAndAddParameter("toneID",
"Tone",
String(),
NormalisableRange<float> (0.0f, 2.0f, 1.0f),
1.0f,
[](float value)
{
if(value == 0.0f) return "Dark";
if(value == 1.0f) return "Normal";
if(value == 2.0f) return "Bright";
return "";
},
[](const String& text)
{
if(text == "Dark") return 0.0f;
if(text == "Normal") return 1.0f;
if(text == "Bright") return 2.0f;
return 0.0f;
});
// boolean - 2 values [0, 1]
parms.createAndAddParameter("syncID",
"Sync",
String(),
NormalisableRange<float> (0.0f, 1.0f, 1.0f),
1.0f,
[](float value)
{
return value < 0.5 ? "Off" : "On";
},
[](const String& text)
{
if (text == "Off") return 0.0f;
if (text == "On") return 1.0f;
return 0.0f;
});
// float - [0, 100]
parms.createAndAddParameter("glideID",
"Glide",
String(),
NormalisableRange<float> (0.0f, 1.0f),
0.0f,
[](float value)
{
return String(value * 100.f, 1);
},
[](const String& text)
{
return text.getFloatValue() / 100.0f;
});
// float - [-12, 12]
parms.createAndAddParameter("tuningID",
"Tuning",
String(),
NormalisableRange<float> (-12.0f, 12.0f),
0.0f,
[](float value)
{
value = ((int)(value * 24.0f) - 12.0f);
if(value > 0.0f)
return String("+") + String(value, 1);
return String(value, 1);
},
[](const String& text)
{
return (text.getFloatValue() + 12.0f) / 24.f;
});