音频插件的MIDI控制
MIDI和插件
MIDI控制面通常与数字音频工作站(DAW)环境中的音频插件一起使用。同步MIDI控件和插件参数为音频处理提供了一个有形的接口,是一种有效的参数调优方法。
在MATLAB中®类派生的任何有效类都定义为音频插件audioPlugin
基类或audioPluginSource
基类。有关如何在MATLAB环境中定义音频插件的详细信息,请参见MATLAB音频插件.
使用MIDIMATLAB插件
Audio Toolbox™产品提供了三个功能,用于启用MIDI控制面和音频插件之间的接口:
configureMIDI
——配置音频插件与MIDI控制器的MIDI连接。getMIDIConnections
——获取音频插件的MIDI连接。disconnectMIDI
——从音频插件中断开MIDI控制。
这些函数将一般MIDI函数的功能组合成适合MATLAB音频插件的精简和用户友好的界面。有关通用函数和MIDI协议的教程,请参见MIDI控制面接口.
本教程将介绍MATLAB中音频插件的MIDI函数。
1.连接MIDI设备,然后启动MATLAB
在开始使用MATLAB之前,请将MIDI控制面连接到计算机并打开它。有关连接说明,请参阅MIDI设备的说明。如果在连接设备之前启动MATLAB,则在连接设备时MATLAB可能无法识别设备。要纠正这个问题,请使用已经连接的设备重新启动MATLAB。
2.建立MIDI连接
使用configureMIDI
在默认MIDI设备和音频插件之间建立MIDI连接。你可以使用configureMIDI
或者您可以打开一个用户界面(UI)来指导您完成整个过程。的configureMIDI
UI从你的音频插件中读取并填充可调插件属性的下拉列表。然后系统会提示您移动MIDI控件面上的各个控件,以将每个控件的位置与所选每个属性的规范化值相关联。例如,创建对象audiopluginexample。PitchShifter
然后调用configureMIDI
以对象为实参:
ctrlPitch = audiopluginexample.PitchShifter;configureMIDI (ctrlPitch)
“同步到MIDI控件”对话框打开,自动填充插件的可调属性。操作MIDI控件时,其标识符将输入到操作MIDI控制进行同步盒子。在将可调属性与MIDI控件同步后,单击好吧完成配置。如果你的MIDI控件面是双向的,它会自动将同步控件的位置移动到插件指定的初始属性值。
要打开具有与UI中的操作相同的编程功能的MATLAB函数,请选择生成MATLAB代码复选框。保存此功能使您能够重用您的设置,并在将来的会话中快速建立配置。
3.使用MIDI调优插件参数
在插件属性和MIDI控件之间建立连接后,可以使用MIDI控件面实时优化属性。
音频工具箱提供了一个运行和测试音频插件的一体化应用程序。测试平台模拟DAW如何与插件交互。
打开音频测试台为你的ctrlPitch
对象。
audioTestBench (ctrlPitch)
当您调整MIDI表面上的控件时,相应的插件参数滑块会移动。点击运行插件。移动MIDI表面上的控件,可以听到调整插件参数的效果。
要建立MIDI连接并修改现有连接,单击“同步到MIDI控件”按钮,打开configureMIDI
UI。
或者,您也可以使用在脚本或函数中建立的MIDI连接。例如,运行下面的代码并移动你的同步MIDI控件来听到音调变化的效果:
fileReader = dsp。AudioFileReader (...“文件名”,“Counting-16-44p1-mono-15secs.wav”);deviceWriter = audioDeviceWriter;%音频流循环而~isDone(fileReader) input = fileReader();output = ctrlPitch(输入);deviceWriter(输出);drawnowlimitrate;%立即处理回调结束释放(fileReader);释放(deviceWriter);
4.获取当前的MIDI连接
要查询与音频插件建立的MIDI连接,请使用getMIDIConnections
函数。getMIDIConnections
返回一个结构,其中的字段对应于插件的可调属性。对应的值是嵌套结构,包含关于插件属性和指定MIDI控件之间映射的信息。
connectionInfo = getMIDIConnections(ctrlPitch)
connectionInfo = struct with fields: PitchShift: [1×1 struct] Overlap: [1×1 struct]
connectionInfo。PitchShift
参数值:'int'最小值:-12最大值:12 MIDIControl: 'control 1081 on 'BCF2000 "
5.断开MIDI接口
作为最佳实践,在完成操作后释放MIDI控制面等外部设备。
disconnectMIDI (ctrlPitch)