📜  组参数 JUCE (1)

📅  最后修改于: 2023-12-03 15:41:14.781000             🧑  作者: Mango

JUCE 组参数介绍

JUCE是一个C++跨平台应用程序框架,它提供了一系列的组件和工具类,可以用于开发音乐、音效、图像处理、GUI应用等多种应用。

组参数概述

JUCE中的组参数(Group Parameters)实现了一个参数组(Parameter Group),并且可以与 AudioProcessorValueTreeState 一起使用。如图所示:

Group Parameters

  • 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应用程序,那么使用组参数是一项必备的技能。