サンプルの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
が上書きされていると。
わかってしまえば,「なあんだ」って話なんですがね…。