主要内容

主机外部音频插件

您可以在MATLAB中托管VST、VST3和AU插件®通过使用加载音频插件函数的音频工具箱™。

加载外部音频插件后,通过其主音频处理算法处理音频。

“音频工具箱”支持三种与托管音频插件交互的方式:

下面的教程(一个版本用于属性显示模式,一个版本用于参数显示模式)将引导您完成托管外部编写的VST插件并在MATLAB命令行中与插件交互的过程。您托管一个插件从ReaPlugs VST插件套件由Cockos Incorporated发布。要下载ReaPlugs VST FX套件,请按照“收割者”网站. 本教程使用64位Windows平台。这个加载音频插件函数无法加载32位插件。

属性显示模式(默认)

通过将显示模式设置为属性,可以使用标准点符号与托管插件对象交互。例如:

hostedObject.增益=5;%分贝
财产是托管插件的默认显示模式。

数值参数通过对规范化参数值和相应显示值的启发式解释进行映射。属性显示方式简单直观。然而,由于启发式映射如果将规范化的参数值转换为真实的属性值,则某些插件的属性显示模式可能会出现故障。在这种情况下,您应该使用参数显示模式。

主机外部音频插件教程(属性显示模式)

以下教程将介绍在属性显示模式下加载和配置外部音频插件的步骤。

1.加载外部音频插件

使用加载音频插件函数来托管ReaDelayVST插件。如果插件位于当前文件夹中,则只能指定文件名。否则,必须指定完整路径。在本例中,插件位于当前文件夹中。默认情况下,显示模式设置为“属性”。

hostedPlugin=loadAudioPlugin(“readelay-standalone.dll”)
hostedPlugin = VST plugin 'ReaDelay (ReaPlugs Edition)' 2 in, 2 out Wet: 0 dB Dry: 0 dB x1_Enabled: 'ON' x1_Length_4: 0 ms x1_Length_5: 4 8N x1_Feedback: -Inf dB x1_Lowpass: 20000 Hz x1_Hipass: 0 Hz x1_Resolution: 24 bits x1_StereoWidth: 1 x1_Volume: 0 dB x1_Pan: 0 %

第一行显示插件类型、插件显示名称以及插件主音频处理算法的输入和输出通道数。如果您托管源插件,则显示输出通道数和每帧的默认采样数。

默认情况下,将显示所有特性。

2.调整托管插件属性值

您可以使用点符号与托管插件的属性交互。如果超出或低于属性的允许范围,将显示一条错误消息,说明有效边界。

hostedPlugin.x1_Hipass=120;highPassSetting=hostedPlugin.x1_Hipass
HighPass设置=120

可以使用制表符补全来获取枚举属性的可能值列表。

3.使用托管插件来处理音频

使用托管插件处理音频信号过程

audioIn = [1];audioOut =过程(hostedPlugin audioIn);

音频插件是为基于可变帧的处理而设计的,这意味着您可以调用过程具有不同长度的连续音频输入帧。托管插件保存连续处理所需的内部状态。若要处理从文件读取然后写入音频输出设备的音频信号,请将托管插件置于音频流循环中。使用dsp。AudioFileWriter音频设备编写器对象分别作为音频流循环的输入和输出。将托管插件的采样率设置为音频文件的采样率安眠药

fileReader=dsp.AudioFileReader(“计数-16-44p1-mono-15秒波形”);sampleRate = fileReader.SampleRate;deviceWriter = audioDeviceWriter (“采样器”, sampleRate);setSampleRate (hostedPlugin sampleRate);~isDone(fileReader) audioIn = fileReader();%托管插件需要立体声输入。stereoAudioIn=[audioIn,audioIn];x=过程(hostedPlugin,stereoAudioIn);deviceWriter(x);终止发布(文件阅读器)发布(deviceWriter)

您可以修改音频流循环中的属性潮湿的属性,创建一个音频振荡器系统对象™。使用fileReader,设备编写器,hostedPlugin以前创建的用于处理音频的对象。

osc = audioOscillator (“正弦”,...“频率”,10,...“振幅”,20,...“DCOffset”,-20,...“样品性能框架”,fileReader.sampleperframe,...“采样器”, sampleRate);~isDone(fileReader) audioIn = fileReader();controlSignal = osc ();hostedPlugin。潮湿的= controlSignal(1); stereoAudioIn = [audioIn,audioIn]; x = process(hostedPlugin,stereoAudioIn); deviceWriter(x);终止发布(文件阅读器)发布(deviceWriter)

4.分析了插件

您可以使用音频工具箱测量和可视化工具显示托管插件的行为信息。若要显示托管音频插件的输入和输出,请创建时间范围。创建loudnessMeter对象,并使用“EBU模式”可视化以监视托管插件的响度输出fileReader,设备编写器,osc,hostedPlugin以前创建的用于处理音频的对象。

范围=时间范围(“采样器”,采样器,...“时间跨度源”,“财产”,...“TimeSpanOverrunAction”,“滚动”,...“时间跨度”5,...“BufferLength”5 * 2 * sampleRate,...“YLimits”,[-1]);loudMtr=响度计(“采样器”, sampleRate);可视化(loudMtr)~isDone(fileReader) audioIn = fileReader();controlSignal = osc ();hostedPlugin。潮湿的= controlSignal(1); stereoAudioIn = [audioIn,audioIn]; x = process(hostedPlugin,stereoAudioIn); loudMtr(x); scope([x(:,1),audioIn(:,1)]) deviceWriter(x);终止

发布(文件阅读器)发布(deviceWriter)

参数显示模式

将“显示模式”设置为“参数”可以使您以最基本的方式与托管插件交互:通过设置并获取规范化的参数值。您可以选择使用getParameter将标准化值解释为真实值,如分贝和赫兹。

主机外部音频插件教程(参数模式)

下面的教程将介绍在参数显示模式下加载和配置外部音频插件的步骤。

1.加载外部音频插件

使用加载音频插件函数来托管ReaDelay威仕特插件。如果插件在你的当前文件夹中,你可以只指定文件名。否则,必须指定完整路径。在这个例子中,插件在当前文件夹中。

hostedPlugin=loadAudioPlugin(“readelay-standalone.dll”);

默认情况下,显示模式设置为属性。设置显示模式财产参数用于与托管插件的低级交互。

hostedPlugin.DisplayMode=“参数”
hostedPlugin=VST插件“ReaDelay(ReaPlugs Edition)”2进2出参数值显示\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu1湿:1.0000+0.0db 2干:1.0000+0.0db 3:1:1:1:1:1:1:1:1。

第一行显示插件类型、插件显示名称以及插件主音频处理算法的输入和输出通道数。如果您托管源插件,则显示输出通道数和每帧的默认采样数。

默认情况下,只显示前五个参数。要显示托管插件的所有参数,请单击查看所有12个参数

该表提供了参数索引、参数名称、规范化参数值、显示参数值和显示参数值标签。

这个归一化参数值始终在[0,1]范围内,通常对应于DAW中用户界面(UI)小部件的位置或MIDI控件在MIDI控件表面上的位置。这个参数显示值通过插件内部的未知映射与规范化参数值相关,通常反映插件内部用于处理的值。

2.设置并获取托管插件参数值

您可以使用getParametersetParameter与托管插件的参数交互。使用getParametersetParameter在编程上相当于移动UI中的小部件或MIDI控件表面上的控件。典型的DAW UI提供参数名称、规范化参数值的可视化表示、显示的参数值和显示的参数值标签。

例如,潮湿的参数的readelay-standalone.dll有一个标准化的参数值1.和显示参数值+ 0.0.这个潮湿的参数可能在DAW中显示如下:

使用音频工具箱,您可以使用getParameter返回标准化参数值和关于单个托管插件参数的附加信息。您可以通过参数索引指定要获取的参数。

参数索引=1;[normParamValue,paramInfo]=getParameter(hostedPlugin,parameterIndex)
normParamValue = 1
paramInfo =带字段的结构:DisplayName:“湿”DisplayValue:“+0.0”标签:“dB”

您可以使用setParameter设置托管插件的标准化参数值。您可以通过其参数索引指定要设置的参数。

normParamValue=0.5;设置参数(hostedPlugin,parameterIndex,normParamValue)

将标准化参数值设置为0.5相当于将指示器设置为DAW中滑块的中心。

验证的新规格化参数值的步骤潮湿的,使用getParameter

parameterIndex=1;[NormalParamValue,paramInfo]=getParameter(hostedPlugin,parameterIndex);

这个显示值潮湿的参数更新+ 0.0-6.0因为你设置了相应的规范化参数值。显示值和规范化值之间的关系由托管插件内部的未知映射决定。

3.使用托管插件来处理音频

使用托管插件处理音频信号过程

audioIn = [1];audioOut =过程(hostedPlugin audioIn);

音频插件是为基于可变帧的处理而设计的,这意味着您可以调用过程具有不同长度的连续音频输入帧。托管插件保存连续处理所需的内部状态。若要处理从文件读取然后写入音频输出设备的音频信号,请将托管插件置于音频流循环中。使用音频文件读取器音频设备编写器对象分别作为音频流循环的输入和输出。将托管插件的采样率设置为音频文件的采样率安眠药

fileReader=dsp.AudioFileReader(“计数-16-44p1-mono-15秒波形”);sampleRate = fileReader.SampleRate;deviceWriter = audioDeviceWriter (“采样器”, sampleRate);setSampleRate (hostedPlugin sampleRate);~isDone(fileReader) audioIn = fileReader();%托管插件需要立体声输入。stereoAudioIn=[audioIn,audioIn];x=过程(hostedPlugin,stereoAudioIn);deviceWriter(x);终止发布(文件阅读器)发布(deviceWriter)

您可以在音频流循环中修改参数。控制潮湿的在音频流循环中,创建一个音频振荡器系统对象™。使用fileReader,设备编写器,hostedPlugin以前创建的用于处理音频的对象。

osc = audioOscillator (“正弦”,...“频率”,10,...“振幅”, 0.5,...“DCOffset”, 0.5,...“样品性能框架”,fileReader.sampleperframe,...“采样器”, sampleRate);~isDone(fileReader) audioIn = fileReader();controlSignal = osc ();setParameter (hostedPlugin 1 controlSignal (1));stereoAudioIn=[audioIn,audioIn];x=过程(hostedPlugin,stereoAudioIn);deviceWriter(x);终止发布(文件阅读器)发布(deviceWriter)

4.分析了插件

您可以使用音频工具箱测量和可视化工具显示托管插件的行为信息。若要显示托管音频插件的输入和输出,请创建时间范围。创建loudnessMeter对象,并使用“EBU模式”可视化以监视托管插件的响度输出fileReader,设备编写器,osc,hostedPlugin以前创建的用于处理音频的对象。

范围=时间范围(“采样器”,采样器,...“时间跨度源”,“财产”,...“TimeSpanOverrunAction”,“滚动”,...“时间跨度”5,...“BufferLength”5 * 2 * sampleRate,...“YLimits”,[-1]);loudMtr=响度计(“采样器”, sampleRate);可视化(loudMtr)~isDone(fileReader)audioIn=fileReader();controlSignal=osc();setParameter(hostedPlugin,1,controlSignal(1));stereoAudioIn=[audioIn,audioIn];x=进程(hostedPlugin,stereoAudioIn);loudMtr(x);范围([x(:,1),audioIn(:,1)])设备写入程序(x);终止

发布(文件阅读器)发布(deviceWriter)

图形交互

您还可以与外部编写的音频插件图形化使用音频测试台上.这个音频测试台上模拟大多数数字音频工作站的默认图形用户界面。

启发式映射

调查参数/属性映射

参数显示值通过插件内部的未知映射规则与规范化参数值相关。通过创建扫掠函数,可以研究规格化参数值与显示值之间的关系。可以使用扫描功能将参数值映射到其显示的输出。

托管插件的属性显示模式使用了类似的方法,使您能够直接与真实的(显示的)值交互,而不是标准化的参数值。

保存显示参数映射函数。此函数执行用于为托管插件创建属性显示模式的参数扫描的简化版本。

函数显示参数映射(hPlugin,prmIndx)x=0:0.001:1;%归一化参数范围[~,prmInfo]=getParameter(hPlugin,prmIndx);如果isnan(str2double(prmInfo.DisplayValue))%非数字显示-打印相关的标准化参数范围%用绳子设置参数(hPlugin,prmIndx,0);[~,prmInfo]=getParameter(hPlugin,prmIndx);txtOld=prmInfo.DisplayValue;oldIndx=1;对于i=2:numel(x)setParameter(hPlugin,prmIndx,x(i))[~,prmInfo]=getParameter(hPlugin,prmIndx);txtNew=prmInfo.DisplayValue;如果~strcmp(txtNew,txtOld)fprintf('%s: %g - %g\n',txtOld,x(oldIndx),x(i-1));oldIndx=i;txtOld=txtNew;终止终止fprintf('%s: %g - %g\n'txtOld x (oldIndx) x (i));其他的%数字显示-根据显示绘制规范化参数值%参数值y=零(numel(x),1);对于i = 1:numel(x) setParameter(hPlugin,prmIndx,x(i)) [~,prmInfo] = getParameter(hPlugin,prmIndx);y (i) = str2double (prmInfo.DisplayValue);终止如果任何(isnan(y))警告(“在数字显示中发现NaN。”)终止图(x,y)xlabel(“规范化参数值”) ylabel (['显示的参数值(',prmInfo.Label,“)”])标题(prmInfo.DisplayName)终止终止

加载readelay-standalone.dll插件到MATLAB®。打电话给显示参数映射与托管插件和参数索引一起运行。

hostedPlugin=loadAudioPlugin(“readelay-standalone.dll”);displayParameterMapping (hostedPlugin, 1);

如果你使用显示参数映射函数带有非数字参数时,关系将显示在命令窗口中:

displayParameterMapping (hostedPlugin, 3)
关:0-0.499开:0.5-1

另见

功能

班级

相关的话题