From bc7b6954cc294b1b26e5ef3409e39e6443ff120d Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Mon, 9 Nov 2015 23:02:29 +0100 Subject: [PATCH] Move the limiter after the compressor; since it is not the prettiest limiter out there, this seems to give better results. Again tuned by ear. --- mixer.cpp | 25 ++++++++++++------------- ui_mainwindow.ui | 16 ++++++++-------- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/mixer.cpp b/mixer.cpp index 8ccd7fa..0e362f0 100644 --- a/mixer.cpp +++ b/mixer.cpp @@ -578,9 +578,19 @@ void Mixer::process_audio_one_frame() // float limiter_att, compressor_att; - // Then a limiter at +0 dB (so, -14 dBFS) to take out the worst peaks only. + // The real compressor. + if (compressor_enabled) { + float threshold = pow(10.0f, compressor_threshold_dbfs / 20.0f); + float ratio = 20.0f; + float attack_time = 0.005f; + float release_time = 0.040f; + float makeup_gain = 2.0f; // +6 dB. + compressor.process(samples_out.data(), samples_out.size() / 2, threshold, ratio, attack_time, release_time, makeup_gain); +// compressor_att = compressor.get_attenuation(); + } + + // Finally a limiter at -4 dB (so, -10 dBFS) to take out the worst peaks only. // Note that since ratio is not infinite, we could go slightly higher than this. - // Probably more tuning is warranted here. if (limiter_enabled) { float threshold = pow(10.0f, limiter_threshold_dbfs / 20.0f); float ratio = 30.0f; @@ -591,17 +601,6 @@ void Mixer::process_audio_one_frame() // limiter_att = limiter.get_attenuation(); } - // Finally, the real compressor. - if (compressor_enabled) { - float threshold = pow(10.0f, compressor_threshold_dbfs / 20.0f); - float ratio = 20.0f; - float attack_time = 0.005f; - float release_time = 0.040f; - float makeup_gain = 2.0f; // +6 dB. - compressor.process(samples_out.data(), samples_out.size() / 2, threshold, ratio, attack_time, release_time, makeup_gain); -// compressor_att = compressor.get_attenuation(); - } - // printf("limiter=%+5.1f compressor=%+5.1f\n", 20.0*log10(limiter_att), 20.0*log10(compressor_att)); // Upsample 4x to find interpolated peak. diff --git a/ui_mainwindow.ui b/ui_mainwindow.ui index be10d9b..858771e 100644 --- a/ui_mainwindow.ui +++ b/ui_mainwindow.ui @@ -508,7 +508,7 @@ - + Enabled @@ -518,7 +518,7 @@ - + @@ -549,7 +549,7 @@ - + Limiter threshold @@ -559,7 +559,7 @@ - + -14.0 dB @@ -569,7 +569,7 @@ - + @@ -600,14 +600,14 @@ - + Compr. threshold - + -26.0 dB @@ -617,7 +617,7 @@ - + Enabled -- 2.39.2