В этом примере показан аудиоплагин, предназначенный для сдвига тангажа звука в реальном времени.
Рисунок ниже иллюстрирует алгоритм перемены тангажа.
Алгоритм основан на перекрестном замирании между двумя каналами с изменяющимися во времени задержками и усилениями. Этот способ использует преимущество эффекта Допплера сдвига основного тона, который возникает, когда задержка сигнала увеличивается или уменьшается.
Рисунок ниже иллюстрирует изменение задержек и усилений канала для сценария сдвига вверх по тангажу: Задержка канала 1 уменьшается с фиксированной скоростью от его максимального значения (в этом примере, 30 мс). Поскольку коэффициент усиления канала 2 первоначально равен нулю, он не способствует выходу. Когда задержка канала 1 приближается к нулю, задержка канала 2 начинает уменьшаться с 30 мс. В этой поперечной области с замираниями усиления двух каналов корректируются, чтобы сохранить уровень выхода степени. Канал 1 полностью затухает к моменту, когда его задержка достигает нуля. Затем процесс повторяется, перемещаясь назад и вперед между двумя каналами.
Для эффекта нисходящего тангажа задержки увеличиваются с нуля до максимального значения.
Желаемым выходным тангажом можно управлять путем изменения скорости изменения задержек канала. Перекрестное замирание уменьшает звуковые сбои, которые происходят во время перехода между каналами. Однако, если перекрестное замирание происходит в течение слишком длительного времени, повторения, присутствующие в области перекрытия, могут создать паразитные эффекты модуляции и гребенчатой фильтрации.
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. Эффективность повышается в этом режиме без ущерба для возможности настройки параметров.
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.