我希望对运行在visual上的JUCE缓冲区中的一个信号进行过采样。http://www.juce.com/about-juce
准确地说:过度取样是指在相同的时间内增加样品的数量。例如,如果原始文件为44100千赫,我希望样品率增加到88200 khz。这对于衰减信号中可能存在的任何数字手工艺品是有用的。
据我所知,Juce有这样一个类: ResamplingAudioSource http://www.juce.com/api/classResamplingAudioSource.html#details我的问题是我不知道如何实现这个类。我尝试创建类的一个新实例,如下所示:
类PluginOversampler : public ResamplingAudioSource { public: PluginOversampler();
void setResamplingRatio (double samplesInPerOutputSample)}
有了这样的想法,我可以在这里调用PluginOversampler::setResamplingRatio(specified比率来改变重采样率。
但是该项目不会在visual中编译。错误数不胜数,多达上百个。其中一些与全局变量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’中的函数?我很迷茫。
发布于 2015-02-06 11:24:26
您可以使用#define DONT_SET_USING_JUCE_NAMESPACE
你必须学习JUCE::ResamplingAudioSource或任何其他果汁类。
大多数JUCE类已经在其他库或系统库中定义。这将帮助您解决大多数bug。
发布于 2015-02-06 11:32:04
准确地说:过度取样是指在相同的时间内增加样品的数量。例如,如果原始文件为44100千赫,我希望样品率增加到88200 khz。这对于衰减信号中可能存在的任何数字手工艺品是有用的。
不,不是的。
这是基本的信号理论:尼奎斯特持有。你什么也做不了。你的信号已经数字化了一次,44.1kS/s,没有办法收回在这个过程中丢失的信息(protip:没有丢失的信息;人类无法实际感知频率高于22.05kHz的东西)。
现在,假设产生信号的声卡在整个0HZ-22.05kHz的频谱上并不是完全线性的,这是完全合理的。你可以通过均衡来解释这一点,但这完全是另一回事。通常,在这个过程中,您使用巧尽心思构建的数字滤波器的子带,其本身的带宽低于您的原始信号,而不是更高。然而,均衡信号是一个困难的问题,你需要首先估计数字化系统的特性--我猜,当你没有可能得到已知的参考信号时,这几乎是不可能的。
编辑:顺便说一句,您的错误看起来像是意外地尝试了re std::string (例如,您做了类似于typedef mytype std::string而不是typedef std::string mytype的事情)。
https://stackoverflow.com/questions/26687963
复制相似问题