Аудиоплагины в MATLAB

Роль аудиоплагинов в Audio Toolbox

Аудиоплагин является предлагаемой парадигмой для разработки алгоритма обработки аудио в Audio Toolbox™. После разработки аудиоплагин может быть проверен, сгенерирован и развернут на сторонней цифровой звуковой рабочей станции (DAW).

Дополнительные преимущества разработки обработки аудио как аудиоплагина включают:

  • Быстрое прототипирование с использованием Audio Test Bench

  • Интегрирование с устройствами MIDI

  • Повторное использование кода

Некоторое понимание объектно-ориентированного программирования (OOP) в MATLAB® требуется среда для оптимизации использования парадигмы аудиоплагина. Если вы не знакомы с этими понятиями, см. «Зачем использовать объектно-ориентированный проект».

Обзор аудиоплагинов, определенных вне окружения MATLAB, см. в разделах Что такое DAW, Audio Plugins и MIDI Controllers?

Определение аудиоплагинов в среде MATLAB

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

Документация Audio Toolbox использует следующую терминологию:

  • A plugin - это любой аудиоплагин, который выводится из audioPlugin класс или audioPluginSource класс.

  • A basic plugin является аудиоплагином, который выводится из audioPlugin класс.

  • A basic source plugin является аудиоплагином, который выводится из audioPluginSource класс.

Аудиоплагины также могут унаследовать от matlab.System. Любой объект, который происходит от matlab.System упоминается как Системная object™. Получение из matlab.System позволяет использовать дополнительные функциональные возможности, включая Simulink® интегрирование. Однако для управления системными объектами требуется более глубокое понимание OOP в среде MATLAB.

Подробную визуализацию наследования и терминологии см. в Audio Toolbox Extended Terminology.

Проектирование базового плагина

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

  1. Задайте базовый класс плагина  . Начните с простого плагина, который копирует вход в вывод без изменений.

    classdef myEchoPlugin < audioPlugin
        methods
            function out = process(~, in)
                out = in;
            end
        end
    end

    myEchoPlugin иллюстрирует два минимальных требования к классам аудиоплагинов. Они должны:

    • Наследование от audioPlugin класс

    • Иметь process метод

    The process метод содержит основной алгоритм обработки аудио на основе фрейма. Он вызывается в цикле аудиопотока для обработки аудиосигнала с течением времени.

    По умолчанию и вход, и вывод из process метод имеет два канала (столбцы). Количество входа строк ( форматов кадра), переданных в process определяется окружение, в которой он запускается. У выход должно быть одинаковое число строк как вход.

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

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

    Первый аргумент process метод изменился с ~ на plugin. Первый аргумент process зарезервирован для объекта аудиоплагина.

  3. Добавьте параметр плагина.  Параметрами плагина являются интерфейс между свойствами плагина и пользователем плагина. Определение этого интерфейса обрабатывается audioPluginInterface, который содержит audioPluginParameter объекты. Чтобы связать свойство плагина с параметром, задайте первый аргумент audioPluginParameter как вектор символов, введенный точно как свойство, которое вы хотите связать. Оставшиеся аргументы audioPluginParameter задайте необязательные дополнительные атрибуты параметров.

    В этом примере вы задаете отображение между значением параметра и его связанным свойством, а также отображаемым именем параметра, которое оно появляется в диалоговом окне плагина. Путем определения 'Mapping' как {'lin',0,3}, вы устанавливаете линейное отображение между Gain свойство и связанный пользовательский параметр с допустимой областью значений значений свойства от 0 до 3.

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

  4. Добавление частной собственности.  Добавьте свойства для хранения циклического буфера, буферного индекса и задержки N-образца вашего эха. Поскольку пользователь плагина не должен их видеть, сделайте CircularBuffer, BufferIndex, и NSamples частная собственность. Лучшая практика инициализировать свойства по их типу и размеру.

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

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

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

  6. Сделайте эхо-задержку настраиваемой.  Чтобы разрешить пользователю изменять NSamples задержка эха, задайте общественную собственность, Delay, и связать его с параметром. Используйте значение по умолчанию audioPluginParameter mapping, чтобы позволить пользователю установить задержку эхо-сигнала в диапазоне от 0 до 1 секунды.

    Добавление set метод, который слушает изменения в Delay свойство. Используйте getSampleRate метод audioPlugin базовый класс, чтобы вернуть частоту выборки окружения. Аппроксимируйте задержку, заданную в секундах, как количество выборок, NSamples. Если пользователь плагина изменяет Delay свойство, set.Delay вызывается и задержка в выборках (NSamples) вычисляется. Если частота выборки окружения превышает 192 000 Гц, плагин работает не так, как ожидалось.

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

  7. Добавьте функцию сброса.  The reset метод плагина содержит инструкции для сброса плагина между использованием или когда изменяется частота выборки окружения. Потому что NSamples зависит от частоты выборки окружения, обновляет ее значение в reset способ.

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

Проектирование плагина системного объекта

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

  • Плагин Системного объекта наследует от обоих audioPlugin базовый класс и matlab.System базовый класс, а не только audioPlugin базовый класс.

  • Основной метод обработки звука плагина системного объекта назван stepImpl, не process.

  • Метод сброса системного объекта называется resetImpl, не reset.

  • Оба resetImpl и stepImpl должен быть определен как защищенные методы.

  • Системные объекты включают альтернативы set способ. Для получения дополнительной информации смотрите processTunedPropertiesImpl.

 Плагин системного объекта

Быстрый запуск базового плагина

 Шаблон

 Аннотированный пример

Быстрый запуск базового исходного плагина

 Шаблон

 Аннотированный пример

Системный объект Quick Start

 Шаблон

 Аннотированный пример

Плагин Quick Start Системного объекта Source

 Шаблон

 Аннотированный пример

Расширенная терминология Audio Toolbox

В среде MATLAB аудиоплагин ссылается на класс, полученный из audioPlugin базовый класс или audioPluginSource базовый класс. Аудиоплагины также могут унаследовать от matlab.System. Любой объект, который происходит от matlab.System упоминается как системный объект. Получение из matlab.System позволяет использовать дополнительные функциональные возможности, включая интегрирование с Simulink. Однако для управления системными объектами требуется более глубокое понимание OOP в среде MATLAB.

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте