Аудиоплагин представляет собой предложенную парадигму для разработки алгоритма обработки звука в Audio Toolbox™. После разработки аудиоплагин может быть проверен, сгенерирован и развернут на сторонней цифровой звуковой рабочей станции (DAW).
Дополнительные преимущества разработки аудиообработки как аудиоплагина:
Быстрое создание прототипов с использованием аудиотеста
Интеграция с устройствами MIDI
Повторное использование кода
Для оптимизации использования парадигмы аудиоплагина требуется некоторое понимание объектно-ориентированного программирования (ООП) в среде MATLAB ®. Если вы не знакомы с этими понятиями, см. раздел Зачем использовать объектно-ориентированное проектирование.
Обзор аудиоплагинов, определенных вне среды MATLAB, см. в разделе Что такое DAWs, аудиоплагины и MIDI-контроллеры?
В среде MATLAB аудиоплагин относится к классу, производному от audioPlugin базовый класс или audioPluginSource базовый класс.

В документации по Audio Toolbox используется следующая терминология:
Плагин - это любой аудиоплагин, производный от audioPlugin класс или audioPluginSource класс.
Базовый плагин - это аудиоплагин, который происходит от audioPlugin класс.
Базовый исходный плагин - это аудиоплагин, который происходит от audioPluginSource класс.
Аудиоплагины также могут наследовать от matlab.System. Любой объект, производный от matlab.System называется системным object™. Получение из matlab.System обеспечивает дополнительные функциональные возможности, включая интеграцию Simulink ®. Однако для управления системными объектами требуется более глубокое понимание ООП в среде MATLAB.
Подробную визуализацию наследования и терминологии см. в разделе Расширенная терминология Audio Toolbox.
В этом примере создается простой плагин, а затем постепенно увеличивается сложность. Ваш последний плагин использует круговой буфер, чтобы добавить эхо-эффект к входному звуковому сигналу. Дополнительные сведения о создании подключаемого модуля см. в разделе Экспорт подключаемого модуля MATLAB в DAW.
Определите базовый класс подключаемого модуля . Начните с простого подключаемого модуля, который копирует входные данные в выходные данные без изменений.
classdef myEchoPlugin < audioPlugin methods function out = process(~, in) out = in; end end end
myEchoPlugin иллюстрирует два минимальных требования к классам аудиоплагинов. Они должны:
Наследовать от audioPlugin класс
Иметь process метод
process способ содержит алгоритм обработки звука на основе первичного кадра. Он вызывается в цикле аудиопотока для обработки аудиосигнала во времени.
По умолчанию как входные, так и выходные данные process способ имеет два канала (столбца). Количество входных строк (размер кадра), переданных process определяется средой, в которой она выполняется. Выходные данные должны иметь то же количество строк, что и входные данные.
Добавление свойства подключаемого модуля. Свойство может хранить информацию в объекте. Добавление свойства, Gain, к определению вашего класса. Изменение process для умножения входного значения на значение, указанное Gain собственность.
Первый аргумент process метод изменен с ~ кому plugin. Первый аргумент process зарезервирован для объекта аудиоплагина.
Добавление параметра подключаемого модуля. Параметры плагина - это интерфейс между свойствами плагина и пользователем плагина. Определение этого интерфейса обрабатывается audioPluginInterface, который держит audioPluginParameter объекты. Чтобы связать свойство плагина с параметром, укажите первый аргумент audioPluginParameter в виде вектора символов, введенного точно так же, как свойство, которое требуется связать. Остальные аргументы audioPluginParameter укажите дополнительные атрибуты параметров.
В этом примере указывается соответствие между значением параметра и связанным с ним свойством, а также отображаемое имя параметра, отображаемое в диалоговом окне подключаемого модуля. Путем указания 'Mapping' как {'lin',0,3}, вы устанавливаете линейное отображение между Gain свойство и связанный с ним пользовательский параметр с допустимым диапазоном для свойства от 0 до 3.
Добавить частные свойства. Добавьте свойства для хранения циклического буфера, индекса буфера и задержки N-выборки эха. Потому что плагин пользователь не должен видеть их, сделать CircularBuffer, BufferIndex, и NSamples частные свойства. Рекомендуется инициализировать свойства в соответствии с их типом и размером.
Добавление эхо-сигнала. В process для создания выходного сигнала, состоящего из входного сигнала и эхо-сигнала с поправкой на коэффициент усиления. Первая строка process метод инициализирует выходной сигнал в соответствии с размером входного сигнала. Рекомендуется инициализировать выходные данные, чтобы избежать ошибок при создании подключаемых модулей.
Выполните настройку задержки эхо-сигнала. Разрешение пользователю изменять NSamples задержка эха, определение публичной собственности, Delayи связать его с параметром. Использовать значение по умолчанию audioPluginParameter отображение, позволяющее пользователю установить задержку эхо-сигнала между 0 и 1 секундами.
Добавить set метод, который прослушивает изменения в Delay собственность. Используйте getSampleRate способ audioPlugin базовый класс для возврата частоты дискретизации среды. Аппроксимировать задержку, указанную в секундах, как число выборок, NSamples. Если пользователь плагина изменяет Delay собственность, set.Delay вызывается и задержка в выборках (NSamples) рассчитывается. Если частота дискретизации среды превышает 192 000 Гц, подключаемый модуль работает не так, как ожидалось.
Добавление функции сброса. reset метод плагина содержит инструкции по сбросу плагина между использованием или при изменении частоты выборки среды. Поскольку NSamples зависит от частоты выборки среды, обновите ее значение в reset способ.
Можно сопоставить базовый плагин с плагином объекта System. Обратите внимание на различия между двумя типами плагинов:
Подключаемый модуль объекта System наследует от обоих audioPlugin базовый класс и matlab.System базовый класс, а не только audioPlugin базовый класс.
Основной метод обработки звука подключаемого модуля объекта System имеет имя stepImpl, не process.
Метод сброса объекта System имеет имя resetImpl, не reset.
Оба resetImpl и stepImpl должны быть определены как защищенные методы.
Системные объекты позволяют использовать альтернативы set способ. Дополнительные сведения см. в разделе processTunedPropertiesImpl.
В среде MATLAB аудиоплагин относится к классу, производному от audioPlugin базовый класс или audioPluginSource базовый класс. Аудиоплагины также могут наследовать от matlab.System. Любой объект, производный от matlab.System называется системным объектом. Получение из matlab.System обеспечивает дополнительные функциональные возможности, включая интеграцию Simulink. Однако для управления системными объектами требуется более глубокое понимание ООП в среде MATLAB.
