Задайте параметры аудиоплагина
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)
Пока файл содержит непрочитанные данные:
Считайте систему координат из файла.
Пропустите систему координат через плагин
Запись обработанного аудио на устройство.
В то время как аудиопоток запускается, переключите 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)
propertyName
- Имя свойства аудиоплагинаИмя свойства аудиоплагина, которое вы хотите связать с параметром, заданным как вектор символов или строка. Введите имя свойства точно так же, как оно определено в разделе свойства вашего класса аудиоплагина.
Типы данных: char
| string
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'DisplayName','Gain','Label','dB'
задает имя отображения вашего параметра следующим 'Gain'
и метку отображения для значения параметров модулей как 'dB'
.'Mapping'
- Сопоставление между свойством и областью значений параметровСопоставление между свойством и областью значений параметров, заданное как разделенная разделенными запятой парами, состоящая из 'Mapping'
и массив ячеек.
Parameter range mapping задает отображение между свойством и связанной областью значений параметров.
Первый элемент массива ячеек является вектором символов, задающим тип отображения. Допустимые значения 'lin'
, 'log'
, 'pow'
, 'int'
, и 'enum'
. Последующие элементы массива ячеек зависят от вида отображения. Допустимые отображения зависят от типа данных свойства.
Тип данных свойств | Допустимые отображения | Дефолт |
---|---|---|
дважды | 'lin' , 'log' , 'pow' , 'int' | {'lin' , 0 , 1 } |
логичный | 'enum' | {'enum' , 'off' , 'on' } |
класс перечисления | 'enum' | имена перечисления |
Отображение | Описание | Пример |
---|---|---|
'lin' | Задает линейное соотношение с заданными минимальным и максимальным значениями. | { |
'log' | Задает логарифмическую зависимость с заданными минимальным и максимальным значениями, где положение управления преобразуется в логарифм значения свойства. Минимальное значение должно быть больше 0. | { |
'pow' |
Задает отношение закона мощности с заданными значениями степени, минимума и максимума. Значение свойства связано с положением управления, повышенным до степени:
| { |
'int' |
Квантует положение управления и преобразует его в область значений последовательных целых чисел с заданными минимальным и максимальным значениями.
| { |
| Опционально предоставляет векторы символов для отображения в диалоговом окне плагина. |
Пример: Перечисление для параметра логических свойств Отображения |
| Опционально предоставляет векторы символов для представителей класса перечисления. | { Пример: 'enum' для отображения параметра класса перечисления |
'Layout'
- Ячейки сетки, занятые управлением параметрамиКамеры сетки, занятые управлением параметрами, заданные как разделенная разделенными запятой парами, состоящая из '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'
и вектор символов или строка. Если 'DisplayName'
не задан, используется имя связанного свойства.
Типы данных: char
| string
'DisplayNameLocation'
- Расположение отображаемого имени'left'
| 'right'
| 'above'
| 'below'
| 'none'
Расположение DisplayName
, заданная как разделенная разделенными запятой парами, состоящая из 'DisplayNameLocation'
и 'left'
, 'right'
, 'above'
, 'below'
, или 'none'
. Расположение имени отображения определяется относительно Layout
:
'left'
-- Отображаемое имя расположено в столбце слева от Layout
и охватывает те же строки, что и Layout
.
'right'
- Имя отображения находится в столбце справа от Layout
и охватывает те же строки, что и Layout
.
'above'
- Имя отображения расположено в строке выше Layout
и охватывает те же столбцы, что и Layout
'below'
- Имя отображения находится в строке ниже Layout
и охватывает те же столбцы, что и Layout
.
'none'
– DisplayName
подавляется.
Пример: 'DisplayNameLocation','left'
Чтобы включить эту пару "имя-значение", передайте audioPluginGridLayout
объект, audioPluginInterface
.
Типы данных: char
| string
'Label'
- Отобразите метку для модулей значения параметровОтобразите метку для модулей значения параметров, заданную как разделенная разделенными запятой парами, состоящая из 'Label'
и вектор символов или строка.
The 'Label'
пара "имя-значение" игнорируется для нечисловых параметров.
Типы данных: char
| string
'Style'
- Визуальное управление параметром плагина'hslider'
| 'vslider'
| 'rotaryknob'
| 'checkbox'
| 'vrocker'
| 'vtoggle'
| 'dropdown'
Визуальное управление для параметра плагина, заданное как разделенная разделенными запятой парами, состоящая из 'Style'
и строка или вектор символов:
Стиль | Описание |
---|---|
'hslider' | Горизонтальный ползунок |
'vslider' | Вертикальный ползунок |
'rotaryknob' | Поворотная ручка |
'checkbox' | Флажок |
'vrocker' | Вертикальный шатунный переключатель |
'vtoggle' | Вертикальный тумблер |
'dropdown' | Выпадающий список |
По умолчанию и допустимые стили зависят от параметра плагина Mapping
и соответствующий класс свойств:
Отображение | Класс свойств | Стиль по умолчанию | Дополнительные действительные стили |
---|---|---|---|
| одинок дважды |
|
|
| логичный |
|
|
| перечисление с 2 значениями |
|
|
| перечисление |
|
Чтобы включить эту пару "имя-значение", передайте audioPluginGridLayout
объект, audioPluginInterface
.
Типы данных: char
| string
'Filmstrip'
- Имя графического файла PNG, GIF или JPGИмя графического файла PNG, GIF или JPG, заданное как разделенная разделенными запятой парами, состоящая из 'Filmstrip'
и вектор символов или строка. Графический файл содержит последовательность изображений элементов управления.
Filmstrips позволяет вам заменить управляющую графику по умолчанию на собственные пользовательские изображения. Диафильмы поддерживают все управляющие Style
значения за исключением выпадающих списков. filmstrip - это одно изображение, созданное путем конкатенирования небольших изображений, называемых системами координат. Каждая система координат является изображением элемента управления в конкретном положении. Например, диафильм для коммутатора содержит две системы координат: одну, изображающую состояние «off», и другую, изображающую состояние «on». Системы координат могут быть сцеплены вертикально или горизонтально. Предположим, что системы координат коммутатора имеют ширину 50 пикселей на 100 пикселей в высоту. Затем вертикальная конкатенация создает изображение 50 на 200 пикселей filmstrip с верхней системой координат, используемой для переключения состояния «off». Горизонтальная конкатенация создает 100 на 100 пиксельных изображений с левой системой координат, используемым для переключения состояния «off». Диафильмы для ползунков и ручек обычно содержат намного больше систем координат. Верхняя / система координат соответствует минимальному положению управления, а нижняя / правая система координат соответствует максимальному положению управления. Относительное положение управления определяет, какая система координат отображается для заданного значения параметров.
Чтобы включить эту пару "имя-значение", передайте audioPluginGridLayout
объект, audioPluginInterface
и задайте 'FilmstripFrameSize'
.
Типы данных: char
| string
'FilmstripFrameSize'
- Размер отдельных систем координат (пикселей)Размер отдельных систем координат в пленочной полосе в пикселях, заданный как разделенная разделенными запятой парами, состоящая из '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 определяет точное размещение параметров плагина, как видно пользователю плагина.
Audio Test Bench | audioPlugin
| audioPluginInterface
| audioPluginSource
| generateAudioPlugin
| parameterTuner
| validateAudioPlugin
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.