5 loudness_processor loudness_r
;
6 loudness_processor loudness_l
;
8 void _loudness_set_volume(loudness_processor
*p
, float volume
) {
9 float gain
= -(volume
- config
.loudness_reference_volume_db
) * 0.5;
16 // Formula from http://www.earlevel.com/main/2011/01/02/biquad-formulas/
19 float K
= tan(M_PI
* Fc
/ Fs
);
20 float V
= pow(10.0, gain
/ 20.0);
22 float norm
= 1 / (1 + 1 / Q
* K
+ K
* K
);
23 p
->a0
= (1 + V
/ Q
* K
+ K
* K
) * norm
;
24 p
->a1
= 2 * (K
* K
- 1) * norm
;
25 p
->a2
= (1 - V
/ Q
* K
+ K
* K
) * norm
;
27 p
->b2
= (1 - 1 / Q
* K
+ K
* K
) * norm
;
30 float loudness_process(loudness_processor
*p
, float i0
) {
31 float o0
= p
->a0
* i0
+ p
->a1
* p
->i1
+ p
->a2
* p
->i2
- p
->b1
* p
->o1
- p
->b2
* p
->o2
;
42 void loudness_set_volume(float volume
) {
43 float gain
= -(volume
- config
.loudness_reference_volume_db
) * 0.5;
47 debug(2, "Volume: %.1f dB - Loudness gain @10Hz: %.1f dB", volume
, gain
);
48 _loudness_set_volume(&loudness_l
, volume
);
49 _loudness_set_volume(&loudness_r
, volume
);