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', '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,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 до 10000.

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', 'log', 'pow', 'int', и 'enum'. Последующие элементы массива ячеек зависят от вида отображения. Допустимые отображения зависят от типа данных свойства.

Тип данных свойствДопустимые отображенияДефолт
дважды'lin', 'log', '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)

{'log', 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'.

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

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

свернуть все

Камеры сетки, занятые управлением параметрами, заданные как разделенная разделенными запятой парами, состоящая из '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' и вектор символов или строка.

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

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

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

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

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

'vslider'

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

'rotaryknob'

Поворотная ручка

'checkbox'

Флажок

'vrocker'

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

'vtoggle'

Вертикальный тумблер

'dropdown'

Выпадающий список

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

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

lin

log

pow

int

одинок

дважды

hslider

vslider

rotaryknob

enum

логичный

checkbox

dropdown

vrocker

vtoggle

enum

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

vrocker

dropdown

vtoggle

enum

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

dropdown

 

Зависимости

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

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

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

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

Зависимости

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

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

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

Зависимости

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

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

Чтобы узнать, как проектировать графический пользовательский интерфейс, смотрите Design User Interface for Audio Plugin.

Подробнее о

свернуть все

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

Параметры аудиоплагина видны и настраиваются как в среде MATLAB, так и в среде цифровой аудио рабочей станции (DAW). Здесь описаны различные окружения и соответствующие визуализации параметров аудиоплагина. Для примера, описывающего соответствие определения класса пользовательскому интерфейсу, смотрите Design User Interface for Audio Plugin.

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

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

Окружение для ГДЖ.  Использовать generateAudioPlugin для развертывания аудиоплагина в среде DAW. Окружение DAW определяет точное размещение параметров плагина, как видно пользователю плагина.

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

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

.
Введенный в R2016a