I have some parameters in my Audio Unit that depend on each other. For example, there is a note range parameter group which contains a „min" and a „max" parameter. Both parameters dependent on each other in the way that min should always be less than or equal to max. When one parameter is changed by the UI or by the host, I need to update the other one as well if the range would be invalid otherwise.
Here is what I do: When I receive a AURenderEventParameter for the "min" parameter, I update the internal "min" value and, if needed, also the internal "max" value. This is all happening in the audio thread.
My problem is that I don’t know how to „notify“ the system that the other value has changed, so that implementorValueProvider is called and the AUParameter gets updated. I could set the value on the parameter itself directly, but that would be an Objective C call in the audio thread. I actually don’t understand at all when implementorValueProvider is called. The docs say that it is called when the parameter’s value is known to be stale, but where is that information coming from? Is it assumed to be stale when a AURenderEventParameter was received?
I’ve sent the dependentParameter properties of the Parameters, but this seems not to have the desired effect.