audioPluginParameter

Задайте аудио сменные параметры

Синтаксис

pluginParameter = audioPluginParameter(propertyName)
pluginParameter = audioPluginParameter(propertyName,Name,Value)

Описание

пример

pluginParameter = audioPluginParameter(propertyName) возвращает объект, pluginParameter, который сопоставляет аудио сменный параметр к аудио сменному свойству, заданному propertyName. Используйте сменный объект параметра, pluginParameter, в качестве аргумента к функции audioPluginInterface в вашем сменном определении класса.

В среде цифровой звуковой рабочей станции (DAW), или при использовании Audio Test Bench в среде MATLAB®, сменные параметры являются настраиваемыми, стоящими с пользователем переменными с заданными областями значений, сопоставленными со средствами управления. Когда вы изменяете значение параметров с помощью управления, связанное сменное свойство также изменяется. Если алгоритм обработки аудиоданных плагина зависит от свойств, алгоритм также изменяется.

Чтобы визуализировать отношение между сменными свойствами, параметрами, и средой, в которой запущен плагин, смотрите Реализацию Аудио Сменных Параметров.

пример

pluginParameter = audioPluginParameter(propertyName,Name,Value) задает свойства audioPluginParameter с помощью одного или нескольких аргументов пары Name,Value.

Примеры

свернуть все

Создайте основной аудио сменный файл определения класса. Задайте свойство, Gain и функцию обработки, которая умножается введенный Gain.

classdef myAudioPlugin < audioPlugin
    properties
        Gain = 1;
    end
    methods
        function out = process(plugin,in)
            out = in*plugin.Gain;
        end
    end 
end

Добавьте постоянное свойство, PluginInterface, который задан как объект audioPluginInterface.

classdef myAudioPlugin < audioPlugin
    properties
        Gain = 1;
    end
    properties (Constant)
        PluginInterface = audioPluginInterface;
    end
    methods
        function out = process(plugin,in)
            out = in*plugin.Gain;
        end
    end 
end

Передайте audioPluginParameter audioPluginInterface. Чтобы сопоставить сменное свойство, Gain, к сменному параметру, задает первый аргумент audioPluginParameter как имя свойства, 'Gain'.

classdef myAudioPlugin < audioPlugin
    properties
        Gain = 1;
    end
    properties (Constant)
        PluginInterface = audioPluginInterface(...
            audioPluginParameter('Gain'));
    end
    methods
        function out = process(plugin,in)
            out = in*plugin.Gain;
        end
    end 
end

Создайте основной сменный файл определения класса. Задайте 'DisplayName' как 'Awesome Gain', 'Label' как 'linear' и 'Mapping' как {'lin',0,20}.

classdef myAudioPlugin < audioPlugin
    properties
        Gain = 1;
    end
    properties (Constant)
        PluginInterface = audioPluginInterface(...
            audioPluginParameter('Gain',...
            'DisplayName', 'Awesome Gain',...
            'Label', 'linear',...
            'Mapping', {'lin',0,20}));
    end
    methods
        function out = process(plugin,in)
            out = in*plugin.Gain;
        end
    end 
end

Следующее определение класса использует целочисленное отображение параметра, чтобы задать отношение между свойством и параметром. Можно использовать плагин, созданный из этого класса, чтобы настроить линейное усиление звукового сигнала на целочисленных шагах от 0 до 3.

classdef pluginWithIntegerMapping < audioPlugin
    properties
        Gain = 1;
    end
    properties (Constant)
        PluginInterface = audioPluginInterface( ...
            audioPluginParameter('Gain', ...
            'Mapping', {'int',0,3}));
    end
    methods
        function out = process(plugin,in)
            out = in*plugin.Gain;
        end
    end
end

Чтобы запустить плагин, сохраните определение класса в локальную папку и затем вызовите Audio Test Bench.

audioTestBench(pluginWithIntegerMapping)

Следующее определение класса использует отображение параметра степени, чтобы задать отношение между свойством и параметром. Можно использовать плагин, созданный из этого класса, чтобы настроить усиление звукового сигнала в дБ.

classdef pluginWithPowerMapping < audioPlugin
    properties
        Gain = 0;
    end
    properties (Constant)
        PluginInterface = audioPluginInterface( ...
            audioPluginParameter('Gain', ...
            'Label', 'dB', ...
            'Mapping', {'pow', 1/3, -140, 12}));
    end
    methods
        function out = process(plugin,in)
            dBGain = 10^(plugin.Gain/20);
            out = in*dBGain;
        end
    end
end

Чтобы запустить плагин, сохраните определение класса в локальную папку и затем вызовите Audio Test Bench.

audioTestBench(pluginWithPowerMapping)

Следующее определение класса использует логарифмическое отображение параметра, чтобы задать отношение между свойством и параметром. Можно использовать плагин, созданный из этого класса, чтобы настроить центральную частоту одно полосы фильтр EQ от 100 до 10 000.

classdef pluginWithLogMapping < audioPlugin
    properties
        EQ
        CenterFrequency = 1000;
    end
    properties (Constant)
        PluginInterface = audioPluginInterface( ...
            audioPluginParameter('CenterFrequency', ...
            'Mapping', {'log',100,10000}));
    end
    methods
        function plugin = pluginWithLogMapping
            plugin.EQ = multibandParametricEQ('NumEQBands',1, ...
                'PeakGains',20, ...
                'Frequencies',plugin.CenterFrequency);
        end
        function out = process(plugin,in)
            out = plugin.EQ(in);
        end
        function set.CenterFrequency(plugin,val)
            plugin.CenterFrequency = val;
            plugin.EQ.Frequencies = val;
        end
        function reset(plugin)
            plugin.EQ.SampleRate = getSampleRate(plugin);
        end
    end
end

Чтобы запустить плагин, сохраните определение класса в локальную папку и затем вызовите Audio Test Bench.

audioTestBench(pluginWithLogMapping)

Следующее определение класса использует отображение параметра перечисления, чтобы задать отношение между свойством и параметром. Можно использовать плагин, созданный из этого класса, чтобы блокироваться или пройти через звуковой сигнал путем настройки параметра PassThrough.

classdef pluginWithLogicalEnumMapping < audioPlugin
    properties
        PassThrough = true;
    end
    properties (Constant)
        PluginInterface = audioPluginInterface( ...
            audioPluginParameter('PassThrough', ...
            'Mapping', {'enum','Block signal','Pass through'}));
    end
    methods
        function out = process(plugin,in)
            if plugin.PassThrough
                out = in;
            else
                out = zeros(size(in));
            end
        end
    end
end

Чтобы запустить плагин, сохраните определение класса в локальную папку и затем вызовите Audio Test Bench.

audioTestBench(pluginWithLogicalEnumMapping)

Следующие определения классов включают простой пример отображения параметра перечисления для свойств, заданных классом перечисления. Можно задать рабочий режим плагина, созданного из этого класса путем настройки параметра Mode.

Сменное определение класса

classdef pluginWithEnumMapping < audioPlugin
    properties
        Mode = OperatingMode.boost;
    end
    properties (Constant)
        PluginInterface = audioPluginInterface(...
            audioPluginParameter('Mode',...
                'Mapping',{'enum','+6 dB','-6 dB','silence','white noise'}));
    end
    methods
        function out = process(plugin,in)
            switch (plugin.Mode)
                case OperatingMode.boost
                    out = in * 2;
                case OperatingMode.cut
                    out = in / 2;
                case OperatingMode.mute
                    out = zeros(size(in));
                case OperatingMode.noise
                    out = rand(size(in)) - 0.5;
                otherwise
                    out = in;
            end
        end
    end
end

Определение класса перечисления

classdef OperatingMode < int8
    enumeration
        boost (0)
        cut   (1)
        mute  (2)
        noise (3)
    end
end

Чтобы запустить плагин, сохраните плагин и файлы определения класса перечисления к локальной папке. Затем вызовите Audio Test Bench на сменном классе.

audioTestBench(pluginWithEnumMapping)

Входные параметры

свернуть все

Имя аудио сменного свойства, которое вы хотите сопоставить с параметром, заданным как вектор символов. Введите имя свойства точно, когда оно задано в разделе свойства вашего аудио сменного класса.

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'DisplayName','Gain','Label','dB' задает имя отображения вашего параметра как 'Gain' и метка отображения для модулей значения параметров как 'dB'.

Отобразите имя своего параметра, заданного как пара, разделенная запятой, состоящая из 'DisplayName' и вектора символов. Если 'DisplayName' не задан, имя связанного свойства используется.

Имя отображения вашего параметра используется в среде цифровой звуковой рабочей станции (DAW), и при использовании Audio Test Bench в среде MATLAB.

Отобразите метку для модулей значения параметров, заданных как пара, разделенная запятой, состоящая из 'Label' и вектора символов.

Метка отображения для модулей значения параметров используется в среде цифровой звуковой рабочей станции (DAW), и при использовании Audio Test Bench в среде MATLAB.

Пара "имя-значение" 'Label' проигнорирована для нечисловых параметров.

Отображение между свойством и областью значений параметра, заданной как пара, разделенная запятой, состоящая из 'Mapping' и массива ячеек.

Parameter range mapping задает отображение между свойством и связанной областью значений параметра.

Первый элемент массива ячеек является вектором символов, задающим вид отображения. Допустимыми значениями является 'lin', 'log', 'pow', 'int' и 'enum'. Последующие элементы массива ячеек зависят от вида отображения. Допустимые отображения зависят от типа данных свойства.

Тип данных свойстваДопустимые отображенияЗначение по умолчанию
'double''lin', 'log', 'pow', 'int'{'lin', 0, 1}
логический'enum'{'enum', 'off', 'on'}
класс перечисления'enum'имена перечисления
ОтображениеОписаниеПример
'lin'

Задает линейное соотношение с данными минимальными и максимальными значениями.

(propertyvalue)=min+(max min)×(parametervalue)

{'lin', 0, 24} задает линейное соотношение с минимумом 0 и максимумом 24.

Простой пример: укажите информацию параметра

'log'

Задает логарифмическое отношение с данными минимальными и максимальными значениями, где положение управления сопоставляет с логарифмом значения свойства. Минимальное значение должно быть больше, чем 0.

(propertyvalue)=min×(max /min)(parametervalue)

{'log', 1, 22050} задает логарифмическое отношение с минимумом 1 и максимумом 22 050.

Простой пример: логарифмическое отображение параметра

'pow'

Задает отношение закона о степени с данной экспонентой, минимумом и максимальными значениями. Значение свойства связано с положением управления, повышенным до экспоненты:

(propertyvalue)=min+(max min)×(parametervalue)exp

{'pow', 1/3, -140, 12} задает отношение закона о степени с экспонентой 1/3, минимумом –140 и максимумом 12.

Простой пример: отображение параметра степени

'int'

Квантует положение управления и сопоставляет его с областью значений последовательных целых чисел с данными минимальными и максимальными значениями.

(propertyvalue)=floor(0.5+min+(max min)×(parametervalue))

{'int', 0, 3} задает линейное, квантованное отношение с минимумом 0 и максимумом 3. Значение свойства сопоставлено как целое число в области значений от 0 до 3.

Простой пример: целочисленное отображение параметра

(Логический) 'enum'

Опционально обеспечивает векторы символов для отображения на сменном диалоговом окне.

{'enum','Block signal','Passthrough'} задает вектор символов 'Block signal', если значением параметров является false и 'Passthrough', если значением параметров является true.

Простой пример: перечисление для логического отображения параметра свойств

'enum' (класс перечисления)

Опционально предоставляет векторы символов членам класса перечисления.

{'enum', '+6 dB', '-6 dB', 'silence', 'white noise'} задает векторы символов '+6 dB', '-6 dB', 'silence' и 'white noise'.

Простой пример: 'перечисление' для отображения параметра класса перечисления

Для нетривиальных примеров аудио сменного отображения параметра смотрите галерею Audio Plugin Example.

Больше о

свернуть все

Реализация аудио сменных параметров

Аудио сменные параметры являются видимыми и настраиваемыми и в MATLAB и в средах цифровой звуковой рабочей станции (DAW).

Среда MATLAB.  Используйте Audio Test Bench, чтобы взаимодействовать со сменными параметрами в среде MATLAB.

Среда DAW.  Используйте generateAudioPlugin, чтобы развернуть ваш аудио плагин на среде DAW. Среда DAW определяет точное размещение сменных параметров, как замечено сменным пользователем.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2016a