exponenta event banner

audioPluginGridLayout

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

Описание

пример

gridLayout = audioPluginGridLayout создает объект, определяющий разметочную сетку графического интерфейса аудиоплагина. Используйте объект компоновки сетки подключаемого модуля, gridLayout, в качестве аргумента для audioPluginInterface в определении класса плагина. audioPluginGridLayout указывает только сетку. Размещение отдельных графических элементов определяется с помощью audioPluginParameter.

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

Например, подключаемые модули см. в разделе Галерея примеров аудиоплагинов.

пример

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' и четырехэлементный вектор строк неотрицательных целых чисел. Элементы вектора интерпретируются как [левый, нижний, правый, верхний], где:

  • left - расстояние в пикселях от левого края сетки до левого края родительского контейнера.

  • bottom -- расстояние в пикселях от нижнего края сетки до нижнего края родительского контейнера.

  • справа -- расстояние в пикселях от правого края сетки до правого края родительского контейнера.

  • top -- расстояние в пикселях от верхнего края сетки до верхнего края родительского контейнера.

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

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

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

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