Добавьте реверберацию с помощью алгоритма Freeverb

В этом примере показано, как применить реверберацию к аудио с помощью алгоритма реверберации Freeverb. Реверберация может быть настроена с помощью пользовательского интерфейса (UI) в MATLAB или через контроллер. Этот пример иллюстрирует реализации MATLAB ® и Simulink ®.

Введение

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

В этом примере вы добавляете реверберацию к аудио через алгоритм Freeverb. Freeverb - популярная реализация ревербератора Шредера. Модель алгоритма Freeverb высокого уровня показана ниже:

Пример архитектуры

Ревербератор реализован в системном объекте audioexample.FreeverbReverberator. Объект имеет пять свойств, которые можно настроить во время симуляции: RoomSize, StereoWidth, WetDryMix, Balance, и Volume. RoomSize влияет на коэффициент усиления обратной связи гребенчатых фильтров. StereoWidth и WetDryMix оба принимают участие в стадии смешивания, которая происходит после завершения фильтрации. Значения по умолчанию для StereoSpread, CombDelayLength, и AllpassDelayLength свойства взяты из спецификаций Freeverb.

Симуляция MATLAB

Чтобы использовать ревербератор для аудиосигнала, запустите audioFreeverbReverberationExampleApp.

audioFreeverbReverberationExampleApp

The audioFreeverbReverberationExampleApp команда сначала устанавливает источник звука и проигрыватель. Затем итерационно вызывает audioexample.FreeverbReverberator Системный объект с аудио входа, обеспечивающий сложение реверберации в потоковом режиме. Выход объекта воспроизводится, поэтому вы можете услышать эффект, добавленный к аудио.

Симуляция открывает пользовательский интерфейс для взаимодействия с audioexample.FreeverbReverberator во время выполнения симуляции. UI позволяет вам настройкам параметров, и результаты отражаются в симуляции мгновенно. Например, перемещение ползунка Room size налево во время симуляции уменьшает отражательную способность стенок моделируемого помещения.

На пользовательском интерфейсе также есть три кнопки - кнопка Reset сбрасывает состояния разделов гребня и allpass в ревербераторе до их начальных значений, и кнопка Pause Simulation будет удерживать симуляцию, пока вы не нажмете на нее снова. Симуляция может быть завершено либо закрытием пользовательского интерфейса, либо нажатием на кнопку Stop simulation. Если у вас есть контроллер, его можно синхронизировать с пользовательским интерфейсом. Вы можете сделать это, выбрав элемент управления MIDI в диалоговом окне, который открывается при щелчке правой кнопкой мыши по ползункам или кнопкам и выбрать «Синхронизировать» из контекстного меню. Выбранное управление MIDI затем работает в соответствии с ползунком или кнопкой, так что управление одним отслеживается другим.

Если вы видите много предупреждений о переполнении очереди, вам нужно будет настроить буфер и размер очереди аудиоплеера, используемого в audioFreeverbReverberationExampleApp. Более подробную информацию об этом можно найти на странице документации для audioDeviceWriter. Источник аудио в этом примере является аудио файла, но можно заменить его на устройство аудио входа (через audioDeviceReader), чтобы добавить реверберацию к живому аудио. Для способов уменьшить задержку, не имея переполнений/недоисписаний, можно следовать примеру Measure Audio Latency.

Использование сгенерированного файла MEX

Используя MATLAB Coder™, можно сгенерировать файл MEX для основного алгоритма обработки путем выполнения HelperFreeverbCodeGeneration команда. Можно использовать сгенерированный файл MEX путем выполнения audioFreeverbReverberationExampleApp команда с true как аргумент.

audioFreeverbReverberationExampleApp(true)

Версия Simulink

audiofreeverbreverberation является моделью Simulink, которая реализует тот же пример реверберации Freeverb, выделенный в предыдущих разделах.

В этой модели сложение реверберации моделируется с помощью audioexample.FreeverbReverberator Системный объект, используемый внутри блока MATLAB System. Использование блока MATLAB System экономит усилия по повторному внедрению алгоритма MATLAB в Simulink. Вы можете открыть UI, чтобы настроить параметры Freeverb, нажав на ссылку 'Launch Parameter Tuning UI' на модели.

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

Подтверждение

Алгоритм в этом примере основан на публичной модели 'Freeverb' области написанной Изаром в Dreampoint (июнь 2000).

Ссылка

Smith, J.O. Freeverb, in «Physical Audio Signal Processing», https://ccrma.stanford.edu/~jos/pasp/Freeverb.html, online book, 2010 edition, accessed April 24, 2014.