[SCM] calf/master: + Filterclavier: made frequency and resonance non-parameters (controlled by MIDI only)

js at users.alioth.debian.org js at users.alioth.debian.org
Tue May 7 15:38:58 UTC 2013


The following commit has been merged in the master branch:
commit a8f7cbf36b055e4765035f0584e50bb53c0af77a
Author: Hans Baier <hansfbaier at googlemail.com>
Date:   Thu Jan 22 11:41:37 2009 +0700

     + Filterclavier: made frequency and resonance non-parameters (controlled by MIDI only)

diff --git a/gui/gui-filterclavier.xml b/gui/gui-filterclavier.xml
index 7adfc2f..b3f0fef 100644
--- a/gui/gui-filterclavier.xml
+++ b/gui/gui-filterclavier.xml
@@ -6,11 +6,6 @@
     </table>
     <hbox attach-x="0" attach-y="1" shrink-y="1" expand-x="1" fill-x="1">
         <vbox border="10">
-            <label param="freq" />
-            <knob param="freq" />
-            <value param="freq" />
-        </vbox>
-        <vbox border="10">
             <label param="transpose" />
             <knob param="transpose" type="1"/>
             <value param="transpose" />
@@ -21,11 +16,6 @@
             <value param="detune" />
         </vbox>
         <vbox border="10">
-            <label param="res" />
-            <knob param="res" />
-            <value param="res" />
-        </vbox>
-        <vbox border="10">
             <label param="inertia" />
             <knob param="inertia"/>
             <value param="inertia" />
@@ -33,7 +23,7 @@
     </hbox>
     <if cond="directlink">
         <frame label="Freq. response" expand-x="1" fill-x="1" attach-x="0" attach-y="2">
-            <line-graph refresh="1" width="160" height="160" param="freq"/>
+            <line-graph refresh="1" width="160" height="160"/>
         </frame>
     </if>
 </table>
diff --git a/src/calf/metadata.h b/src/calf/metadata.h
index 6016b28..bfc95bc 100644
--- a/src/calf/metadata.h
+++ b/src/calf/metadata.h
@@ -51,6 +51,16 @@ struct filter_metadata: public plugin_metadata<filter_metadata>
     bool is_cv(int param_no) { return param_no != par_mode && param_no != par_inertia; }
 };
 
+/// Filterclavier - metadata
+struct filterclavier_metadata: public plugin_metadata<filterclavier_metadata>
+{
+    enum { par_transpose, par_detune, par_mode, par_inertia,  param_count };
+    enum { in_count = 2, out_count = 2, rt_capable = true, require_midi = true, support_midi = true };
+    PLUGIN_NAME_ID_LABEL("filterclavier", "filterclavier", "Filterclavier")
+    /// do not export mode and inertia as CVs, as those are settings and not parameters
+    bool is_cv(int param_no) { return param_no != par_mode && param_no != par_inertia; }
+};
+
 struct reverb_metadata: public plugin_metadata<reverb_metadata>
 {
     enum { par_decay, par_hfdamp, par_roomsize, par_diffusion, par_amount, par_dry, par_predelay, par_basscut, par_treblecut, param_count };
@@ -92,16 +102,6 @@ struct monosynth_metadata: public plugin_metadata<monosynth_metadata>
     enum { step_size = 64 };
     PLUGIN_NAME_ID_LABEL("monosynth", "monosynth", "Monosynth")
 };
-
-/// Filterclavier - metadata
-struct filterclavier_metadata: public plugin_metadata<filterclavier_metadata>
-{
-    enum { par_cutoff, par_transpose, par_detune, par_resonance, par_mode, par_inertia,  param_count };
-    enum { in_count = 2, out_count = 2, rt_capable = true, require_midi = false, support_midi = true };
-    PLUGIN_NAME_ID_LABEL("filterclavier", "filterclavier", "Filterclavier")
-    /// do not export mode and inertia as CVs, as those are settings and not parameters
-    bool is_cv(int param_no) { return param_no != par_mode && param_no != par_inertia; }
-};
     
 /// Thor's compressor - metadata
 struct compressor_metadata: public plugin_metadata<compressor_metadata>
diff --git a/src/calf/modules.h b/src/calf/modules.h
index bd22b37..ffe6870 100644
--- a/src/calf/modules.h
+++ b/src/calf/modules.h
@@ -615,10 +615,8 @@ public:
         FilterClass::calculate_filter(freq, q, mode);
     }
     
-    void params_changed()
+    virtual void params_changed()
     {
-        inertia_cutoff.set_inertia(*params[Metadata::par_cutoff]);
-        inertia_resonance.set_inertia(*params[Metadata::par_resonance]);
         calculate_filter();
     }
     
@@ -684,6 +682,8 @@ class filter_audio_module:
 public:    
     void params_changed()
     { 
+        inertia_cutoff.set_inertia(*params[par_cutoff]);
+        inertia_resonance.set_inertia(*params[par_resonance]);
         inertia_filter_module::params_changed(); 
     }
         
@@ -703,7 +703,6 @@ public:
         inertia_filter_module::deactivate();
     }
     
-    
     bool get_graph(int index, int subindex, float *data, int points, cairo_iface *context);
     bool get_gridline(int index, int subindex, float &pos, bool &vertical, std::string &legend, cairo_iface *context);
 };
diff --git a/src/calf/modules_dev.h b/src/calf/modules_dev.h
index f9a0eea..bc777b6 100644
--- a/src/calf/modules_dev.h
+++ b/src/calf/modules_dev.h
@@ -34,12 +34,16 @@ class filterclavier_audio_module:
         public audio_module<filterclavier_metadata>, 
         public filter_module_with_inertia<biquad_filter_module, filterclavier_metadata>, 
         public line_graph_iface
-    {
+    {        
+        const float min_resonance;
+        const float max_resonance;
+            
     public:    
+        filterclavier_audio_module() : min_resonance(0.707), max_resonance(20.0) {}
         
         void params_changed()
         { 
-            inertia_filter_module::params_changed(); 
+            inertia_filter_module::calculate_filter(); 
         }
             
         void activate()
@@ -60,18 +64,18 @@ class filterclavier_audio_module:
       
         /// MIDI control
         virtual void note_on(int note, int vel)
-        {
+        {            
             inertia_filter_module::inertia_cutoff.set_inertia(
                     note_to_hz(note + *params[par_transpose], *params[par_detune]));
             inertia_filter_module::inertia_resonance.set_inertia( 
-                    (float(vel) / 127.0) * (param_props[par_resonance].max - param_props[par_resonance].min)
-                    + param_props[par_resonance].min);
+                    (float(vel) / 127.0) * (max_resonance - min_resonance)
+                    + min_resonance);
             inertia_filter_module::calculate_filter();
         }
         
         virtual void note_off(int note, int vel)
         {
-            inertia_filter_module::inertia_resonance.set_inertia(param_props[par_resonance].min);
+            inertia_filter_module::inertia_resonance.set_inertia(min_resonance);
             inertia_filter_module::calculate_filter();
         }        
         
diff --git a/src/modules.cpp b/src/modules.cpp
index 4ccaac6..bb62bfe 100644
--- a/src/modules.cpp
+++ b/src/modules.cpp
@@ -123,12 +123,10 @@ const char *filterclavier_choices[] = {
 };
 
 CALF_PORT_PROPS(filterclavier) = {
-    { 2000,      10,20000,    0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ | PF_PROP_GRAPH, NULL, "freq", "Frequency" },
-    { 0,        -48,   48,   97, PF_INT   | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_SEMITONES, NULL, "transpose", "Transpose" },
-    { 0,       -100,  100,    0, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_CENTS, NULL, "detune", "Detune" },
-    { 0.707,  0.707,   32,    0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "res", "Resonance" },
-    { 0,          0,    5,    1, PF_ENUM | PF_CTL_COMBO, filterclavier_choices, "mode", "Mode" },
-    { 20,         5,  100,   20, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_MSEC, NULL, "inertia", "Inertia"},
+    { 0,        -48,   48, 48*2+1, PF_INT   | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_SEMITONES, NULL, "transpose", "Transpose" },
+    { 0,       -100,  100,      0, PF_INT   | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_CENTS, NULL, "detune", "Detune" },
+    { 0,          0,    5,      1, PF_ENUM  | PF_CTL_COMBO, filterclavier_choices, "mode", "Mode" },
+    { 20,         1,  2000,    20, PF_FLOAT | PF_SCALE_LOG    | PF_CTL_KNOB | PF_UNIT_MSEC, NULL, "inertia", "Portamento time"}
 };
 
 CALF_PLUGIN_INFO(filterclavier) = { 0x849f, "Filterclavier", "Calf Filterclavier", "Krzysztof Foltman / Hans Baier", calf_plugins::calf_copyright_info, "FilterclavierPlugin" };
diff --git a/src/modules_dsp.cpp b/src/modules_dsp.cpp
index b175be4..351e79d 100644
--- a/src/modules_dsp.cpp
+++ b/src/modules_dsp.cpp
@@ -238,9 +238,10 @@ bool filter_audio_module::get_gridline(int index, int subindex, float &pos, bool
 
 bool filterclavier_audio_module::get_graph(int index, int subindex, float *data, int points, cairo_iface *context)
 {
-    if (!is_active)
+    if (!is_active) {
         return false;
-    if (index == par_cutoff && !subindex) {
+    }
+    if (!subindex) {
         context->set_line_width(1.5);
         return ::get_graph(*this, subindex, data, points);
     }
@@ -249,10 +250,7 @@ bool filterclavier_audio_module::get_graph(int index, int subindex, float *data,
 
 bool filterclavier_audio_module::get_gridline(int index, int subindex, float &pos, bool &vertical, std::string &legend, cairo_iface *context)
 {
-    if (index == par_cutoff) {
-        return get_freq_gridline(subindex, pos, vertical, legend, context);
-    }
-    return false;
+    return get_freq_gridline(subindex, pos, vertical, legend, context);
 }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////

-- 
calf audio plugins packaging



More information about the pkg-multimedia-commits mailing list