Unityエンジンでオーディオフィルター用のC#スクリプトを作成しています。
私の問題は、フィルターを通過した後、結果のオーディオに一貫した頻繁な「クリック」、「ポップ」、または「スキップ」が発生することです。古いラジオのように聞こえます。
何が原因なのかわかりません。
これが私のコードです:
public float cutoff;
public float resonance;
int sampleRate;
void Start()
{
cutoff = 200;
resonance = 1;
sampleRate = AudioSettings.outputSampleRate;
}
void OnAudioFilterRead(float[] data, int channels)
{
float c = 2 * Mathf.PI * cutoff/sampleRate;
float r = 1 / resonance;
float v0 = 0;
float v1 = 0;
for (int i = 0; i < data.Length; i++)
{
v0 = (1 - r * c) * v0 - (c) * v1 + (c) * data[i];
v1 = (1 - r * c) * v1 + (c) * v0;
data[i] = v1;
}
}
OnAudioFilterRead()のドキュメントは次のとおりです。
ここで、元のローパスコードを取得しました。
カットオフが最大値(127)に近づくと、クリックとポップが静かになります。
明らかなように、私はオーディオプログラミングにかなり慣れていないので、何が原因かわかりません。
私よりも知識のある人が私が間違っていることを説明できますか?
ありがとう!