📅  最后修改于: 2023-12-03 15:41:14.781000             🧑  作者: Mango
JUCE是一个C++跨平台应用程序框架,它提供了一系列的组件和工具类,可以用于开发音乐、音效、图像处理、GUI应用等多种应用。
JUCE中的组参数(Group Parameters)实现了一个参数组(Parameter Group),并且可以与 AudioProcessorValueTreeState
一起使用。如图所示:
ParameterGroup
:是一个 RangedAudioParameterGroup
类型,表示参数组及其所有参数。BoolParameter
:布尔类型的参数。AudioParameterChoice
:多个选项中的一个。AudioParameterFloat
:浮点数参数。AudioParameterInt
:整数参数。使用组参数可以轻松管理相关的参数,并将它们绑定到UI组件上,从而实现高度可定制的用户界面。
同时,组参数另一大优势在于可以将一个“组”转换为XML,这意味着可以将参数组保存到文件中,并将其加载到程序中。这为用户提供了可存储的软件设置,以及预设管理,允许用户轻松地保存和共享自己的设置。
使用 JUCE 创建一个参数组及其参数的代码:
auto params = std::make_unique<AudioProcessorValueTreeState::ParameterLayout>();
// Create a new parameter group
auto group = std::make_unique<RangedAudioParameterGroup>("My Group", "My Group ID", ",");
// Add parameters to the group
group->addChild(std::make_unique<AudioParameterFloat>("Param1", "Parameter 1", 0.0f, 1.0f, 0.5f));
group->addChild(std::make_unique<AudioParameterInt>("Param2", "Parameter 2", 1, 10, 5));
group->addChild(std::make_unique<AudioParameterChoice>("Param3", "Parameter 3", StringArray{"Option 1", "Option 2", "Option 3"}, 0));
// Add the group to the parameter layout
params->add(std::move(group));
上述代码会创建一个名为"My Group"的参数组,其中包含三个参数: Param1(浮点数类型)、Param2(整数类型)和Param3(多选一类型)。
然后,您可以将参数组与 AudioProcessorValueTreeState
实例相结合,并将其与您的UI相结合:
// Create AudioProcessorValueTreeState instance
m_parameters = std::make_unique<AudioProcessorValueTreeState>(*this, nullptr, "PARAMETERS", *params);
// Create a new Slider for the first parameter (Param1)
Slider slider1;
addAndMakeVisible(slider1);
slider1.setSliderStyle(Slider::SliderStyle::Rotary);
slider1.setTextBoxStyle(Slider::TextBoxBelow, true, 80, 20);
slider1.setTextValueSuffix(" Param1");
slider1.setRange(0.0, 1.0);
slider1.setValue(m_parameters->getParameter("Param1")->getValue(), dontSendNotification);
slider1.addListener(this);
// ... add other UI components for the remaining parameters ...
在上述代码中,我们使用了 m_parameteres->getParameter("Param1")->getValue()
获取当前参数的值并将其设置为滑块(Slider)的初始值。还需要添加一个监听器来响应滑块的值更改。
JUCE中的组参数提供了一种简单而强大的方法来管理和绑定参数,同时还允许在应用程序中存储和共享用户设置。如果您正在使用JUCE开发音视频和GUI应用程序,那么使用组参数是一项必备的技能。