[SCM] calf/master: Solo buttons for multiband limiter Bug: automated bypass buttons 'move'

js at users.alioth.debian.org js at users.alioth.debian.org
Tue May 7 15:40:43 UTC 2013


The following commit has been merged in the master branch:
commit 58dfc91828359be986b062488797484245bc0a3c
Author: Markus Schmidt <schmidt at boomshop.net>
Date:   Thu Dec 8 03:39:54 2011 +0100

    Solo buttons for multiband limiter
    Bug: automated bypass buttons 'move'

diff --git a/gui/gui-multibandlimiter.xml b/gui/gui-multibandlimiter.xml
index 3fe6569..d0657db 100644
--- a/gui/gui-multibandlimiter.xml
+++ b/gui/gui-multibandlimiter.xml
@@ -157,7 +157,10 @@
                         </vbox>
                         <knob param="weight0" size="2" type="1" />
                     </hbox>
-                    
+                    <vbox expand="0" attach-x="3" attach-y="0" expand-x="0" fill-x="0" fill="0">
+                         <label param="solo0"/>
+                         <align><toggle param="solo0" shrink="1" size="1" /></align>
+                    </vbox>
                 </hbox>
             </frame>
             <frame label="LowMid Band">
@@ -182,7 +185,10 @@
                         </vbox>
                         <knob param="weight1" size="2" type="1" />
                     </hbox>
-                    
+                    <vbox expand="0" attach-x="3" attach-y="0" expand-x="0" fill-x="0" fill="0">
+                         <label param="solo1"/>
+                         <align><toggle param="solo1" shrink="1" size="1" /></align>
+                    </vbox>
                 </hbox>
             </frame>
             <frame label="HiMid Band">
@@ -207,7 +213,10 @@
                         </vbox>
                         <knob param="weight2" size="2" type="1" />
                     </hbox>
-                    
+                    <vbox expand="0" attach-x="3" attach-y="0" expand-x="0" fill-x="0" fill="0">
+                         <label param="solo2"/>
+                         <align><toggle param="solo2" shrink="1" size="1" /></align>
+                    </vbox>
                 </hbox>
             </frame>
             <frame label="High Band">
@@ -232,7 +241,10 @@
                         </vbox>
                         <knob param="weight3" size="2" type="1" />
                     </hbox>
-                    
+                    <vbox expand="0" attach-x="3" attach-y="0" expand-x="0" fill-x="0" fill="0">
+                         <label param="solo3"/>
+                         <align><toggle param="solo3" shrink="1" size="1" /></align>
+                    </vbox>
                 </hbox>
             </frame>
         </vbox>
diff --git a/src/calf/metadata.h b/src/calf/metadata.h
index 07e3053..6e974c1 100644
--- a/src/calf/metadata.h
+++ b/src/calf/metadata.h
@@ -257,6 +257,7 @@ struct multibandlimiter_metadata: public plugin_metadata<multibandlimiter_metada
            param_att0, param_att1, param_att2, param_att3,
            param_weight0, param_weight1, param_weight2, param_weight3, 
            param_release0, param_release1, param_release2, param_release3,
+           param_solo0, param_solo1, param_solo2, param_solo3,
            param_effrelease0, param_effrelease1, param_effrelease2, param_effrelease3, 
            param_count };
     PLUGIN_NAME_ID_LABEL("multiband_limiter", "multibandlimiter", "Multiband Limiter")
diff --git a/src/calf/modules_limit.h b/src/calf/modules_limit.h
index 0930b78..10273dd 100644
--- a/src/calf/modules_limit.h
+++ b/src/calf/modules_limit.h
@@ -58,6 +58,8 @@ private:
     static const int strips = 4;
     uint32_t clip_inL, clip_inR, clip_outL, clip_outR;
     int mode, mode_old;
+    bool solo[strips];
+    bool no_solo;
     float meter_inL, meter_inR, meter_outL, meter_outR;
     dsp::lookahead_limiter strip[strips];
     dsp::lookahead_limiter broadband;
diff --git a/src/custom_ctl.cpp b/src/custom_ctl.cpp
index 52dd523..5af06b4 100644
--- a/src/custom_ctl.cpp
+++ b/src/custom_ctl.cpp
@@ -724,7 +724,7 @@ calf_toggle_expose (GtkWidget *widget, GdkEventExpose *event)
     int oy = widget->allocation.y + widget->allocation.height / 2 - self->size * 10;
     int width = self->size * 30, height = self->size * 20;
 
-    gdk_draw_pixbuf(GDK_DRAWABLE(widget->window), widget->style->fg_gc[0], CALF_TOGGLE_CLASS(GTK_OBJECT_GET_CLASS(widget))->toggle_image[self->size - 1], 0, height * gtk_range_get_value(GTK_RANGE(widget)), ox, oy, width, height, GDK_RGB_DITHER_NORMAL, 0, 0);
+    gdk_draw_pixbuf(GDK_DRAWABLE(widget->window), widget->style->fg_gc[0], CALF_TOGGLE_CLASS(GTK_OBJECT_GET_CLASS(widget))->toggle_image[self->size - 1], 0, height * floor(.5 + gtk_range_get_value(GTK_RANGE(widget))), ox, oy, width, height, GDK_RGB_DITHER_NORMAL, 0, 0);
     if (gtk_widget_is_focus(widget))
     {
         gtk_paint_focus(widget->style, window, GTK_STATE_NORMAL, NULL, widget, NULL, ox, oy, width, height);
diff --git a/src/metadata.cpp b/src/metadata.cpp
index aefb9f2..c3dcd65 100644
--- a/src/metadata.cpp
+++ b/src/metadata.cpp
@@ -571,6 +571,11 @@ CALF_PORT_PROPS(multibandlimiter) = {
     { 0.f,      -1.f,         1.f,   0,  PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_COEF | PF_PROP_GRAPH, NULL, "release2", "Release 3" },
     { -0.2f,      -1.f,         1.f,   0,  PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_COEF | PF_PROP_GRAPH, NULL, "release3", "Release 4" },
     
+    { 0,           0,           1,     0,  PF_BOOL | PF_CTL_TOGGLE, NULL, "solo0", "Solo 1" },
+    { 0,           0,           1,     0,  PF_BOOL | PF_CTL_TOGGLE, NULL, "solo1", "Solo 2" },
+    { 0,           0,           1,     0,  PF_BOOL | PF_CTL_TOGGLE, NULL, "solo2", "Solo 3" },
+    { 0,           0,           1,     0,  PF_BOOL | PF_CTL_TOGGLE, NULL, "solo3", "Solo 4" },
+    
     { 1,         0.f,        1000,  0,  PF_FLOAT | PF_UNIT_MSEC | PF_PROP_OUTPUT, NULL, "effrelease0", "Effectively Release 1" },
     { 1,         0.f,        1000,  0,  PF_FLOAT | PF_UNIT_MSEC | PF_PROP_OUTPUT, NULL, "effrelease1", "Effectively Release 2" },
     { 1,         0.f,        1000,  0,  PF_FLOAT | PF_UNIT_MSEC | PF_PROP_OUTPUT, NULL, "effrelease2", "Effectively Release 3" },
diff --git a/src/modules_limit.cpp b/src/modules_limit.cpp
index 312e7b2..ba5c1e3 100644
--- a/src/modules_limit.cpp
+++ b/src/modules_limit.cpp
@@ -240,6 +240,16 @@ void multibandlimiter_audio_module::deactivate()
 
 void multibandlimiter_audio_module::params_changed()
 {
+    // determine mute/solo states
+    solo[0] = *params[param_solo0] > 0.f ? true : false;
+    solo[1] = *params[param_solo1] > 0.f ? true : false;
+    solo[2] = *params[param_solo2] > 0.f ? true : false;
+    solo[3] = *params[param_solo3] > 0.f ? true : false;
+    no_solo = (*params[param_solo0] > 0.f ||
+            *params[param_solo1] > 0.f ||
+            *params[param_solo2] > 0.f ||
+            *params[param_solo3] > 0.f) ? false : true;
+            
     mode_old = mode;
     mode = *params[param_mode];
     int i;
@@ -477,8 +487,10 @@ uint32_t multibandlimiter_audio_module::process(uint32_t offset, uint32_t numsam
                 //bufferSum += strip[i].buffer[(pos + 2) % buffer_size];
                 strip[i].process(_tmpL[i], _tmpR[i], buffer);
                 // sum up output of limiters
-                outL += _tmpL[i];
-                outR += _tmpR[i];
+                if (solo[i] || no_solo) {
+                    outL += _tmpL[i];
+                    outR += _tmpR[i];
+                }
             } // process single strip again for limiter
             float fickdich[0];
             //if(*params[param_minrel] > 0.5)

-- 
calf audio plugins packaging



More information about the pkg-multimedia-commits mailing list