高质量混响算法


11

我在该站点上做了一些搜索,但是令人惊讶的是,我没有找到太多相关信息,而且我对DSP的了解非常有限。

我的目标很简单:我想用C ++编写算法混响,听起来确实不错。或更准确地说,最好的选择是让最终用户选择质量和CPU使用率之间的权衡。

到目前为止,我发现要创建混响,必须将干燥信号输入早期反射算法,然后再输入后期反射算法。这个对吗 ?

现在,我使用了反馈延迟网络(使用时变反馈延迟网络减少了人工重塑需求),在后期反射部分找到了一篇广泛的文章。根据我的阅读,FDN是模拟后期反射的一种高质量但不太宽泛(CPU明智)的方式。此外,我想您可以通过更改延迟线的数量来控制质量/ cpu电荷的权衡。

但是,我绝对不知道如何对早期反射算法进行编程(还记得吗?我在DSP领域真的很无知)。

使用一种多重延迟在我看来是合乎逻辑的,它具有易于编程和计算便宜的优点。但这听起来太简单了,难以置信。

此外,我的直觉告诉我,信号路径中的某处必须包含一个或几个滤波器。

有人可以帮我澄清一下这个话题吗?

两个注意事项:

  • 我根本不需要卷积混响。我并不是很在意混响的真实性,但是我想要一个听起来不错,可调整的混响,而不是渴望CPU的混响。
  • 另外,编码部分并不是让我担心的,否则我会问stackoverflow。它实际上是DSP部分,也是我要关注的那部分:)

Answers:


10

您需要产生一些延迟,以产生早期反射(=与少数狄拉克之和进行卷积);而“尾部”则通常采用全通(AP)和梳状滤波器网络来实现。

第一部分实现起来很简单,但是很难正确理解。可能有助于查看峰值在预先记录的脉冲响应顶部的位置,以了解哪种响应是“自然的”。很难通过一些设置使其易于参数化,尽管您可以通过为该部件提供一堆预设来获得“混合”混响àVirsyn Reflect而摆脱它。

尾部是算法混响发亮的地方(无双关语),因为它易于参数化。算法混响的祖父是施罗德(Schroeder)算法。请注意,它只会产生一个“尾巴”,而不是早期的反射-您可以通过稍加延迟来增强它的头部。听起来不太好(非常“粒状”),但是这是一个不错的开始-您可能会遇到一些麻烦,并且有助于理解每个参数的影响。许多广受赞誉的算法混响,尤其是80年代的混响(Lexicon,Eventide,Publison)只是对全通滤波器和梳状滤波器的拓扑进行了微调。我怀疑这是由训练有素的耳朵进行的大量试验和错误,他们非常擅长弄清参数或拓扑的变化听起来如何,而不是任何科学方法。这是另一个有趣的读物-显示了Keith Barr最喜欢的混响拓扑。最初的midiverb可能不是您对“高质量算法混响”的定义,但听起来很甜美,这使人了解到它是由仅具有系数为0.5的MAC的“ dsp”制成的。

Valhalla room是我最喜欢的软件算法混响-花一些时间阅读其开发人员的博客,以找到有助于使其正确进行的事情的启发。


2
忘记提及Freeverb是Schroeder算法的一种更现代的变体(提供可用的代码,例如,可以在csound或ladspa代码库中找到)。
pichenettes 2012年

很有意思 !我也喜欢Valhalla产品(ValhallaShimmer发光,也没有双关语:))。您为什么提到卷积以进行早期反射?将正常延迟设置为multitap延迟就足够了吗?
Dinaiz 2012年

1
我提到了卷积,因为“多抽头延迟”只是一种特殊的卷积(具有一些非零系数,因此可以以幼稚的方式进行计算,而无需与“密集”卷积相关的炮兵)。无论如何,正如Hilmar指出的那样,多次抽头延迟可能有点天真,经过几次反射,因此在时间上扩展(=低通滤波)回声听起来会更加自然。可以通过对每个抽头使用简单LP的多次抽头延迟来完成;或者使用卷积引擎和预设IR直接计算混响的整个早期反射部分。
pichenettes 2012年

8

进行良好的混响并不容易。反馈延迟网络无疑是必经之路。具有所有通过和梳状滤波器的原始Schroeder算法遭受“频谱稀化”的困扰,这使其具有金属感。您需要在代表混响时间(作为频率的函数)的不同延迟线上输入与频率相关的衰减。可以通过抽头延迟线进行早期反射,同时还具有一些频率相关的衰减和一些扩散器以使它们不相关。进行立体声还需要一些去相关的方法。

有一个相当不错的开源实现,称为GVerb,它用于Audacity。谷歌搜索应该让您获得源代码的(合法)副本。


从您的帖子中听起来很简单!好吧,至少我能理解,除了有关去相关的部分。你到底是什么意思?关于频率相关的衰减,我想您的意思是扔掉一些滤波器并通过耳朵对其每一行的频率进行微调。我们到底在谈论哪种过滤器?生命值 ?LP?BP?谢谢 !
Dinaiz 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.