本文主要是介绍Dynamic range compression (RMS Limit),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Dynamic range compression (RMS Limit)
- Overview
- Limiting
- Algorithm
- Program
Overview
- 背景 : 人类的听感动态范围[能承受的最大响度和能感受的最安静声音响度的范围可达100万:1(即106倍)] 达120dB。扩声系统声音重放的动态范围由于受电子设备的限制,远比人耳的动态范围小很多。最低声音的响度受系统中不相关噪声的限制,使小的声音信号淹没在噪声中而无法听到;最大声音的响度受信号削波失真,而且信号削波后产生大量谐波,损坏扬声器单元(尤其是高音扬声器)。为此,在控制信号动态范围中,音量动态平衡器得到了广泛的应用。简单地说,它是一种限制音频信号动态范围的电子装置,把安静的小信号变得更响,把高幅度的尖峰信号变得更小些,并且不产生信号削波,保护扬声器和功放免受冲击和损坏。
- 动态范围压缩特点:(1) 限制了音乐信号中极大的峰值信号,保护扬声器系统和功放系统免受损坏;(2) 可获得更大的声音增益,因为压低了信号峰值,可使节目信号中的其他幅度较小的信号得到充分的提升;(3) 使音频中的小信号不会落到调音台的噪声中去,提高了节目信号的信噪比;(4) 如果这些装置中的四个基本参数(门槛电平、压缩比、动作时间和释放时间) 调整得不适当时,会出现“泵浦声”、“呼吸声”或根本没法对信号的动态范围进行控制。
Limiting
- 不同的参数压缩的理论效果图如下
- 实际调试的效果图如下
Algorithm
-
一阶滞后滤波算法公式:S(n) = αS(n-1) + (1 - α)G;
-
压缩时间根据α的大小变化,α最小可以设置成1,这样压缩时间为0;
-
原理图示如下:
-
Root Mean Square R M S = 1 n x 1 2 + x 2 2 + . . . x n 2 2 RMS=\sqrt[2]{{\frac1n}{x_1^2+x_2^2+...x_n^2}} RMS=2n1x12+x22+...xn2
This caculation is used to get a mean value over a buffer of 512 frames. A frame is
defined as one float per channel of sound. That can later be used to get a smoother
compression. -
Gain X d B = 20 ⋅ log 10 ( R M S ) X_{dB} = 20 · \log_{10}(RMS) XdB=20⋅log10(RMS)
Using the RMS result, it can be converted to the logarithmic plane,it have soft knee.
X s c = { X d B X d B < ( T − W 2 ) X d B + ( 1 R − 1 ) ( X d B − T + W 2 ) 2 2 W ( T − W 2 ) ≤ X d B < ( T + W 2 ) T + X d B − T R X d B > ( T + W 2 ) X_{sc}=\left\{ \begin{array}{rcl} X_{dB} & & {X_{dB} < (T - \frac W2)}\\ X_{dB} +\frac{(\frac1R-1)(X_{dB}-T+\frac W2)^2}{2W} & & {(T - \frac W2) \leq X_{dB} < (T + \frac W2)}\\ T +\frac{X_{dB}-T}{R} & & {X_{dB} >(T + \frac W2)} \end{array} \right. Xsc=⎩⎪⎨⎪⎧XdBXdB
这篇关于Dynamic range compression (RMS Limit)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!