AudioProcessorValueTreeState Parameter Text Conversion Still Not Working

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;
                            });
1 Like