- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试制作一个基本的合成器插件。我的 slider 有问题。当我将它与 ValueTree 连接时,有时会出现以下错误。有时它可以正常工作。
// for a two-value style slider, you should use the setMinValue() and setMaxValue()
// methods to set the two values.
jassert (style != TwoValueHorizontal && style != TwoValueVertical);
我无法解释为什么我会收到有关二值 slider 的错误,即使我没有使用一个。我错过了什么吗?我是 JUCE 和 C++ 的新手,所以如果我遗漏了一些明显的东西,请原谅。
这就是我在 PluginProcessor.cpp 中添加参数的方式:
tree (*this, nullptr)
tree.createAndAddParameter("osc1_attack", "Osc1_Attack", "Osc1_Attack", envParam, 0, nullptr ,nullptr);
//Initialize Tree
tree.state = ValueTree("SynthTree");
这就是我在 PluginEditor.cpp 中创建 slider 的方式:
osc1AttackSlider.setSliderStyle(Slider::SliderStyle::LinearVertical);
osc1AttackSlider.setRange(0.1f, 500.0f);
osc1AttackSlider.setValue(0.1f);
osc1AttackSlider.addListener(this);
osc1AttackSlider.setTextBoxStyle(Slider::TextBoxBelow, false, 50, 20);
addAndMakeVisible(&osc1AttackSlider);
sliderTree = new AudioProcessorValueTreeState::SliderAttachment(processor.tree, "osc1_attack", osc1AttackSlider);
这就是我在 PluginEditor.h 中声明 sliderTree 变量的方式:
AudioProcessorValueTreeState::SliderAttachment* sliderTree;
我遵循了“theAudioProgrammer”的非常好的 YouTube 教程,他为此使用了 ScopedPointer。对我来说,它只适用于组合框,如果我在这里使用它,我会收到以下错误:
/** Returns a raw pointer to the allocated data.
This may be a null pointer if the data hasn't yet been allocated, or if it has been
freed by calling the free() method.
*/
inline ElementType* get() const noexcept { return data; }
最佳答案
我想我以前遇到过这个问题。该框架已更新,而不是使用 tree.addAndCreate 来设置您需要放置的参数
tree(*this, nullptr, "Parameters", createParameterLayout() )
像这样在你的构造函数中
YourProjectAudioProcessor::YourProjectAudioProcessor(){
#if ! JucePlugin_IsMidiEffect
#if ! JucePlugin_IsSynth
.withInput ("Input", juce::AudioChannelSet::stereo(), true)
#endif
.withOutput ("Output", juce::AudioChannelSet::stereo(), true)
#endif
),
tree(*this, nullptr, "Parameters", createParameterLayout() );
#endif
}
你可以放
std::make_unique <AudioParameterInt>("oct", "Oct", -3.0f, 3.0f, 0.0f), std::make_unique <AudioParameterInt>("tone", "Tone", -12.0f, 12.0f, 0.0f), std::make_unique <AudioParameterFloat>("tune", "Tune", -1.0f, 1.0f, 0.0f)
(请记住,此参数语句末尾的 float 接管了 slider setRange 函数,我不确定您是否需要保留 setRange 函数,或者这是否会导致错误或崩溃。您可能不得不如果您在 setRange 函数中设置了捕捉值,则捕捉到 int 值而不是浮点值。)
在“参数”位于 tree() 函数中的位置,或者创建如下所示的参数布局,在这种情况下,您只需要按原样保留“参数”。
juce::AudioProcessorValueTreeState::ParameterLayout YourProjectAudioProcessor::createParameterLayout(){
std::vector <std::unique_ptr<RangedAudioParameter>> params;
auto octVal = std::make_unique <AudioParameterInt>("oct", "Oct", -3.0f, 3.0f, 0.0f);
auto toneVal = std::make_unique <AudioParameterInt>("tone", "Tone", -12.0f, 12.0f, 0.0f);
auto tuneVal = std::make_unique <AudioParameterFloat>("tune", "Tune", -1.0f, 1.0f, 0.0f);
params.push_back(std::move(octVal));
params.push_back(std::move(toneVal));
params.push_back(std::move(tuneVal));
return { params.begin(), params.end() };}
此外,值树现在是一个作用域指针,因此在您声明 slider 附件树的地方,它现在需要是一个唯一指针,而不是作用域指针或原始指针。
std::unique_ptr <AudioProcessorValueTreeState::SliderAttachment> sliderOctTree;
std::unique_ptr <AudioProcessorValueTreeState::SliderAttachment> sliderToneTree;
std::unique_ptr <AudioProcessorValueTreeState::SliderAttachment> sliderTuneTree;
例如,您还需要使新的 sliderTree 值独一无二。将 new 更改为 std::make_unique 并将 slider 附件范围 AKA AudioProcessorValueTreeState::SliderAttachment 放在尖括号中。
sliderTree = std::make_unique <AudioProcessorValueTreeState::SliderAttachment>(processor.tree, "osc1_attack", osc1AttackSlider);
关于c++ - JUCE: slider ,ValueTree 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50669459/
您能否指出任何使用JUCE库处理iOS中音频的示例。提前致谢。 问候, 瓦鲁纳。 最佳答案 查看JUCE随附的JUCE演示。这在iOS上运行正常。只需编辑该代码并向AudioIODeviceCallb
我试图在音频插件中添加一个按钮,但在测试时似乎无法显示。 我正在使用插件主机来测试和查看 GUI。 pad1 在PluginEditor.h 中定义: private: // This ref
从使用 JUCE 中的可视化所见即所得编辑器制作单页应用程序开始,我在弄清楚如何调用新窗口(在主 GUI 窗口之外)时遇到了一些麻烦。我制作了一个测试应用程序,它只有一个我用可视化编辑器创建的最小主
我有一个名为 Obstacle 的组件,我使用 addAndMakeVisible 和 setBounds 函数将其用作我的 mainContentComponent 的组件。我希望根据时间在我的窗口
我正在寻找在 JUCE 中嵌入字体的简单分步解决方案。 我在应用程序中嵌入字体时遇到了一些麻烦(完全忘记在应用程序发布之前投入时间,现在我的应用程序没有在用户系统上显示我的字体 - 这是可以理解的)。
我有一些图像按钮及其各自的按钮监听器。 我尝试在 buttonClicked 函数上: void TestComponent::buttonClicked (Button* activeButton)
有没有办法使用 JUCE 从相对路径中包含一个文件?在图形、向上和向下按钮状态之间,我有大约 40 张图像并尝试通过 ProJucer 创建它们会导致生成数千行(在这种特定情况下超过 20,000 行
我刚开始使用 C++ 的 Juce GUI 库。我正在尝试创建自定义列表框,稍后我将在其中显示文件名。现在我需要在鼠标移入/移出/单击时更改此自定义列表框行的背景颜色。问题是 MouseEnter()
我只想为音频文件设置一个过滤器,所以我写了这一行 fileChooser->setFileFilter(WildcardFileFilter("*.wav;*.aiff", "Audio Files"
我正在为大学创建一个卷积混响插件,我已经设法让一个简单的插件工作,其中输出是通过脉冲响应的输入。我想知道如何更改代码以制作湿/干参数。 我为此添加了一个“混合”参数: const float defa
我目前正在为大学创建一个卷积混响插件,我已经下载了一个已经制作好的卷积器库以供在插件中使用。我有一些生成脉冲响应的代码,但是我不太确定如何将实际的音频文件加载到进程中。 这是卷积器类: class F
我需要开始构建一个使用 JUCE 库的 Android 应用程序。我正在阅读该网站并尝试弄清楚一些东西。 我尝试在 Ubuntu 11.04 系统上安装 JUCE,当我构建 IntroJucer 应用
我有一个 VST 插件的代码,需要将其中的一些移植到 iOS 应用程序。 我已经尝试构建 OSX 版本并使用 lib.a 但它不起作用。当我打开它的 iOS 版本时,Xcode 显示它缺少 tagre
我正在尝试制作一个基本的合成器插件。我的 slider 有问题。当我将它与 ValueTree 连接时,有时会出现以下错误。有时它可以正常工作。 // for a two-value style sl
我下载了 Juce 和 VisualStudio2017,因为通过研究,Juce 似乎是创建处理 MIDI 文件的 GUI 应用程序的好方法。 我的问题是我什至无法使用 GUI 的第一个示例!对于多个
我正在使用 JUCE 框架在 C++ 中制作一个小工具。它发出 MIDI 但我遇到了问题。我想向我的 DAW 发送和弦,方法是先发送消息注释,然后发送消息关闭消息。 noteOn 代码如下所示:
我试图让“去定义”为使用 Projucer 创建的 JUCE 项目工作。我已经尝试过 CLion 和 Visual Studio Code,但他们似乎无法找到存在于 JUCE 库中的定义。 我在 Ub
我在 iOS 音频应用程序中遇到了 IIRFilter 问题。 我在 slider 更改上使用了 setCoefficients 方法,但是当我移动 slider 时,我会发出噼啪声,然后应用程序会卡
我正在使用 Juce 创建一个卷积混响插件,但我在加载脉冲响应音频文件时遇到了一些问题。 我正在使用 AudioFormatReader 类。这是我到目前为止实现的代码,它产生了一些错误: std::
我熟悉 cinder,但我从未将第三方 c++ 库添加到 cinder 项目中。我需要使用 JUCE api 的 midi 解析能力,但不知道如何继续安装库,然后将其包含在我的构建中。非常感谢任何帮助
我是一名优秀的程序员,十分优秀!