noiseGate

Логический элемент динамического диапазона

Описание

noiseGate Система object™ выполняет динамический диапазон, пропускающий независимо через каждый входной канал. Пропускание динамического диапазона подавляет сигналы ниже заданного порога. Это использует заданное нападение, релиз, и содержите времена, чтобы достигнуть сглаженной прикладной кривой усиления. Свойства noiseGate Системный объект задает тип пропускания динамического диапазона.

Выполнять пропускание динамического диапазона:

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

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

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

Создание

Описание

dRG = noiseGate создает Системный объект, dRG, это выполняет динамический диапазон, пропускающий независимо через каждый входной канал.

dRG = noiseGate(thresholdValue) устанавливает свойство Threshold на thresholdValue.

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

Пример: dRG = noiseGate('AttackTime',0.01,'SampleRate',16000) создает Системный объект, dRG, со временем атаки на 10 мс и частотой дискретизации на 16 кГц.

Свойства

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

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

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

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

Порог операции в дБ в виде действительного скаляра.

Operation threshold является уровнем, ниже которого усиление применяется к входному сигналу.

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

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

Время атаки в секундах в виде действительного скаляра, больше, чем или равный 0.

Attack time является временем, это берет прикладное усиление, чтобы повыситься с 10% до 90% его окончательного значения, когда вход понижается порог.

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

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

Выпустите время в секундах в виде действительного скаляра, больше, чем или равный 0.

Release time является временем, которое он берет прикладное усиление, чтобы пропустить с 90% до 10% его окончательного значения, когда вход выходит за предел порога.

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

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

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

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

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

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

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

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

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

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

Описание

пример

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

[audioOut,gain] = dRG(audioIn) также возвращает прикладное усиление, в дБ, на каждой входной выборке.

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

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

Аудиовход к подавителю шума в виде матрицы. Столбцы матрицы обработаны как независимые звуковые каналы.

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

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

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

Аудиовыход от подавителя шума, возвращенного как матрица тот же размер как audioIn.

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

Усиление применяется подавителем шума, возвращенным как матрица тот же размер как audioIn.

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

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

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

release(obj)

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

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

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

СвойствоОбласть значенийОтображениеМодуль
Threshold[–140, 0]линейныйдБ
AttackTime[0, 4]линейныйсекунды
ReleaseTime[0, 4]линейныйсекунды
HoldTime[0, 4]линейныйсекунды

Примеры

свернуть все

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

Настройте dsp.AudioFileReader и audioDeviceWriter Система objects™.

frameLength = 1024;
fileReader = dsp.AudioFileReader( ...
    'Filename','Counting-16-44p1-mono-15secs.wav', ...
    'SamplesPerFrame',frameLength);
deviceWriter = audioDeviceWriter( ...
    'SampleRate',fileReader.SampleRate);

Повредите звуковой сигнал с Гауссовым шумом. Проигрывайте аудио.

while ~isDone(fileReader)
    x = fileReader();
    xCorrupted = x + (1e-2/4)*randn(frameLength,1);
    deviceWriter(xCorrupted);
end

release(fileReader)

Настройте логический элемент динамического диапазона с порогом-25 дБ, время атаки 0,01 секунд, время релиза 0,02 секунд и время задержки 0 секунд. Используйте частоту дискретизации своего читателя звукового файла.

gate = noiseGate(-25, ...
    'AttackTime',0.01, ...
    'ReleaseTime',0.02, ...
    'HoldTime',0, ...
    'SampleRate',fileReader.SampleRate);

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

scope = timescope( ...
    'SampleRate',fileReader.SampleRate, ...
    'TimeSpanOverrunAction','Scroll', ...
    'TimeSpanSource','property',...
    'TimeSpan',16, ...
    'BufferLength',1.5e6, ...
    'YLimits',[-1 1], ...
    'ShowGrid',true, ...
    'ShowLegend',true, ...
    'Title','Corrupted vs. Gated Audio');

Проигрывайте обработанное аудио и визуализируйте его на осциллографе.

while ~isDone(fileReader)
    x = fileReader();
    xCorrupted = x + (1e-2/4)*randn(frameLength,1);
    y = gate(xCorrupted);
    deviceWriter(y);
    scope([xCorrupted,y]);
end

release(fileReader)
release(gate)
release(deviceWriter)
release(scope)

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

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

dRG = noiseGate('SampleRate',fileReader.SampleRate);

Вызовите parameterTuner открыть пользовательский интерфейс для настроек параметров noiseGate при потоковой передаче.

parameterTuner(dRG)

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

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

  2. Примените пропускание динамического диапазона.

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

При потоковой передаче настройки параметров динамического диапазона пропускают и слушают эффект.

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

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

release(deviceWriter)
release(fileReader)
release(dRG)

Алгоритмы

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

noiseGate Системный объект обрабатывает кадр сигнала системой координат и поэлементно.

Ссылки

[1] Giannoulis, Димитриос, Михаэль Массберг и Джошуа Д. Рейсс. "Цифровой Проект Компрессора Динамического диапазона – Пример и Анализ". Журнал Общества звукоинженеров. Издание 60, Выпуск 6, 2012, стр 399–408.

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

Введенный в R2016a