Преобразуйте код 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. Сопоставьте инициализацию переменной скрипта со сменными свойствами

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

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

Похожие темы