1

XCode 4.6 で Steinberg VST プラグインをプログラミングしています。

正しく機能するハイパスフィルターを既に実装しています。現在、二次関数を使用して非線形歪みを実行しようとしています。以下の数行を実装し、プラグインをホストにロードすると、プラグインからすぐに出力が得られます。何も聞こえませんが、メーターは高くなっています。

その理由がまったく想像できません。計算が行われる processReplaceing 関数は、プラグインのロード時ではなく、サウンドの再生時にのみ呼び出す必要があります。以下の数行のコードを削除すると、すべて問題なく、正しく聞こえるので、残りのプラグイン コードとは何の関係もないと思います。

問題は 2 つのホストで発生するため、おそらく VST のバグではありません。誰かが同様の問題を経験したことがありますか?

どうもありがとう、ファビアン

void Exciter::processReplacing(float** inputs, float** outputs, VstInt32 sampleFrames){

  for(int i = 0; i < sampleFrames; i++) {

    tempsample = inputs[0][i];


//Exciter - Transformation in positive region, quadratic distortion and backscaling

    tempsample = tempsample + 1.0f;        
    tempsample = powf(tempsample, 2.0f);
    tempsample = tempsample / 2.0f;
    tempsample -= 1.0f;        


//Mix-Knob: Dry/Wet ------------------------------------------------

    outputs[0][i] = mix*(tempsample) + (1-mix)*inputs[0][i];

編集:各関数にログファイル出力を追加しましたが、再生がオンになったときだけでなく、processReplaceing関数が永続的に呼び出されることが発生しました...しかし、なぜですか?

4

1 に答える 1

3

あなたは自分の編集で質問にほとんど答えました。 processReplacing繰り返し呼び出されます。これは VST 仕様の一部です。

VST プラグインは、リアルタイムのエフェクト処理を対象としています。これを先読みと混同したり誤解したりしないでください。リアルタイムとは、プラグインをチャネルに挿入し、DAW が録音している間に楽器を演奏することを意味します。レイテンシを軽減するために、ホストは常にプラグインにオーディオ バッファを送信していることがわかります (無音であるかどうかに関係なく)。

于 2013-05-23T17:48:10.833 に答える