Основанный на задержке сдвигатель тангажа

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

Алгоритм

Рисунок ниже иллюстрирует алгоритм перемены тангажа.

Алгоритм основан на перекрестном замирании между двумя каналами с изменяющимися во времени задержками и усилениями. Этот способ использует преимущество эффекта Допплера сдвига основного тона, который возникает, когда задержка сигнала увеличивается или уменьшается.

Рисунок ниже иллюстрирует изменение задержек и усилений канала для сценария сдвига вверх по тангажу: Задержка канала 1 уменьшается с фиксированной скоростью от его максимального значения (в этом примере, 30 мс). Поскольку коэффициент усиления канала 2 первоначально равен нулю, он не способствует выходу. Когда задержка канала 1 приближается к нулю, задержка канала 2 начинает уменьшаться с 30 мс. В этой поперечной области с замираниями усиления двух каналов корректируются, чтобы сохранить уровень выхода степени. Канал 1 полностью затухает к моменту, когда его задержка достигает нуля. Затем процесс повторяется, перемещаясь назад и вперед между двумя каналами.

Для эффекта нисходящего тангажа задержки увеличиваются с нуля до максимального значения.

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

Тангаж Pitch Shifter

audiopluginexample.PitchShifter является объектом аудиоплагина, который реализует основанный на задержке алгоритм перемены тангажа. Параметрами плагина являются сдвиг тангажа (в полутонах) и коэффициент перекрестного замирания (который управляет перекрытием между двумя ветвями задержки). Можно включить объект в симуляцию MATLAB или использовать его, чтобы сгенерировать аудиоплагин с помощью generateAudioPlugin.

В дополнение к выходному аудиосигналу объект возвращает два дополнительных выхода, соответствующих задержкам и усилениям двух каналов, соответственно.

Можно открыть испытательный стенд для audiopluginexample.PitchShifter при помощи Audio Test Bench. Испытательный стенд предоставляет пользовательский интерфейс (UI), который поможет вам протестировать аудиоплагин в MATLAB. Вы можете настроить параметры плагина, когда испытательный стенд выполняет. Можно также открыть dsp.TimeScope и a dsp.SpectrumAnalyzer для просмотра и сравнения входа и выходных сигналов во времени и частотных диапазонах, соответственно.

Можно также использовать audiopluginexample.PitchShifter в MATLAB так же, как вы бы использовали любой другой объект MATLAB. Можно использовать configureMIDI команда для активизации настройки объекта через устройство MIDI. Это особенно полезно, если объект является частью потоковой симуляции MATLAB, где командное окно не свободно.

runPitchShift является простой функцией, которая может использоваться для выполнения смещения тангажа как часть большей симуляции MATLAB. Функция создает экземпляр audiopluginexample.PitchShifter плагин, и использует setSampleRate метод для установки его частоты дискретизации на входной параметр Fs. Параметры плагина настраиваются путем установки их значений на тангаж входных параметров и перекрытие, соответственно. Обратите внимание, что также возможно сгенерировать файл MEX из этой функции с помощью команды codegen. Эффективность повышается в этом режиме без ущерба для возможности настройки параметров.

Симуляция MATLAB

audioPitchShifterExampleApp реализует приложение для перемены тангажа в реальном времени.

Выполните audioPitchShifterExampleApp чтобы открыть приложение. В дополнение к игре выходного аудио со сдвигом основного тона, приложение строит графики изменяющихся во времени задержек и усилений канала, а также входных и выходных сигналов.

audioPitchShifterExampleApp открывает пользовательский интерфейс, предназначенный для взаимодействия с симуляцией. UI позволяет вам настраивать параметры алгоритма перемены тангажа, а результаты отражаются в симуляции мгновенно. Графики отражают ваши изменения, когда вы настраиваете эти параметры. Для получения дополнительной информации об пользовательском интерфейсе позвоните help HelperCreateParamTuningUI.

audioPitchShifterExampleApp оборачивается вокруг HelperPitchShifterSim и итеративно вызывает его. HelperPitchShifterSim создает экземпляры, инициализирует и выполняет шаги через объекты, формирующие алгоритм.

MATLAB Coder может использоваться, чтобы сгенерировать код С для HelperPitchShifterSim. В порядок, чтобы сгенерировать Файл MEX для вашей платформы, выполните HelperPitchShifterCodeGeneration из папки с разрешениями на запись.

По вызову audioPitchShifterExampleApp с 'true' в качестве аргумента сгенерированный файл MEX HelperPitchShifterSimMEX может использоваться вместо HelperPitchShifterSim для симуляции. В этом сценарии UI все еще работает в среде MATLAB, но основной алгоритм обработки выполняется файлом MEX. Эффективность повышается в этом режиме без ущерба для возможности настройки параметров.

Функции audioPitchShifterExampleApp с 'true' в качестве аргумента для использования файла MEX для симуляции. Снова симуляция запускается до тех пор, пока пользователь явно не остановит ее из пользовательского интерфейса.

Ссылки

[1] 'Использование нескольких процессоров для аудио Эффектов в реальном времени, Богданович, К.; Belcher, R; AES - май 1989.

[2] 'A Детального анализа алгоритма сдвига основного тона, скорректированного во временной области', Bristow-Johnson, R.; AES - октябрь 1993.