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

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

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

Дополнительные выгоды разработки вашей обработки аудиоданных как аудио плагин включают:

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

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

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

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

Для анализа аудио плагинов, как задано вне среды MATLAB, смотрите то, Что ГАЛКИ, Аудио Плагины и MIDI-контроллеры?

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

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

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

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

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

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

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

Смотрите Audio Toolbox Расширенная Терминология для подробной визуализации наследования и терминология.

Спроектируйте основной плагин

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

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

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

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

    • Наследуйтесь audioPlugin класс

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

    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 по умолчанию отображение, чтобы позволить пользователю устанавливать задержку эха между 0 и 1 секундой.

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

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

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

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

Спроектируйте плагин системного объекта

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

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

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

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

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

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

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

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

 Шаблон

 Аннотируемый пример

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

 Шаблон

 Аннотируемый пример

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

 Шаблон

 Аннотируемый пример

Исходный плагин системного объекта быстрого запуска

 Шаблон

 Аннотируемый пример

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

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

Похожие темы