exponenta event banner

Сдвиг основного тона на основе задержки

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

Алгоритм

На рисунке ниже показан алгоритм сдвига основного тона.

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

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

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

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

Аудиоплагин устройства сдвига шага

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

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

Вы можете открыть испытательный стенд для audiopluginexample.PitchShifter с помощью звукового тестового стенда. Стенд тестирования предоставляет пользовательский интерфейс (UI), помогающий тестировать аудиоплагин в MATLAB. При выполнении тестового стенда можно настроить параметры плагина. Также можно открыть dsp.TimeScope и dsp.SpectrumAnalyzer для просмотра и сравнения входного и выходного сигналов в временной и частотной областях соответственно.

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

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

Моделирование MATLAB

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

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

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

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

Кодер MATLAB может использоваться для генерации кода C для HelperPitchShifterSim. Чтобы создать MEX-файл для вашей платформы, выполните HelperPitchShifterCodeGeneration из папки с разрешениями на запись.

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

Звонить audioPitchShifterExampleApp с 'true' в качестве аргумента для использования MEX-файла для моделирования. Моделирование также выполняется до тех пор, пока пользователь явно не остановит его из пользовательского интерфейса.

Ссылки

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

[2] «Детальный анализ алгоритма сдвига основного тона с поправкой на формант временной области», Бристоу-Джонсон, Р.; AES - октябрь 1993 года.