reverberator

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

Описание

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.

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

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

Аудиовход к отражателю в виде вектор-столбца или матрицы 2D столбца. Столбцы матрицы обработаны как независимые звуковые каналы.

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

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

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

Аудиовыход от отражателя, возвращенного как матрица 2D столбца.

Типы данных: 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]журналГц
Diffusion[0, 1]линейный'none'
DecayFactor[0, 1]линейный'none'
HighFrequencyDamping[0, 1]линейный'none'
WetDryMix[0, 1]линейный'none'

Алгоритмы

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

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

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

Описание для алгоритма, который следует, для стереовхода. Моно вход является упрощенным случаем.

Ссылки

[1] Dattorro, Джон. "Проект эффекта, Часть 1: Отражатель и Другие Фильтры". Журнал Общества звукоинженеров. Издание 45, Выпуск 9, 1997, стр 660–684.

[2] Dattorro, Джон. "Проект эффекта, Часть 2: Модуляция линии задержки и Хор". Журнал Общества звукоинженеров. Издание 45, Выпуск 10, 1997, стр 764–788.

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

Смотрите также

Введенный в R2016a