Задайте размещение для аудио сменного пользовательского интерфейса
создает объект, который задает разметочную сетку для аудио сменного графического интерфейса пользователя. Используйте сменный объект размещения сетки, gridLayout
= audioPluginGridLayoutgridLayout
, в качестве аргумента к audioPluginInterface
в вашем сменном определении класса. audioPluginGridLayout
задает только сетку. Размещение отдельных графических элементов задано с помощью audioPluginParameter
.
Чтобы изучить, как спроектировать графический интерфейс пользователя, смотрите Пользовательский интерфейс Проекта для Аудио Плагина.
Например, плагины, смотрите галерею Audio Plugin Example.
задает gridLayout
= audioPluginGridLayout(Name,Value
)audioPluginGridLayout
свойства с помощью одного или нескольких Name,Value
парные аргументы.
Аудио сменное размещение сетки по умолчанию задает сетку 2 на 2. Вызовите audioPluginGridLayout
без аргументов, чтобы просмотреть настройки по умолчанию.
audioPluginGridLayout
ans = audioPluginGridLayout with properties: RowHeight: [100 100] ColumnWidth: [100 100] RowSpacing: 10 ColumnSpacing: 10 Padding: [10 10 10 10]
noisifyClassic
использует размещение сетки по умолчанию путем передачи audioPluginGridLayout
, без любых аргументов, к audioPluginInterface
. Когда вы используете audioPluginGridLayout
, необходимо задать положение каждого audioPluginParameter
на сетке с помощью Layout
. Отобразитесь имена, соответствующие параметрам, занимают ячейки на сетке также. Сетка по умолчанию содержит только четыре ячейки и noisifyClassic
имеет четыре параметра, таким образом, необходимо установить DisplayNameLocation
к none
соответствовать всем элементам на сетке. audioPluginGridLayout
передается audioPluginInterface
. Сохраните noisifyClassic
к вашей текущей папке.
classdef noisifyClassic < audioPlugin properties DropoutLeft = false DropoutRight = false NoiseLeftGain = 0 NoiseRightGain = 0 end properties (Constant) PluginInterface = audioPluginInterface( ... audioPluginParameter('DropoutLeft', ... 'Layout',[2,1], ... 'DisplayNameLocation','none'), ... audioPluginParameter('DropoutRight', ... 'Layout',[2,2], ... 'DisplayNameLocation','none'), ... audioPluginParameter('NoiseLeftGain', ... 'Layout',[1,1], ... 'DisplayNameLocation','none'), ... audioPluginParameter('NoiseRightGain', ... 'Layout',[1,2], ... 'DisplayNameLocation','none'), ... ... audioPluginGridLayout) end methods function out = process(plugin,in) r = size(in,1); dropRate = 0.1; if plugin.DropoutLeft idx = randperm(r,round(r*dropRate)); in(idx,1) = 0; end if plugin.DropoutRight idx = randperm(r,round(r*dropRate)); in(idx,2) = 0; end in(:,1) = in(:,1) + plugin.NoiseLeftGain*(2*rand(r,1,'like',in)-1); in(:,2) = in(:,2) + plugin.NoiseRightGain*(2*rand(r,1,'like',in)-1); out = in; end end end
Можно быстро выполнить итерации на проекте пользовательского интерфейса при помощи parameterTuner
визуализировать сменный пользовательский интерфейс. Вызовите parameterTuner
на noisifyClassic
.
parameterTuner(noisifyClassic)
Плагин в качестве примера, noisify
, добавляет шум к вашему звуковому сигналу, мудрому каналом в заданном усилении (на канал) и процент отсеявшихся.
classdef noisifyOriginal < audioPlugin properties DropoutLeft = false; DropoutRight = false; NoiseLeftGain = 0; NoiseRightGain = 0; DropoutRate = 0.1; end properties (Constant) PluginInterface = audioPluginInterface(... audioPluginParameter('DropoutLeft'), ... audioPluginParameter('DropoutRight'), ... audioPluginParameter('NoiseLeftGain'), ... audioPluginParameter('NoiseRightGain'), ... audioPluginParameter('DropoutRate')) end methods function out = process(plugin,in) r = size(in,1); if plugin.DropoutLeft idx = randperm(r,round(r*plugin.DropoutRate)); in(idx,1) = 0; end if plugin.DropoutRight idx = randperm(r,round(r*plugin.DropoutRate)); in(idx,2) = 0; end in(:,1) = in(:,1) + plugin.NoiseLeftGain*randn(r,1,'like',in); in(:,2) = in(:,2) + plugin.NoiseRightGain*randn(r,1,'like',in); out = in; end end end
Чтобы видеть соответствующий пользовательский интерфейс для плагина, вызовите parameterTuner
с плагином. Когда вы генерируете аудио плагин и развертываете его в DAW, DAW использует пользовательский интерфейс по умолчанию, который похож на пользовательский интерфейс по умолчанию parameterTuner
.
parameterTuner(noisifyOriginal)
Можно создать более интуитивный и визуально приятный пользовательский интерфейс с помощью audioPluginInterface
, audioPluginGridLayout
, и audioPluginParameter
. Например, чтобы создать более интуитивный пользовательский интерфейс для noisyOriginal
, вы могли обновить audioPluginInterface
можно следующим образом:
classdef noisify < audioPlugin properties DropoutLeft = false; DropoutRight = false; NoiseLeftGain = 0; NoiseRightGain = 0; DropoutRate = 0.1; end properties (Constant) PluginInterface = audioPluginInterface(... audioPluginParameter('DropoutLeft', ... 'Layout',[4,1], ... 'DisplayName','Dropout (L)', ... 'DisplayNameLocation','above', ... 'Style','vrocker'), ... audioPluginParameter('DropoutRight', ... 'Layout',[4,4], ... 'DisplayName','Dropout (R)', ... 'DisplayNameLocation','above', ... 'Style','vrocker'), ... audioPluginParameter('NoiseLeftGain', ... 'DisplayName','Noise Gain (L)', ... 'Layout',[2,1;2,2], ... 'DisplayNameLocation','above', ... 'Style','rotaryknob'), ... audioPluginParameter('NoiseRightGain', ... 'Layout',[2,3;2,4], ... 'DisplayName','Noise Gain (R)', ... 'DisplayNameLocation','above', ... 'Style','rotaryknob'), ... audioPluginParameter('DropoutRate', ... 'Layout',[4,2;4,3], ... 'DisplayName','Droput Rate', ... 'DisplayNameLocation','below', ... 'Style','vslider'), ... ... audioPluginGridLayout( ... 'RowHeight',[15,150,15,150,15], ... 'ColumnWidth',[100,40,40,100], ... 'RowSpacing',30)) end methods function out = process(plugin,in) r = size(in,1); if plugin.DropoutLeft idx = randperm(r,round(r*plugin.DropoutRate)); in(idx,1) = 0; end if plugin.DropoutRight idx = randperm(r,round(r*plugin.DropoutRate)); in(idx,2) = 0; end in(:,1) = in(:,1) + plugin.NoiseLeftGain*randn(r,1,'like',in); in(:,2) = in(:,2) + plugin.NoiseRightGain*randn(r,1,'like',in); out = in; end end end
Можно быстро выполнить итерации на проекте пользовательского интерфейса при помощи parameterTuner
визуализировать инкрементные изменения. Вызовите parameterTuner
на noisify
. Когда вы генерируете аудио плагин и развертываете его в DAW, DAW использует расширенный пользовательский интерфейс.
parameterTuner(noisify)
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'RowHeight', [50,200,150]
разновидности сетка с тремя строками. Первая строка 50 пикселей высотой, вторая строка 200 пикселей высотой, и третья строка 150 пикселей высотой.'RowHeight'
— Высота каждой строки (пиксели)
(значение по умолчанию) | вектор-строка из положительных целых чиселВысота в пикселях каждой строки в сетке, заданной как разделенная запятой пара, состоящая из 'RowHeight'
и вектор-строка из положительных целых чисел.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
'ColumnWidth'
— Ширина каждого столбца (пиксели)
(значение по умолчанию) | вектор-строка из положительных целых чиселШирина в пикселях каждого столбца в сетке, заданной как разделенная запятой пара, состоящая из 'ColumnWidth'
и вектор-строка из положительных целых чисел.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
'RowSpacing'
— Расстояние между строками (пиксели)
(значение по умолчанию) | неотрицательное целое числоРасстояние между строками в пикселях, заданных как разделенная запятой пара, состоящая из 'RowSpacing'
и неотрицательное целое число.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
'ColumnSpacing'
— Расстояние между столбцами (пиксели)
(значение по умолчанию) | неотрицательное целое числоРасстояние между столбцами в пикселях, заданных как разделенная запятой пара, состоящая из 'ColumnSpacing'
и неотрицательное целое число.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
'Padding'
— Дополнение вокруг внешнего периметра сетки (пиксели)
(значение по умолчанию) | [оставленный, нижняя часть, право, верхняя часть]Дополнение вокруг внешнего периметра сетки в пикселях, заданных как разделенная запятой пара, состоящая из 'Padding'
и четырехэлементный вектор-строка из неотрицательных целых чисел. Элементы вектора интерпретированы как [оставленный, нижняя часть, право, верхняя часть], где:
оставленный – Расстояние в пикселях от левого края сетки к левому краю родительского контейнера.
нижняя часть – Расстояние в пикселях от базового края сетки к базовому краю родительского контейнера.
право – Расстояние в пикселях от правого края сетки к правому краю родительского контейнера.
верхняя часть – Расстояние в пикселях от верхнего края сетки к верхнему краю родительского контейнера.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Audio Test Bench | audioPlugin
| audioPluginInterface
| audioPluginParameter
| audioPluginSource
| generateAudioPlugin
| parameterTuner
| validateAudioPlugin
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.