C++ Juce实施重新采样音频源

C++ Juce实施重新采样音频源,c++,juce,C++,Juce,我希望在VisualBasic上运行JUCE中的缓冲区内对信号进行过采样。 准确地说:所谓过采样,我的意思是在相同的时间内增加样本数量。例如,如果原始文件为44100 khz,我希望采样率增加到88200 khz。这对于衰减信号中可能存在的任何数字伪影非常有用 据我所知,Juce为此有一个类:重新采样音频资源 我的问题是我不知道如何实现这个类。我已尝试创建该类的新实例,如下所示: 类pluginorSampler:公共重采样音频源 { 公众: pluginorSampler(); ~plugi

我希望在VisualBasic上运行JUCE中的缓冲区内对信号进行过采样。

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

据我所知,Juce为此有一个类:重新采样音频资源 我的问题是我不知道如何实现这个类。我已尝试创建该类的新实例,如下所示:

类pluginorSampler:公共重采样音频源 { 公众: pluginorSampler(); ~pluginorSampler()

}

这样我就可以调用PluginOversampler::setResamplingRatio(此处指定的比率)来更改重采样率

但该项目将不会在visual basic中编译。错误数不胜数,多达一百个。其中一些与全局变量string22有关,我在不同的.cpp和.h文件中使用该变量

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”中的函数?我迷路了

您可以使用#define DONT_SET_使用_JUCE_名称空间

您必须使用JUCE::ResamplingAudioSource或任何其他juice类

大多数JUCE类已经在其他库或系统库中定义。这将帮助您解决大多数bug

准确地说:我所说的过采样,是指增加样本数量 在同样的时间里。如果原始文件的频率为44100 khz, 例如,我希望采样率增加到88200khz。 这对于衰减可能出现的任何数字伪影非常有用 在信号灯里

不,不是

这是基本的信号理论:保持。你对此无能为力。您的信号曾以44.1kS/s的速度数字化过一次,无法恢复在这一过程中丢失的信息(protip:没有丢失的信息;人类无法实际感知频率高于22.05kHz的事物)

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

编辑:顺便说一句,您的错误看起来像是您意外地试图重新键入def
std::string
(例如,您执行了类似于
typedef mytype std::string
的操作,而不是
typedef std::string mytype
)。

“在visual basic上运行”。。。。这是什么意思?
class PluginAudioProcessor  : public PluginProcessor
{
public:
    //==============================================================================
    PluginWidthCtrlAudioProcessor();
    ~PluginWidthCtrlAudioProcessor();

...
...

}