audioPluginGridLayout

Задайте размещение для аудио сменного пользовательского интерфейса

Описание

пример

gridLayout = audioPluginGridLayout создает объект, который задает разметочную сетку для аудио сменного графического интерфейса пользователя. Используйте сменный объект размещения сетки, gridLayout, в качестве аргумента к 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' и вектор-строка из положительных целых чисел.

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

Ширина в пикселях каждого столбца в сетке, заданной как разделенная запятой пара, состоящая из 'ColumnWidth' и вектор-строка из положительных целых чисел.

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

Расстояние между строками в пикселях, заданных как разделенная запятой пара, состоящая из 'RowSpacing' и неотрицательное целое число.

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

Расстояние между столбцами в пикселях, заданных как разделенная запятой пара, состоящая из 'ColumnSpacing' и неотрицательное целое число.

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

Дополнение вокруг внешнего периметра сетки в пикселях, заданных как разделенная запятой пара, состоящая из 'Padding' и четырехэлементный вектор-строка из неотрицательных целых чисел. Элементы вектора интерпретированы как [оставленный, нижняя часть, право, верхняя часть], где:

  • оставленный – Расстояние в пикселях от левого края сетки к левому краю родительского контейнера.

  • нижняя часть – Расстояние в пикселях от базового края сетки к базовому краю родительского контейнера.

  • право – Расстояние в пикселях от правого края сетки к правому краю родительского контейнера.

  • верхняя часть – Расстояние в пикселях от верхнего края сетки к верхнему краю родительского контейнера.

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

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

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

Введенный в R2019b