Разработайте аудио плагин

Роль аудио плагинов в Audio Toolbox

Аудио плагин является предложенной парадигмой для разработки вашего алгоритма обработки аудиоданных в Audio Toolbox™. После того, как разработанный, аудио плагин может быть подтвержден, сгенерирован и развернут на сторонней цифровой звуковой рабочей станции (DAW).

Дополнительные выгоды разработки вашей обработки аудиоданных как аудио плагин включают:

  • Быстрое прототипирование с помощью Audio Test Bench

  • Интеграция с MIDI-устройствами

  • Повторное использование кода

Некоторое понимание объектно-ориентированного программирования (OOP) в среде MATLAB® требуется, чтобы оптимизировать ваше использование аудио сменной парадигмы. Если вы незнакомы с этими концепциями, смотрите Почему Использование Объектно-ориентированный Проект (MATLAB).

Для анализа аудио плагинов, как задано вне среды MATLAB, смотрите то, Что ГАЛКИ, Аудио Плагины и MIDI-контроллеры?

Определение аудио плагинов в среде MATLAB

В среде MATLAB аудио плагин относится к классу, выведенному от базового класса audioPlugin или базового класса audioPluginSource.

Документация Audio Toolbox использует следующую терминологию:

  • plugin является любым аудио плагином, который выводит от класса audioPlugin или класса audioPluginSource.

  • basic plugin является аудио плагином, который выводит от класса audioPlugin.

  • basic source plugin является аудио плагином, который выводит от класса audioPluginSource.

Аудио плагины могут также наследоваться matlab.System. Любой объект, который выводит от matlab.System, упоминается как Система object™. Получение от matlab.System допускает дополнительную функциональность, включая интегрирование Simulink®. Однако управление Системными объектами требует более усовершенствованного понимания OOP в среде MATLAB.

Смотрите Audio Toolbox Расширенная Терминология для подробной визуализации наследования и терминология.

Разработайте основной плагин

В этом примере вы создаете простой плагин, и затем постепенно увеличиваете сложность. Ваш итоговый плагин использует кольцевой буфер, чтобы добавить эффект эха во входной звуковой сигнал. Для дополнительных факторов для генерации плагина смотрите Экспорт Плагин MATLAB к DAW.

  1. Задайте Основной Сменный Класс.  Начните с простого плагина, который копирует вход, чтобы вывести без модификации.

    classdef myEchoPlugin < audioPlugin
        methods
            function out = process(~, in)
                out = in;
            end
        end
    end

    myEchoPlugin иллюстрирует эти два минимальных требования для аудио сменных классов. Они должны:

    • Наследуйтесь классу audioPlugin

    • Имейте метод process

    Метод process содержит первичный основанный на кадре алгоритм обработки аудиоданных. Это называется в цикле аудиопотока, чтобы обрабатывать звуковой сигнал в зависимости от времени.

    По умолчанию у обоих вход к и выведенный из метода process есть два канала (столбцы). Количество входных строк (формат кадра), переданный process, определяется средой, в которой это запущено. Вывод должен иметь одинаковое число строк как вход.

  2. Добавьте Сменное Свойство.  Свойство может хранить информацию в объекте. Добавьте свойство, Gain, к вашему определению класса. Измените свой метод process, чтобы умножить вход на значение, заданное свойством Gain.

     Просмотрите код

    Первый аргумент метода process изменился от ~ до plugin. Первый аргумент process резервируется для аудио сменного объекта. Если переменная задана в качестве первого аргумента process, то все свойства myEchoPlugin доступны в методе process.

  3. Добавьте Сменный Параметр.  Сменные параметры являются интерфейсом между сменными свойствами и сменным пользователем. Определение этого интерфейса обработано audioPluginInterface, который содержит объекты audioPluginParameter. Чтобы сопоставить сменное свойство к параметру, задайте первый аргумент audioPluginParameter как вектор символов, вводимый точно как свойство, которое вы хотите сопоставить. Остающиеся аргументы audioPluginParameter задают дополнительные дополнительные атрибуты параметра.

    В этом примере вы задаете отображение между значением параметра и его связанным свойством, а также именем отображения параметра, как это появляется на сменном диалоговом окне. Путем определения 'Mapping' как {'lin',0,3} вы устанавливаете линейное отображение между свойством Gain и связанным стоящим с пользователем параметром с допустимой областью значений для свойства между 0 и 3.

     Просмотрите код

  4. Добавьте Частные свойства.  Добавьте свойства сохранить кольцевой буфер, буферный индекс и N-демонстрационную задержку вашего эха. Поскольку сменный пользователь не должен видеть их, сделайте CircularBuffer, BufferIndex и частные свойства NSamples. Это - лучшая практика инициализировать свойства к их типу и размеру.

     Просмотрите код

  5. Добавьте Эхо.  В методе process запишите в и читайте из своего кольцевого буфера, чтобы создать вывод, который состоит из вашего входа и настроенного усилением эха. Первая строка метода process инициализирует вывод к размеру входа. Это - лучшая практика инициализировать ваш вывод, чтобы избежать ошибок при генерации плагинов.

     Просмотрите код

  6. Сделайте Задержку Эха Настраиваемой.  Чтобы позволить пользователю изменять задержку NSamples эха, задайте общественную собственность, Delay, и сопоставьте его с параметром. Используйте отображение audioPluginParameter по умолчанию, чтобы позволить пользователю устанавливать задержку эха между 0 и 1 секундой.

    Добавьте метод set, который прислушивается к изменениям в свойстве Delay. Используйте метод getSampleRate базового класса audioPlugin, чтобы возвратить частоту дискретизации среды. Аппроксимируйте задержку, заданную в секундах как много выборок, NSamples. Если сменный пользователь изменяет свойство Delay, set.Delay называется, и задержка выборок (NSamples) вычисляется. Если частота дискретизации среды выше 192 000 Гц, плагин не выполняет как ожидалось.

     Просмотрите код

  7. Добавьте Функцию Сброса.  Метод reset плагина содержит инструкции сбросить плагин между использованием или когда частота дискретизации среды изменяется. Поскольку NSamples зависит от частоты дискретизации среды, обновите ее значение в методе reset.

     Просмотрите код

Разработайте плагин системного объекта

Можно сопоставить основной плагин с плагином Системного объекта. Отметьте различия между двумя сменными типами:

  • Плагин Системного объекта наследовался и базовому классу audioPlugin и базовому классу matlab.System, не только базовому классу audioPlugin.

  • Первичный метод обработки аудиоданных плагина Системного объекта называют stepImpl, не process.

  • Метод сброса Системного объекта называют resetImpl, не reset.

  • И resetImpl и stepImpl должны быть заданы как защищенные методы.

  • Системные объекты включают альтернативы методу set. Для получения дополнительной информации смотрите processTunedPropertiesImpl.

 Плагин системного объекта

Быстрый запуск основной плагин

 Шаблон

 Аннотируемый пример

Быстрый запуск основной исходный плагин

 Шаблон

 Аннотируемый пример

Плагин системного объекта быстрого запуска

 Шаблон

 Аннотируемый пример

Исходный плагин системного объекта быстрого запуска

 Шаблон

 Аннотируемый пример

Audio Toolbox расширенная терминология

В среде MATLAB аудио плагин относится к классу, выведенному от базового класса audioPlugin или базового класса audioPluginSource. Аудио плагины могут также наследоваться matlab.System. Любой объект, который выводит от matlab.System, упоминается как Системный объект. Получение от matlab.System допускает дополнительную функциональность, включая интегрирование Simulink. Однако управление Системными объектами требует более усовершенствованного понимания OOP в среде MATLAB.

Похожие темы