I’m trying to port our plugin to the new AudioProcessorValueTreeState
's way of dealing with parameter creation. Our plugin is a drum sampler with 16 pads that each have several parameters. This is why i was really looking forward to add parameter groups and saving our users the hassle of having to scroll through a flat list of 16 * 8 parameters.
It seems however that no matter what i try i can’t make the groups appear in an ordered way in Logic (See attached screenshot). This i think makes it even more confusing and less usable than a long flat list. Parameters inside groups seem to be ordered lexically by name, which is ok.
Did anyone experience the same and find a work-around?
EDIT: The code is something like this:
AudioProcessorValueTreeState::ParameterLayout layout;
[...]
for(auto slot = 0; slot < VoiceDispatcher::getNumSlots(); slot++)
{
auto grp = std::make_unique<AudioProcessorParameterGroup>(letter,
letter + " - Slot #" + String(slot + 1), letter);
auto tuningParamId = ParameterIds::idForSlot(slot, ParameterIds::Tuning);
auto tuningParam = std::make_unique<AudioParameterFloat>(tuningParamId,
"Zebra", parameterRange, 0.0f);
auto muteParamId = ParameterIds::idForSlot(slot, ParameterIds::Mute);
auto muteParam = std::make_unique<AudioParameterBool>(muteParamId,
"Mute", false);
auto soloParamId = ParameterIds::idForSlot(slot, ParameterIds::Solo);
auto soloParam = std::make_unique<AudioParameterBool>(soloParamId,
"Solo", false);
grp->addChild(std::move(tParam));
grp->addChild(std::move(muteParam));
grp->addChild(std::move(soloParam));
layout.add(std::move(grp));
}