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