0

我正在寻找对 JUCE 缓冲区内的信号进行过采样,该信号在 Visual Basic 上运行。 http://www.juce.com/about-juce

准确地说:通过过采样,我的意思是在相同的时间内增加样本数量。例如,如果原始文件为 44100 khz,我希望采样率增加到 88200khz。这对于衰减信号中可能出现的任何数字伪影很有用。

据我了解,Juce 对此有一个类: ResamplingAudioSource http://www.juce.com/api/classResamplingAudioSource.html#details 我的问题是我不知道如何实现该类。我试过像这样创建一个新的类实例:

类 PluginOversampler : public ResamplingAudioSource { public: PluginOversampler(); ~PluginOversampler();

void    setResamplingRatio (double samplesInPerOutputSample)

}

我的想法是我可以调用 PluginOversampler::setResamplingRatio(这里指定比率) 来改变重采样率。

但是该项目不会在 Visual Basic 中编译。错误数不胜数,数以百计。其中一些与我在不同的 .cpp 和 .h 文件中使用的全局变量string22相关

std::string string22 = "";

当产生的错误是:

extern std::string string22;
1>c:\users\friendly2\downloads\final\ctrl\source\plugineditor.h(28): error     C2377:    'std::string' : redefinition; typedef cannot be overloaded with any other symbol

当我省略声明时,项目编译得很好

  PluginOversampler : public ResamplingAudioSource

其他错误消息表明 Juce 头文件没有正确定义类型,但我认为错误来自我自己的编程,而不是 Juce 文件,因为该程序运行良好(vst 文件在 DAW 中运行良好)之前我实现了这一点。

我已经实例化了另一个类:

class PluginAudioProcessor  : public PluginProcessor
{
public:
    //==============================================================================
    PluginWidthCtrlAudioProcessor();
    ~PluginWidthCtrlAudioProcessor();

...
...

}

我是否需要让“PluginAudioProcessor”类继承“ResamplingAudioSource”中的函数?我很迷茫。

4

2 回答 2

0

准确地说:通过过采样,我的意思是在相同的时间内增加样本数量。例如,如果原始文件为 44100 khz,我希望采样率增加到 88200khz。这对于衰减信号中可能出现的任何数字伪影很有用。

不,这不对。

这是基本的信号理论:奈奎斯特成立。你对此无能为力。您的信号已经以 44.1kS/s 的速度数字化了一次,并且无法找回在该过程中丢失的信息(提示:没有丢失的信息;人类无法物理感知频率高于 22.05kHz 的事物)。

现在,完全有理由假设产生该信号的声卡在整个 0Hz - 22.05kHz 频谱上不是完全线性的。你可以通过均衡来解释这一点,但这是一个完全不同的故事。通常,在此过程中,您会在子带上使用特制的数字滤波器,这些子带本身的带宽低于原始信号,而不是更高。然而,均衡信号是一个难题,您需要首先估计数字化系统的特性——我想,当您无法将已知的参考信号输入其中时,这几乎是不可能的。

编辑:顺便说一句,您的错误看起来像是您不小心尝试重新输入定义std::string(例如,您做了类似typedef mytype std::string而不是 的事情typedef std::string mytype)。

于 2015-02-06T11:32:04.343 回答
0

你可以使用#define DONT_SET_USING_JUCE_NAMESPACE

你必须 JUCE::ResamplingAudioSource 或任何其他果汁类。

大多数 JUCE 类已经在其他库或系统库中定义。这应该可以帮助您解决大多数错误。

于 2015-02-06T11:24:26.523 回答