我正在为 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),咔嗒声和爆破声变得更安静。
我对音频编程相当陌生,这可能很明显,所以我不确定是什么原因造成的。
比我更有知识的人可以解释我做错了什么吗?
谢谢!