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

Ревербератор реализован в объекте System. audioexample.FreeverbReverberator. Объект имеет пять свойств, которые можно настроить во время выполнения моделирования: RoomSize, StereoWidth, WetDryMix, Balance, и Volume. RoomSize влияет на коэффициент усиления обратной связи гребенчатых фильтров. StereoWidth и WetDryMix оба принимают участие в стадии смешивания, которая происходит после завершения фильтрации. Значения по умолчанию для StereoSpread, CombDelayLength, и AllpassDelayLength свойства взяты из спецификаций Freeverb.
Чтобы использовать ревербератор для звукового сигнала, выполните команду audioFreeverbReverberationExampleApp.
audioFreeverbReverberationExampleApp
audioFreeverbReverberationExampleApp команда сначала устанавливает источник звука и проигрыватель. Затем он итеративно вызывает audioexample.FreeverbReverberator Системный объект со звуковым входом, обеспечивающий добавление реверберации потоковым способом. Выходные данные объекта воспроизводятся, чтобы можно было услышать эффект, добавленный к звуку.
Моделирование открывает пользовательский интерфейс для взаимодействия с audioexample.FreeverbReverberator во время выполнения моделирования. Пользовательский интерфейс позволяет настраивать параметры, и результаты мгновенно отражаются в моделировании. Например, перемещение ползунка «Размер комнаты» влево во время моделирования уменьшает отражательную способность стен моделируемого помещения.
На UI также имеется три кнопки - кнопка Reset (Сброс) сбросит состояния секций гребенки и allpass в ревербераторе до их начальных значений, а кнопка Pause Simulation (Моделирование паузы) удержит моделирование до тех пор, пока вы не нажмете на него еще раз. Моделирование может быть прервано путем закрытия пользовательского интерфейса или нажатия кнопки Stop simulation. При наличии контроллера MIDI его можно синхронизировать с пользовательским интерфейсом. Это можно сделать, выбрав элемент управления MIDI в диалоговом окне, которое открывается при щелчке правой кнопкой мыши на ползунках или кнопках и выборе в контекстном меню пункта «Синхронизировать». Выбранный элемент управления MIDI затем работает в соответствии с ползуном или кнопкой, так что управление одним элементом управления отслеживается другим.

Если вы видите много предупреждений о недоработке очереди, вам потребуется настроить буфер и размер очереди аудиопроигрывателя, используемого в audioFreeverbReverberationExampleApp. Более подробную информацию об этом можно найти на странице документации для audioDeviceWriter. Источником звука в этом примере является аудиофайл, но его можно заменить устройством ввода звука (через audioDeviceReader) для добавления реверберации к живому звуку. Для того чтобы уменьшить задержку при отсутствии переполнения/недоделок, можно использовать пример «Измерить задержку звука».
С помощью MATLAB Coder™ можно создать файл MEX для основного алгоритма обработки, выполнив команду HelperFreeverbCodeGeneration команда. Созданный файл MEX можно использовать, выполнив команду audioFreeverbReverberationExampleApp команда с true в качестве аргумента.
audioFreeverbReverberationExampleApp(true)
audiofreeverbreverberation - модель Simulink, реализующая тот же пример реверберации Freeverb, подсвеченный в предыдущих разделах.

В этой модели добавление реверберации моделируется с использованием audioexample.FreeverbReverberator Системный объект, используемый в системном блоке MATLAB. Использование системного блока MATLAB экономит усилия по повторному внедрению алгоритма MATLAB в Simulink. Можно открыть пользовательский интерфейс для настройки параметров Freeverb, щелкнув ссылку 'Запуск настройки параметров пользовательского интерфейса' на модели.
При моделировании модель генерирует код. Поэтому она должна выполняться из папки с разрешениями на запись.
Алгоритм в этом примере основан на модели общественного достояния 'Freeverb', написанной Джезаром в Dreampoint (июнь 2000).
Смит, J.O. «Freeverb», в «Physical Audio Signal Processing», https://ccrma.stanford.edu/~jos/pasp/Freeverb.html, онлайн книга, издание 2010, доступ 24 апреля 2014.