audioPluginParameter

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

Описание

пример

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

В среде цифровой звуковой рабочей станции (DAW), или при использовании Audio Test Bench или parameterTuner в среде 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'Метка как '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,4}, ...
            'Layout',[1,1], ...
            'Style','vslider'), ...
            audioPluginGridLayout('RowHeight',[400,20]));
    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}, ...
            'Style','rotary', ...
            'Layout',[1,1]), ...
            audioPluginGridLayout);
    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'}, ...
            'Layout',[1,1], ...
            'Style','vtoggle', ...
            'DisplayNameLocation','none'), ...
            audioPluginGridLayout);
    end
    methods
        function out = process(plugin,in)
            if plugin.PassThrough
                out = in;
            else
                out = zeros(size(in));
            end
        end
    end
end

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

Во-первых, создайте объекты читать из файла и записать в ваше устройство.

fileReader = dsp.AudioFileReader('Engine-16-44p1-stereo-20sec.wav');
deviceWriter = audioDeviceWriter('SampleRate',fileReader.SampleRate);

Создайте сменный объект и установите частоту дискретизации на частоту дискретизации файла.

passThrough = pluginWithLogicalEnumMapping;
setSampleRate(passThrough,fileReader.SampleRate)

Откройте parameterTuner так, чтобы можно было переключить логический параметр плагина в то время как потоковая обработка.

parameterTuner(passThrough)

В то время как файл содержит непрочитанные данные:

  1. Считайте систему координат из файла.

  2. Питайте систему координат через плагин

  3. Запишите обработанное аудио в свое устройство.

В то время как аудиопоток запускается, переключите PassThrough параметр и слушает эффект.

while ~isDone(fileReader)
    audioIn = fileReader();
    
    audioOut = process(passThrough,audioIn);
    
    deviceWriter(audioOut);
    
    drawnow limitrate
end

Следующие определения классов включают простой пример отображения параметра перечисления для свойств, заданных классом перечисления. Можно задать рабочий режим плагина, созданного из этого класса путем настройки 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)

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

свернуть все

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

Типы данных: char | string

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

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

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

Отображения

свернуть все

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

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

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

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

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

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

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

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

'log'

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

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

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

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

'pow'

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

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

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

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

'int'

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

(propertyvalue)=floor(0.5+min+(maxmin)×(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'.

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

Графический интерфейс пользователя

свернуть все

Ячейки сетки, занятые параметром, управляют в виде разделенной запятой пары, состоящей из 'Layout' и двухэлементный вектор-строка или матрица 2 на 2. Чтобы использовать отдельную ячейку, задайте [строку, столбец] ячейки. Чтобы охватить несколько ячеек, задайте верхние левые ячейки и нижние правые ячейки как [верхний, оставленный; ниже, право].

Пример: 'Layout',[2,3]

Пример: 'Layout',[2,3;3,6]

Зависимости

Чтобы включить эту пару "имя-значение", передайте audioPluginGridLayout возразите против audioPluginInterface.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

Типы данных: char | string

Местоположение DisplayNameВ виде разделенной запятой пары, состоящей из 'DisplayNameLocation' и 'left', 'right', 'above', 'below', или 'none'. Местоположение имени отображения задано относительно Layout:

  1. 'left' – Имя отображения расположено в столбце слева от Layout и охватывает те же строки как Layout.

  2. 'right' – Имя отображения расположено в столбце справа от Layout и охватывает те же строки как Layout.

  3. 'above' – Имя отображения расположено в строке выше Layout и охватывает те же столбцы как Layout

  4. 'below' – Имя отображения расположено в строке ниже Layout и охватывает те же столбцы как Layout.

  5. 'none' DisplayName подавлен.

Пример: 'DisplayNameLocation','left'

Зависимости

Чтобы включить эту пару "имя-значение", передайте audioPluginGridLayout возразите против audioPluginInterface.

Типы данных: char | string

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

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

Типы данных: char | string

Визуальное управление для сменного параметра в виде разделенной запятой пары, состоящей из 'Style' и строка или вектор символов:

СтильОписание
'hslider'

Горизонтальный ползунок

'vslider'

Вертикальный ползунок

'rotaryknob'

Ротационная кнопка

'checkbox'

Флажок

'vrocker'

Вертикальный переключатель рокера

'vtoggle'

Вертикальный переключатель переключателя

'dropdown'

Выпадающий

И допустимые стили по умолчанию зависят от сменного параметра Mapping и соответствующий класс свойства:

ОтображениеКласс свойстваСтиль по умолчаниюДополнительные допустимые стили

lin

log

pow

int

единственный

'double'

hslider

vslider

rotaryknob

enum

логический

checkbox

dropdown

vrocker

vtoggle

enum

перечисление с 2 значениями

vrocker

dropdown

vtoggle

enum

перечисление

dropdown

 

Зависимости

Чтобы включить эту пару "имя-значение", передайте audioPluginGridLayout возразите против audioPluginInterface.

Типы данных: char | string

Имя PNG, GIF или графического файла JPG в виде разделенной запятой пары, состоящей из 'Filmstrip' и вектор символов или строка. Графический файл содержит последовательность изображений средств управления.

Диафильмы включают, вы, чтобы заменить значение по умолчанию управляете графикой со своими собственными изображениями. Диафильмы поддерживают все управление Style значения за исключением выпадают. Диафильм является одним изображением, созданным путем конкатенации названных систем координат меньших изображений. Каждая система координат является изображением управления в особом положении. Например, диафильм для переключателя содержит две системы координат: одно изображение "от" состояния и другого изображения "на" состоянии. Системы координат могут быть конкатенированы вертикально или горизонтально. Предположим, что системы координат переключателя 50 пикселей шириной 100 пикселей высотой. Затем вертикальная конкатенация производит 50 200 пиксельное изображение диафильма с главной системой координат, используемой в переключателе "от" состояния. Горизонтальная конкатенация производит 100 100 пиксельное изображение с левой системой координат, используемой в переключателе "от" состояния. Диафильмы для ползунков и кнопок обычно содержат намного больше систем координат. Главная/левая система координат соответствует минимальному положению управления, и система координат нижней части/права соответствует максимальному положению управления. Относительное положение управления определяет, какая система координат отображена для данного значения параметров.

Зависимости

Чтобы включить эту пару "имя-значение", передайте audioPluginGridLayout возразите против audioPluginInterface и задайте 'FilmstripFrameSize'.

Типы данных: char | string

Размер отдельных систем координат в диафильме в пикселях в виде разделенной запятой пары, состоящей из 'FilmstripFrameSize' и двухэлементный вектор-строка из целых чисел, которые задают [ширину, высота].

Зависимости

Чтобы включить эту пару "имя-значение", передайте audioPluginGridLayout возразите против audioPluginInterface и задайте 'Filmstrip'.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Чтобы изучить, как спроектировать графический интерфейс пользователя, смотрите Пользовательский интерфейс Проекта для Аудио Плагина.

Больше о

свернуть все

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

Аудио сменные параметры отображаются и являются настраиваемыми и в MATLAB и в средах цифровой звуковой рабочей станции (DAW). Различные среды и соответствующий рендеринг аудио сменных параметров обрисованы в общих чертах здесь. Для примера, описывающего, как ваше определение класса сопоставляет с пользовательским интерфейсом, смотрите Пользовательский интерфейс Проекта для Аудио Плагина.

Среда MATLAB Используя Audio Test Bench.  Используйте Audio Test Bench, чтобы взаимодействовать со сменными параметрами в среде MATLAB в полном основанном на графический интерфейсе пользователя рабочем процессе. Используя Audio Test Bench, можно задать аудиовход и вывести, анализировать плагин, использующий время - и осциллографы частотного диапазона, соединиться со средствами управления MIDI, и подтвердить и сгенерировать плагин. Audio Test Bench соблюдает графический интерфейс пользователя, который вы задали в audioPluginParameter, audioPluginGridLayout, и audioPluginInterface (за исключением диафильмов).

Среда MATLAB Используя parameterTuner.  Используйте parameterTuner взаимодействовать со сменными параметрами в среде MATLAB при разработке, анализируя, или с помощью плагина в программируемом рабочем процессе. parameterTuner соблюдает графический интерфейс пользователя, который вы задали в audioPluginParameter, audioPluginGridLayout, и audioPluginInterface (за исключением диафильмов).

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

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

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

Введенный в R2016a