exponenta event banner

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

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

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

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

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

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

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' и массив ячеек.

Сопоставление диапазона параметров определяет сопоставление между свойством и соответствующим диапазоном параметров.

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

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

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

(значение свойства) = min + (max min) × (значение параметра)

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

Пример: Указание информации о параметрах

'log'

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

(значение свойства) = min × (max/min) (значение параметра)

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

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

'pow'

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

(значение свойства) = min + (max min) × (значение параметра) exp

{'pow', 1/3, -140, 12} задает связь степенного закона с степенью 1/3, минимум -140 и максимум 12.

Пример: Сопоставление параметров мощности

'int'

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

(значение свойства) = пол (0,5 + мин + (макс мин) × (значение параметра))

{'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' и символьный вектор или строку.

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

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

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

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

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

'vslider'

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

'rotaryknob'

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

'checkbox'

Флажок

'vrocker'

Вертикальный коромысло

'vtoggle'

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

'dropdown'

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' и символьный вектор или строку. Графический файл содержит последовательность изображений элементов управления.

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

Зависимости

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

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

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

Зависимости

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

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

Сведения о проектировании графического пользовательского интерфейса см. в разделе Разработка пользовательского интерфейса для аудиоплагина.

Подробнее

свернуть все

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

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

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

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

Среда DAW.  Использовать generateAudioPlugin для развертывания аудиоплагина в среде DAW. Среда DAW определяет точное расположение параметров плагина, видимое пользователю плагина.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2016a