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

Документация Audio Toolbox использует следующую терминологию:
A plugin - это любой аудиоплагин, который выводится из audioPlugin класс или audioPluginSource класс.
A basic plugin является аудиоплагином, который выводится из audioPlugin класс.
A basic source plugin является аудиоплагином, который выводится из audioPluginSource класс.
Аудиоплагины также могут унаследовать от matlab.System. Любой объект, который происходит от matlab.System упоминается как Системная object™. Получение из matlab.System позволяет использовать дополнительные функциональные возможности, включая Simulink® интегрирование. Однако для управления системными объектами требуется более глубокое понимание OOP в среде MATLAB.
Подробную визуализацию наследования и терминологии см. в Audio Toolbox Extended Terminology.
В этом примере вы создаете простой плагин, а затем постепенно увеличиваете сложность. Ваш последний плагин использует циклический буфер, чтобы добавить эхо- эффект к входу аудиосигналу. Для получения дополнительной информации о генерации плагина смотрите Экспорт плагина MATLAB в DAW.
Задайте базовый класс плагина . Начните с простого плагина, который копирует вход в вывод без изменений.
classdef myEchoPlugin < audioPlugin methods function out = process(~, in) out = in; end end end
myEchoPlugin иллюстрирует два минимальных требования к классам аудиоплагинов. Они должны:
Наследование от audioPlugin класс
Иметь process метод
The 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 mapping, чтобы позволить пользователю установить задержку эхо-сигнала в диапазоне от 0 до 1 секунды.
Добавление set метод, который слушает изменения в Delay свойство. Используйте getSampleRate метод audioPlugin базовый класс, чтобы вернуть частоту выборки окружения. Аппроксимируйте задержку, заданную в секундах, как количество выборок, NSamples. Если пользователь плагина изменяет Delay свойство, set.Delay вызывается и задержка в выборках (NSamples) вычисляется. Если частота выборки окружения превышает 192 000 Гц, плагин работает не так, как ожидалось.
Добавьте функцию сброса. The reset метод плагина содержит инструкции для сброса плагина между использованием или когда изменяется частота выборки окружения. Потому что NSamples зависит от частоты выборки окружения, обновляет ее значение в reset способ.
Вы можете сопоставить базовый плагин с плагином системного объекта. Обратите внимание на различия между двумя типами плагинов:
Плагин Системного объекта наследует от обоих audioPlugin базовый класс и matlab.System базовый класс, а не только audioPlugin базовый класс.
Основной метод обработки звука плагина системного объекта назван stepImpl, не process.
Метод сброса системного объекта называется resetImpl, не reset.
Оба resetImpl и stepImpl должен быть определен как защищенные методы.
Системные объекты включают альтернативы set способ. Для получения дополнительной информации смотрите processTunedPropertiesImpl.
В среде MATLAB аудиоплагин ссылается на класс, полученный из audioPlugin базовый класс или audioPluginSource базовый класс. Аудиоплагины также могут унаследовать от matlab.System. Любой объект, который происходит от matlab.System упоминается как системный объект. Получение из matlab.System позволяет использовать дополнительные функциональные возможности, включая интегрирование с Simulink. Однако для управления системными объектами требуется более глубокое понимание OOP в среде MATLAB.
