Этот пример показывает аудио плагин, спроектированный, чтобы переключить подачу звука в режиме реального времени.
Фигура ниже иллюстрирует алгоритм сдвига подачи.
Алгоритм основан на плавном микшировании между двумя каналами с изменяющимися во времени задержками и усилениями. Этот метод использует в своих интересах эффект Доплера сдвига подачи, который происходит, когда задержка сигнала увеличена или уменьшена.
Фигура ниже иллюстрирует изменение задержек канала и усилений для восходящего сценария сдвига подачи: задержка канала 1 уменьшение по фиксированной процентной ставке от ее максимального значения (в этом примере, 30 мс). Поскольку усиление канала 2 первоначально равно нулю, это не способствует выходу. Как задержка канала 1 нуль подходов, задержка канала 2 начинает уменьшаться по сравнению с 30 мс. В этой области плавного микширования усиления двух каналов настроены, чтобы сохранить уровень выходной мощности. Канал 1 полностью постепенно исчезается к тому времени, когда его задержка достигает нуля. Процесс затем повторяется, идя назад и вперед между двумя каналами.
Для нисходящего эффекта подачи задержки увеличены от нуля до максимального значения.
Желаемой выходной подачей можно управлять путем варьирования скорости изменения задержек канала. Плавное микширование уменьшает слышимые незначительные сбои, которые происходят во время перехода между каналами. Однако, если плавное микширование происходит за слишком долго время, повторения, существующие в области перекрытия, могут создать побочные эффекты модуляции и гребенчатой фильтрации.
audiopluginexample. PitchShifter является аудио объектом плагина, который реализует основанный на задержке алгоритм сдвига подачи. Сменные параметры являются сдвигом подачи (полутонами), и выгорающий фактор (который управляет перекрытием между двумя ветвями задержки). Можно включить объект в симуляцию MATLAB или использовать его, чтобы сгенерировать аудио плагин с помощью generateAudioPlugin
.
В дополнение к выходному звуковому сигналу объект возвращает два дополнительных выходных параметра, соответствуя задержкам и усилениям двух каналов, соответственно.
Можно открыть испытательный стенд для audiopluginexample.PitchShifter
при помощи Audio Test Bench. Испытательный стенд обеспечивает пользовательский интерфейс (UI), чтобы помочь вам протестировать свой аудио плагин в MATLAB. Можно настроить сменные параметры, когда испытательный стенд выполняется. Можно также открыть dsp.TimeScope
и dsp.SpectrumAnalyzer
просмотреть и сравнить сигналы ввода и вывода во временном и частотном диапазоне, соответственно.
Можно также использовать audiopluginexample.PitchShifter
в MATLAB так же, как вы использовали бы любой другой объект MATLAB. Можно использовать configureMIDI
команда, чтобы позволить настроить объект через MIDI-устройство. Это особенно полезно, если объект является частью потоковой передачи симуляция MATLAB, где командное окно не свободно.
runPitchShift
простая функция, которая может использоваться, чтобы выполнить подачу, переключающую как часть большей симуляции MATLAB. Функция инстанцирует audiopluginexample.PitchShifter
плагин и использование setSampleRate
метод, чтобы установить его частоту дискретизации на входной параметр Fs
. Параметр плагина настраивается путем устанавливания их значений к подаче входных параметров и перекрытию, соответственно. Обратите внимание на то, что также возможно сгенерировать файл MEX от этой функции с помощью codegen команды. Производительность улучшается в этом режиме, не ставя под угрозу способность к настройкам параметров.
audioPitchShifterExampleApp
реализует приложение сдвига подачи в реальном времени.
Выполните audioPitchShifterExampleApp
открыть приложение. В дополнение к проигрыванию переключенного подачей выходного аудио приложение строит изменяющиеся во времени задержки канала и усиления, а также сигналы ввода и вывода.
audioPitchShifterExampleApp
открывает пользовательский интерфейс, спроектированный, чтобы взаимодействовать с симуляцией. Пользовательский интерфейс позволяет вам настраивать параметры алгоритма сдвига подачи, и результаты отражаются в симуляции немедленно. Графики отражают ваши изменения, когда вы настраиваете эти параметры. Для получения дополнительной информации о пользовательском интерфейсе вызовите help HelperCreateParamTuningUI
.
audioPitchShifterExampleApp
переносит HelperPitchShifterSim
и итеративно вызовы это. HelperPitchShifterSim
инстанцирует, инициализирует и продвигается через объекты, формирующие алгоритм.
MATLAB Coder может использоваться, чтобы сгенерировать код С для HelperPitchShifterSim
. Для того, чтобы сгенерировать файл MEX для вашей платформы, выполните HelperPitchShifterCodeGeneration
от папки с полномочиями записи.
Путем вызова audioPitchShifterExampleApp
с 'true'
в качестве аргумента, сгенерированный файл MEX HelperPitchShifterSimMEX
может использоваться вместо HelperPitchShifterSim
для симуляции. В этом сценарии пользовательский интерфейс все еще запускается в среде MATLAB, но основной алгоритм обработки выполняется файлом MEX. Производительность улучшается в этом режиме, не ставя под угрозу способность к настройкам параметров.
Вызовите audioPitchShifterExampleApp
с 'true'
в качестве аргумента, чтобы использовать файл MEX для симуляции. Снова, запуски симуляции, пока пользователь явным образом не останавливает его от пользовательского интерфейса.
[1] 'Используя несколько процессоров для звуковых эффектов в реальном времени', Bogdanowicz, K.; платок, R; AES - май 1989.
[2] 'Детальный анализ временного интервала откорректированный формантой переключающий подачу алгоритм', Бристоу-Джонсон, R.; AES - октябрь 1993.