Audio Toolbox™ поддерживает несколько подходов к разработке алгоритмов обработки аудио. Два распространенных подхода включают процедурное программирование с использованием MATLAB® скрипты и объектно-ориентированное программирование с использованием классов MATLAB. Класс audio plugin является предлагаемой парадигмой для разработки алгоритма обработки аудио в Audio Toolbox. Руководство по структуре, преимуществам и использованию аудиоплагинов см. в Audio Plugins в MATLAB.
В этом руководстве представлен существующий алгоритм, разработанный как скрипт MATLAB, а затем пройденный по шагам, чтобы преобразовать скрипт в класс аудиоплагина. Используйте это руководство, чтобы понять связь между процедурным программированием и объектно-ориентированным программированием. Вы также можете использовать это руководство в качестве шаблона для преобразования любой обработки звука, которую вы разработали в качестве скриптов MATLAB, в парадигму аудиоплагина.
Скрипт MATLAB имеет следующие разделы:
Инициализация переменной. Переменные инициализируются с известными значениями, включая количество выборок на систему координат (frameSize
) для обработки потока на основе фрейма.
Конструкция объектов.
Два audioOscillator
Системные объекты -- Конструируйте, чтобы создать изменяющиеся во времени сигналы управления усилением.
dsp.AudioFileReader
Системный объект -- Создайте, чтобы считать аудиосигнал из файла.
audioDeviceWriter
Системный объект -- Конструкция записать аудиосигнал в ваше аудио устройство по умолчанию.
Цикл аудиопотока. Смешивает стереофонические каналы в моно сигнал. Моно-сигнал используется для создания нового стереосигнала. Каждый канал нового стереосигнала колеблется при приложенном усилении между 0 и 2 с соответствующим 90-градусным сдвигом фазы.
Это руководство преобразует скрипт MATLAB в класс аудиоплагина за шесть шагов. Вы начинаете с создания скелета базового класса аудиоплагина, а затем сопоставляете разделы скрипта MATLAB с классом аудиоплагина.
Обзор преобразования скрипта MATLAB в класс плагина см. в скрипте для визуального отображения плагина. Чтобы выполнить это преобразование, пройдите по примеру для объяснений и пошаговых инструкций.
Начнем с базового скелета класса аудиоплагина. Этот скелет является не минимальным необходимым, а общим минимумом для создания интересного аудиоплагина. Минимальные требования к созданию базового аудиоплагина см. в Audio Plugins в MATLAB.
Свойства позволяют плагину хранить информацию между разделами определения класса плагина. Если свойство имеет доступ к частному, свойство не доступно конечному пользователю плагина. Инициализация переменной в скрипте преобразуется в свойства плагина.
Допустимый плагин должен разрешать вход в process
метод, чтобы иметь переменный формат кадра. Формат кадра определяется для каждого входного кадра в process
СПОСОБ ПЛАГИНА. Потому что формат кадра используется только в process
метод, вы не объявляете его в разделе свойств.
Допустимый аудиоплагин должен разрешать вход в process
метод, чтобы иметь переменную частоту дискретизации. The reset
метод плагина вызывается, когда окружение изменяет частоту дискретизации. Определите частоту дискретизации в reset
метод с использованием getSampleRate
метод, унаследованный от audioPlugin
базовый класс.
Объекты, используемые плагином, должны быть объявлены как свойства, которые будут использоваться в нескольких разделах плагина. Однако метод конструктора плагина выполняет конструкцию объекта.
Добавьте метод конструктора в раздел методов вашего аудиоплагина. Метод конструктора плагина имеет форму:
function plugin = myPluginClassName % Instructions to construct plugin object. end
В этом примере вы создаете Sine
и Cosine
объекты в методе конструктора плагина.
The reset
метод плагина вызывается каждый раз, когда начинается новый сеанс с плагином или когда окружение изменяет частоту дискретизации. Используйте reset
метод для обновления SampleRate
свойство вашего Sine
и Cosine
объекты. Чтобы запросить частоту дискретизации, используйте getSampleRate
метод базового класса.
Содержимое цикла аудиопотока в скрипте преобразуется в process
метод аудиоплагина с этими различиями:
Допустимый аудиоплагин должен принимать переменный формат кадра, поэтому формат кадра вычисляется для каждого вызова process
способ. Поскольку формат кадра является переменным, любая обработка, которая полагается на формат кадра, должна обновляться при изменении размера входного кадра.
Среда обрабатывает вход и вывод в process
способ.
Интерфейс плагина позволяет пользователям просматривать плагин и настраивать его свойства. Задайте PluginInterface
как audioPluginInterface
объект, который содержит audioPluginParameter
объект. Первый аргумент audioPluginParameter
- свойство, которое необходимо синхронизировать с настраиваемым параметром. Выберите имя отображения, пометьте модули и установите область значений параметра. Этот пример использует от 0,1 до 10 в качестве разумной области значений для Frequency
свойство. Напишите код так, чтобы во время каждого вызова в process
метод, ваша Sine
и Cosine
объекты обновляются текущим значением частоты.
После завершения определения класса аудиоплагина:
Сохраните файл определения класса плагина.
Проверьте плагин используя validateAudioPlugin
.
Прототип его с помощью Audio Test Bench.
Generate использует generateAudioPlugin
.