Visual Basic で実行されている JUCE のバッファー内にある信号をオーバーサンプリングしようとしています。 http://www.juce.com/about-juce
正確に言うと、オーバーサンプルとは、同じ時間でサンプル数を増やすことを意味します。たとえば、元のファイルが 44100 khz の場合、サンプル レートを 88200 khz に上げたいと思います。これは、信号に存在する可能性のあるデジタルアーティファクトを減衰させるのに役立ちます。
私が理解していることから、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 ヘッダー ファイルがタイプを正しく定義していないことを示唆していますが、以前はプログラムが完全に機能していた (vst ファイルは DAW で正常に機能していた) ことを考えると、エラーは Juce ファイルではなく、自分のプログラミングに起因すると考えられます。これを実装しました。
私はすでに別のクラスをインスタンス化しています:
class PluginAudioProcessor : public PluginProcessor
{
public:
//==============================================================================
PluginWidthCtrlAudioProcessor();
~PluginWidthCtrlAudioProcessor();
...
...
}
クラス「PluginAudioProcessor」に「ResamplingAudioSource」内の関数を継承させる必要がありますか? 私はかなり迷っています。