Логический элемент динамического диапазона
Система noiseGate
object™ выполняет динамический диапазон, пропускающий независимо через каждый входной канал. Пропускание динамического диапазона подавляет сигналы ниже данного порога. Это использует заданное нападение, релиз, и содержите времена, чтобы достигнуть сглаженной прикладной кривой усиления. Свойства Системного объекта noiseGate
задают тип пропускания динамического диапазона.
Выполнять пропускание динамического диапазона:
Создайте объект noiseGate
и установите его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.
dRG = noiseGate
dRG = noiseGate(thresholdValue)
dRG = noiseGate(___,Name,Value)
dRG = noiseGate
создает Системный объект, dRG
, который выполняет динамический диапазон, пропускающий независимо через каждый входной канал.
dRG = noiseGate(
устанавливает свойство Threshold на thresholdValue
)thresholdValue
.
dRG = noiseGate(___,
наборы каждое свойство Name,Value
)Name
к заданному Value
. Незаданные свойства имеют значения по умолчанию.
dRG = noiseGate('AttackTime',0.01,'SampleRate',16000)
создает Системный объект, dRG
, со временем атаки на 10 мс и частотой дискретизации на 16 кГц.Для версий ранее, чем R2016b, используйте функцию step
, чтобы запустить алгоритм Системного объекта. Аргументы к step
являются объектом, который вы создали, сопровождаемый аргументами, показанными в этом разделе.
Например, y = step(obj,x)
и y = obj(x)
выполняют эквивалентные операции.
audioOut = dRG(audioIn)
[audioOut,gain] = dRG(audioIn)
Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj
, используйте этот синтаксис:
release(obj)
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);
Визуализируйте статическую характеристику логического элемента.
visualize(gate)
Настройте осциллограф времени, чтобы визуализировать сигнал до и после пропускания динамического диапазона.
scope = dsp.TimeScope( ... 'SampleRate',fileReader.SampleRate, ... 'TimeSpanOverrunAction','Scroll', ... '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)
В цикле аудиопотока:
Читайте в кадре аудио из файла.
Примените пропускание динамического диапазона.
Запишите кадр аудио к вашему аудио устройству для слушания.
При потоковой передаче настройки параметров динамического диапазона пропускают и слушают эффект.
while ~isDone(fileReader) audioIn = fileReader(); audioOut = dRG(audioIn); deviceWriter(audioOut); drawnow limitrate % required to update parameter end
Как лучшая практика, выпустите свои объекты, однажды сделанные.
release(deviceWriter) release(fileReader) release(dRG)
[1] Giannoulis, Димитриос, Михаэль Массберг и Джошуа Д. Рейсс. "Цифровой Проект Компрессора Динамического диапазона – Пример и Анализ". Журнал Общества звукоинженеров. Издание 60, Выпуск 6, 2012, стр 399–408.