[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:59 UTC 2013
The following commit has been merged in the master branch:
commit 6547eb5afa04b21dcfe386a54839a6c78be7b0ab
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 0ae9be1..7a02a1d 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 ec23e93..3f01f9b 100644
--- a/src/modules_dsp.cpp
+++ b/src/modules_dsp.cpp
@@ -241,9 +241,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);
}
@@ -252,10 +253,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