Audio Unit Validation Failed: needs 'Meta Param Flag'

Hey,
I have a problem with a plugin that works fine as VST but fails the validation in Logic Pro.

The problem is that some parameters of my plugin are set by other parameters, or to be more specific, the max and min values a parameter accepts depend on the settings of other parameters. This is ok for VST plugins but the validation tool of logic gives me the following error:

... WARNING: retrievedValue = 0.050000 (was 0.000000), Parameter did not retain minimum value when set WARNING: retrievedValue = 0.050000 (was 0.000000), Parameter did not retain default value when set WARNING: retrievedValue = 0.950000 (was 1.000000), Parameter did not retain maximum value when set WARNING: retrievedValue = 0.050000 (was 0.000000), Parameter did not retain minimum value when set WARNING: retrievedValue = 0.050000 (was 0.000000), Parameter did not retain default value when set ERROR: Parameter values are different since last set - probable cause: a Meta Param Flag is NOT set on a parameter that will change values of other parameters.

To solve this problem I need a possibility to set the Meta Param Flags of AUs.
The AU Mailinglist says:

Would it be possible to add some code to the AU Wrapper to make these Flags accessible. Otherwise any dependencies between parameters are impossible for AUs.

Thanks.

Jeez, what a complication. Do you have to tell it which params are dependent on others, or can we just set a flag on everything to say they might all be dependent?

“Jeez”, that’s what I was thinking, too.
There’s not much said in the docs but from what I could find out, you mark the parameter that can change other parameters as a meta parameter. You should also list the dependencies (there’s a property for describing which parameters are dependent on a meta parameter).

I found the explanation below but I don’t understand all of it:

/*!
@struct     AUDependentParameter

@abstract  Used to represent a dependent parameter that can change as a result of its parent meta-parameter changing
*/

typedef struct AUDependentParameter {
        AudioUnitScope                  mScope;
        AudioUnitParameterID    mParameterID;
} AUDependentParameter;

@constant    kAudioUnitProperty_DependentParameters
Scope:         any
Value Type:  array of AUDependentParameter
Access:        read

I just started porting my plugins to MAC (yes, I’m a Windows gui) and although Juce helps a lot and I have some experience with VST and Windows, there’s a buch of things that are pretty different. So I’m afraid I have to bother you with some more questions / requests in the next days.

But step by step… this issue is the first thing to find a solution for.

Thanks

Oops, seems I’ve been a bit hasty. From having a look at the juce_AU_Wrapper.mm code, I found out that there is already a juceFilter->isMetaParameter (index) function that does part of the work.
But what is still missing, is a way to list the dependencies. Would it be possible to add this functionality to the wrapper?
From reading the posts in the AU mailinglist I got the impression that this is necessary to ensure proper functionailty.

I’d forgotten that I’d written that… Have you actually tried setting the isMetaParameter stuff correctly? It sounds like that’d be enough to get it working without needing to mess about with all the dependencies.

Actually it works but only when isMetaParamter() returns true for all parameters, even if only 10 of my about 120 parameters are depending on another one.

I also had to add a few more virtuals to the AudioProcessor and implement them in my Filter and also had to change the wrapper to take min and max and default values for a parameter, to make everything work as the AU framework expects it - otherwise I got errors and warnings with auvaltool.

Since I’m also planing to implement sidechains, I’m currently “pimpin” the au wrapper and I think in the course of this I’ll add something to specify the mentioned dependencies, too.

I’ll get back to this thread when I’m done with all that (or encounter other problems). Perhaps some of the changes are helpful for others, too.