Преобразуйте код MATLAB в аудиоплагин

Audio Toolbox™ поддерживает несколько подходов к разработке алгоритмов обработки аудио. Два распространенных подхода включают процедурное программирование с использованием MATLAB® скрипты и объектно-ориентированное программирование с использованием классов MATLAB. Класс audio plugin является предлагаемой парадигмой для разработки алгоритма обработки аудио в Audio Toolbox. Руководство по структуре, преимуществам и использованию аудиоплагинов см. в Audio Plugins в MATLAB.

В этом руководстве представлен существующий алгоритм, разработанный как скрипт MATLAB, а затем пройденный по шагам, чтобы преобразовать скрипт в класс аудиоплагина. Используйте это руководство, чтобы понять связь между процедурным программированием и объектно-ориентированным программированием. Вы также можете использовать это руководство в качестве шаблона для преобразования любой обработки звука, которую вы разработали в качестве скриптов MATLAB, в парадигму аудиоплагина.

Просмотр существующего скрипта MATLAB

Скрипт MATLAB имеет следующие разделы:

  1. Инициализация переменной. Переменные инициализируются с известными значениями, включая количество выборок на систему координат (frameSize) для обработки потока на основе фрейма.

  2. Конструкция объектов.

    • Два audioOscillator Системные объекты -- Конструируйте, чтобы создать изменяющиеся во времени сигналы управления усилением.

    • dsp.AudioFileReader Системный объект -- Создайте, чтобы считать аудиосигнал из файла.

    • audioDeviceWriter Системный объект -- Конструкция записать аудиосигнал в ваше аудио устройство по умолчанию.

  3. Цикл аудиопотока. Смешивает стереофонические каналы в моно сигнал. Моно-сигнал используется для создания нового стереосигнала. Каждый канал нового стереосигнала колеблется при приложенном усилении между 0 и 2 с соответствующим 90-градусным сдвигом фазы.

 Просмотр кода

Преобразуйте скрипт MATLAB в класс плагина

Это руководство преобразует скрипт MATLAB в класс аудиоплагина за шесть шагов. Вы начинаете с создания скелета базового класса аудиоплагина, а затем сопоставляете разделы скрипта MATLAB с классом аудиоплагина.

Обзор преобразования скрипта MATLAB в класс плагина см. в скрипте для визуального отображения плагина. Чтобы выполнить это преобразование, пройдите по примеру для объяснений и пошаговых инструкций.

1. Создайте скелет класса Audio Plugin

Начнем с базового скелета класса аудиоплагина. Этот скелет является не минимальным необходимым, а общим минимумом для создания интересного аудиоплагина. Минимальные требования к созданию базового аудиоплагина см. в Audio Plugins в MATLAB.

 Просмотр кода

2. Сопоставьте инициализацию переменной скрипта с свойствами плагина

Свойства позволяют плагину хранить информацию между разделами определения класса плагина. Если свойство имеет доступ к частному, свойство не доступно конечному пользователю плагина. Инициализация переменной в скрипте преобразуется в свойства плагина.

  • Допустимый плагин должен разрешать вход в process метод, чтобы иметь переменный формат кадра. Формат кадра определяется для каждого входного кадра в process СПОСОБ ПЛАГИНА. Потому что формат кадра используется только в process метод, вы не объявляете его в разделе свойств.

  • Допустимый аудиоплагин должен разрешать вход в process метод, чтобы иметь переменную частоту дискретизации. The reset метод плагина вызывается, когда окружение изменяет частоту дискретизации. Определите частоту дискретизации в reset метод с использованием getSampleRate метод, унаследованный от audioPlugin базовый класс.

  • Объекты, используемые плагином, должны быть объявлены как свойства, которые будут использоваться в нескольких разделах плагина. Однако метод конструктора плагина выполняет конструкцию объекта.

 Просмотр кода

3. Сопоставьте конструкцию объекта скрипта с методом Plugin Constructor

Добавьте метод конструктора в раздел методов вашего аудиоплагина. Метод конструктора плагина имеет форму:

function plugin = myPluginClassName
    % Instructions to construct plugin object.
end
Если ваш плагин использует объекты, создайте их, когда плагин будет построен. Установите нетронутые свойства объектов, используемых плагином во время конструкции.

В этом примере вы создаете Sine и Cosine объекты в методе конструктора плагина.

 Просмотр кода

4. Добавьте метод сброса

The reset метод плагина вызывается каждый раз, когда начинается новый сеанс с плагином или когда окружение изменяет частоту дискретизации. Используйте reset метод для обновления SampleRate свойство вашего Sine и Cosine объекты. Чтобы запросить частоту дискретизации, используйте getSampleRate метод базового класса.

 Просмотр кода

5. Сопоставьте цикл аудиопотока скрипта с методом плагина

Содержимое цикла аудиопотока в скрипте преобразуется в process метод аудиоплагина с этими различиями:

  • Допустимый аудиоплагин должен принимать переменный формат кадра, поэтому формат кадра вычисляется для каждого вызова process способ. Поскольку формат кадра является переменным, любая обработка, которая полагается на формат кадра, должна обновляться при изменении размера входного кадра.

  • Среда обрабатывает вход и вывод в process способ.

 Просмотр кода

6. Добавление интерфейса плагина

Интерфейс плагина позволяет пользователям просматривать плагин и настраивать его свойства. Задайте PluginInterface как audioPluginInterface объект, который содержит audioPluginParameter объект. Первый аргумент audioPluginParameter - свойство, которое необходимо синхронизировать с настраиваемым параметром. Выберите имя отображения, пометьте модули и установите область значений параметра. Этот пример использует от 0,1 до 10 в качестве разумной области значений для Frequency свойство. Напишите код так, чтобы во время каждого вызова в process метод, ваша Sine и Cosine объекты обновляются текущим значением частоты.

 Просмотр кода

После завершения определения класса аудиоплагина:

  1. Сохраните файл определения класса плагина.

  2. Проверьте плагин используя validateAudioPlugin.

  3. Прототип его с помощью Audio Test Bench.

  4. Generate использует generateAudioPlugin.

Похожие темы