[SCM] calf/master: Minor bugs, sidechain frequency display
js at users.alioth.debian.org
js at users.alioth.debian.org
Tue May 7 15:39:41 UTC 2013
The following commit has been merged in the master branch:
commit 1d2715f8db6faf0166bf58a98ff94952c636aa56
Author: Markus Schmidt <schmidt at boomshop.net>
Date: Mon Oct 26 07:12:26 2009 +0100
Minor bugs, sidechain frequency display
diff --git a/gui/gui-sidechaincompressor.xml b/gui/gui-sidechaincompressor.xml
index e2ff2d0..37bbc0c 100644
--- a/gui/gui-sidechaincompressor.xml
+++ b/gui/gui-sidechaincompressor.xml
@@ -85,8 +85,8 @@
<if cond="directlink">
<frame label="Compression">
- <vbox spacing="20">
- <vbox>
+ <vbox spacing="12">
+ <vbox spacing="8">
<label param="compression"/>
<vumeter param="compression" mode="2" hold="1.5" attach-w="2" expand="0" fill="0"/>
</vbox>
@@ -100,16 +100,12 @@
<if cond="directlink">
<frame label="Sidechain">
<vbox spacing="0">
- <hbox spacing="5" expand="0" fill="0">
- <vbox expand="0">
- <label param="sc_mode" expand="0" fill="0" />
- <combo param="sc_mode" />
- </vbox>
- <vbox expand="0">
- <label param="sc_listen" expand="0" fill="0"/>
- <toggle param="sc_listen" size="2"/>
- </vbox>
- </hbox>
+ <table rows="2" cols="2" expand="0" fill="0">
+ <label attach-x="0" attach-y="0" param="sc_mode" expand-y="0" fill-y="0" />
+ <combo attach-x="0" attach-y="1" param="sc_mode" fill-y="0" expand-y="0"/>
+ <label attach-x="1" attach-y="0" param="sc_listen" expand-y="0" fill-y="0" />
+ <toggle attach-x="1" attach-y="1" param="sc_listen" size="2" expand-y="0" fill-y="0"/>
+ </table>
<line-graph refresh="1" width="235" height="100" param="f1_freq" expand="1" fill="1" />
</vbox>
</frame>
@@ -117,10 +113,10 @@
<hbox spacing="5">
<frame label="Filter 1">
<vbox>
- <hbox spacing="5">
- <label param="f1_active" expand="1" fill="1"/>
- <led param="f1_active" mode="7" expand="1" fill="1"/>
- </hbox>
+ <table rows="1" cols="2">
+ <label attach-x="0" attach-y="0" param="f1_active" expand-x="1" fill-x="1"/>
+ <led attach-x="1" attach-y="0" param="f1_active" mode="7" fill-x="0" expand-y="0" fill-y="0"/>
+ </table>
<hbox homogeneous="1">
<vbox>
@@ -138,10 +134,10 @@
</frame>
<frame label="Filter 2">
<vbox>
- <hbox spacing="5">
- <label param="f2_active" expand="1" fill="1"/>
- <led param="f2_active" mode="7" expand="1" fill="1"/>
- </hbox>
+ <table rows="1" cols="2">
+ <label attach-x="0" attach-y="0" param="f2_active" expand-x="1" fill-x="1"/>
+ <led attach-x="1" attach-y="0" param="f2_active" mode="7" fill-x="0" expand-y="0" fill-y="0"/>
+ </table>
<hbox homogeneous="1">
<vbox>
diff --git a/src/calf/modules.h b/src/calf/modules.h
index 7933aa0..f80e683 100644
--- a/src/calf/modules.h
+++ b/src/calf/modules.h
@@ -966,7 +966,8 @@ private:
BANDPASS_2
};
float f1_freq_old, f2_freq_old, f1_level_old, f2_level_old;
- CalfScModes sc_mode;
+ float f1_freq_old1, f2_freq_old1, f1_level_old1, f2_level_old1;
+ CalfScModes sc_mode, sc_mode_old, sc_mode_old1;
float f1_active, f2_active;
uint32_t clip_in, clip_out;
float meter_in, meter_out;
@@ -979,6 +980,7 @@ public:
float *params[param_count];
uint32_t srate;
bool is_active;
+ volatile int last_generation, last_calculated_generation;
sidechaincompressor_audio_module();
void activate();
void deactivate();
@@ -998,6 +1000,8 @@ public:
return f1L.h_z(z) * f2L.h_z(z);
break;
case DEESSER_SPLIT:
+ return f2L.h_z(z);
+ break;
case DERUMBLER_SPLIT:
case BANDPASS_1:
return f1L.h_z(z);
@@ -1015,10 +1019,10 @@ public:
}
void set_sample_rate(uint32_t sr);
uint32_t process(uint32_t offset, uint32_t numsamples, uint32_t inputs_mask, uint32_t outputs_mask);
- virtual bool get_graph(int index, int subindex, float *data, int points, cairo_iface *context);
- virtual bool get_dot(int index, int subindex, float &x, float &y, int &size, cairo_iface *context);
- virtual bool get_gridline(int index, int subindex, float &pos, bool &vertical, std::string &legend, cairo_iface *context);
- virtual int get_changed_offsets(int index, int generation, int &subindex_graph, int &subindex_dot, int &subindex_gridline);
+ bool get_graph(int index, int subindex, float *data, int points, cairo_iface *context);
+ bool get_dot(int index, int subindex, float &x, float &y, int &size, cairo_iface *context);
+ bool get_gridline(int index, int subindex, float &pos, bool &vertical, std::string &legend, cairo_iface *context);
+ int get_changed_offsets(int index, int generation, int &subindex_graph, int &subindex_dot, int &subindex_gridline);
};
/// Multibandcompressor by Markus Schmidt
diff --git a/src/custom_ctl.cpp b/src/custom_ctl.cpp
index 414ba42..90f60ac 100644
--- a/src/custom_ctl.cpp
+++ b/src/custom_ctl.cpp
@@ -567,7 +567,7 @@ calf_vumeter_expose (GtkWidget *widget, GdkEventExpose *event)
// get microseconds
timeval tv;
gettimeofday(&tv, 0);
- long time = (long)tv.tv_sec * 1000 * 1000 + (long)tv.tv_usec;
+ long time = tv.tv_sec * 1000 * 1000 + tv.tv_usec;
// limit to 1.f
float value_orig = vu->value > 1.f ? 1.f : vu->value;
@@ -689,14 +689,9 @@ calf_vumeter_init (CalfVUMeter *self)
//GTK_WIDGET_SET_FLAGS (widget, GTK_NO_WINDOW);
widget->requisition.width = 50;
widget->requisition.height = 18;
- self->value = 0.5;
- self->last_hold = (long)0;
- self->last_value = 0.f;
- self->holding = false;
self->cache_surface = NULL;
- self->vumeter_falloff = 0.f;
- self->last_falloff = (long)0;
self->falling = false;
+ self->holding = false;
}
GtkWidget *
@@ -760,6 +755,16 @@ extern void calf_vumeter_set_mode(CalfVUMeter *meter, CalfVUMeterMode mode)
if (mode != meter->mode)
{
meter->mode = mode;
+ if(mode == VU_MONOCHROME_REVERSE) {
+ meter->value = 1.f;
+ meter->last_value = 1.f;
+ } else {
+ meter->value = 0.f;
+ meter->last_value = 0.f;
+ }
+ meter->vumeter_falloff = 0.f;
+ meter->last_falloff = (long)0;
+ meter->last_hold = (long)0;
gtk_widget_queue_draw(GTK_WIDGET(meter));
}
}
diff --git a/src/modules.cpp b/src/modules.cpp
index 43338f4..dd2d7b5 100644
--- a/src/modules.cpp
+++ b/src/modules.cpp
@@ -212,6 +212,171 @@ CALF_PLUGIN_INFO(multichorus) = { 0x8501, "MultiChorus", "Calf MultiChorus", "Kr
////////////////////////////////////////////////////////////////////////////
+CALF_PORT_NAMES(equalizer5band) = {"In L", "In R", "Out L", "Out R"};
+const char *rolloff_mode_names[] = {"12dB", "24dB", "36dB"};
+
+CALF_PORT_PROPS(equalizer5band) = {
+ { 1, 0, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF | PF_PROP_NOBOUNDS, NULL, "level_in", "Input" },
+ { 1, 0, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF | PF_PROP_NOBOUNDS, NULL, "level_out", "Output" },
+ { 0, 0, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "meter_in", "Input" },
+ { 0, 0, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "meter_out", "Output" },
+ { 0, 0, 1, 0, PF_FLOAT | PF_CTL_LED | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "clip_in", "0dB" },
+ { 0, 0, 1, 0, PF_FLOAT | PF_CTL_LED | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "clip_out", "0dB" },
+
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "ls_active", "active" },
+ { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "ls_level", "Level" },
+ { 200, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ | PF_PROP_GRAPH, NULL, "ls_freq", "Freq" },
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "ls_active", "active" },
+
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "hs_active", "active" },
+ { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "hs_level", "Level" },
+ { 4000, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ | PF_PROP_GRAPH, NULL, "hs_freq", "Freq" },
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "hs_active", "active" },
+
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "p1_active", "active" },
+ { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "p1_level", "Level" },
+ { 60, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ, NULL, "p1_freq", "Freq" },
+ { 1, 0, 100, 1, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "p1_q", "Q" },
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "p2_active", "active" },
+ { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "p2_level", "Level" },
+ { 120, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ, NULL, "p2_freq", "Freq" },
+ { 1, 0, 100, 1, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "p2_q", "Q" },
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "p3_active", "active" },
+ { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "p3_level", "Level" },
+ { 250, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ, NULL, "p3_freq", "Freq" },
+ { 1, 0, 100, 1, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "p3_q", "Q" },
+};
+
+CALF_PLUGIN_INFO(equalizer5band) = { 0x8501, "Equalizer5Band", "Calf Equalizer 5 Band", "Markus Schmidt", calf_plugins::calf_copyright_info, "EqualizerPlugin" };
+
+////////////////////////////////////////////////////////////////////////////
+
+CALF_PORT_NAMES(equalizer8band) = {"In L", "In R", "Out L", "Out R"};
+const char *rolloff_mode_names[] = {"12dB", "24dB", "36dB"};
+
+CALF_PORT_PROPS(equalizer8band) = {
+ { 1, 0, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF | PF_PROP_NOBOUNDS, NULL, "level_in", "Input" },
+ { 1, 0, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF | PF_PROP_NOBOUNDS, NULL, "level_out", "Output" },
+ { 0, 0, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "meter_inL", "Input L" },
+ { 0, 0, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "meter_inR", "Input R" },
+ { 0, 0, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "meter_outL", "Output L" },
+ { 0, 0, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "meter_outR", "Output R" },
+ { 0, 0, 1, 0, PF_FLOAT | PF_CTL_LED | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "clip_inL", "0dB" },
+ { 0, 0, 1, 0, PF_FLOAT | PF_CTL_LED | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "clip_inR", "0dB" },
+ { 0, 0, 1, 0, PF_FLOAT | PF_CTL_LED | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "clip_outL", "0dB" },
+ { 0, 0, 1, 0, PF_FLOAT | PF_CTL_LED | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "clip_outR", "0dB" },
+
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "hp_active", "active" },
+ { 30, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ | PF_PROP_GRAPH, NULL, "hp_freq", "Freq" },
+ { 1, 0, 2, 0, PF_ENUM | PF_CTL_COMBO, rolloff_mode_names, "hf_rolloff", "Rolloff" },
+
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "lp_active", "active" },
+ { 18000, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ | PF_PROP_GRAPH, NULL, "lp_freq", "Freq" },
+ { 1, 0, 2, 0, PF_ENUM | PF_CTL_COMBO, rolloff_mode_names, "lf_rolloff", "Rolloff" },
+
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "ls_active", "active" },
+ { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "ls_level", "Level" },
+ { 200, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ | PF_PROP_GRAPH, NULL, "ls_freq", "Freq" },
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "ls_active", "active" },
+
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "hs_active", "active" },
+ { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "hs_level", "Level" },
+ { 4000, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ | PF_PROP_GRAPH, NULL, "hs_freq", "Freq" },
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "hs_active", "active" },
+
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "p1_active", "active" },
+ { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "p1_level", "Level" },
+ { 60, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ, NULL, "p1_freq", "Freq" },
+ { 1, 0, 100, 1, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "p1_q", "Q" },
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "p2_active", "active" },
+ { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "p2_level", "Level" },
+ { 120, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ, NULL, "p2_freq", "Freq" },
+ { 1, 0, 100, 1, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "p2_q", "Q" },
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "p3_active", "active" },
+ { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "p3_level", "Level" },
+ { 250, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ, NULL, "p3_freq", "Freq" },
+ { 1, 0, 100, 1, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "p3_q", "Q" },
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "p4_active", "active" },
+ { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "p4_level", "Level" },
+ { 500, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ, NULL, "p4_freq", "Freq" },
+ { 1, 0, 100, 1, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "p4_q", "Q" },
+};
+
+CALF_PLUGIN_INFO(equalizer8band) = { 0x8501, "Equalizer8Band", "Calf Equalizer 8 Band", "Markus Schmidt", calf_plugins::calf_copyright_info, "EqualizerPlugin" };
+
+////////////////////////////////////////////////////////////////////////////
+
+CALF_PORT_NAMES(equalizer12band) = {"In L", "In R", "Out L", "Out R"};
+const char *rolloff_mode_names[] = {"12dB", "24dB", "36dB"};
+
+CALF_PORT_PROPS(equalizer12band) = {
+ { 1, 0, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF | PF_PROP_NOBOUNDS, NULL, "level_in", "Input" },
+ { 1, 0, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF | PF_PROP_NOBOUNDS, NULL, "level_out", "Output" },
+ { 0, 0, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "meter_inL", "Input L" },
+ { 0, 0, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "meter_inR", "Input R" },
+ { 0, 0, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "meter_outL", "Output L" },
+ { 0, 0, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "meter_outR", "Output R" },
+ { 0, 0, 1, 0, PF_FLOAT | PF_CTL_LED | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "clip_inL", "0dB" },
+ { 0, 0, 1, 0, PF_FLOAT | PF_CTL_LED | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "clip_inR", "0dB" },
+ { 0, 0, 1, 0, PF_FLOAT | PF_CTL_LED | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "clip_outL", "0dB" },
+ { 0, 0, 1, 0, PF_FLOAT | PF_CTL_LED | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "clip_outR", "0dB" },
+
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "hp_active", "active" },
+ { 30, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ | PF_PROP_GRAPH, NULL, "hp_freq", "Freq" },
+ { 1, 0, 2, 0, PF_ENUM | PF_CTL_COMBO, rolloff_mode_names, "hf_rolloff", "Rolloff" },
+
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "lp_active", "active" },
+ { 18000, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ | PF_PROP_GRAPH, NULL, "lp_freq", "Freq" },
+ { 1, 0, 2, 0, PF_ENUM | PF_CTL_COMBO, rolloff_mode_names, "lf_rolloff", "Rolloff" },
+
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "ls_active", "active" },
+ { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "ls_level", "Level" },
+ { 200, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ | PF_PROP_GRAPH, NULL, "ls_freq", "Freq" },
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "ls_active", "active" },
+
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "hs_active", "active" },
+ { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "hs_level", "Level" },
+ { 4000, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ | PF_PROP_GRAPH, NULL, "hs_freq", "Freq" },
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "hs_active", "active" },
+
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "p1_active", "active" },
+ { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "p1_level", "Level" },
+ { 60, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ, NULL, "p1_freq", "Freq" },
+ { 1, 0, 100, 1, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "p1_q", "Q" },
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "p2_active", "active" },
+ { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "p2_level", "Level" },
+ { 120, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ, NULL, "p2_freq", "Freq" },
+ { 1, 0, 100, 1, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "p2_q", "Q" },
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "p3_active", "active" },
+ { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "p3_level", "Level" },
+ { 250, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ, NULL, "p3_freq", "Freq" },
+ { 1, 0, 100, 1, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "p3_q", "Q" },
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "p4_active", "active" },
+ { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "p4_level", "Level" },
+ { 500, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ, NULL, "p4_freq", "Freq" },
+ { 1, 0, 100, 1, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "p4_q", "Q" },
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "p5_active", "active" },
+ { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "p5_level", "Level" },
+ { 1000, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ, NULL, "p5_freq", "Freq" },
+ { 1, 0, 100, 1, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "p5_q", "Q" },
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "p6_active", "active" },
+ { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "p6_level", "Level" },
+ { 2500, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ, NULL, "p6_freq", "Freq" },
+ { 1, 0, 100, 1, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "p6_q", "Q" },
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "p7_active", "active" },
+ { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "p7_level", "Level" },
+ { 4000, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ, NULL, "p7_freq", "Freq" },
+ { 1, 0, 100, 1, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "p7_q", "Q" },
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "p8_active", "active" },
+ { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "p8_level", "Level" },
+ { 6000, 0, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ, NULL, "p8_freq", "Freq" },
+ { 1, 0, 100, 1, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "p8_q", "Q" },
+};
+
+CALF_PLUGIN_INFO(equalizer12band) = { 0x8501, "Equalizer12Band", "Calf Equalizer 12 Band", "Markus Schmidt", calf_plugins::calf_copyright_info, "EqualizerPlugin" };
+
+////////////////////////////////////////////////////////////////////////////
+
CALF_PORT_NAMES(compressor) = {"In L", "In R", "Out L", "Out R"};
const char *compressor_detection_names[] = { "RMS", "Peak" };
@@ -246,15 +411,17 @@ CALF_PORT_NAMES(sidechaincompressor) = {"In L", "In R", "Out L", "Out R"};
const char *sidechaincompressor_detection_names[] = { "RMS", "Peak" };
const char *sidechaincompressor_stereo_link_names[] = { "Average", "Maximum" };
const char *sidechaincompressor_mode_names[] = {"Wideband (F1:off / F2:off)",
- "Deesser wide (F1:HP / F2:Bell)",
- "Deesser split (F1:HP / F2:off)",
- "Derumbler wide (F1:Bell / F2:LP)",
- "Derumbler split (F1:off / F2:LP)",
+ "Deesser wide (F1:Bell / F2:HP)",
+ "Deesser split (F1:off / F2:HP)",
+ "Derumbler wide (F1:LP / F2:Bell)",
+ "Derumbler split (F1:LP / F2:off)",
"Weighted #1 (F1:Shelf / F2:Shelf)",
"Weighted #2 (F1:Shelf / F2:Bell)",
"Weighted #3 (F1:Bell / F2:Shelf)",
"Bandpass #1 (F1:BP / F2:off)",
"Bandpass #2 (F1:HP / F2:LP)"};
+const char *sidechaincompressor_filter_choices[] = { "12dB", "24dB", "36dB"};
+
CALF_PORT_PROPS(sidechaincompressor) = {
{ 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "bypass", "Bypass" },
@@ -273,8 +440,8 @@ CALF_PORT_PROPS(sidechaincompressor) = {
{ 0, 0, 1, 0, PF_ENUM | PF_CTL_COMBO, sidechaincompressor_stereo_link_names, "stereo_link", "Stereo Link" },
{ 0, 0.03125, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_CTLO_REVERSE | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL| PF_PROP_GRAPH, NULL, "compression", "Gain Reduction" },
{ 0, 0, 9, 0, PF_ENUM | PF_CTL_COMBO, sidechaincompressor_mode_names, "sc_mode", "Sidechain Mode" },
- { 200, 10,20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ | PF_PROP_GRAPH, NULL, "f1_freq", "Freq" },
- { 4000, 10,20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ, NULL, "f2_freq", "Freq" },
+ { 250, 30,15000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ | PF_PROP_GRAPH, NULL, "f1_freq", "Freq" },
+ { 4500, 30,15000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ, NULL, "f2_freq", "Freq" },
{ 1, 0.0625, 16, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "f1_level", "Level" },
{ 1, 0.0625, 16, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "f2_level", "Level" },
{ 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "sc_listen", "S/C-Listen" },
diff --git a/src/modules_dsp.cpp b/src/modules_dsp.cpp
index b8fedfd..67c3e9b 100644
--- a/src/modules_dsp.cpp
+++ b/src/modules_dsp.cpp
@@ -688,27 +688,27 @@ void multibandcompressor_audio_module::params_changed()
// set the params of all filters
if(*params[param_freq0] != freq_old[0] or *params[param_sep0] != sep_old[0] or *params[param_q0] != q_old[0]) {
lpL0.set_lp_rbj((float)(*params[param_freq0] * (1 - *params[param_sep0])), *params[param_q0], (float)srate);
- lpR0.set_lp_rbj((float)(*params[param_freq0] * (1 - *params[param_sep0])), *params[param_q0], (float)srate);
+ lpR0.copy_coeffs(lpL0);
hpL0.set_hp_rbj((float)(*params[param_freq0] * (1 + *params[param_sep0])), *params[param_q0], (float)srate);
- hpR0.set_hp_rbj((float)(*params[param_freq0] * (1 + *params[param_sep0])), *params[param_q0], (float)srate);
+ hpR0.copy_coeffs(hpL0);
freq_old[0] = *params[param_freq0];
sep_old[0] = *params[param_sep2];
q_old[0] = *params[param_q2];
}
if(*params[param_freq1] != freq_old[1] or *params[param_sep1] != sep_old[1] or *params[param_q1] != q_old[1]) {
lpL1.set_lp_rbj((float)(*params[param_freq1] * (1 - *params[param_sep1])), *params[param_q1], (float)srate);
- lpR1.set_lp_rbj((float)(*params[param_freq1] * (1 - *params[param_sep1])), *params[param_q1], (float)srate);
+ lpR1.copy_coeffs(lpL1);
hpL1.set_hp_rbj((float)(*params[param_freq1] * (1 + *params[param_sep1])), *params[param_q1], (float)srate);
- hpR1.set_hp_rbj((float)(*params[param_freq1] * (1 + *params[param_sep1])), *params[param_q1], (float)srate);
+ hpR1.copy_coeffs(hpL1);
freq_old[1] = *params[param_freq1];
sep_old[1] = *params[param_sep2];
q_old[1] = *params[param_q2];
}
if(*params[param_freq2] != freq_old[2] or *params[param_sep2] != sep_old[2] or *params[param_q2] != q_old[2]) {
lpL2.set_lp_rbj((float)(*params[param_freq2] * (1 - *params[param_sep2])), *params[param_q2], (float)srate);
- lpR2.set_lp_rbj((float)(*params[param_freq2] * (1 - *params[param_sep2])), *params[param_q2], (float)srate);
+ lpR2.copy_coeffs(lpL2);
hpL2.set_hp_rbj((float)(*params[param_freq2] * (1 + *params[param_sep2])), *params[param_q2], (float)srate);
- hpR2.set_hp_rbj((float)(*params[param_freq2] * (1 + *params[param_sep2])), *params[param_q2], (float)srate);
+ hpR2.copy_coeffs(hpL2);
freq_old[2] = *params[param_freq2];
sep_old[2] = *params[param_sep2];
q_old[2] = *params[param_q2];
@@ -1062,6 +1062,7 @@ sidechaincompressor_audio_module::sidechaincompressor_audio_module()
{
is_active = false;
srate = 0;
+ last_generation = 0;
}
void sidechaincompressor_audio_module::activate()
@@ -1084,87 +1085,89 @@ void sidechaincompressor_audio_module::deactivate()
void sidechaincompressor_audio_module::params_changed()
{
// set the params of all filters
- if(*params[param_f1_freq] != f1_freq_old or *params[param_f1_level] != f1_level_old or *params[param_sc_mode] != sc_mode
- or *params[param_f2_freq] != f2_freq_old or *params[param_f2_level] != f2_level_old) {
+ if(*params[param_f1_freq] != f1_freq_old or *params[param_f1_level] != f1_level_old
+ or *params[param_f2_freq] != f2_freq_old or *params[param_f2_level] != f2_level_old
+ or *params[param_sc_mode] != sc_mode) {
+ float q = 0.707;
switch ((int)*params[param_sc_mode]) {
default:
case WIDEBAND:
- f1L.set_hp_rbj((float)*params[param_f1_freq], 0.707, (float)srate);
- f1R.set_hp_rbj((float)*params[param_f1_freq], 0.707, (float)srate);
- f2L.set_lp_rbj((float)*params[param_f2_freq], 0.707, (float)srate);
- f2R.set_lp_rbj((float)*params[param_f2_freq], 0.707, (float)srate);
+ f1L.set_hp_rbj((float)*params[param_f1_freq], q, (float)srate, *params[param_f1_level]);
+ f1R.copy_coeffs(f1L);
+ f2L.set_lp_rbj((float)*params[param_f2_freq], q, (float)srate, *params[param_f2_level]);
+ f2R.copy_coeffs(f2L);
f1_active = 0.f;
f2_active = 0.f;
break;
case DEESSER_WIDE:
- f1L.set_hp_rbj((float)*params[param_f1_freq], 0.707, (float)srate);
- f1R.set_hp_rbj((float)*params[param_f1_freq], 0.707, (float)srate);
- f2L.set_peakeq_rbj((float)*params[param_f2_freq], 0.707, *params[param_f2_level], (float)srate);
- f2R.set_peakeq_rbj((float)*params[param_f2_freq], 0.707, *params[param_f2_level], (float)srate);
+ f1L.set_hp_rbj((float)*params[param_f1_freq], q, (float)srate, *params[param_f1_level]);
+ f1R.copy_coeffs(f1L);
+ f2L.set_peakeq_rbj((float)*params[param_f2_freq], q, *params[param_f2_level], (float)srate);
+ f2R.copy_coeffs(f2L);
f1_active = 1.f;
f2_active = 0.5f;
break;
case DEESSER_SPLIT:
- f1L.set_hp_rbj((float)*params[param_f1_freq] * (1 - 0.17), 0.707, (float)srate);
- f1R.set_hp_rbj((float)*params[param_f1_freq] * (1 - 0.17), 0.707, (float)srate);
- f2L.set_lp_rbj((float)*params[param_f1_freq] * (1 + 0.17), 0.707, (float)srate);
- f2R.set_lp_rbj((float)*params[param_f1_freq] * (1 + 0.17), 0.707, (float)srate);
- f1_active = 1.f;
- f2_active = 0.f;
+ f2L.set_hp_rbj((float)*params[param_f2_freq] * (1 - 0.17), q, (float)srate, *params[param_f1_level]);
+ f2R.copy_coeffs(f1L);
+ f1L.set_lp_rbj((float)*params[param_f2_freq] * (1 + 0.17), q, (float)srate);
+ f1R.copy_coeffs(f2L);
+ f2_active = 1.f;
+ f1_active = 0.f;
break;
case DERUMBLER_WIDE:
- f1L.set_lp_rbj((float)*params[param_f1_freq], 0.707, (float)srate);
- f1R.set_lp_rbj((float)*params[param_f1_freq], 0.707, (float)srate);
- f2L.set_peakeq_rbj((float)*params[param_f2_freq], 0.707, *params[param_f2_level], (float)srate);
- f2R.set_peakeq_rbj((float)*params[param_f2_freq], 0.707, *params[param_f2_level], (float)srate);
- f1_active = 1.f;
- f2_active = 0.5f;
+ f1L.set_peakeq_rbj((float)*params[param_f1_freq], q, *params[param_f1_level], (float)srate);
+ f1R.copy_coeffs(f1L);
+ f2L.set_lp_rbj((float)*params[param_f2_freq], q, (float)srate, *params[param_f2_level]);
+ f2R.copy_coeffs(f2L);
+ f1_active = 0.5f;
+ f2_active = 1.f;
break;
case DERUMBLER_SPLIT:
- f1L.set_lp_rbj((float)*params[param_f1_freq] * (1 + 0.17), 0.707, (float)srate);
- f1R.set_lp_rbj((float)*params[param_f1_freq] * (1 + 0.17), 0.707, (float)srate);
- f2L.set_hp_rbj((float)*params[param_f1_freq] * (1 - 0.17), 0.707, (float)srate);
- f2R.set_hp_rbj((float)*params[param_f1_freq] * (1 - 0.17), 0.707, (float)srate);
- f1_active = 1.f;
+ f2L.set_hp_rbj((float)*params[param_f1_freq] * (1 - 0.17), q, (float)srate);
+ f2R.copy_coeffs(f1L);
+ f1L.set_lp_rbj((float)*params[param_f1_freq] * (1 + 0.17), q, (float)srate, *params[param_f2_level]);
+ f1R.copy_coeffs(f2L);
f2_active = 0.f;
+ f1_active = 1.f;
break;
case WEIGHTED_1:
- f1L.set_lowshelf_rbj((float)*params[param_f1_freq], 0.707, *params[param_f1_level], (float)srate);
- f1R.set_lowshelf_rbj((float)*params[param_f1_freq], 0.707, *params[param_f1_level], (float)srate);
- f2L.set_highshelf_rbj((float)*params[param_f2_freq], 0.707, *params[param_f2_level], (float)srate);
- f2R.set_highshelf_rbj((float)*params[param_f2_freq], 0.707, *params[param_f2_level], (float)srate);
+ f1L.set_lowshelf_rbj((float)*params[param_f1_freq], q, *params[param_f1_level], (float)srate);
+ f1R.copy_coeffs(f1L);
+ f2L.set_highshelf_rbj((float)*params[param_f2_freq], q, *params[param_f2_level], (float)srate);
+ f2R.copy_coeffs(f2L);
f1_active = 0.5f;
f2_active = 0.5f;
break;
case WEIGHTED_2:
- f1L.set_lowshelf_rbj((float)*params[param_f1_freq], 0.707, *params[param_f1_level], (float)srate);
- f1R.set_lowshelf_rbj((float)*params[param_f1_freq], 0.707, *params[param_f1_level], (float)srate);
- f2L.set_peakeq_rbj((float)*params[param_f2_freq], 0.707, *params[param_f2_level], (float)srate);
- f2R.set_peakeq_rbj((float)*params[param_f2_freq], 0.707, *params[param_f2_level], (float)srate);
+ f1L.set_lowshelf_rbj((float)*params[param_f1_freq], q, *params[param_f1_level], (float)srate);
+ f1R.copy_coeffs(f1L);
+ f2L.set_peakeq_rbj((float)*params[param_f2_freq], q, *params[param_f2_level], (float)srate);
+ f2R.copy_coeffs(f2L);
f1_active = 0.5f;
f2_active = 0.5f;
break;
case WEIGHTED_3:
- f1L.set_peakeq_rbj((float)*params[param_f1_freq], 0.707, *params[param_f1_level], (float)srate);
- f1R.set_peakeq_rbj((float)*params[param_f1_freq], 0.707, *params[param_f1_level], (float)srate);
- f2L.set_highshelf_rbj((float)*params[param_f2_freq], 0.707, *params[param_f2_level], (float)srate);
- f2R.set_highshelf_rbj((float)*params[param_f2_freq], 0.707, *params[param_f2_level], (float)srate);
+ f1L.set_peakeq_rbj((float)*params[param_f1_freq], q, *params[param_f1_level], (float)srate);
+ f1R.copy_coeffs(f1L);
+ f2L.set_highshelf_rbj((float)*params[param_f2_freq], q, *params[param_f2_level], (float)srate);
+ f2R.copy_coeffs(f2L);
f1_active = 0.5f;
f2_active = 0.5f;
break;
case BANDPASS_1:
- f1L.set_bp_rbj((float)*params[param_f1_freq], 0.707, *params[param_f1_level], (float)srate);
- f1R.set_bp_rbj((float)*params[param_f1_freq], 0.707, *params[param_f1_level], (float)srate);
- f2L.set_highshelf_rbj((float)*params[param_f2_freq], 0.707, *params[param_f2_level], (float)srate);
- f2R.set_highshelf_rbj((float)*params[param_f2_freq], 0.707, *params[param_f2_level], (float)srate);
+ f1L.set_bp_rbj((float)*params[param_f1_freq], q, (float)srate, *params[param_f1_level]);
+ f1R.copy_coeffs(f1L);
+ f2L.set_highshelf_rbj((float)*params[param_f2_freq], q, *params[param_f2_level], (float)srate);
+ f2R.copy_coeffs(f2L);
f1_active = 1.f;
f2_active = 0.f;
break;
case BANDPASS_2:
- f1L.set_hp_rbj((float)*params[param_f1_freq], 0.707, (float)srate);
- f1R.set_hp_rbj((float)*params[param_f1_freq], 0.707, (float)srate);
- f2L.set_lp_rbj((float)*params[param_f2_freq], 0.707, (float)srate);
- f2R.set_lp_rbj((float)*params[param_f2_freq], 0.707, (float)srate);
+ f1L.set_hp_rbj((float)*params[param_f1_freq], q, (float)srate, *params[param_f1_level]);
+ f1R.copy_coeffs(f1L);
+ f2L.set_lp_rbj((float)*params[param_f2_freq], q, (float)srate, *params[param_f2_level]);
+ f2R.copy_coeffs(f2L);
f1_active = 1.f;
f2_active = 1.f;
break;
@@ -1244,35 +1247,41 @@ uint32_t sidechaincompressor_audio_module::process(uint32_t offset, uint32_t num
case WEIGHTED_3:
case BANDPASS_2:
leftSC = f2L.process(f1L.process(leftSC));
- rightSC = f2L.process(f1L.process(rightSC));
+ rightSC = f2R.process(f1R.process(rightSC));
leftMC = leftSC;
rightMC = rightSC;
compressor.process(leftAC, rightAC, leftSC, rightSC);
break;
case DEESSER_SPLIT:
+ leftSC = f2L.process(leftSC);
+ rightSC = f2R.process(rightSC);
+ leftMC = leftSC;
+ rightMC = rightSC;
+ compressor.process(leftSC, rightSC, leftSC, rightSC);
+ leftAC = f1L.process(leftAC);
+ rightAC = f1R.process(rightAC);
+ leftAC += leftSC;
+ rightAC += rightSC;
+ break;
case DERUMBLER_SPLIT:
leftSC = f1L.process(leftSC);
- rightSC = f1L.process(rightSC);
+ rightSC = f1R.process(rightSC);
leftMC = leftSC;
rightMC = rightSC;
compressor.process(leftSC, rightSC, leftSC, rightSC);
leftAC = f2L.process(leftAC);
- rightAC = f2L.process(rightAC);
+ rightAC = f2R.process(rightAC);
leftAC += leftSC;
rightAC += rightSC;
break;
case BANDPASS_1:
leftSC = f1L.process(leftSC);
- rightSC = f1L.process(rightSC);
+ rightSC = f1R.process(rightSC);
leftMC = leftSC;
rightMC = rightSC;
compressor.process(leftAC, rightAC, leftSC, rightSC);
break;
}
- f1L.sanitize();
- f1R.sanitize();
- f2L.sanitize();
- f2R.sanitize();
if(*params[param_sc_listen] > 0.f) {
outL = leftMC;
@@ -1300,6 +1309,11 @@ uint32_t sidechaincompressor_audio_module::process(uint32_t offset, uint32_t num
// next sample
++offset;
} // cycle trough samples
+ f1L.sanitize();
+ f1R.sanitize();
+ f2L.sanitize();
+ f2R.sanitize();
+
}
// draw meters
if(params[param_clip_in] != NULL) {
@@ -1368,6 +1382,31 @@ int sidechaincompressor_audio_module::get_changed_offsets(int index, int generat
return false;
if(index == param_compression) {
return compressor.get_changed_offsets(generation, subindex_graph, subindex_dot, subindex_gridline);
+ } else {
+ // (fabs(inertia_cutoff.get_last() - old_cutoff) + 100 * fabs(inertia_resonance.get_last() - old_resonance) + fabs(*params[par_mode] - old_mode) > 0.1f)
+ if (*params[param_f1_freq] != f1_freq_old1
+ or *params[param_f2_freq] != f2_freq_old1
+ or *params[param_f1_level] != f1_level_old1
+ or *params[param_f2_level] != f2_level_old1
+ or *params[param_sc_mode] !=sc_mode_old1)
+ {
+ f1_freq_old1 = *params[param_f1_freq];
+ f2_freq_old1 = *params[param_f2_freq];
+ f1_level_old1 = *params[param_f1_level];
+ f2_level_old1 = *params[param_f2_level];
+ sc_mode_old1 = (CalfScModes)*params[param_sc_mode];
+ last_generation++;
+ subindex_graph = 0;
+ subindex_dot = INT_MAX;
+ subindex_gridline = INT_MAX;
+ }
+ else {
+ subindex_graph = 0;
+ subindex_dot = subindex_gridline = generation ? INT_MAX : 0;
+ }
+ if (generation == last_calculated_generation)
+ subindex_graph = INT_MAX;
+ return last_generation;
}
return false;
}
--
calf audio plugins packaging
More information about the pkg-multimedia-commits
mailing list