exponenta event banner

ревербератор

Добавление реверберации к звуковому сигналу

Описание

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

Чтобы добавить реверберацию на вход, выполните следующие действия.

  1. Создать reverberator и задайте его свойства.

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

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

Создание

Описание

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

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

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

Свойства

развернуть все

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

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

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

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

Предварительная задержка реверберации - это время между слышанием прямого звука и первым ранним отражением. Значение PreDelay пропорционально размеру моделируемого помещения.

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

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

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

Отсечка фильтра нижних частот - это частота отсечки -3 дБ для однополюсного фильтра нижних частот в передней части структуры ревербератора. Это предотвращает применение реверберации к высокочастотным компонентам входа.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Влажно-сухая смесь - отношение влажного (ревербератированного) к сухому (исходному) сигналу, reverberator Вывод объектов системы.

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

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

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

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

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

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

Синтаксис

Описание

пример

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

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

развернуть все

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

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

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

развернуть все

Аудиовыход от ревербератора, возвращаемый в виде матрицы из двух столбцов.

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

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

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

release(obj)

развернуть все

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

Примеры

свернуть все

Используйте 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: Ревербератор и другие фильтры». Журнал Общества аудиотехники. Том 45, выпуск 9, 1997, стр. 660-684.

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

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

.

См. также

Представлен в R2016a