Аудио плагин является предложенной парадигмой для разработки вашего алгоритма обработки аудиоданных в Audio Toolbox™. После того, как спроектированный, аудио плагин может быть подтвержден, сгенерирован и развернут на сторонней цифровой звуковой рабочей станции (DAW).
Дополнительные выгоды разработки вашей обработки аудиоданных как аудио плагин включают:
Быстрое прототипирование с помощью Audio Test Bench
Интеграция с MIDI-устройствами
Повторное использование кода
Некоторое понимание объектно-ориентированного программирования (OOP) в среде MATLAB® требуется, чтобы оптимизировать ваше использование аудио сменной парадигмы. Если вы незнакомы с этими концепциями, смотрите Почему Использование Объектно-ориентированный Проект.
Для анализа аудио плагинов, как задано вне среды MATLAB, смотрите то, Что ГАЛКИ, Аудио Плагины и MIDI-контроллеры?
В среде 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.
Задайте Основной Сменный Класс. Начните с простого плагина, который копирует вход, чтобы вывести без модификации.
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
метод.
Можно сопоставить основной плагин с плагином Системного объекта. Отметьте различия между двумя сменными типами:
Плагин Системного объекта наследовал от обоих audioPlugin
базовый класс и matlab.System
базовый класс, не только audioPlugin
базовый класс.
Первичный метод обработки аудиоданных плагина Системного объекта называют stepImpl
, не process
.
Метод сброса Системного объекта называют resetImpl
, не reset
.
Оба resetImpl
и stepImpl
должен быть задан как защищенные методы.
Системные объекты включают альтернативы set
метод. Для получения дополнительной информации смотрите processTunedPropertiesImpl
.
В среде MATLAB аудио плагин относится к классу, выведенному из audioPlugin
базовый класс или audioPluginSource
базовый класс. Аудио плагины могут также наследоваться matlab.System
. Любой объект, который выводит из matlab.System
упоминается как Системный объект. Получение из matlab.System
допускает дополнительную функциональность, включая интегрирование Simulink. Однако управление Системными объектами требует более усовершенствованного понимания OOP в среде MATLAB.