主要内容

主机外部音频插件

您可以在Matlab中托管VST,VST3和AU插件®通过使用loadAudioPlugin从音频工具箱™功能。

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

Audio Toolbox启用三种方法可以与托管的音频插件进行交互:

下面的教程,一个版本属性显示模式和一个版本参数的显示方式,引导您完成托管的进程外部创作VST插件,并在MATLAB命令行中的插件进行交互。您从主机套件ReaPlugs VST的插件,插件通过Cockos Incorporated的分布。要下载ReaPlugs VST FX套房为您的系统,请遵循指示REAPER网站。本教程中使用了64位Windows平台。当loadAudioPlugin函数无法加载32位插件。

属性显示模式(默认)

将显示模式设置为属性使您可以使用标准点表示法与托管插件对象进行交互。例如:

hostedObject。获得= 5;%db.
财产是托管插件的默认显示模式。

数字参数是通过归一化的参数值和相应的显示值的启发式解释映射。该属性的显示模式是简单和直观。然而,由于启发式的映射归一化参数值对实际属性值,属性显示模式可能会分解某些插件。在这种情况下,您应该使用参数显示模式。

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

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

1.加载外部音频插件

用来loadAudioPlugin函数来托管ReaDelay威仕特插件。如果插件在你的当前文件夹中,你可以只指定文件名。否则,必须指定完整路径。在这个例子中,插件在当前文件夹中。默认情况下,显示模式设置为属性。

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
高分链= 120.

您可以使用制表完成以获取枚举的属性可能值的列表。

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

为了处理与托管插件,使用音频信号过程

AUDIOIN = [1,1];AUDIOOUT =处理(hostedPlugin,AUDIOIN);

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

fileReader = dsp。AudioFileReader ('Counting-16-44p1-mono-15secs.wav');sampleRate = fileReader.SampleRate;deviceWriter = audioDeviceWriter (“SampleRate”, sampleRate);setSampleRate(hostedPlugin,采样率);〜ISDONE(FILEREADER)AUDION = FILEREADER();%托管插件需要立体声输入。stereoAudioIn = [audioIn, audioIn];x =过程(hostedPlugin stereoAudioIn);deviceWriter (x);结束释放(Filereader)释放(DeviceWriter)

您可以修改音频流循环中的属性。控制湿属性的音频流循环,创建纵振镜头System Object™。用来的FileReaderdeviceWriter,和hostedPlugin您之前创建的对象以处理音频。

osc = audioOscillator ('正弦'......“频率”10,......“振幅”20,......'dcoffset',-20,......“SamplesPerFrame”, fileReader。SamplesPerFrame,......“SampleRate”, sampleRate);〜ISDONE(FILEREADER)AUDION = FILEREADER();ControlSignal = OSC();hostedPlugin.Wet = controlSignal(1);stereoAudioIn = [audioIn, audioIn];x =过程(hostedPlugin stereoAudioIn);deviceWriter (x);结束释放(Filereader)释放(DeviceWriter)

4.分析托管插件

您可以使用Audio Toolbox测量和可视化工具来显示托管插件的行为信息。要显示托管音频插件的输入和输出,请创建一个时间范围。创建一个loudnessMeter对象并使用'EBU Mode'可视化以监控托管插件输出的响度。用来的FileReaderdeviceWriterosc,和hostedPlugin您之前创建的对象以处理音频。

范围= timescope(“SampleRate”sampleRate,......“TimeSpanSource”“属性”......'TimeSpanOverrunAction'“滚动”......“时间间隔”,5,......'BufferLength中',5 * 2 *采样率,......“YLimits”,[ -  1 1]);loudmtr =响度仪(“SampleRate”, sampleRate);可视化(loudMtr)〜ISDONE(FILEREADER)AUDION = FILEREADER();ControlSignal = OSC();hostedPlugin.Wet = controlSignal(1);stereoAudioIn = [audioIn, audioIn];x =过程(hostedPlugin stereoAudioIn);loudmtr(x);范围([x(:,1),isausin(:,1)])devicewriter(x);结束

释放(Filereader)释放(DeviceWriter)

参数显示模式

将显示模式设置为参数使您能够以最基本的方式与托管插件进行交互:通过设置和获取规范化的参数值。您可以选择使用返回的信息getParameter将标准化值解释为实际值,例如分贝和赫兹。

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

下面的教程遍历装载和配置在参数显示模式的外部音频插件的步骤。

1.加载外部音频插件

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

hostedPlugin = loadAudioPlugin ('readelay-standalone.dll');

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

hostedPlugin。这个=“参数”
hostedPlugin = VST plugin 'ReaDelay (ReaPlugs Edition)' 2 in, 2 out显示________________________________ 1 Wet: 1.0000 +0.0 dB 2 Dry: 1.0000 +0.0 dB 3 1: Enabled: 1.0000 ON 4 1: Length: 0.0000 0.0 ms 5 1: Length: 0.0156 4.00 8N 7个参数不显示。查看所有12个参数。

第一行显示插件类型、插件显示名称以及插件的主要音频处理算法的输入和输出通道的数量。如果你托管一个源插件,输出通道的数量和每帧的默认样本都会显示出来。

缺省情况下,只显示前5个参数。要显示托管插件的所有参数,单击查看所有12个参数

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

标准化的参数值总是在[0,1]的范围内,并且通常对应于DAW中的用户界面(UI)小部件的位置或MIDI控制表面上的MIDI控制的位置。当参数显示值与插件内部的未知映射有关的归一化参数值,并且通常反映插件用于处理的内部使用的值。

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

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

例如,湿参数readelay-standalone.dll具有的归一化的参数值1和的显示参数值+0.0。当湿参数可能如下显示在DAW:

使用音频工具箱,您可以使用getParameter返回有关单一托管插件参数标准化的参数值和其他信息。您可以指定由参数index要获取的参数。

parameterIndex = 1;[normparamvalue,paraminfo] = getParameter(hostedplugin,paramedIndex)
normParamValue = 1
paramInfo =结构体字段:displayname:'湿'displayvalue:'+0.0'标签:'db'

你可以使用SetParameter.设置托管插件的标准化参数值。您可以指定由其参数索引设置的参数。

NORMPARAMVALUE = 0.5;SetParameter(HostedPlugin,ParameterIndex,NormParamValue)

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

验证新的归一化参数值湿,使用getParameter

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

DisplayValue.对于湿从参数更新+0.0到目前为止-6.0因为你设置了相应的规范化参数值。显示值和规范化值之间的关系由托管插件内部的未知映射决定。

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

为了处理与托管插件,使用音频信号过程

AUDIOIN = [1,1];AUDIOOUT =处理(hostedPlugin,AUDIOIN);

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

fileReader = dsp。AudioFileReader ('Counting-16-44p1-mono-15secs.wav');sampleRate = fileReader.SampleRate;deviceWriter = audioDeviceWriter (“SampleRate”, sampleRate);setSampleRate(hostedPlugin,采样率);〜ISDONE(FILEREADER)AUDION = FILEREADER();%托管插件需要立体声输入。stereoAudioIn = [audioIn, audioIn];x =过程(hostedPlugin stereoAudioIn);deviceWriter (x);结束释放(Filereader)释放(DeviceWriter)

您可以在音频流循环修改参数。控制湿参数你的插件在音频流循环,创建纵振镜头System Object™。用来的FileReaderdeviceWriter,和hostedPlugin您之前创建的对象以处理音频。

osc = audioOscillator ('正弦'......“频率”10,......“振幅”,0.5%,......'dcoffset',0.5%,......“SamplesPerFrame”, fileReader。SamplesPerFrame,......“SampleRate”, sampleRate);〜ISDONE(FILEREADER)AUDION = FILEREADER();ControlSignal = OSC();SetParameter(HostedPlugin,1,ControlSignal(1));stereoAudioIn = [audioIn, audioIn];x =过程(hostedPlugin stereoAudioIn);deviceWriter (x);结束释放(Filereader)释放(DeviceWriter)

4.分析托管插件

您可以使用Audio Toolbox测量和可视化工具来显示托管插件的行为信息。要显示托管音频插件的输入和输出,请创建一个时间范围。创建一个loudnessMeter对象并使用'EBU Mode'可视化以监控托管插件输出的响度。用来的FileReaderdeviceWriterosc,和hostedPlugin您之前创建的对象以处理音频。

范围= timescope(“SampleRate”sampleRate,......“TimeSpanSource”“属性”......'TimeSpanOverrunAction'“滚动”......“时间间隔”,5,......'BufferLength中',5 * 2 *采样率,......“YLimits”,[ -  1 1]);loudmtr =响度仪(“SampleRate”, sampleRate);可视化(loudMtr)〜ISDONE(FILEREADER)AUDION = FILEREADER();ControlSignal = OSC();SetParameter(HostedPlugin,1,ControlSignal(1));stereoAudioIn = [audioIn, audioIn];x =过程(hostedPlugin stereoAudioIn);loudmtr(x);范围([x(:,1),isausin(:,1)])devicewriter(x);结束

释放(Filereader)释放(DeviceWriter)

图形化交互

您也可以交互与外部创作音频插件,图形化使用音频测试平台。当音频测试平台模仿默认图形用户界面,适用于大多数的数字音频工作站。

启发式的映射

调查参数/属性映射

参数显示值通过插件内部未知的映射规则与规范化参数值相关。您可以通过创建一个扫描函数来研究规范化参数值和显示值之间的关系。您可以使用扫描函数将参数值映射到它们所显示的输出。

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

拯救displayparametermapping.在当前文件夹中的函数。此函数执行用于创建托管插件的属性显示模式的参数Sweeping的简化版本。

功能displayParameterMapping(hPlugin,prmIndx) x = 0:0.001:1;%归一化参数范围[〜,prminfo] = getparameter(hplugin,prmindx);如果isnan (str2double (prmInfo.DisplayValue))%非数字显示-打印相关的规范化参数范围百分比与字符串SetParameter(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)流('%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 = 0(元素个数(x) 1);I = 1:numel(X)的setParameter(hPlugin,prmIndx中,x(i))的[〜,prmInfo] =的getParameter(hPlugin,prmIndx);Y(I)= str2double(prmInfo.DisplayValue);结束如果任何(isnan (y))警告(“的NaN在数字显示检测到”。结束plot(x,y)xlabel(“归一化参数值”)ylabel(['显示参数值(',prminfo.label,')'])标题(prminfo.displayname)结束结束

加载readelay-standalone.dll插入MATLAB®。打电话给displayparametermapping.使用托管插件和参数索引。

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

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

displayParameterMapping(hostedPlugin,3)
灭:0 ~ 0.499亮:0.5 ~ 1

另请参阅

功能

班级

相关的话题