В этом примере показано, как применить реверберацию к аудио с помощью алгоритма реверберации Freeverb. Реверберация может быть настроена с помощью пользовательского интерфейса (UI) в MATLAB или через контроллер. Этот пример иллюстрирует реализации MATLAB ® и Simulink ®.
Ревербераторы используются, чтобы добавить эффект нескольких распадающихся эхо, или ревербераторов, к аудиосигналам. Распространенным применением реверберации является моделирование музыки, проигрываемой в закрытом помещении. Большинство цифровых аудио рабочих станций (DAW) имеют опции добавить такие эффекты к звуковой дорожке.
В этом примере вы добавляете реверберацию к аудио через алгоритм Freeverb. Freeverb - популярная реализация ревербератора Шредера. Модель алгоритма Freeverb высокого уровня показана ниже:
Ревербератор реализован в системном объекте audioexample.FreeverbReverberator
. Объект имеет пять свойств, которые можно настроить во время симуляции: RoomSize
, StereoWidth
, WetDryMix
, Balance
, и Volume
. RoomSize
влияет на коэффициент усиления обратной связи гребенчатых фильтров. StereoWidth
и WetDryMix
оба принимают участие в стадии смешивания, которая происходит после завершения фильтрации. Значения по умолчанию для StereoSpread
, CombDelayLength
, и AllpassDelayLength
свойства взяты из спецификаций Freeverb.
Чтобы использовать ревербератор для аудиосигнала, запустите 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.
Используя MATLAB Coder™, можно сгенерировать файл MEX для основного алгоритма обработки путем выполнения HelperFreeverbCodeGeneration
команда. Можно использовать сгенерированный файл MEX путем выполнения audioFreeverbReverberationExampleApp
команда с true
как аргумент.
audioFreeverbReverberationExampleApp(true)
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.