主要内容

Delay-Based距移动装置

这个例子显示了一个音频插件旨在改变音高的声音。

算法

下图说明了螺距改变算法。

该算法是基于两个渠道之间同时淡出淡入与时变延迟和收益。该方法利用pitch-shift多普勒效应发生的信号的延迟增加或减少。

下图演示了一个向上的通道延迟和收益的变化音调转变场景:通道1的延迟减少在一个固定利率的最大值(在这个例子中,30 ms)。由于通道2的获得是最初等于零,它不会导致输出。通道1的延迟趋于零,通道2的延迟开始减少低于30 ms。在这同时淡出淡入,调整两个渠道的收益保持输出功率。通道1是完全淡出的时候其延迟达到零。然后,重复过程,两个渠道之间的来回。

下行音调效应,延迟从零增加到最大值。

球场所需的输出可能是由不同的变化率控制通道延迟。同时淡出淡入减少声响故障发生在过渡之间的通道。然而,如果同时淡出淡入发生超过太长时间,重复出现在重叠区域可能会产生寄生调制和comb-filtering效果。

移距器音频插件

audiopluginexample.PitchShifter是音频插件对象实现delay-based音高变化的算法。插件参数球场(半音)转变,和同时淡出淡入因素(控制两个延迟分支之间的重叠)。您可以将对象到一个MATLAB模拟,或者使用它来生成一个音频插件使用generateAudioPlugin

除了输出音频信号,该对象返回两个额外的输出,相应的延误和收益两个频道,分别。

您可以打开一个试验台audiopluginexample.PitchShifter通过使用音频测试台上。试验台提供了一个用户界面(UI),以帮助您测试您的音频插件在MATLAB。您可以调整插件参数试验台是执行。您还可以打开一个dsp.TimeScope和一个简介查看和对比输入和输出信号的时间和频率域,分别。

您还可以使用audiopluginexample.PitchShifterMATLAB在MATLAB就像使用任何其他对象。您可以使用configureMIDI命令通过一个MIDI设备启用优化对象。这是特别有用如果对象是一个流的一部分MATLAB仿真命令窗口在哪里不是免费的。

runPitchShift是一个简单的函数,可以用来执行音调变化作为一个更大的MATLAB仿真。函数实例化一个audiopluginexample.PitchShifter插件,并使用setSampleRate方法来设置对输入参数的采样率Fs。插件的参数的调整,将它们的值设置为输入参数和重叠,分别。注意,也可以生成一个MEX-file从这个函数使用codegen命令。性能改进的前提下在这种模式下优化参数的能力。

MATLAB仿真

audioPitchShifterExampleApp实现了一个实时的移动应用程序。

执行audioPitchShifterExampleApp打开应用。除了玩pitch-shifted输出音频应用程序块时变信道延迟和收益,以及输入和输出信号。

audioPitchShifterExampleApp打开一个UI设计与仿真。用户界面允许您调整音高变化的参数算法,结果立即反映在模拟。故事情节反映了你的变化调整这些参数。在UI上的更多信息,电话帮助HelperCreateParamTuningUI

audioPitchShifterExampleApp包裹在HelperPitchShifterSim和迭代调用它。HelperPitchShifterSim通过对象实例化,初始化和步骤形成算法。

MATLAB编码器可用于生成C代码HelperPitchShifterSim。为了生成一个MEX-file平台,执行HelperPitchShifterCodeGeneration从一个文件夹的写权限。

通过调用audioPitchShifterExampleApp“真正的”作为参数,生成的MEX-fileHelperPitchShifterSimMEX可以代替吗HelperPitchShifterSim的模拟。在这个场景中,UI仍在MATLAB环境中运行,但主要处理算法MEX-file执行。性能改进的前提下在这种模式下优化参数的能力。

调用audioPitchShifterExampleApp“真正的”作为参数使用MEX-file来模拟。再次,模拟运行,直到用户显式地阻止它的UI。

引用

[1]使用多处理器实时音频效果,Bogdanowicz, k;贝尔彻,R;AES - 1989年5月。

[2]的详细分析时域Formant-Corrected Pitch-Shifting算法”,Bristow-Johnson, r;AES - 1993年10月。