主要内容

使用Freeverb算法添加混响

这个例子展示了如何使用Freeverb混响算法将混响应用到音频。混响可以使用MATLAB中的用户界面(UI)或通过MIDI控制器进行调谐。这个例子说明了MATLAB®和Simulink®的实现。金宝app

介绍

混响器用于在音频信号中添加多个衰减回声或混响的效果。混响的一个常见用途是模拟在封闭的房间里播放的音乐。大多数数字音频工作站(daw)都可以在音轨中添加这样的效果。

在本例中,您通过Freeverb算法向音频添加混响。Freeverb是Schroeder混响器的一个流行实现。Freeverb算法的高级模型如下所示:

示例架构

混响器在System对象中实现audioexample。FreeverbReverberator.该对象有五个属性,可以在模拟运行时进行调优:RoomSizeStereoWidthWetDryMix平衡,体积RoomSize影响梳状滤波器的反馈增益。StereoWidthWetDryMix两者都参与过滤完成后的混合阶段。的默认值StereoSpreadCombDelayLength,AllpassDelayLength属性取自Freeverb规范。

MATLAB仿真

要使用混响器对音频信号,请运行audioFreeverbReverberationExampleApp

audioFreeverbReverberationExampleApp

audioFreeverbReverberationExampleApp命令首先设置音频源和播放器。然后迭代地调用audioexample。FreeverbReverberator带有音频输入的系统对象,以流方式提供附加混响。对象的输出被回放,因此您可以听到添加到音频中的效果。

模拟将打开一个用户界面进行交互audioexample。FreeverbReverberator在模拟运行时。UI允许您调优参数,结果立即反映在模拟中。例如,移动滑块房间大小在模拟运行时,左边降低了被模拟房间墙壁的反射率。

在UI上也有三个按钮-重置按钮将重置梳和所有通过部分的状态在混响器到他们的初始值和暂停仿真按钮将保持模拟,直到您再次单击它。可以通过关闭UI或单击停止仿真按钮。如果您有一个MIDI控制器,则可以将其与UI同步。您可以通过在对话框中选择MIDI控件来实现这一点,当您右键单击滑块或按钮并从上下文菜单中选择“Synchronize”时,对话框就会打开。选择的MIDI控件然后与滑块或按钮一致工作,以便操作一个控件被另一个跟踪。

如果您看到大量的队列欠运行警告,您将需要调整音频播放器使用的缓冲区和队列大小audioFreeverbReverberationExampleApp.关于这一点的更多信息可以在文档页找到audioDeviceWriter.本例中的音频源是一个音频文件,但您可以用一个音频输入设备(通过audioDeviceReader)以添加混响到现场音频。要想在不发生溢出/欠运行的情况下减少延迟,可以参考下面的示例测量音频延迟

使用生成的MEX文件

使用MATLAB Coder™,可以通过执行HelperFreeverbCodeGeneration命令。命令可以使用生成的MEX文件audioFreeverbReverberationExampleApp命令真正的作为参数。

audioFreeverbReverberationExampleApp(真正的)

金宝app仿真软件版本

audiofreeverbreverberation是一个Si金宝appmulink模型,它实现了前面小节中突出显示的同一个Freeverb混响示例。

在这个模型中,混响的添加是用audioexample。FreeverbReverberator在MATLAB系统块中使用的系统对象。使用MATLAB系统块节省了在Simulink中重新实现MATLAB算法的工作量。金宝app你可以打开UI来调整Freeverb参数,点击模型上的“Launch Parameter Tuning UI”链接。

模型在被模拟时生成代码。因此,它必须从具有写权限的文件夹中执行。

确认

本例中的算法基于Jezar在Dreampoint(2000年6月)编写的公共域“Freeverb”模型。

参考

史密斯J.O."Freeverb"在"物理音频信号处理"中,https://ccrma.stanford.edu/~jos/pasp/Freeverb.html,在线图书,2010版,2014年4月24日访问。