Аудиоплагин является предлагаемой парадигмой для разработки алгоритма обработки аудио в 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.