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.PitchShifter
MATLAB在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月。