[SCM] calf/master: + Organ: make filter 1 switchable between lowpass and highpass

js at users.alioth.debian.org js at users.alioth.debian.org
Tue May 7 15:39:30 UTC 2013


The following commit has been merged in the master branch:
commit 89a371c649ec8cb83a633750327e77f4b7337068
Author: Krzysztof Foltman <wdev at foltman.com>
Date:   Sun Apr 12 20:40:58 2009 +0100

    + Organ: make filter 1 switchable between lowpass and highpass

diff --git a/gui/gui-organ.xml b/gui/gui-organ.xml
index 2240746..6317fee 100644
--- a/gui/gui-organ.xml
+++ b/gui/gui-organ.xml
@@ -200,12 +200,12 @@
                 <value param="f1_env3"/>
               </vbox>
             </hbox>
-            <align>
-              <hbox>
-                <toggle expand="0" fill="0" param="filter_chain"/>
-                <label param="filter_chain"/>
-              </hbox>
-            </align>
+            <hbox>
+              <label param="filter_chain"/>
+              <combo param="filter_chain"/>
+              <label param="filter1_type"/>
+              <combo param="filter1_type"/>
+            </hbox>
           </vbox>
         </frame>
         <frame label="Filter 2">
diff --git a/src/calf/metadata.h b/src/calf/metadata.h
index 278cc40..cf4c48e 100644
--- a/src/calf/metadata.h
+++ b/src/calf/metadata.h
@@ -132,6 +132,7 @@ struct organ_enums
         par_percfmdecay, par_percfmdepth, par_percfmwave, par_percfmharm, par_percvel2fm,
         par_perctrigger, par_percstereo,
         par_filterchain,
+        par_filter1type,
         par_master, 
         par_f1cutoff, par_f1res, par_f1env1, par_f1env2, par_f1env3, par_f1keyf,
         par_f2cutoff, par_f2res, par_f2env1, par_f2env2, par_f2env3, par_f2keyf,
diff --git a/src/calf/organ.h b/src/calf/organ.h
index 69066a8..783ac9e 100644
--- a/src/calf/organ.h
+++ b/src/calf/organ.h
@@ -70,6 +70,7 @@ struct organ_parameters {
     float percussion_trigger;
     float percussion_stereo;
     float filter_chain;
+    float filter1_type;
     float master;
 
     organ_filter_parameters filters[organ_parameters::FilterCount];
diff --git a/src/modules.cpp b/src/modules.cpp
index 2c711f9..8c00a35 100644
--- a/src/modules.cpp
+++ b/src/modules.cpp
@@ -344,6 +344,10 @@ const char *organ_ampctl_names[] = { "None", "Direct", "Flt 1", "Flt 2", "All"
 
 const char *organ_vibrato_mode_names[] = { "None", "Direct", "Flt 1", "Flt 2", "Voice", "Global"  };
 
+const char *organ_filter_type_names[] = { "12dB/oct LP", "12dB/oct HP" };
+
+const char *organ_filter_send_names[] = { "Output", "Filter 2" };
+
 const char *organ_init_map_curve = "2\n0 1\n1 1\n";
 
 CALF_PORT_PROPS(organ) = {
@@ -434,7 +438,8 @@ CALF_PORT_PROPS(organ) = {
     { 0,         0,  organ_enums::perctrig_count - 1, 0, PF_ENUM | PF_CTL_COMBO, organ_percussion_trigger_names, "perc_trigger", "P: Trigger" },
     { 90,      0,360, 361, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_DEG, NULL, "perc_stereo", "P: Stereo Phase" },
 
-    { 0,         0,  1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "filter_chain", "Filter 1 To 2" },
+    { 0,         0,  1, 0, PF_ENUM | PF_CTL_COMBO, organ_filter_send_names, "filter_chain", "Filter 1 To" },
+    { 0,         0,  1, 0, PF_ENUM | PF_CTL_COMBO, organ_filter_type_names, "filter1_type", "Filter 1 Type" },
     { 0.1,         0,  1, 100, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_PROP_OUTPUT_GAIN | PF_PROP_GRAPH, NULL, "master", "Volume" },
     
     { 2000,   20, 20000, 100, PF_FLOAT | PF_SCALE_LOG | PF_UNIT_HZ | PF_CTL_KNOB, NULL, "f1_cutoff", "F1 Cutoff" },
diff --git a/src/organ.cpp b/src/organ.cpp
index 2a07aa1..5900d88 100644
--- a/src/organ.cpp
+++ b/src/organ.cpp
@@ -661,7 +661,10 @@ void organ_voice::render_block() {
         }
         if (i) mod += expression.get() * 1200 * 4;
         float fc = parameters->filters[i].cutoff * pow(2.0f, mod * (1.f / 1200.f));
-        filterL[i].set_lp_rbj(dsp::clip<float>(fc, 10, 18000), parameters->filters[i].resonance, sample_rate);
+        if (i == 0 && parameters->filter1_type >= 0.5f)
+            filterL[i].set_hp_rbj(dsp::clip<float>(fc, 10, 18000), parameters->filters[i].resonance, sample_rate);
+        else
+            filterL[i].set_lp_rbj(dsp::clip<float>(fc, 10, 18000), parameters->filters[i].resonance, sample_rate);
         filterR[i].copy_coeffs(filterL[i]);
     }
     float amp_pre[ampctl_count - 1], amp_post[ampctl_count - 1];

-- 
calf audio plugins packaging



More information about the pkg-multimedia-commits mailing list