vst作成メモ

サンプルのAGainを参考にして,

void EstMS::processReplacing(float** inputs, float** outputs, VstInt32 sampleFrames)
{
  float* in1  =  inputs[0];
  float* in2  =  inputs[1];
  float* out1 = outputs[0];
  float* out2 = outputs[1];

てな感じで,バッファのアドレスを取り出して,

  *out1 = (*in1 + *in2) * fGain;
  *out2 = (*in1 - *in2) * fGain;

という処理を,(各ポインタを加算しながらsampleFrames回)繰り返せばいいかと思ったが,うまくいかなかった。何故か2回通すとモノラルっぽくなる。けど,完全にモノラルでもない。

いろいろ試行錯誤した結果,どうやら入力と出力のバッファのアドレスが同じだったらしい。上の行で*out1に書き込んだ時点で*in1が上書きされていると。

わかってしまえば,「なあんだ」って話なんですがね…。