主机外部音频插件
主机可以威仕特、VST3在MATLAB和非盟插件®通过使用loadAudioPlugin
从音频工具箱™函数。
加载外部音频插件后,你处理音频通过其主要音频处理算法。
音频工具箱允许三种方式与托管音频插件:
以下tutorials-one版本属性显示模式和一个版本参数显示mode-walk您通过举办过程中外部撰写威仕特插件和插件的MATLAB命令行交互。你举办一个插件套件的ReaPlugs威仕特Cockos整合插件分发。下载ReaPlugs威仕特FX套件为您的系统,遵循的指令“收割者”网站。一个64位的Windows平台是本教程中使用。的loadAudioPlugin
32位函数不能加载插件。
属性显示模式(默认)
设置显示模式属性使您能够与托管使用标准插件对象交互点符号。例如:
hostedObject。获得= 5;% dB
财产
是默认显示模式举办的插件。
数字参数映射通过启发式的解释归一化参数值和相应的显示值。属性显示模式很简单和直观的。然而,由于启发式的映射真实的属性值的归一化参数值,属性显示模式可能会分解为一些插件。在这种情况下,您应该使用参数显示模式。
主机外部音频插件教程(属性显示模式)
下面的教程走过的台阶加载和配置一个外部音频插件属性显示模式。
1。加载外部音频插件
使用loadAudioPlugin
函数来举办ReaDelay
威仕特插件。如果插件在你当前的文件夹中,您可以指定文件名。否则,你必须指定完整路径。在这个例子中,插件在当前文件夹。默认情况下,显示模式设置为属性。
hostedPlugin = loadAudioPlugin (“readelay-standalone.dll”)
hostedPlugin =威仕特插件' ReaDelay (ReaPlugs版)的2,2湿:0分贝干燥:0 dB x1_Enabled:”“x1_Length_4: 0 x1_Length_5女士:4 8 n x1_Feedback:从dB x1_Lowpass: 20000 Hz x1_Hipass: 0 Hz x1_Resolution: 24位x1_StereoWidth: 1 x1_Volume: 0 dB x1_Pan: 0%
第一行显示插件类型,插件显示名称和数量的输入和输出渠道的主要音频处理算法插件。如果你举办一个源代码插件,输出通道的数量,默认显示样品每帧。
默认情况下,显示所有属性。
2。优化托管插件属性值
你可以与托管插件使用点符号的属性。如果你去高于或低于允许范围的属性,一个错误消息将状态有效的边界。
hostedPlugin。x1_Hipass = 120;highPassSetting = hostedPlugin.x1_Hipass
highPassSetting = 120
你可以使用tab补齐枚举属性的可能值的列表。
3所示。使用托管插件处理音频
处理的音频信号承载插件,使用过程
。
audioIn = [1];audioOut =过程(hostedPlugin audioIn);
音频插件用于variable-frame-based处理,这意味着你可以叫过程
不同长度的连续的音频输入帧。主持插件保存所需的内部状态连续处理。处理音频信号读取一个文件,然后写入你的音频输出设备,把你的托管插件的一个音频流循环。使用dsp.AudioFileWriter
和audioDeviceWriter
对象作为输入和输出音频流循环,分别。设置托管插件的采样率采样率的音频文件用setSampleRate
。
fileReader = dsp.AudioFileReader (“Counting-16-44p1-mono-15secs.wav”);sampleRate = fileReader.SampleRate;deviceWriter = audioDeviceWriter (“SampleRate”,sampleRate);setSampleRate (hostedPlugin sampleRate);而~结束(fileReader) audioIn = fileReader ();%主持插件需要立体声输入。stereoAudioIn = [audioIn, audioIn];x =过程(hostedPlugin stereoAudioIn);deviceWriter (x);结束发布(fileReader)发布(deviceWriter)
您可以修改属性的音频流循环。控制湿
房地产你的插件的一个音频流循环,创建一个audioOscillator
系统对象™。使用fileReader
,deviceWriter
,hostedPlugin
您前面创建的对象来处理音频。
osc = audioOscillator (的正弦,…“频率”10…“振幅”,20岁,…“DCOffset”,-20,…“SamplesPerFrame”fileReader.SamplesPerFrame,…“SampleRate”,sampleRate);而~结束(fileReader) audioIn = fileReader ();controlSignal = osc ();hostedPlugin。湿= controlSignal(1); stereoAudioIn = [audioIn,audioIn]; x = process(hostedPlugin,stereoAudioIn); deviceWriter(x);结束发布(fileReader)发布(deviceWriter)
4所示。分析了插件
您可以使用音频工具箱测量和可视化工具来显示行为信息承载插件。显示你主持的输入和输出音频插件,创建一个时间范围。创建一个loudnessMeter
对象和使用“欧洲模式”
可视化监控响度由托管插件输出。使用fileReader
,deviceWriter
,osc
,hostedPlugin
您前面创建的对象来处理音频。
范围= timescope (“SampleRate”sampleRate,…“TimeSpanSource”,“属性”,…“TimeSpanOverrunAction”,“滚动”,…“时间间隔”5,…“BufferLength”5 * 2 * sampleRate,…“YLimits”[1]);loudMtr = loudnessMeter (“SampleRate”,sampleRate);可视化(loudMtr)而~结束(fileReader) audioIn = fileReader ();controlSignal = osc ();hostedPlugin。湿= controlSignal(1); stereoAudioIn = [audioIn,audioIn]; x = process(hostedPlugin,stereoAudioIn); loudMtr(x); scope([x(:,1),audioIn(:,1)]) deviceWriter(x);结束
发布(fileReader)发布(deviceWriter)
参数显示模式
设置显示模式参数使您能够与托管插件以最基本的方式:通过设置和获取归一化参数值。您可以使用返回的信息(可选)getParameter
解释归一化值作为实际值,如分贝和赫兹。
主机外部音频插件教程(参数模式)
下面的教程走过的台阶加载和配置一个外部音频插件参数显示模式。
1。加载外部音频插件
使用loadAudioPlugin
函数来举办ReaDelay
威仕特插件。如果插件在你当前的文件夹中,您可以指定文件名。否则,你必须指定完整路径。在这个例子中,插件在当前文件夹。
hostedPlugin = loadAudioPlugin (“readelay-standalone.dll”);
默认情况下,显示模式设置为属性。设置这个控件
财产参数
低级的交互与托管插件。
hostedPlugin。这个=“参数”
hostedPlugin =威仕特插件' ReaDelay (ReaPlugs版)的2,2出参数值显示________________________________ 1湿:1.0000 + 0.0 dB 2干:1.0000 + 0.0 dB 3 1:启用:1.0000 4 1:长度:0.0000 - 0.0 5女士1:长度:0.0156 - 4.00 8 n 7参数不显示。看到所有12个参数。
第一行显示插件类型,插件显示名称和数量的输入和输出渠道的主要音频处理算法插件。如果你举办一个源代码插件,输出通道的数量,默认显示样品每帧。
默认情况下,只显示前五个参数。显示所有参数的托管插件,点击看到所有12个参数
。
表提供了参数指标、参数名称、归一化参数值,参数值显示,显示的参数值标签。
的归一化参数值总是在[0,1],通常对应于一个用户界面(UI)小部件的位置在寒鸦或MIDI的位置控制在MIDI控制表面。的参数显示值归一化相关参数值通过一个未知的映射内部使用的插件和通常反映了价值由插件内部进行处理。
2。设置和获取托管插件参数值
您可以使用getParameter
和setParameter
与托管插件的参数进行交互。使用getParameter
和setParameter
在UI编程相当于移动部件或控制MIDI控制表面。一个典型的寒鸦UI提供了参数名,归一化参数值的可视化表示,显示的参数值,参数值显示标签。
例如,湿
参数的readelay-standalone.dll
有一个归一化参数值的1
和显示参数值+ 0.0
。的湿
参数可能会显示在一个寒鸦如下:
使用音频工具箱,您可以使用getParameter
返回规范化参数值和额外的一个托管插件参数信息。你可以指定参数的参数指标。
parameterIndex = 1;[normParamValue, paramInfo] = getParameter (hostedPlugin parameterIndex)
normParamValue = 1
paramInfo =结构体字段:DisplayName:“湿”DisplayValue: + 0.0的标签:“数据库”
您可以使用setParameter
设置一个规范化了插件的参数值。您可以指定参数设定的参数指标。
normParamValue = 0.5;setParameter (hostedPlugin parameterIndex normParamValue)
归一化参数值设置为0.5相当于设置指标寒鸦的滑块的中心。
验证新归一化参数值湿
,使用getParameter
。
parameterIndex = 1;[normParamValue, paramInfo] = getParameter (hostedPlugin parameterIndex);
的DisplayValue
为湿
参数更新+ 0.0
来-6.0
因为你设置相应的归一化参数值。显示值和归一化值之间的关系是由一个未知的映射内部举办的插件。
3所示。使用托管插件处理音频
处理的音频信号承载插件,使用过程
。
audioIn = [1];audioOut =过程(hostedPlugin audioIn);
音频插件用于variable-frame-based处理,这意味着你可以叫过程
不同长度的连续的音频输入帧。主持插件保存所需的内部状态连续处理。处理音频信号读取一个文件,然后写入你的音频输出设备,把你的托管插件的一个音频流循环。使用dsp.AudioFileReader
和audioDeviceWriter
对象作为输入和输出音频流循环,分别。设置托管插件的采样率采样率的音频文件用setSampleRate
。
fileReader = dsp.AudioFileReader (“Counting-16-44p1-mono-15secs.wav”);sampleRate = fileReader.SampleRate;deviceWriter = audioDeviceWriter (“SampleRate”,sampleRate);setSampleRate (hostedPlugin sampleRate);而~结束(fileReader) audioIn = fileReader ();%主持插件需要立体声输入。stereoAudioIn = [audioIn, audioIn];x =过程(hostedPlugin stereoAudioIn);deviceWriter (x);结束发布(fileReader)发布(deviceWriter)
您可以修改参数的音频流循环。控制湿
你的插件的参数音频流循环,创建一个audioOscillator
系统对象™。使用fileReader
,deviceWriter
,hostedPlugin
您前面创建的对象来处理音频。
osc = audioOscillator (的正弦,…“频率”10…“振幅”,0.5,…“DCOffset”,0.5,…“SamplesPerFrame”fileReader.SamplesPerFrame,…“SampleRate”,sampleRate);而~结束(fileReader) audioIn = fileReader ();controlSignal = osc ();setParameter (hostedPlugin 1 controlSignal (1));stereoAudioIn = [audioIn, audioIn];x =过程(hostedPlugin stereoAudioIn);deviceWriter (x);结束发布(fileReader)发布(deviceWriter)
4所示。分析了插件
您可以使用音频工具箱测量和可视化工具来显示行为信息承载插件。显示你主持的输入和输出音频插件,创建一个时间范围。创建一个loudnessMeter
对象和使用“欧洲模式”
可视化监控响度由托管插件输出。使用fileReader
,deviceWriter
,osc
,hostedPlugin
您前面创建的对象来处理音频。
范围= timescope (“SampleRate”sampleRate,…“TimeSpanSource”,“属性”,…“TimeSpanOverrunAction”,“滚动”,…“时间间隔”5,…“BufferLength”5 * 2 * sampleRate,…“YLimits”[1]);loudMtr = loudnessMeter (“SampleRate”,sampleRate);可视化(loudMtr)而~结束(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
函数在当前文件夹。这个函数执行一个简化版的参数全面用于创建属性显示模式承载插件。
函数x = 0:0.001:1 displayParameterMapping (hPlugin prmIndx);%归一化参数范围[~,prmInfo] = getParameter (hPlugin prmIndx);如果isnan (str2double (prmInfo.DisplayValue))%非数字显示:输出归一化相关的参数范围%用绳子setParameter (hPlugin prmIndx 0);[~,prmInfo] = getParameter (hPlugin prmIndx);txtOld = prmInfo.DisplayValue;oldIndx = 1;为我= 2:元素个数(x) setParameter (hPlugin prmIndx x(我)[~,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:元素个数(x) setParameter (hPlugin prmIndx x(我)[~,prmInfo] = getParameter (hPlugin prmIndx);y (i) = str2double (prmInfo.DisplayValue);结束如果任何(isnan (y))警告(“南在数字显示检测到。”)结束情节(x, y)包含(“归一化参数值”)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