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