AudioProcessorParameter and Automation


#1

With the new audioProcessorParameter, how do I handle automation?  I've been trying to work off of the sample but nothing changes in the host (Abelton). So For example how to I parse values to be displayed on the automation controls? The documentation is a little sparse.

 

class FloatParameter : public AudioProcessorParameter
{
public:
    
    FloatParameter (float defaultParameterValue, const String& paramName, const String& unitName)
    : defaultValue (defaultParameterValue),
    value (defaultParameterValue),
    name (paramName),
    units(unitName)
    {
    }
    
    float getValue() const override
    {
        return value;
    }
    
    void setValue (float newValue) override
    {
        value = newValue;

    }
    
    float getDefaultValue() const override
    {
        return defaultValue;
    }
    
    String getName (int maximumStringLength) const override
    {
        return name;
    }
    
    String getLabel() const override
    {
        return units;
    }
    
    float getValueForText (const String& text) const override
    {
        return 0.0f;//text.getFloatValue();
    }
    
    String getText     (     float      value, int ){
        return "test?";
    }
    
    int getNumSteps() const{
        
        return 2;
    }
   
    
private:
    float defaultValue, value;
    String name, units;
};

#2

Also in that example I was trying to make there be only 2 discrete steps, but it appears to make no difference in the automation window.


#3

Whether the host takes any notice of the number of steps depends on the host + plugin format. It's not used everywhere.


#4

Your code's a bit sketchy, but returning a string from getText is the right thing to do if you want to provide a string.


#5

Hey sorry I didn't explain well. I assumed getText was supposed to parse the value to display on the host screen. So For example, I have 3 radio boxes and I want the user to choose between those 3. I wanted to set getNumSteps to 3, then have getText return something like "ButtonA", "Button B", "Button C". I tried playing with all of the return values but they seemed to have no effect, and the host still displays 0-1 as usual.


#6

Well some hosts may not even bother calling the function to get the text, and may just show the number.. Again, it depends on the host.


#7

So just put in the desired code anyway and it will automatically fall back to 0-1 if the host doesn't support it correct?


#8

Yep.