exponenta event banner

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

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

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

Проверка существующего сценария MATLAB

Сценарий MATLAB содержит следующие разделы:

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

  2. Строительство объекта.

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

    • dsp.AudioFileReader Системный объект -- Конструкция для считывания аудиосигнала из файла.

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

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

 Просмотреть код

Преобразовать сценарий MATLAB в класс подключаемого модуля

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

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

1. Создать каркас класса аудиоплагинов

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

 Просмотреть код

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

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

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

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

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

 Просмотреть код

3. Сопоставление конструкции объекта сценария с методом конструктора подключаемого модуля

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

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

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

 Просмотреть код

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

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. Прототип с использованием аудиотестирования.

  4. Создать использует generateAudioPlugin.

Связанные темы