ГОСТ Р 53556.5—2013
Расположения этихобластей определяются контрольными значениями
thresh, loknee. hiknee.
и
ratio,
thresh
минимальный уровень вдецибелах, который будет возможен. Для подавления шума это зна
чение будет больше, чем
nfioor.
loknee
и
hiknee
являются значениями в децибелах, которые определяют, где начнется сжатие или
расширение. Они устанавливают границы излома кривой, присоединяющейся к кривой без изменений и
кривой сжатия/расширения с более высокой амплитудой.
ratio,
данное в дБ. определяет сжатие выше излома. Это определяет изменение выходной мощно
сти для изменения на 1 дБ.
Ratio,
оцененое на 1 дБ выше результата в сжатии, приводит к большему
сжатию.
Параметры кода операции сжатия
nfioor. thresh, loknee.
и
hiknee
определяются для базового кода
операции
dbamp
вдецибелах.
При инициализации должно быть выделено место для двух буферов
xdly
и
compdly.
Длина в выбор
ках этих буферов будет
SR
*
look,
где
SR
является частотой дискретизации оркестра. Начальные значения
обоих буферов будутобнулены.
Место выделяется для следующих переменных:
gain
— амплитудный множитель, который будет применен.
change
— предполагаемое изменение огибающей от выборки до выборки.
сотрЛ
— текущее значение
сотр.
дБ.
сотр2
— значение
сотр
(от
compdelay),
дБ, инициализированное для того чтобы обнулить.
env
— текущая оценка огибающей.
projEnv—
спроектированное значение огибающей.
При каждом обрашении к
compressor
(), происходит следующее.
1. Выборка
х
помещается в начало буфера
xdly.
Все значения отодвигаются в конец и сохраняются
как
oldval.
2.
Следующее значение огибающей вычисляется так:
abs(comp)
конвертируют вдецебелы. Это значение называется
compl
сотр\
= 90 ♦ 20log10
(abs (сотр))
Это значение помещается в конец буфера
compdly.
Значение
сотр2
используется в начале буфера
compdly.
if(сотр2 >env)
chango
=
(сотр2
-
env)/(SR
*
att):
else {
projEnv = max(change
*
SR
*
look, nfioor)
if((comp1 >projEnv) &&
(comp2 > comply
change
=
(comp-\
-
comp2)/(SR
*
rel):
else
change
= 0;
1
}
env = maxfenv + change, nfioor).
3. Амплитудный множителя
gain
вычисляется следующим образом:
если (
env <thresh).
gain сначала
уменьшается равномерно от 1 до 0 и затем, оставаясь в 0. перемещается от
thresh
к
nfioor,
чтобы создать подавление шума. Точная кривая ввода — вывода в этом интервале не
нормирована.
else {
if (env
<=
loknee)
gain
= 1;
else if (env
>=
hiknee)
gain
должно быть вычислено так. чтобы выше
hiknee
увеличение
ratio
во входной мощности на 1дБ
привело к увеличению на 1дБ в выходной мощности. Кривая ввода/вывода в децибелах должна быть
непрерывной в
hiknee
или с кривой излома.
else
gain
должно быть гладко интерполировано между точками
loknee
и
hiknee
так чтобы создать кривую
ввода-вывода с гладким изломом. Эта кривая должна монотонно увеличиваться и иметь непрерывную
производную, равную 1 в
loknee
и
/ratio
в
hiknee.
}
4. Выходное значение кода операции должно быть
oldval.
умноженным на
gain.
59