Unless I completely missed something, it seems that the AU wrapper is not handling the MIDI ProgramChange message correctly.
Indeed it is reading the program number in the data byte 2 instead of data byte 1.
Here is the patch to apply to fix the problem:
diff --git a/public.sdk/source/vst/auwrapper/auwrapper.mm b/public.sdk/source/vst/auwrapper/auwrapper.mm
index 9c97ef8..749a7e8 100644
--- a/public.sdk/source/vst/auwrapper/auwrapper.mm
+++ b/public.sdk/source/vst/auwrapper/auwrapper.mm
@@ -1910,9 +1910,9 @@ static void buildUnitInfos (IUnitInfo* unitInfoController, TDictionary<UnitID, U
ParameterInfo paramInfo = {0};
if (editController->getParameterInfo (pid, paramInfo) == kResultTrue)
{
- if (paramInfo.stepCount > 0 && data2 <= paramInfo.stepCount)
+ if (paramInfo.stepCount > 0 && data1 <= paramInfo.stepCount)
{
- value = (ParamValue)data2 / (ParamValue)paramInfo.stepCount;
+ value = (ParamValue)data1 / (ParamValue)paramInfo.stepCount;
prgChange = true;
}
}