reverberator

Добавьте реверберацию к аудиосигналу

Описание

The reverberator Системная object™ добавляет реверберацию к моно или стерео аудиосигналам.

Чтобы добавить реверберацию к своему входу:

  1. Создайте reverberator Объекту и установите его свойства.

  2. Вызывайте объект с аргументами, как будто это функция.

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

reverb = reverberator создает Системный объект, reverb, который добавляет искусственную реверберацию к аудиосигналу.

reverb = reverberator(Name,Value) устанавливает каждое свойство Name к заданной Value. Неопределенные свойства имеют значения по умолчанию.

Пример: reverb = reverberator('PreDelay',0.5,'WetDryMix',1) создает Системный объект, reverbс 0,5-секундной предварительной задержкой и соотношением влажной и сухой смеси, равным единице.

Свойства

расширить все

Если не указано иное, свойства являются нетронутыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируются, когда вы вызываете их, и release функция разблокирует их.

Если свойство настраивается, можно изменить его значение в любой момент.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

Предварительная задержка для реверберации в секундах, заданная как действительный скаляр в области значений [0, 1].

Pre-delay for reverberation - это время между слухом прямого звука и первым ранним отражением. Значение PreDelay пропорционально размеру моделируемого помещения.

Настраиваемый: Да

Типы данных: single | double

Lowpass в Гц, заданное как действительная положительная скалярная величина в области значений от 0 до (SampleRate2).

Lowpass filter cutoff - частота отсечения -3 дБ для однополюсного lowpass в передней части структуры ревербератора. Это препятствует применению реверберации к высокочастотным компонентам входа.

Настраиваемый: Да

Типы данных: single | double

Плотность хвоста реверба, заданная как действительная положительная скалярная величина в области значений [0, 1].

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

Настраиваемый: Да

Типы данных: single | double

Коэффициент распада хвоста реверберации, заданный как действительная положительная скалярная величина в области значений [0, 1].

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

Настраиваемый: Да

Типы данных: single | double

Высокочастотное демпфирование, заданное как действительная положительная скалярная величина в области значений [0, 1].

HighFrequencyDamping пропорционально ослаблению высоких частот в выходе реверберации. Настройка HighFrequencyDamping к большому значению, высокочастотные отражения распадаются быстрее, чем низкочастотные отражения.

Настраиваемый: Да

Типы данных: single | double

Влажно-сухая смесь, заданная как действительная положительная скалярная величина в области значений [0, 1].

Wet-dry mix - это отношение смоченного (ревербератированного) к сухому (исходному) сигналу того, что ваш reverberator Выходы системного объекта.

Настраиваемый: Да

Типы данных: single | double

Вход скорость выборки в Гц, заданная как положительная скалярная величина.

Настраиваемый: Да

Типы данных: single | double

Использование

Синтаксис

Описание

пример

audioOut = reverb(audioIn) добавляет реверберацию к входному сигналу, audioIn, и возвращает смешанный сигнал, audioOut. Тип реверберации задается алгоритмом и свойствами Системного объекта ревербератора, reverb.

Входные параметры

расширить все

Аудио вход в ревербератор, заданный как вектор-столбец или двухколоночная матрица. Столбцы матрицы рассматриваются как независимые аудиоканалы.

Типы данных: single | double

Выходные аргументы

расширить все

Аудио выхода от ревербератора, возвращаемое как двухколоночная матрица.

Типы данных: single | double

Функции объекта

Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj, используйте следующий синтаксис:

release(obj)

расширить все

createAudioPluginClassСоздайте класс аудиоплагина, который реализует функциональность Системного объекта
parameterTunerНастройка параметров объекта во время потоковой передачи
configureMIDIСконфигурируйте соединения MIDI между аудио объекта и MIDI контроллера
disconnectMIDIОтсоедините элементы управления MIDI от аудио объекта
getMIDIConnectionsПолучите MIDI-соединения аудио объекта
cloneСоздайте повторяющийся системный объект
isLockedОпределите, используется ли системный объект
releaseОтпустите ресурсы и допустите изменения в значениях свойств системного объекта и входных характеристиках
resetСброс внутренних состояний Системного объекта
stepЗапуск алгоритма системного объекта

Примеры

свернуть все

Используйте reverberator Система object™, чтобы добавить искусственную реверберацию к аудиосигналу, считанному из файла.

Создайте dsp.AudioFileReader и audioDeviceWriter Системные объекты. Используйте частоту дискретизации считывающего устройства в качестве частоты дискретизации средства записи.

fileReader = dsp.AudioFileReader('FunkyDrums-44p1-stereo-25secs.mp3','SamplesPerFrame',1024);
deviceWriter = audioDeviceWriter('SampleRate',fileReader.SampleRate);

Воспроизведите 10 секунд аудиосигнала через устройство.

tic
while toc < 10
    audio = fileReader();
    deviceWriter(audio);
end
release(fileReader)

Создайте reverberator Системный объект с настройками по умолчанию.

reverb = reverberator
reverb = 
  reverberator with properties:

                PreDelay: 0
        HighCutFrequency: 20000
               Diffusion: 0.5000
             DecayFactor: 0.5000
    HighFrequencyDamping: 5.0000e-04
               WetDryMix: 0.3000
              SampleRate: 44100

Создайте временные возможности, чтобы визуализировать исходный аудиосигнал и аудиосигнал с добавлением искусственной реверберации.

scope = timescope( ...
    'SampleRate',fileReader.SampleRate,...
    'TimeSpanOverrunAction','Scroll',...
    'TimeSpanSource','property',...
    'TimeSpan',3,...
    'BufferLength',3*fileReader.SampleRate*2, ...
    'YLimits',[-1,1],...
    'ShowGrid',true, ...
    'ShowLegend',true, ...
    'Title','Audio with Reverberation vs. Original');

Воспроизведение аудиосигнала с искусственной реверберацией. Визуализируйте аудио с реверберацией и оригинальным аудио.

while ~isDone(fileReader)
    audio = fileReader();
    audioWithReverb = reverb(audio);
    deviceWriter(audioWithReverb);
    scope([audioWithReverb(:,1),audio(:,1)])
end
release(fileReader)
release(deviceWriter)
release(scope)

Создайте dsp.AudioFileReader для чтения в аудиокадре за кадром. Создайте audioDeviceWriter чтобы записать аудио на звуковую карту. Создайте reverberator для обработки аудио данных.

frameLength = 1024;
fileReader = dsp.AudioFileReader('RockDrums-44p1-stereo-11secs.mp3', ...
    'SamplesPerFrame',frameLength,'PlayCount',2);
deviceWriter = audioDeviceWriter('SampleRate',fileReader.SampleRate);
reverb = reverberator('SampleRate',fileReader.SampleRate);

Функции parameterTuner чтобы открыть пользовательский интерфейс для настройки параметров octaveFilter во время потоковой передачи.

parameterTuner(reverb)

В цикле аудиопотока:

  1. Чтение в системе координат аудио из файла.

  2. Применить реверберацию.

  3. Запишите систему координат аудио в своё аудио устройство для прослушивания.

Во время потоковой передачи настраивайте параметры ревербератора и слушайте эффект.

while ~isDone(fileReader)
    audioIn = fileReader();
    audioOut = reverb(audioIn);
    deviceWriter(audioOut);
    drawnow limitrate % required to update parameter
end

Как лучшая практика, отпустите объекты после выполнения.

release(deviceWriter)
release(fileReader)
release(reverb)

Совет

createAudioPluginClass и configureMIDI функции сопоставляют настраиваемые свойства compressor к пользовательским параметрам:

СвойствоОбласть значенийОтображениеМодуль
PreDelay[0, 1]линейныйs
HighCutFrequency[20, 20000]журналHz
Diffusion[0, 1]линейныйничего
DecayFactor[0, 1]линейныйничего
HighFrequencyDamping[0, 1]линейныйничего
WetDryMix[0, 1]линейныйничего

Алгоритмы

расширить все

Алгоритм для добавления реверберации следует топологии реверберации класса диска, описанной в [1], и основан на скорости дискретизации 29 761 Гц.

Алгоритм имеет пять этапов.

Описание для следующего алгоритма предназначено для стерео входа. Моно- вход является упрощённым случаем.

Ссылки

[1] Dattorro, Jon. «Effect Design, Part 1: Reverberator and Other Filters». Журнал Общества аудиотехники. Том 45, Выпуск 9, 1997, стр. 660-684.

[2] Dattorro, Jon. «Effect Design, Part 2: Delay-Line Modulation and Chorus». Журнал Общества аудиотехники. Том 45, Выпуск 10, 1997, стр. 764-788.

Расширенные возможности

.

См. также

Введенный в R2016a