1

我正在尝试使用 FFT 创建/实现实时混响算法。我尝试过 FDN 和其他更简单的算法,但它们听起来还不够好。因此,通过将变换后的信号和变换后的脉冲响应相乘来进行快速卷积是有效的,而且听起来很棒。

我看到的问题是,如果我想要一个持续几秒钟的混响,那么脉冲响应包含 100 000+ 个值,并且由于我的输入缓冲区是 256 个样本,所以卷积的结果是 100 255+ 个结果值,必须与之前的卷积结果相加,更不用说为 256 个输入样本的每个缓冲区计算 100 000+ 个值的 FFT。

这个问题必须有更好的解决方案。是否可以仅计算 256 个值的 FFT(+ 256 个填充零,因为它不是循环信号)。混响不必绝对正确,只要听起来不错。

4

1 回答 1

2

您可能希望考虑“频率延迟线”,或者称为分区卷积。简而言之,您可以将混响 IR 分成几个分区,进行 FFT,与输入信号进行卷积,然后以设置为相关分区延迟的延迟将其插入输出。对于几秒钟的完整 IR,这仍然是 CPU 密集型的,所以......

其他技巧包括将头部相关传递函数 (HRTF) 输入到更传统的混响合成算法中。这体现了房间的频率响应在第一组反射中表示的理念。然后可以将 HRTF 输入到更传统的平坦响应混响合成算法中,以创建多重反射。使用 HRTF 代替传统的梳状滤波器。

更具体地指出您的问题,请查看 Fons Adriaensen 的工作。 http://kokkinizita.linuxaudio.org/papers/aella.pdf http://kokkinizita.linuxaudio.org/papers/index.html(更多有趣的论文)

探索他的网站以获取其他有趣的插件和源代码。

CCRMA(斯坦福)的 Julius O Smith 也有很多很好的信息。

我无法在这里详细回答,但我希望 Fons 的论文能回答你的问题。

于 2013-04-18T21:03:33.573 回答