您可以在MATLAB中托管VST、VST3和AU插件®通过使用loadAudioPlugin
来自音频工具箱的函数™.
加载外部音频插件后,通过其主要音频处理算法处理音频。
Audio Toolbox支持三种与宿主音频插件交互的方式:
以下教程-一个版本用于属性显示模式,另一个版本用于参数显示模式-引导您完成托管外部编写的VST插件并在MATLAB命令行与插件交互的过程。您托管了Cockos Incorporated发行的ReaPlugs VST插件套件中的插件。要下载如果要为您的系统重新插入VST FX套件,请按照收割者网站.本教程使用64位Windows平台。的loadAudioPlugin
函数无法加载32位插件。
将显示模式设置为属性使您能够使用标准点表示法与托管插件对象交互。例如:
hostedObject。获得= 5;% dB
所有物
是托管插件的默认显示模式。
数值参数通过规范化参数值和相应显示值的启发式解释进行映射。属性显示模式简单直观。但是,由于启发式的映射将规范化参数值转换为真实属性值时,某些插件的属性显示模式可能会中断。在这种情况下,应该使用参数显示模式。
下面的教程将介绍在属性显示模式下加载和配置外部音频插件的步骤。
1.加载外部音频插件
使用loadAudioPlugin
函数来托管雷德利
VST插件。如果插件位于当前文件夹中,则可以只指定文件名。否则,必须指定完整路径。在本例中,插件位于当前文件夹中。默认情况下,显示模式设置为属性。
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
highPassSetting = 120
您可以使用制表符完成来获取枚举属性的可能值列表。
3.使用托管插件处理音频
要使用托管插件处理音频信号,请使用过程
.
audioIn=[1,1];audioOut=过程(hostedPlugin,audioIn);
音频插件是为基于可变帧的处理而设计的,这意味着你可以调用过程
连续输入不同长度的音频帧。托管插件保存连续处理所需的内部状态。要处理从文件读取的音频信号,然后将其写入音频输出设备,请将托管插件置于音频流循环中。使用音频文件编写器
和audioDeviceWriter
对象分别作为音频流循环的输入和输出。使用setSampleRate
.
fileReader = dsp。AudioFileReader (“Counting-16-44p1-mono-15secs.wav”);sampleRate = fileReader.SampleRate;deviceWriter = audioDeviceWriter (“SampleRate”,取样器);setSampleRate(寄宿Lugin,取样器);虽然~isDone(fileReader) audioIn = fileReader();%托管插件需要立体声输入。stereoAudioIn = [audioIn, audioIn];x =过程(hostedPlugin stereoAudioIn);deviceWriter (x);结束发布(fileReader)发布(deviceWriter)
您可以在音频流循环中修改属性。控制潮湿的
属性的音频流循环,创建audioOscillator
系统对象™. 使用文件阅读器
,deviceWriter
和卢金旅馆
您先前创建的用于处理音频的对象。
osc=音频振荡器(的正弦,...“频率”10...“振幅”, 20岁,...“DCOffset”, -20,...“SamplesPerFrame”, fileReader。SamplesPerFrame,...“SampleRate”, sampleRate);虽然~isDone(fileReader)audioIn=fileReader();controlSignal=osc();hostedPlugin.Wet=controlSignal(1);stereoAudioIn=[audioIn,audioIn];x=process(hostedPlugin,stereoAudioIn);deviceWriter(x);结束发布(fileReader)发布(deviceWriter)
4.分析托管插件
您可以使用Audio Toolbox测量和可视化工具来显示托管插件的行为信息。要显示托管音频插件的输入和输出,请创建一个时间范围。创建一个响度计
对象并使用“欧洲模式”
可视化监控音量输出由托管插件。使用文件阅读器
,deviceWriter
,osc
和卢金旅馆
您先前创建的用于处理音频的对象。
范围= timescope (“SampleRate”sampleRate,...“TimeSpanSource”,“属性”,...“TimeSpanOverrunAction”,“滚动”,...“时间间隔”5....“缓冲长度”,5*2*取样器,...“YLimits”[1]);loudMtr = loudnessMeter (“SampleRate”,取样器);可视化(loudMtr)虽然~isDone(fileReader)audioIn=fileReader();controlSignal=osc();hostedPlugin.Wet=controlSignal(1);stereoAudioIn=[audioIn,audioIn];x=过程(hostedPlugin,stereoAudioIn);loudMtr(x);范围([x(:,1),audioIn(:,1)])设备写入程序(x);结束
发布(fileReader)发布(deviceWriter)
将显示模式设置为参数使您能够以最基本的方式与托管插件进行交互:通过设置和获取规范化的参数值。您可以选择使用返回的信息getParameter
将标准化值解释为真实世界的值,如分贝和赫兹。
以下教程将介绍在参数显示模式下加载和配置外部音频插件的步骤。
1.加载外部音频插件
使用loadAudioPlugin
函数来托管雷德利
VST插件。如果插件位于当前文件夹中,则可以只指定文件名。否则,必须指定完整路径。在本例中,插件位于当前文件夹中。
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.设置和获取托管插件参数值
你可以用getParameter
和设置参数
与托管插件的参数交互。使用getParameter
和设置参数
在编程上相当于在UI中移动小部件或在MIDI控件表面移动控件。典型的DAW UI提供参数名称、规范化参数值的可视化表示形式、显示的参数值和显示的参数值标签。
例如潮湿的
参数readelay-standalone.dll
具有规格化参数值1
以及显示参数值+0.0
这个潮湿的
参数可能显示在DAW中,如下所示:
与音频工具箱,您可以使用getParameter
返回规范化参数值和有关单个托管插件参数的附加信息。您可以通过参数索引指定要获取的参数。
parameterIndex = 1;[normParamValue, paramInfo] = getParameter (hostedPlugin parameterIndex)
normParamValue=1
paramInfo=结构体字段:DisplayName: 'Wet' DisplayValue: '+0.0' Label: 'dB'
你可以用设置参数
设置托管插件的规范化参数值。可以通过参数索引指定要设置的参数。
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”,取样器);setSampleRate(寄宿Lugin,取样器);虽然~isDone(fileReader) audioIn = fileReader();%托管插件需要立体声输入。stereoAudioIn = [audioIn, audioIn];x =过程(hostedPlugin stereoAudioIn);deviceWriter (x);结束发布(fileReader)发布(deviceWriter)
您可以修改音频流循环中的参数潮湿的
参数你的插件在音频流循环,创建audioOscillator
系统对象™. 使用文件阅读器
,deviceWriter
和卢金旅馆
您先前创建的用于处理音频的对象。
osc=音频振荡器(的正弦,...“频率”10...“振幅”,0.5,...“DCOffset”,0.5,...“SamplesPerFrame”, fileReader。SamplesPerFrame,...“SampleRate”, sampleRate);虽然~isDone(fileReader)audioIn=fileReader();控制信号=osc();设置参数(hostedPlugin,1,控制信号(1));stereoAudioIn=[audioIn,audioIn];x=过程(寄宿lugin,stereoAudioIn);deviceWriter(x);结束发布(fileReader)发布(deviceWriter)
4.分析托管插件
您可以使用Audio Toolbox测量和可视化工具来显示托管插件的行为信息。要显示托管音频插件的输入和输出,请创建一个时间范围。创建一个响度计
对象并使用“欧洲模式”
可视化监控音量输出由托管插件。使用文件阅读器
,deviceWriter
,osc
和卢金旅馆
您先前创建的用于处理音频的对象。
范围= timescope (“SampleRate”sampleRate,...“TimeSpanSource”,“属性”,...“TimeSpanOverrunAction”,“滚动”,...“时间间隔”5....“缓冲长度”,5*2*取样器,...“YLimits”[1]);loudMtr = loudnessMeter (“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)]) deviceWriter (x);结束
发布(fileReader)发布(deviceWriter)
您还可以使用图形方式与外部编写的音频插件交互音频测试台这个音频测试台模拟大多数数字音频工作站通用的默认图形用户界面。
参数显示值通过插件内部未知的映射规则与规范化参数值相关。您可以通过创建一个扫描函数来研究规范化参数值和显示值之间的关系。您可以使用扫描函数将参数值映射到它们所显示的输出。
托管插件的属性显示模式使用类似的方法,使您能够直接与真实世界(显示的)值交互,而不是与规范化的参数值交互。
拯救displayParameterMapping
函数在当前文件夹中。这个函数执行一个简化版本的参数扫描,用于创建托管插件的属性显示模式。
作用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(张));oldIndx =我;txtOld = txtNew;结束结束流('%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。”)结束情节(x, y)包含(“归一化参数值”)伊拉贝尔(['显示的参数值('), prmInfo。标签,')'])标题(prmInfo.DisplayName)结束结束
加载readelay-standalone.dll
插件在MATLAB®。调用displayParameterMapping
函数带有托管插件和参数索引。
hostedPlugin = loadAudioPlugin (“readelay standalone.dll”);显示参数映射(hostedPlugin,1);
如果你使用displayParameterMapping
如果函数具有非数值参数,则关系将显示在命令窗口中:
显示参数映射(hostedPlugin,3)
关:0-0.499开:0.5-1