mirror of
https://github.com/radio95-rnt/fm95.git
synced 2026-07-30 08:19:14 +02:00
change bs412 implementation
This commit is contained in:
+12
-6
@@ -48,12 +48,18 @@ float bs412_compress(BS412Compressor* mpx, float sample) {
|
|||||||
mpx->average_counter = 1;
|
mpx->average_counter = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
float gain_target = powf(10.0f, (mpx->target - modulation_power) / 20.0f);
|
if (modulation_power > mpx->target) {
|
||||||
if (gain_target > mpx->gain) {
|
float excess_power = modulation_power - mpx->target;
|
||||||
mpx->gain = mpx->gain * mpx->attack + (1.0f - mpx->attack) * gain_target;
|
|
||||||
} else {
|
if (excess_power > 0.0f && excess_power < 10.0f) {
|
||||||
mpx->gain = mpx->gain * mpx->release + (1.0f - mpx->release) * gain_target;
|
float target_gain = dbr_to_deviation(-excess_power) / config.mpx_deviation;
|
||||||
}
|
|
||||||
|
target_gain = fmaxf(target_gain, 0.1f);
|
||||||
|
target_gain = fminf(target_gain, 1.0f);
|
||||||
|
|
||||||
|
mpx->gain = mpx->attack * mpx->gain + (1 - mpx->attack) * target_gain;
|
||||||
|
}
|
||||||
|
} else mpx->gain = fminf(1.0f, mpx->release * mpx->gain + (1 - mpx->release) * 1.0f);
|
||||||
|
|
||||||
mpx->gain = fminf(mpx->max, mpx->gain);
|
mpx->gain = fminf(mpx->max, mpx->gain);
|
||||||
mpx->gain = fmaxf(0.0f, mpx->gain);
|
mpx->gain = fmaxf(0.0f, mpx->gain);
|
||||||
|
|||||||
Reference in New Issue
Block a user