]> git.sesse.net Git - nageru/commitdiff
Move the limiter after the compressor; since it is not the prettiest limiter out...
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Mon, 9 Nov 2015 22:02:29 +0000 (23:02 +0100)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Mon, 9 Nov 2015 22:02:29 +0000 (23:02 +0100)
mixer.cpp
ui_mainwindow.ui

index 8ccd7fa0e5d71fbe24a26fd0e8c47b8092df5044..0e362f069395874c837dac1bf732c9e1d32d25a0 100644 (file)
--- 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.
index be10d9bf6d9a17b854f63db9dab45f0d9e32b3db..858771ee98f166ab3bc121bab17260b771379a6b 100644 (file)
           </property>
          </widget>
         </item>
-        <item row="3" column="2">
+        <item row="3" column="3">
          <widget class="QCheckBox" name="limiter_enabled">
           <property name="text">
            <string>Enabled</string>
           </property>
          </widget>
         </item>
-        <item row="1" column="2">
+        <item row="1" column="3">
          <widget class="QDial" name="limiter_threshold_knob">
           <property name="minimumSize">
            <size>
           </property>
          </widget>
         </item>
-        <item row="0" column="2">
+        <item row="0" column="3">
          <widget class="QLabel" name="limiter_threshold_label">
           <property name="text">
            <string>Limiter threshold</string>
           </property>
          </widget>
         </item>
-        <item row="2" column="2">
+        <item row="2" column="3">
          <widget class="QLabel" name="limiter_threshold_db_display">
           <property name="text">
            <string>-14.0 dB</string>
           </property>
          </widget>
         </item>
-        <item row="1" column="3">
+        <item row="1" column="2">
          <widget class="QDial" name="compressor_threshold_knob">
           <property name="minimumSize">
            <size>
           </property>
          </widget>
         </item>
-        <item row="0" column="3">
+        <item row="0" column="2">
          <widget class="QLabel" name="compressor_threshold_label">
           <property name="text">
            <string>Compr. threshold</string>
           </property>
          </widget>
         </item>
-        <item row="2" column="3">
+        <item row="2" column="2">
          <widget class="QLabel" name="compressor_threshold_db_display">
           <property name="text">
            <string>-26.0 dB</string>
           </property>
          </widget>
         </item>
-        <item row="3" column="3">
+        <item row="3" column="2">
          <widget class="QCheckBox" name="compressor_enabled">
           <property name="text">
            <string>Enabled</string>