Audio Toolbox™为实时音频处理进行了优化。audioDeviceReader
那audioDeviceWriter
那audioltayerrecorder.
那dsp.audiofilereader.
,dsp。AudioFileWriter
是为流多通道音频而设计的,它们提供了必要的参数,以便您可以在吞吐量和延迟之间进行权衡。
有关实时处理的信息和如何优化算法的提示,请参见音频I / O:缓冲,延迟和吞吐量.
本教程描述了如何在MATLAB中实现音频流处理®.它概述了创建开发测试台的工作流,并为工作流的每个阶段提供了示例。
本教程将通过以下四个步骤创建一个开发测试平台:
构建对象以从测试台上输入和输出音频。
创建一个音频流循环,逐帧处理音频。
添加一个作用域来可视化音频流循环的输入和输出。
为音频流循环添加处理算法。
本教程还讨论了实时可视化和调整处理算法的工具。
对于处理循环的概述,请考虑下面已完成的测试台。您可以通过逐步学习本教程来重新创建这个测试台。
您的音频流循环可以从设备或文件读取,并且可以写入设备或文件。在此示例中,构建一个音频流循环,该循环从文件读取音频帧逐帧,并将音频帧逐帧写入设备。看快速开始示例用于替代输入/输出配置。
创建一个dsp.audiofilereader.
System Object™并指定文件。要减少延迟,请设置SamplesPerFrame
财产的dsp.audiofilereader.
系统对象到小帧大小。
接下来,创建一个audioDeviceWriter
系统对象并将其采样率指定为文件读取器的采样率。
有关如何使用系统对象的详细信息,请参阅什么是系统对象?
音频流循环迭代地处理音频。它是这样做的:
读取音频信号的框架
处理那帧音频信号
将该帧写入设备或文件
移动到下一个框架
在本教程中,音频流循环的输入是从文件中读取的。输出被写入设备。
要逐帧读取音频文件,请拨打您的dsp.audiofilereader.
在您的音频流循环中,不提供任何参数。要编写逐帧音频信号,请调用您的audioDeviceWriter
在您的音频流循环中,具有音频信号作为参数。
所有System对象都有一个释放
函数。作为一种最佳实践,在使用后释放System对象,特别是当这些System对象正在与硬件设备(如声卡)通信时。
有几个范围可用。两个常见的范围是timescope
和dsp.spectrumanalyzer.
.本教程使用timescope
使音频信号形象化。
这timescope
系统对象在时域显示音频信号。创建System对象。要帮助可视化,请指定时间间隔
那BufferLength
,吉姆斯
属性。要逐帧可视化音频信号,调用timescope
音频流循环中的系统对象,音频信号作为参数。
在大多数应用程序中,您希望在音频流循环中处理音频信号。处理阶段可以是:
音频流循环中的一个MATLAB代码块
在音频流循环中调用的单独函数
在音频流循环中调用的System对象
在本教程中,调用混响者
来处理音频流循环中的信号。
创建一个混响者
系统对象,并指定采样率
属性作为文件读取器的采样率。若要调整混响效果,请指定对应的值预延迟
和湿润混合
属性。要将混响效果应用于逐帧音频信号,请调用混响者
在您的音频流循环中,具有音频信号作为参数。
Audio Toolbox用户有几个选项可以向处理算法添加实时可调性。要添加可调谐的音频流循环,您可以使用:
这音频测试台上-基于ui的练习audioplugin
类和大多数音频工具箱系统对象。
内置函数 - 音频工具箱中的功能,用于可视化处理算法的关键方面。
一个定制的用户界面-见实时参数调整为教程。
MIDI控制器 - 许多音频工具箱系统对象包括支持MIDI控件的功能。金宝app你可以使用
功能在configuremidi.
混响者
系统对象将系统对象属性同步到MIDI控件。使用MIDI控件与没有没有A的系统对象configuremidi.
功能,请参阅MIDI控制界面.
用户数据报协议(UDP) -你可以在MATLAB中使用UDP进行无连接传输。您还可以使用UDP在环境之间接收或传输数据报。可能的应用包括使用MATLAB工具来调整音频处理算法,同时在第三方环境中播放和可视化音频。UDP通信的示例应用,请参见基于UDP的DAW与MATLAB之间的通信.