0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在ADI DSP中设计一个合理的混响(下)

骏龙电子 来源:骏龙电子 2024-03-06 15:33 次阅读

本文为下篇,将对混响的具体参数调整以及选择 ADIDSP 设计合理算法进行深入解析。关于混响的类型、主要几大类 DSP 混响的实现原理,可参考上篇《如何在 ADI DSP 中设计一个合理的混响 (上) 》。

混响的常见参数

在上篇文章中,我们提及了混响的类型和基本实现原理。目前做一个专业级混响需要设置许多参数,有些参数是必备的,而有些是在特定需求下慢慢增加起来的。专业的效果器一般包含了如下图 (图1) 所示的一些参数:

c451fe98-db8b-11ee-a297-92fbcf53809c.jpg

图1 混响的相关参数

混响时间:能够逼真地模拟自然混响的数码混响器上都有一套复杂的程序,其中虽然有很多技术参数可调,然而对这些技术参数的调整都不会比原有的效果更为自然,尤其是混响时间 (取决于预延迟时间以及衰减速率和收敛的判定)。

预延迟时间:在混响效果器上的众多参数中,预延迟时间 (Predelay) 是一个比较重要的点。所谓预延迟时间,指的是进入人耳的直达声和第一次反射声之间的时间间隔。在混音中,预延迟时间的选择与我们的基准时间有着一定的关联性。而基准时间的计算方式一般来说就是拿 60 秒除以音乐 BPM 的值 (取决于直达声之后做的延迟时间以及 FIR 的时间)。

高频滚降:此项参数用于模拟自然混响中,空气对高频的吸收效应,以产生较为自然的混响效果。一般高频混降的可调范围为 0.1~1.0。此值较高时,混响效果也较接近自然混响;此值较低时,混响效果则较清澈 (取决于低通滤波器的阶数以及截至频率的设计)。

扩散度:此项参数可调整混响声阵密度的增长速度,可调范围为 0~10,其值较高时,混响效果比较丰厚、温暖;其值较低时,混响效果则较空旷、冷僻 (取决于 Comb Filter 的 D 值选取以及回声密度递增数值)。

声阵密度:此项参数可调整声阵的密度,其值较高时,混响效果较为温暖,但有明显的声染色;其值较低时,混响效果较深邃,器声染色也较弱 (取决于 Comb Filter 的数量)。

频率调制:这是一项技术性参数,因为电子混响的声阵密度比自然混响稀疏,为了使混响的声音比较平滑、连贯,需要对混响声阵列的延时时间进行调制。此项技术可以有效消除延时声阵列的段裂声,可以增加混响声的柔和感 (取决于 Comb Filter 的延时时间)。

混响类型:不同房间的自然混响声阵列差别也较大,而这种差别并不是一两项参数就能表现的。在数码混响器当中,不同的自然混响需要不同的程序。它的可选项一般有小厅 (S-Hall)、大厅 (L-Hall)、房间 (Room)、随机 (Random)、反混响 (Reverse)、钢板 (Plate)、弹簧 (Spring) 等。其中小厅、大厅、房间混响属自然混响效果;钢板、弹簧混响则可以模拟早期机械式混响的处理效果。

干湿比:干声信号和混响信号的比例,调节直达声以及混响信号的分量比重。

从这些后续发展出来的参数不难看出,涉及的调节选择变得越来越多,那么对于设计者来讲,如何挑选合适的参数和类型去搭建自己想要的产品就变得非常重要。

DSP 和混响类型的选择

在实际的生产应用中,选择混响的类型并不是直接去选一个最完善的类型就好了。实际上很多时候应用达不到这个条件,越完善的混响类型意味着它对 DSP 的内存空间以及算力大小都是有需求的。然而在很多成本预算不是那么充足,或者工作环境对功耗等方面都有需求的产品中,我们无法选择那么一个较高复杂度的混响。

举个很简单的例子,比如 A 用户需要做一个轻量级的吉他拾音器,拾音器主要的目的就是拾音,当然为了丰富一些效果,可能我们需要调节高中低频的 EQ,加一个混响。在这个时候,选择一个 ECHO 类的混响要比选择 MOORER 类的混响好太多。

从控制成本和功耗的角度上来讲,虽然 ECHO 类并不如 Moorer 类的好,但是在演奏中已经够用,复杂的可以通过拾取后送到效果器或者功放中去实现。在选择时,建议都要根据自己的产品类型合理地从成本、封装体积大小,以及功耗上选择最为合适的产品。

ADI DSP 在 ECHO 类算法的基本实现

众所周知,ADI 在音频的 DSP 上相当有竞争力,从 Sigma 到 Sharc 类的 DSP 均运用于各类音频电子产品中。如下图 (图2) 所示为 ADI SigmaDSP 产品选型对比表:

c4622db8-db8b-11ee-a297-92fbcf53809c.jpg

图2 SigmaDSP 的产品选型对比表

下图 (图3) 为 ADI SharcDSP 产品选型对比表:

c474a330-db8b-11ee-a297-92fbcf53809c.jpg

图3 SharcDSP 的产品选型对比表

ADI SigmaDSP 的产品是定点的数字信号处理器,而 SharcDSP 即全浮点的数字信号处理器。全浮点的 DSP 可以处理复杂度比较高的混响,SigmaDSP 一般用于处理一些简单一点的混响。

以下将展示一些 ECHO 类混响在 DSP 上的应用实现,目前混响主要对内存的空间需求是比较多的,存在着很多 Delay。ECHO 类混响在 ADAU1701 和 ADAU1761中 的实现如下图 (图4) 所示:

c4892918-db8b-11ee-a297-92fbcf53809c.jpg

图4 ECHO 类混响在 ADAU1761 中的实现

从图中可以看出,直达声直接作为干音传到输出端,将音源的左右通达合成一路用来减少内存空间和算力的消耗,用三个延时线创造混响空间,传到后端进行低通滤波,实现高频滚降。这样做能够得到一定量的混响的效果,但是由于回声密度不够,增益调节以及扩散度和频率调制是无法实现的,适合一些轻量化的产品应用。我们在 SharcDSP 中一般直接通过代码来实现,例如下方的 ECHO 类回声的实现:

创建一个 DSP 混响的效果器。以下图 (5) 是一个使用 Python 和 NumPy 库实现简单 DSP 混响效果的示例代码:

c4a2d8c2-db8b-11ee-a297-92fbcf53809c.jpg

图5 Python 实现 DSP 混响效果 (横版)

如上图 (图5) 所示的代码实现了一个基本的 DSP 混响效果,包括延迟线和低通滤波器。我们可以根据需要调整延迟时间和截止频率来改变混响的效果。需要注意的是,这个示例使用了 Python 的 NumPy 库来处理数字信号,并且需要在支持音频播放的环境中运行 (例如 Jupyter notebook 或 Python 脚本)。

c4bd5bd4-db8b-11ee-a297-92fbcf53809c.jpg

图6 ECHO 类混响效果用 C 语言实现 (横版)

如上图 (图6) 所示的代码是一个简单的 DSP 混响效果实现,它使用了 C 语言进行编程。代码主要有以下操作:

定义了一些常量,如采样率、帧大小、通道数、延迟长度和衰减时间等;

定义了一个名为 DelayBuffer 的结构体,用于实现延迟缓冲区;

创建了一个名为 create_delay_buffer 的函数,用于创建延迟缓冲区;

定义了一个名为 destroy_delay_buffer 的函数,用于销毁延迟缓冲区。

在 main 函数中,首先创建了一个延迟缓冲区,然后进入了一个循环,模拟了信号的输入、处理和输出过程。在每次循环中,信号被输入到混响效果处理中,处理后的信号被输出,同时衰减时间也在不断衰减。最后当延迟时间达到最大值时,循环结束,延迟缓冲区被销毁。

在 ADI Sharc 平台上,当我们跑通 Framework 之后,导入这一部分代码,将音频流导入进去就可以得到一个 ECHO 类的混响效果。如果需要更高级好用的 Schroeder & Moorer 类混响系统时,可以通过开源框架 Sox,Freeverb 和 Tonic 去获取,完整的算法会比较长,需要大家在线下去参考。

总结

本文简要概述了混响的相关类型和实现方式,通过对产品的需求分析,可以在 ADI DSP 中去实现合适的算法。ADI DSP 在各类混响的算法都能够实现,同时也支持大家进行相应的产品选择。




审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • dsp
    dsp
    +关注

    关注

    544

    文章

    7682

    浏览量

    344364
  • 低通滤波器
    +关注

    关注

    13

    文章

    448

    浏览量

    46919
  • FIR
    FIR
    +关注

    关注

    4

    文章

    137

    浏览量

    32724
  • BPM
    BPM
    +关注

    关注

    0

    文章

    24

    浏览量

    8029

原文标题:如何在 ADI DSP 中设计一个合理的混响 (下)

文章出处:【微信号:骏龙电子,微信公众号:骏龙电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    何在ADI DSP中设计一个合理混响(上)

    声波在室内传播时,会被墙壁、天花板、地板等障碍物反射,每经过反射一次都会被障碍物吸收一些。当声源停止发声后,声波在室内要经过多次反射和吸收,最后才消失。
    的头像 发表于 03-05 15:23 507次阅读
    如<b class='flag-5'>何在</b><b class='flag-5'>ADI</b> <b class='flag-5'>DSP</b>中设计一个<b class='flag-5'>合理</b>的<b class='flag-5'>混响</b>(上)

    请问ADAU1452能否实现使用电位器调节混响的功能?

    目前做一个有源音箱的方案,使用了ADAU1452的DSP,想实现使用电位器(连接DSP的ADC脚)调节混响的功能。是否有相应的案例可以参考。
    发表于 01-11 08:09

    混响室内场分布统计特性的研究

    混响室是足够大的金属腔,其内部配备有机械搅拌器。在空的腔体中有许多传播模式,这些传播模式在腔体
    发表于 10-13 08:27

    何在CCS3.3建立简单的工程_DSP28335

    本帖最后由 mr.pengyongche 于 2013-4-30 03:07 编辑 如何在CCS3.3建立简单的工程_DSP28
    发表于 12-26 15:27

    什么是混响

    求什么叫混响呀,他跟DSP有什么区别?
    发表于 03-26 11:06

    请问能否推荐基于ADI DSP的第三方算法公司?

    能否推荐基于ADI DSP的第三方算法公司?
    发表于 09-20 14:48

    何在ADS软件添加ADI组件库?

    嗨工程师,谁能说出如何在ADS软件添加ADI组件库?提前致谢 :) 以上来自于谷歌翻译 以下为原文Hi Engineers, Can anyone tell how to add
    发表于 12-14 16:59

    请问adidsp般开发板的dsp差别大吗?

    直在学习dsp,用的开发板处理器是F28335,发现adi也有dsp产品,但是搜了之后发现没有这个型号,1.想问一下应该选择哪个型号和F2
    发表于 01-11 12:48

    【电路精选】音频混响电路

    【应用背景】混响音效通常是用来创造更有深度的音频。既可以用来提高乐器的音色也可以让五音不全的歌手瞬间变成天籁之音。在过去,扬声器般是用弹簧箱来为乐器创造混响音效的。扬声器般会有
    发表于 08-04 05:00

    微波混响暗室的最新应用是什么?

    目前支持多标准的移动终端正在大量发展,并且主要应用又集中在多干扰的都市地区。这不仅带动各种移动终端板载小型天线的发展,并且引导了相应的精准量测解决方案的开发,如微波混响暗室就是典型的案例,尤其
    发表于 08-09 07:53

    何在离线功率因数校正预调节器合理配置UCC28051?

    何在离线功率因数校正预调节器合理配置UCC28051,让其可在85V~265V的通用输入电压范围内工作,具有400V DC稳压输出?
    发表于 04-07 06:42

    Altiverb 7增加252混响器采样

    252  数字混响器  252数字混响是著名的251的继任者。与早期的250和251相比,这个252是以19英寸机架安装的形式出现的,带有遥控器。  具有REV-D、NONLIN、
    发表于 10-12 11:02

    怎样在ADI的21489或者SC584上实现更高精度的卷积混响

    怎样在ADI的21489或者SC584上实现更高精度的卷积混响呢?其卷积方式是什么?
    发表于 11-19 07:32

    DSP数码混响功率调音台

    DSP数码混响功率调音台 1 2 C h a n n e l s , 4 g r o u p s , D S P mu
    发表于 04-13 14:28 82次下载

    基于DSP人工混响算法实时处理系统

    提出了基于定点DSP 的人工混响算法实时处理系统。讨论了DSP芯片TMS320VC5509与音频编解码芯片TLV320AIC23的硬件接口和软件设计,并在此基础上论述人工混响算法实时播
    发表于 07-27 16:22 42次下载