| @@ -1141,6 +1141,7 @@ public: | |||||
| void refreshParameterList() override | void refreshParameterList() override | ||||
| { | { | ||||
| parameters.clear(); | parameters.clear(); | ||||
| paramIDToIndex.clear(); | |||||
| if (audioUnit != nullptr) | if (audioUnit != nullptr) | ||||
| { | { | ||||
| @@ -1171,6 +1172,7 @@ public: | |||||
| ParamInfo* const param = new ParamInfo(); | ParamInfo* const param = new ParamInfo(); | ||||
| parameters.add (param); | parameters.add (param); | ||||
| param->paramID = ids[i]; | param->paramID = ids[i]; | ||||
| paramIDToIndex[ids[i]] = i; | |||||
| param->minValue = info.minValue; | param->minValue = info.minValue; | ||||
| param->maxValue = info.maxValue; | param->maxValue = info.maxValue; | ||||
| param->automatable = (info.flags & kAudioUnitParameterFlag_NonRealTime) == 0; | param->automatable = (info.flags & kAudioUnitParameterFlag_NonRealTime) == 0; | ||||
| @@ -1263,6 +1265,7 @@ private: | |||||
| }; | }; | ||||
| OwnedArray<ParamInfo> parameters; | OwnedArray<ParamInfo> parameters; | ||||
| std::unordered_map<AudioUnitParameterID, int> paramIDToIndex; | |||||
| MidiDataConcatenator midiConcatenator; | MidiDataConcatenator midiConcatenator; | ||||
| CriticalSection midiInLock; | CriticalSection midiInLock; | ||||
| @@ -1348,13 +1351,10 @@ private: | |||||
| || event.mEventType == kAudioUnitEvent_BeginParameterChangeGesture | || event.mEventType == kAudioUnitEvent_BeginParameterChangeGesture | ||||
| || event.mEventType == kAudioUnitEvent_EndParameterChangeGesture) | || event.mEventType == kAudioUnitEvent_EndParameterChangeGesture) | ||||
| { | { | ||||
| for (paramIndex = 0; paramIndex < parameters.size(); ++paramIndex) | |||||
| { | |||||
| const ParamInfo& p = *parameters.getUnchecked(paramIndex); | |||||
| auto it = paramIDToIndex.find (event.mArgument.mParameter.mParameterID) | |||||
| if (p.paramID == event.mArgument.mParameter.mParameterID) | |||||
| break; | |||||
| } | |||||
| if (it != paramIDToIndex.end()) | |||||
| paramIndex = it->second; | |||||
| if (! isPositiveAndBelow (paramIndex, parameters.size())) | if (! isPositiveAndBelow (paramIndex, parameters.size())) | ||||
| return; | return; | ||||
| @@ -1364,7 +1364,7 @@ private: | |||||
| { | { | ||||
| case kAudioUnitEvent_ParameterValueChange: | case kAudioUnitEvent_ParameterValueChange: | ||||
| { | { | ||||
| const ParamInfo& p = *parameters.getUnchecked(paramIndex); | |||||
| auto& p = *parameters.getUnchecked (paramIndex); | |||||
| sendParamChangeMessageToListeners (paramIndex, (newValue - p.minValue) / (p.maxValue - p.minValue)); | sendParamChangeMessageToListeners (paramIndex, (newValue - p.minValue) / (p.maxValue - p.minValue)); | ||||
| } | } | ||||
| break; | break; | ||||