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

Выполнять пропускание динамического диапазона:
Создайте объект noiseGate и установите его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.
dRG = noiseGatedRG = 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.