【问题标题】:Wet/dry control in Juce convolution reverb pluginJuce卷积混响插件中的干/湿控制
【发布时间】:2016-01-25 12:26:30
【问题描述】:

我正在为大学创建一个卷积混响插件,并且我设法让一个简单的插件工作,其中输出是通过脉冲响应的输入。我想知道如何更改代码以制作湿/干参数。

我为此添加了一个“混合”参数:

const float defaultBlend = 0.5f;
addParameter(blendParam = new FloatParameter (defaultBlend, "Blend"));

然后初始化卷积器:

convolver.init (512, buffer.getReadPointer(0), buffer.getNumSamples());

并在此处处理:

 for (int channel = 0; channel < getNumInputChannels(); ++channel)
    {
        float* channelData = buffer.getWritePointer (channel);
        const float* inputData = buffer.getReadPointer(channel);

        for (int i = 0; i < buffer.getNumSamples(); ++i)
            channelData[i] = inputData[i] * level / 20;

        //convolver stuff
        convolver.process (inputData, channelData, buffer.getNumSamples());

    }

有什么想法吗?

【问题讨论】:

  • 到目前为止您尝试过什么?你表明你已经添加了参数,但不是你试图用它做什么。
  • 我不知道该怎么处理它。
  • 你应该花点时间想想你想让它做什么;即给定特定的输入和“混合”,您期望会发生什么? Rubber ducking 也可以提供帮助。完成之后,您可能会发现自己对自己需要做的事情有了更清晰的了解。
  • 我知道,当“blend”处于最小值时,输出会完全干,而当 blend 处于最大值时,您只会听到混响,根本听不到干信号。我已经考虑过了,但我不确定如何实现这一点。我知道我需要将输入日期和混响数据作为两个单独的变量,并使用 blend 参数在这些变量之间移动,就我所知。

标签: c++ audio signal-processing convolution juce


【解决方案1】:

考虑到您的问题,您似乎正在寻找以下属性:

  1. 给定 blendParam0.0f,只需原样传递音频即可。
  2. 给定blendParam1.0f,将音频处理到最大容量。
  3. 给定 blendParam0.5f,将一半未处理的音频与已处理的音频混合。

我建议您在继续之前为上述(以及更多)编写一些单元测试。

以下代码似乎满足这些属性:

channelData[i] = level * (inputData[i] * (1.0f - blendValue) + convolvedData[i] * blendValue);
  • convolvedData 是您“完全处理”的数据。
  • blendValueblendParam.getValue() 的缓存值

您可以像现在一样通过调用convolver.process 来获取convolvedData,并将一个名为convolvedData 的单独数组作为您的输出参数。

请注意,这并不意味着将结果数字限制在[-1.0f, 1.0f] 范围内,并且可能有更有效的方法来执行此操作,但这对您来说是一个起点。

【讨论】:

  • 我不知道如何使用结果:'convolver.process (inputData, channelData, buffer.getNumSamples());'作为一个名为 convolvedData 的变量。你能解释一下吗?
  • 查看我在问题中输入的代码,我在什么时候实现了您编写的代码行以及在哪里调用 convolver.process?
  • @willfo 如果我这样做,我想我不会帮助你;这是为大学准备的,需要您自己解决一些问题,以便您学习。如果您觉得这有帮助,请标记为已接受。
  • @willfo 我也不想给你答案,但这里有一个提示:让卷积器的过程函数返回某个变量......希望它成功!果汁很有趣:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-25
  • 2013-10-07
  • 1970-01-01
  • 2015-09-29
  • 1970-01-01
相关资源
最近更新 更多