Аудио плагин является предложенной парадигмой для разработки вашего алгоритма обработки аудиоданных в Audio Toolbox™. После того, как разработанный, аудио плагин может быть подтвержден, сгенерирован и развернут на сторонней цифровой звуковой рабочей станции (DAW).
Дополнительные выгоды разработки вашей обработки аудиоданных как аудио плагин включают:
Быстрое прототипирование с помощью Audio Test Bench
Интеграция с MIDI-устройствами
Повторное использование кода
Некоторое понимание объектно-ориентированного программирования (OOP) в среде MATLAB® требуется, чтобы оптимизировать ваше использование аудио сменной парадигмы. Если вы незнакомы с этими концепциями, смотрите Почему Использование Объектно-ориентированный Проект (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
резервируется для аудио сменного объекта. Если переменная задана в качестве первого аргумента process
, то все свойства myEchoPlugin
доступны в методе 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.