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

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

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

Осмотрите существующий СКРИПТ MATLAB

Скрипт MATLAB имеет эти разделы:

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

  2. Объектная конструкция.

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

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

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

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

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

Преобразуйте СКРИПТ MATLAB в сменный класс

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

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

1. Создайте скелет аудио сменного класса

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

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

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

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

  • Допустимый плагин должен позволить входу методу 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. Моделируйте его с помощью Audio Test Bench.

  4. Сгенерируйте использует generateAudioPlugin.

Похожие темы