Компрессор динамического диапазона
compressor
Система object™ выполняет сжатие динамического диапазона независимо через каждый входной канал. Сжатие динамического диапазона ослабляет объем громких звуков, которые пересекают заданный порог. Это использует заданные времена нападения и релиза, чтобы достигнуть сглаженной прикладной кривой усиления. Свойства compressor
Системный объект задает тип сжатия динамического диапазона.
Выполнять сжатие динамического диапазона:
Создайте compressor
объект и набор его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?.
dRC = compressor
создает Системный объект, dRC
, это выполняет сжатие динамического диапазона независимо через каждый входной канал в зависимости от времени.
dRC = compressor(
устанавливает свойство Threshold на thresholdValue
)thresholdValue
.
dRC = compressor(
устанавливает свойство Ratio на thresholdValue
,ratioValue
)ratioValue
.
dRC = compressor(___,
наборы каждое свойство Name,Value
)Name
к заданному Value
. Незаданные свойства имеют значения по умолчанию.
dRC = compressor('AttackTime',0.01,'SampleRate',16000)
создает Системный объект, dRC
, со временем атаки на 10 мс, действуя на уровне частоты дискретизации на 16 кГц.Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и release
функция разблокировала их.
Если свойство является настраиваемым, можно изменить его значение в любое время.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты.
Threshold
— Порог операции (дБ)
(значение по умолчанию) | действительный скалярПорог операции в дБ в виде действительного скаляра.
Operation threshold является уровнем, выше которого усиление применяется к входному сигналу.
Настраиваемый: да
Типы данных: single
| double
Ratio
'CompressionRatio'
(значение по умолчанию) | действительный скалярКоэффициент сжатия в виде действительного скаляра, больше, чем или равный 1.
Compression ratio является отношением ввода/вывода для сигналов, которые промахиваются по порогу операции.
Принятие твердой характеристики колена и установившегося входа, таким образом, что x [n] дБ> Threshold
, коэффициент сжатия задан как .
R является коэффициентом сжатия.
x [n] является входным сигналом в дБ.
y [n] является выходным сигналом в дБ.
T является порогом в дБ.
Настраиваемый: да
Типы данных: single
| double
KneeWidth
— Ширина колена (дБ)
(значение по умолчанию) | действительный скалярШирина колена в дБ в виде действительного скаляра, больше, чем или равный 0.
Knee width является областью перехода в характеристике сжатия.
Для мягких характеристик колена область перехода задана отношением
для области значений .
y является уровнем на выходе в дБ.
x является уровнем на входе в дБ.
R является коэффициентом сжатия.
T является порогом в дБ.
W является шириной колена в дБ.
Настраиваемый: да
Типы данных: single
| double
AttackTime
— Время (время) атаки
(значение по умолчанию) | действительный скалярВремя атаки в секундах в виде действительного скаляра, больше, чем или равный 0.
Attack time является временем, это берет усиление компрессора, чтобы повыситься с 10% до 90% его окончательного значения, когда вход выходит за предел порога.
Настраиваемый: да
Типы данных: single
| double
ReleaseTime
— Выпустите время (времена)
(значение по умолчанию) | действительный скалярВыпустите время в секундах в виде действительного скаляра, больше, чем или равный 0.
Release time является временем, которое он берет усиление компрессора, чтобы пропустить с 90% до 10% его окончательного значения, когда вход понижается порог.
Настраиваемый: да
Типы данных: single
| double
MakeUpGainMode
— Режим усиления состава'Property'
(значение по умолчанию) | 'Auto'
Режим усиления состава в виде 'Auto'
или 'Property'
.
'Auto'
– Усиление состава применяется при выходе компрессора динамического диапазона, таким образом, что установившийся вход на 0 дБ имеет выход на 0 дБ.
'Property'
– Усиление состава установлено в значение, заданное в свойстве MakeUpGain.
Настраиваемый: нет
Типы данных: char |
string
MakeUpGain
— Усиление состава (дБ)
(значение по умолчанию) | действительный скалярУсиление состава в дБ в виде действительного скаляра.
Make-up gain компенсирует усиление, потерянное во время сжатия. Это применяется при выходе компрессора динамического диапазона.
Настраиваемый: да
Чтобы включить это свойство, установите MakeUpGainMode на 'Property'
.
Типы данных: single
| double
SampleRate
— Введите частоту дискретизации (Гц)
(значение по умолчанию) | положительная скалярная величинаВведите частоту дискретизации в Гц в виде положительной скалярной величины.
Настраиваемый: да
Типы данных: single
| double
EnableSidechain
— Включите вход боковой цепиfalse
(значение по умолчанию) | true
Включите вход боковой цепи в виде true
или false
. Это свойство определяет количество доступных входных параметров на compressor
объект.
Тип данных боковой цепи и (система координат) длина должны совпасть с audioIn
.
Количество каналов входа боковой цепи должно быть равно количеству каналов audioIn
или быть равным одному. Когда количество каналов боковой цепи один, gain
вычисленный на основе этого канала применяется ко всем каналам audioIn
. Когда количество каналов боковой цепи равно количеству каналов в audioIn
, gain
вычисленный для каждого канала боковой цепи применяется к соответствующему каналу audioIn
.
Настраиваемый: нет
audioIn
— Аудиовход к компрессоруАудиовход к компрессору в виде матрицы. Столбцы матрицы обработаны как независимые звуковые каналы.
Типы данных: single
| double
audioOut
— Аудиовыход от компрессораАудиовыход от компрессора, возвращенного как матрица тот же размер как audioIn
.
Типы данных: single
| double
gain
— Усиление применяется компрессором (дБ)Усиление применяется компрессором, возвращенным как матрица тот же размер как audioIn
.
Типы данных: single
| double
Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj
, используйте этот синтаксис:
release(obj)
visualize | Визуализируйте статическую характеристику контроллера динамического диапазона |
createAudioPluginClass | Создайте аудио сменный класс, который реализует функциональность Системного объекта |
parameterTuner | Настройте параметры объекта при потоковой передаче |
configureMIDI | Сконфигурируйте связи MIDI между аудио объектным и MIDI-контроллером |
disconnectMIDI | Отключите средства управления MIDI от аудио объекта |
getMIDIConnections | Получите связи MIDI аудио объекта |
clone | Создайте объект дублированной системы |
isLocked | Определите, используется ли Системный объект |
release | Высвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики |
reset | Сбросьте внутренние состояния Системного объекта |
step | Запустите алгоритм Системного объекта |
createAudioPluginClass
и configureMIDI
функции сопоставляют настраиваемые свойства compressor
Системный объект к стоящим с пользователем параметрам:
Свойство | Область значений | Отображение | Модуль |
---|---|---|---|
Threshold | [–50, 0] | линейный | дБ |
Ratio | [1, 50] | линейный | 'none' |
KneeWidth | [0, 20] | линейный | дБ |
AttackTime | [0, 4] | линейный | секунды |
ReleaseTime | [0, 4] | линейный | секунды |
MakeUpGain (доступный, когда вы устанавливаете MakeUpGainMode к 'Property' ) | [–10, 24] | линейный | дБ |
Используйте сжатие динамического диапазона, чтобы ослабить объем громких звуков.
Настройте dsp.AudioFileReader
и audioDeviceWriter
Система objects™.
frameLength = 1024; fileReader = dsp.AudioFileReader( ... 'Filename','RockDrums-44p1-stereo-11secs.mp3', ... 'SamplesPerFrame',frameLength); deviceWriter = audioDeviceWriter( ... 'SampleRate',fileReader.SampleRate);
Настройте компрессор, чтобы иметь порог-15 дБ, отношение 7 и ширину колена 5 дБ. Используйте частоту дискретизации своего читателя звукового файла.
dRC = compressor(-15,7, ... 'KneeWidth',5, ... 'SampleRate',fileReader.SampleRate);
Настройте осциллограф, чтобы визуализировать исходный звуковой сигнал, сжатый звуковой сигнал и прикладное усиление компрессора.
scope = timescope( ... 'SampleRate',fileReader.SampleRate, ... 'TimeSpanSource','Property','TimeSpan',1, ... 'BufferLength',44100*4, ... 'YLimits',[-1,1], ... 'TimeSpanOverrunAction','Scroll', ... 'ShowGrid',true, ... 'LayoutDimensions',[2,1], ... 'NumInputPorts',2, ... 'Title', ... ['Original vs. Compressed Audio (top)' ... ' and Compressor Gain in dB (bottom)']); scope.ActiveDisplay = 2; scope.YLimits = [-4,0]; scope.YLabel = 'Gain (dB)';
Проигрывайте обработанное аудио и визуализируйте его на осциллографе.
while ~isDone(fileReader) x = fileReader(); [y,g] = dRC(x); deviceWriter(y); scope([x(:,1),y(:,1)],g(:,1)) end release(dRC) release(deviceWriter) release(scope)
Ограничитель динамического диапазона является специальным типом компрессора динамического диапазона. В ограничителях трудно ограничивается уровень выше операционного порога. В самой простой реализации ограничителя эффект эквивалентен аудио усечению. В компрессорах уровень выше операционного порога понижен с помощью заданного коэффициента сжатия. Используя коэффициент сжатия приводит к более сглаженному обработанному сигналу.
Сравните ограничитель и компрессор, примененный синусоида
Создайте limiter
Система object™ и compressor
Системный объект. Установите AttackTime
и ReleaseTime
свойства обоих объектов обнулить. Создайте audioOscillator
Системный объект, чтобы сгенерировать синусоиду с Frequency
установите на 5
и Amplitude
установите на 0.1
.
dRL = limiter('AttackTime',0,'ReleaseTime',0); dRC = compressor('AttackTime',0,'ReleaseTime',0); osc = audioOscillator('Frequency',5,'Amplitude',0.1);
Создайте осциллограф времени, чтобы визуализировать сгенерированную синусоиду и обработанную синусоиду.
scope = timescope( ... 'SampleRate',osc.SampleRate, ... 'TimeSpanSource','Property','TimeSpan',2, ... 'BufferLength',osc.SampleRate*4, ... 'TimeSpanOverrunAction','Scroll', ... 'ShowGrid',true, ... 'LayoutDimensions',[2 1], ... 'NumInputPorts',2); scope.ActiveDisplay = 1; scope.Title = 'Original Signal vs. Limited Signal'; scope.YLimits = [-1,1]; scope.ActiveDisplay = 2; scope.Title = 'Original Signal vs. Compressed Signal'; scope.YLimits = [-1,1];
В цикле аудиопотока визуализируйте исходную синусоиду и синусоиду, обработанную ограничителем и компрессором. Постепенно увеличьте амплитуду исходной синусоиды, чтобы проиллюстрировать эффект.
while osc.Amplitude < 0.75 x = osc(); xLimited = dRL(x); xCompressed = dRC(x); scope([x xLimited],[x xCompressed]); osc.Amplitude = osc.Amplitude + 0.0002; end release(scope)
release(dRL) release(dRC) release(osc)
Сравните ограничитель и компрессор, примененный звуковой сигнал
Сравните эффект ограничителей динамического диапазона и компрессоров на дорожке ударных. Создайте dsp.AudioFileReader
Системный объект и audioDeviceWriter
Системный объект, чтобы считать аудио из файла и записать в ваше устройство аудиовыхода. Чтобы подчеркнуть эффект управления динамическим диапазоном, установите операционный порог ограничителя и компрессора к-20 дБ.
dRL.Threshold = -20; dRC.Threshold = -20; fileReader = dsp.AudioFileReader('FunkyDrums-44p1-stereo-25secs.mp3'); deviceWriter = audioDeviceWriter('SampleRate',fileReader.SampleRate);
Считайте последовательные системы координат из звукового файла в цикле. Слушайте и сравните эффект ограничения динамического диапазона и сжатия динамического диапазона на звуковом сигнале.
numFrames = 300;
fprintf('Now playing original signal...\n')
Now playing original signal...
for i = 1:numFrames x = fileReader(); deviceWriter(x); end reset(fileReader); fprintf('Now playing limited signal...\n')
Now playing limited signal...
for i = 1:numFrames x = fileReader(); xLimited = dRL(x); deviceWriter(xLimited); end reset(fileReader); fprintf('Now playing compressed signal...\n')
Now playing compressed signal...
for i = 1:numFrames x = fileReader(); xCompressed = dRC(x); deviceWriter(xCompressed); end release(fileReader) release(deviceWriter) release(dRC) release(dRL)
Plosives являются совместимыми звуками, следующими из внезапного релиза потока воздуха. Они являются самыми явными в словах, начинающихся p, d, и звуках g. Plosives могут быть подчеркнуты процессом записи и часто displeasurable, чтобы услышать. В этом примере вы минимизируете plosives речевого сигнала путем применения highpass сжатия низкой полосы и фильтрации.
Создайте dsp.AudioFileReader
возразите и audioDeviceWriter
возразите, чтобы считать звуковой сигнал из файла и записать звуковой сигнал в устройство. Проигрывайте необработанный сигнал. Затем выпустите средство записи устройства и средство чтения файлов.
fileReader = dsp.AudioFileReader('audioPlosives.wav'); deviceWriter = audioDeviceWriter('SampleRate',fileReader.SampleRate); while ~isDone(fileReader) audioIn = fileReader(); deviceWriter(audioIn); end release(deviceWriter) release(fileReader)
Спроектируйте фильтр highpass с крутым спадом всех частот ниже 120 Гц. Используйте dsp.BiquadFilter
возразите, чтобы реализовать highpass создание фильтра. Создайте перекрестный фильтр с одним перекрестным соединением на уровне 250 Гц. Перекрестный фильтр позволяет вам разделить представляющую интерес полосу для обработки. Создайте компрессор динамического диапазона, чтобы сжать динамический диапазон звуков plosive. Чтобы не применить усиление состава, установите MakeUpGainMode
к "Property"
и используйте MakeUpGain
на 0 дБ по умолчанию значение свойства. Создайте осциллограф времени, чтобы визуализировать обработанный и необработанный звуковой сигнал.
[B,A] = designVarSlopeFilter(48,120/(fileReader.SampleRate/2),"hi"); biquadFilter = dsp.BiquadFilter( ... "SOSMatrixSource","Input port", ... "ScaleValuesInputPort",false); crossFilt = crossoverFilter( ... "SampleRate",fileReader.SampleRate, ... "NumCrossovers",1, ... "CrossoverFrequencies",250, ... "CrossoverSlopes",48); dRCompressor = compressor( ... "Threshold",-35, ... "Ratio",10, ... "KneeWidth",20, ... "AttackTime",1e-4, ... "ReleaseTime",3e-1, ... "MakeUpGainMode","Property", ... "SampleRate",fileReader.SampleRate); scope = timescope( ... "SampleRate",fileReader.SampleRate, ... "TimeSpanSource","property","TimeSpan",3, ... "BufferLength",fileReader.SampleRate*3*2, ... "YLimits",[-1 1], ... "ShowGrid",true, ... "ShowLegend",true, ... "ChannelNames",{'Original','Processed'});
В цикле аудиопотока:
Читайте в системе координат звукового файла.
Примените highpass, фильтрующий использование вашего фильтра biquad.
Разделите звуковой сигнал в две полосы.
Примените сжатие динамического диапазона к нижней полосе.
Сделайте ремикс каналов.
Запишите обработанный звуковой сигнал в свое аудио устройство для слушания.
Визуализируйте обработанные и необработанные сигналы на осциллографе времени.
Как лучшая практика, выпустите свои объекты, однажды сделанные.
while ~isDone(fileReader) audioIn = fileReader(); audioIn = biquadFilter(audioIn,B,A); [band1,band2] = crossFilt(audioIn); band1compressed = dRCompressor(band1); audioOut = band1compressed + band2; deviceWriter(audioOut); scope([audioIn audioOut]) end
Как лучшая практика, выпустите свои объекты, однажды сделанные.
release(deviceWriter) release(fileReader) release(crossFilt) release(dRCompressor) release(scope)
Создайте dsp.AudioFileReader
читать в покадровом аудио. Создайте audioDeviceWriter
записать аудио в вашу звуковую карту. Создайте compressor
обработать аудиоданные. Вызовите visualize
построить статическую характеристику compressor
.
frameLength = 1024; fileReader = dsp.AudioFileReader('RockDrums-44p1-stereo-11secs.mp3', ... 'SamplesPerFrame',frameLength); deviceWriter = audioDeviceWriter('SampleRate',fileReader.SampleRate); dRC = compressor('SampleRate',fileReader.SampleRate); visualize(dRC)
Создайте timescope
визуализировать исходное и обработанное аудио.
scope = timescope( ... 'SampleRate',fileReader.SampleRate, ... 'TimeSpanSource','property',... 'TimeSpan',1, ... 'BufferLength',fileReader.SampleRate*4, ... 'YLimits',[-1,1], ... 'TimeSpanOverrunAction','Scroll', ... 'ShowGrid',true, ... 'LayoutDimensions',[2,1], ... 'NumInputPorts',2, ... 'Title','Original vs. Compressed Audio (top) and Compressor Gain in dB (bottom)'); scope.ActiveDisplay = 2; scope.YLimits = [-4,0]; scope.YLabel = 'Gain (dB)';
Вызовите parameterTuner
открыть пользовательский интерфейс для настроек параметров компрессора при потоковой передаче.
parameterTuner(dRC)
В цикле аудиопотока:
Читайте в системе координат аудио из файла.
Примените сжатие динамического диапазона.
Запишите систему координат аудио к вашему аудио устройству для слушания.
Визуализируйте исходное аудио, обработанное аудио и примененное усиление.
В то время как потоковая передача, настройки параметров компрессора динамического диапазона и слушает эффект.
while ~isDone(fileReader) audioIn = fileReader(); [audioOut,g] = dRC(audioIn); deviceWriter(audioOut); scope([audioIn(:,1),audioOut(:,1)],g(:,1)); drawnow limitrate % required to update parameter end
Как лучшая практика, выпустите свои объекты, однажды сделанные.
release(deviceWriter) release(fileReader) release(dRC) release(scope)
Используйте вход EnableSidechain compressor
объект снизить амплитудный уровень отдельного звукового сигнала. Сигнал боковой цепи управляет сжатием на входном звуковом сигнале. Когда сигнал боковой цепи превышает Порог компрессора, компрессор активирует и уменьшает амплитуду входного сигнала. Когда уровень сигнала боковой цепи падает ниже порога, аудиовход возвращается к своей несжатой амплитуде.
Подготовьте звуковые файлы
В этом разделе вы передискретизируете и нулевая клавиатура речевой файл, чтобы использовать в качестве входа к EnableSidechain
свойство вашего compressor
объект.
Читайте в звуковом сигнале. Передискретизируйте его, чтобы совпадать с частотой дискретизации входного звукового сигнала (44,1 кГц).
targetFs = 44100;
[originalSpeech,originalFs] = audioread('Rainbow-16-8-mono-114secs.wav');
resampledSpeech = resample(originalSpeech,targetFs,originalFs);
Заполните начало передискретизируемого сигнала с ценностью 10 секунд нулей. Это позволяет входному звуковому сигналу быть ясно услышанным, прежде чем любое сжатие будет применено.
resampledSpeech = [zeros(10*targetFs,1);resampledSpeech];
Нормируйте амплитуду, чтобы избежать потенциального усечения.
resampledSpeech = resampledSpeech ./ max(resampledSpeech);
Запишите передискретизируемый, дополненный нулем, и нормированный сигнал боковой цепи в файл.
audiowrite('resampledSpeech.wav',resampledSpeech,targetFs);
Создайте аудио объекты
Создайте dsp.AudioFileReader
объект для входа и сигналов боковой цепи. Используя свойство ReadRange AudioFileReader
, выберите второй стих входного сигнала и первые 26,5 секунд сигнала боковой цепи для воспроизведения. Чтобы позволить скрипту запускаться неопределенно, измените playbackCount
переменная из 1
к Inf
.
inputAudio = 'SoftGuitar-44p1_mono-10mins.ogg'; sidechainAudio = 'resampledSpeech.wav'; playbackCount = 1; inputAudioAFR = dsp.AudioFileReader(inputAudio,'PlayCount',playbackCount,'ReadRange',... [115*targetFs round(145.4*targetFs)]); sidechainAudioAFR = dsp.AudioFileReader(sidechainAudio,'PlayCount',playbackCount,... 'ReadRange',[1 round(26.5*targetFs)]);
Создайте compressor
объект. Используйте высокое Отношение, быстрый AttackTime и умеренно медленный ReleaseTime. Эти настройки идеальны для голоса за кадром, работают. Быстрое время атаки гарантирует, что входное аудио сжато почти сразу после того, как сигнал боковой цепи превосходит компрессор threshold.
Медленное время релиза гарантирует, что сжатие на входном аудио длится через любые потенциальные короткие тихие области в сигнале боковой цепи.
iAmYourCompressor = compressor('EnableSidechain',true,... 'SampleRate',targetFs,... 'Threshold',-40,... 'Ratio',8,... 'AttackTime',0.01,... 'ReleaseTime',1.5);
Создайте audioDeviceWriter
возразите, чтобы проигрывать боковую цепь и входные сигналы.
afw = audioDeviceWriter;
Создайте timescope
возразите, чтобы просмотреть несжатый входной сигнал, сигнал боковой цепи, а также сжатый входной сигнал.
scope = timescope('NumInputPorts',3,... 'SampleRate',targetFs,... 'TimeSpanSource','property',... 'TimeSpan',5,... 'TimeDisplayOffset',0,... 'LayoutDimensions',[3 1],... 'BufferLength',targetFs*15,... 'TimeSpanOverrunAction','Scroll',... 'YLimits',[-1 1],... 'ShowGrid',true,... 'Title','Uncompressed Input Audio - Guitar'); scope.ActiveDisplay = 2; scope.YLimits = [-1 1]; scope.Title = 'Sidechain Audio - Speech'; scope.ShowGrid = true; scope.ActiveDisplay = 3; scope.YLimits = [-1 1]; scope.ShowGrid = true; scope.Title = 'Compressed Input Audio - Guitar';
Создайте цикл потоковой передачи аудио
Читайте в системе координат аудио от вашего входа и сигналов боковой цепи. Обработайте свой вход и сигналы боковой цепи с вашим compressor
объект. Воспроизведите свои обработанные звуковые сигналы и отобразите аудиоданные с помощью timescope
объект.
Верхняя панель вашего timescope
отображает несжатый входной звуковой сигнал, и средняя панель отображает звуковой сигнал боковой цепи. Нижняя панель отображает сжатый входной звуковой сигнал. Заметьте, что амплитуды сигналов в верхних и нижних панелях идентичны, пока сигнал боковой цепи не начинается. Если сигнал боковой цепи активируется, амплитуда сигнала в нижней панели сжата. Однажды концы сигнала боковой цепи, амплитуда сигнала в нижней панели начинает возвращаться к своему несжатому уровню.
while ~isDone(inputAudioAFR) inputAudioFrame = inputAudioAFR(); sideChainAudioFrame = sidechainAudioAFR(); compressorOutput = iAmYourCompressor(inputAudioFrame,sideChainAudioFrame); afw(sideChainAudioFrame+compressorOutput); scope(inputAudioFrame,sideChainAudioFrame,compressorOutput); end
Выпустите свои объекты.
release(inputAudioAFR) release(sidechainAudioAFR) release(iAmYourCompressor) release(afw) release(scope)
compressor
Системный объект обрабатывает кадр сигнала системой координат и поэлементно.
N - сигнал точки, x [n], преобразован в децибелы:
ДБ x [n] проходит через компьютер усиления. Компьютер усиления использует свойства статической характеристики компрессора динамического диапазона ослабить усиление, которое является выше порога.
Если вы задали мягкое колено, компьютер усиления имеет следующую статическую характеристику:
где T является порогом, R является отношением, и W является шириной колена.
Если вы задали твердое колено, компьютер усиления имеет следующую статическую характеристику:
Вычисленное усиление, g c [n], вычисляется как
g c [n] сглаживается с помощью заданных свойств времени нападения и релиза:
Коэффициент времени атаки, α A , вычисляется как
Коэффициент времени релиза, α R , вычисляется как
TA
является периодом времени атаки, заданным AttackTime
свойство. T R
является периодом времени релиза, заданным ReleaseTime
свойство. Fs является входной частотой дискретизации, заданной SampleRate
свойство.
Если MakeUpGainMode
установлен в 'Auto'
по умолчанию, усиление состава вычисляется как отрицание вычисленного усиления для входа на 0 дБ,
Учитывая установившийся вход 0 дБ, эта настройка достигает установившегося выхода 0 дБ. Усиление состава определяется Threshold
, Ratio
, и KneeWidth
свойства. Это не зависит от входного сигнала.
Усиление состава, M, добавляется к сглаживавшему усилению, g s [n]:
Расчетное усиление в дБ, g m [n], переводится в линейную область:
Выход компрессора динамического диапазона дан как
[1] Giannoulis, Димитриос, Михаэль Массберг и Джошуа Д. Рейсс. "Цифровой Проект Компрессора Динамического диапазона – Пример и Анализ". Журнал Общества звукоинженеров. Издание 60, Выпуск 6, 2012, стр 399–408.
Указания и ограничения по применению:
Системные объекты в Генерации кода MATLAB (MATLAB Coder)
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.