отражатель

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

Описание

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

Добавить реверберацию в ваш вход:

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

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

reverb = reverberator
reverb = reverberator(Name,Value)

Описание

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

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

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

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (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

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

Для версий ранее, чем R2016b, используйте функцию step, чтобы запустить алгоритм Системного объекта. Аргументы к step являются объектом, который вы создали, сопровождаемый аргументами, показанными в этом разделе.

Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Синтаксис

audioOut = reverb(audioIn)

Описание

пример

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

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

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

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

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

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

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

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

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

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

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

release(obj)

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

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

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'

Примеры

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

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

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

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

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

scope = dsp.TimeScope( ...
    'SampleRate',fileReader.SampleRate, ...
    'TimeSpanOverrunAction','Scroll', ...
    'TimeSpan',10, ...
    'BufferLength',1.5e6, ...
    '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)

Алгоритмы

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

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

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

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

Ссылки

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

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

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

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

Блоки

Введенный в R2016a