Задайте аудио сменные параметры
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)
В то время как файл содержит непрочитанные данные:
Считайте систему координат из файла.
Питайте систему координат через плагин
Запишите обработанное аудио в свое устройство.
В то время как аудиопоток запускается, переключите 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'
журнал
, 'pow'
, 'int'
, и 'enum'
. Последующие элементы массива ячеек зависят от вида отображения. Допустимые отображения зависят от типа данных свойства.
Тип данных свойства | Допустимые отображения | Значение по умолчанию |
---|---|---|
'double' | 'lin' журнал , 'pow' , 'int' | {'lin' , 0 , 1 } |
логический | 'enum' | {'enum' off on } |
класс перечисления | 'enum' | имена перечисления |
Отображение | Описание | Пример |
---|---|---|
'lin' | Задает линейное соотношение с данными минимальными и максимальными значениями. | { Пример: укажите информацию параметра |
'log' | Задает логарифмическое отношение с данными минимальными и максимальными значениями, где положение управления сопоставляет с логарифмом значения свойства. Минимальное значение должно быть больше 0. |
|
'pow' |
Задает отношение закона о степени с данной экспонентой, минимумом и максимальными значениями. Значение свойства связано с положением управления, повышенным до экспоненты:
| { Пример: отображение параметра степени |
'int' |
Квантует положение управления и сопоставляет его с областью значений последовательных целых чисел с данными минимальными и максимальными значениями.
| { |
| Опционально обеспечивает векторы символов для отображения на сменном диалоговом окне. |
Пример: перечисление для логического отображения параметра свойств |
| Опционально предоставляет векторы символов членам класса перечисления. | { Пример: 'перечисление' для отображения параметра класса перечисления |
'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'
и вектор символов или строка.
'Label'
пара "имя-значение" проигнорирована для нечисловых параметров.
Типы данных: char |
string
'Style'
— Визуальное управление для сменного параметра'hslider'
| 'vslider'
| 'rotaryknob'
| 'checkbox'
| 'vrocker'
| 'vtoggle'
| 'dropdown'
Визуальное управление для сменного параметра в виде разделенной запятой пары, состоящей из 'Style'
и строка или вектор символов:
Стиль | Описание |
---|---|
'hslider' | Горизонтальный ползунок |
'vslider' | Вертикальный ползунок |
'rotaryknob' | Ротационная кнопка |
'checkbox' | Флажок |
'vrocker' | Вертикальный переключатель рокера |
'vtoggle' | Вертикальный переключатель переключателя |
'dropdown' | Выпадающий список |
И допустимые стили по умолчанию зависят от сменного параметра Mapping
и соответствующий класс свойства:
Отображение | Класс свойства | Стиль по умолчанию | Дополнительные допустимые стили |
---|---|---|---|
| единственный 'double' |
|
|
| логический |
|
|
| перечисление с 2 значениями |
|
|
| перечисление |
|
Чтобы включить эту пару "имя-значение", передайте audioPluginGridLayout
объект к audioPluginInterface
.
Типы данных: char |
string
'Filmstrip'
— Имя PNG, GIF или графического файла JPGИмя PNG, GIF или графического файла JPG в виде разделенной запятой пары, состоящей из 'Filmstrip'
и вектор символов или строка. Графический файл содержит последовательность изображений средств управления.
Диафильмы включают, вы, чтобы заменить значение по умолчанию управляете графикой со своими собственными изображениями. Диафильмы поддерживают все управление Style
значения за исключением выпадающих списков. Диафильм является одним изображением, созданным путем конкатенации названных систем координат меньших изображений. Каждая система координат является изображением управления в особом положении. Например, диафильм для переключателя содержит две системы координат: одно изображение "от" состояния и другого изображения "на" состоянии. Системы координат могут быть конкатенированы вертикально или горизонтально. Предположим, что системы координат переключателя 50 пикселей шириной 100 пикселей высотой. Затем вертикальная конкатенация производит 50 200 пиксельное изображение диафильма с главной системой координат, используемой для переключателя "от" состояния. Горизонтальная конкатенация производит 100 100 пиксельное изображение с левой системой координат, используемой для переключателя "от" состояния. Диафильмы для ползунков и кнопок обычно содержат намного больше систем координат. Главная/левая система координат соответствует минимальному положению управления, и система координат нижней части/права соответствует максимальному положению управления. Относительное положение управления определяет, какая система координат отображена для данного значения параметров.
Чтобы включить эту пару "имя-значение", передайте audioPluginGridLayout
объект к audioPluginInterface
и задайте 'FilmstripFrameSize'
.
Типы данных: char |
string
'FilmstripFrameSize'
— Размер отдельных систем координат (пиксели)Размер отдельных систем координат в диафильме в пикселях в виде разделенной запятой пары, состоящей из '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 определяет точное размещение сменных параметров, как замечено сменным пользователем.
Audio Test Bench | audioPlugin
| audioPluginInterface
| audioPluginSource
| generateAudioPlugin
| parameterTuner
| validateAudioPlugin
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.