[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