主要内容

基于延迟的间距移位器

此示例显示了一个音频插件,旨在实时移动声音的音调。

算法

下图说明了音调转换算法。

该算法基于两个通道之间的交叉衰落,具有时变延迟和增益。该方法利用随着信号延迟增加或减少而发生的间距移位多普勒效应。

下图说明了向上间距移位场景的信道延迟和增益的变化:信道1的延迟以最大值(在该示例中,30ms在内)的固定速率下降。由于信道2的增益最初等于零,因此它不会有助于输出。随着通道1的延迟接近零,通道2的延迟开始从30ms减小。在该交叉衰落区域中,调整两个通道的增益以保持输出功率水平。通道1随着延迟达到零而完全消失。然后重复该过程,在两个通道之间来回来回。

对于向下俯仰效果,延迟从零增加到最大值。

可以通过改变信道延迟的变化速率来控制所需的输出间距。交叉衰减减少了在通道之间过渡期间发生的可听故障。但是,如果跨衰落发生在太长时间的时间内,则重叠区域中存在的重复可以产生虚假调制和梳状滤波效果。

螺距移位器音频插件

audioptuminexample.pitchshifter是一种实现基于延迟的音高转换算法的音频插件对象。插件参数是音高偏移(以半色调),交叉衰落因子(控制两个延迟分支之间的重叠)。您可以将该对象与MATLAB模拟合并,或使用它来生成音频插件使用generateaudioplugin

除了输出音频信号之外,对象还返回两个额外的输出,分别对应于两个通道的延迟和增益。

您可以开立测试台audioptuminexample.pitchshifter通过使用音频测试台。测试台提供用户界面(UI),以帮助您在MATLAB中测试音频插件。您可以在测试台执行时调整插件参数。你也可以打开一个dsp.timescope.A.dsp.spectrumanalyzer.查看和比较时间和频率域中的输入和输出信号。

你也可以使用audioptuminexample.pitchshifter在Matlab,就像您使用任何其他MATLAB对象一样。你可以使用configuremidi.命令以通过MIDI设备启用调整对象。如果对象是流窗口不是自由的流式MATLAB仿真的一部分,则这是特别有用的。

runpitchshift.是一种简单的功能,可用于执行音调移位,作为较大的MATLAB仿真的一部分。该功能实例化了audioptuminexample.pitchshifter插件,并使用筛选将其采样率设置为输入参数的方法FS.。通过将它们的值设置为输入参数音高和重叠,通过将它们的值分别调出插件的参数。请注意,也可以使用Codegen命令从此函数生成MEX文件。在这种模式下性能得到改善,而不会影响调谐参数的能力。

matlab模拟

audiopitchshifteRexampleapp.实现一个实时音高转换应用程序。

执行audiopitchshifteRexampleapp.要打开应用程序。除了播放间距移位的输出音频之外,应用程序还绘制时变信道延迟和增益,以及输入和输出信号。

audiopitchshifteRexampleapp.打开旨在与模拟交互的UI。UI允许您调整音高转换算法的参数,结果立即反映在模拟中。根据您调整这些参数,绘图反映了您的更改。有关UI的更多信息,请致电帮助HelpercreateParamtuningui.

audiopitchshifteRexampleapp.包裹Helperpitchshiftersim并迭代地称之为。Helperpitchshiftersim通过形成算法的物体来实例化,初始化和步骤。

MATLAB编码器可用于生成C代码Helperpitchshiftersim。为了为您的平台生成MEX文件,执行HelperPitchShifterCodegeneration.从带有写权限的文件夹。

通过呼叫audiopitchshifteRexampleapp.'真的'作为一个参数,生成的mex文件Helperpitchshiftersimmex.可以使用而不是Helperpitchshiftersim用于模拟。在这种情况下,UI仍在MATLAB环境内运行,但是MEX文件正在执行主要处理算法。在这种模式下性能得到改善,而不会影响调谐参数的能力。

称呼audiopitchshifteRexampleapp.'真的'作为使用MEX文件进行模拟的参数。同样,模拟运行,直到用户明确地从UI停止它。

参考

[1]'使用多个处理器进行实时音频效果',Bogdanowicz,K。;belcher,r;AES - 1989年5月。

[2]'对时域格式校正俯冲算法的详细分析,Bristow-Johnson,R。;Aes - 1993年10月。