Browse Source

Added a fast parameter ID lookup to the AudioUnit wrapper

tags/2021-05-28
jules 7 years ago
parent
commit
0e95d97404
1 changed files with 7 additions and 7 deletions
  1. +7
    -7
      modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm

+ 7
- 7
modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm View File

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


Loading…
Cancel
Save