Sei sulla pagina 1di 2

Crear Plugins VST desde Matlab classdef myAudioPlugin < audioPlugin

Se debe crear un código contenido dentro de una definición de clase


perteneciente a audioPlugin. Dentro deben existir dos grandes bloques: end
 Un bloque de properties donde se inicializan variables y se define
la interfaz classdef MuySimpleGain < audioPlugin
 Un bloque llamado methods con una función llamada properties
Gain = 0;
process donde se realiza el proceso de audio. end
En este ejemplo en properties se define una variable llamada properties (Constant) %% genera GUI
PluginInterface = audioPluginInterface(...
Gain y una GUI que mostrara el parámetro Gain. end
audioPluginParameter('Gain'));

En metods tenemos una función que lee el parámetro Gain y methods %% lee valor y procesa
function out = process(plugin,in)
luego multiplica el audio por ese valor. out = in*plugin.Gain;
Es común que dentro de methods existan una función end
end
llamada reset donde se deben reiniciar las variables usadas. end

Una de las properties mas importante es la que define la


interface del plugin que será vista por la DAW, se usa: PluginInterface =
audioPluginInterface(pluginParameters)

Aquí tenemos un ejemplo completo de un simple control de ganancia:


Creado desde la clase audioPlugin

Define
propiedades que Si el usuario del plugin no modifica
contendrán datos estos parámetros definir como
private

Define la interfaz
del plugin

Proceso principal del plugin

Define métodos Llamado al inicio del uso del plugin o si la


de update de frecuencia de muestreo cambia
parámetros y
proceso

Llamado si se produce un cambio, en este


caso GaindB
classdef myGainPlugin < audioPlugin
properties
GaindB = 0;
end
properties (Access=private)
GainMemory = 1;
GainLinear = 1;
end
properties (Constant) %% genera GUI
PluginInterface = audioPluginInterface(...
audioPluginParameter('GaindB',...
'DisplayName','Ganancia',...
'Label','dB',...
'Mapping',{'pow',1/2,-60,10}));
end
methods
function reset(plugin) %% reset de gain al iniciar proceso

Copie el código anterior y guárdelo en el directorio de


plugin.GainMemory = 1;
end

trabajo.
function set.GaindB(plugin, val) %% obtiene un valor desde la GUI
plugin.GaindB = val;
plugin.GainLinear = 10^(val/20);
end
function out = process(plugin,in) %% realiza el proceso
gain = 0.5*(plugin.GainLinear + plugin.GainMemory);
out = in*gain;
plugin.GainMemory = gain;
end
end
end

Potrebbero piacerti anche