[SCM] calf/master: + Framework: factor gridline drawing out of Filter, Filterclavier, Phaser and Flanger, implement a basic version of get_changed_offsets
js at users.alioth.debian.org
js at users.alioth.debian.org
Tue May 7 15:39:07 UTC 2013
The following commit has been merged in the master branch:
commit 868b87b781f3b470b4012a19debc8cb969767ecf
Author: Krzysztof Foltman <wdev at foltman.com>
Date: Sat Jan 24 20:38:21 2009 +0000
+ Framework: factor gridline drawing out of Filter, Filterclavier, Phaser and Flanger, implement a basic version of get_changed_offsets
diff --git a/src/calf/modules.h b/src/calf/modules.h
index c08c1a7..8bbcd20 100644
--- a/src/calf/modules.h
+++ b/src/calf/modules.h
@@ -61,7 +61,13 @@ public:
};
#endif
-class flanger_audio_module: public audio_module<flanger_metadata>, public line_graph_iface
+class frequency_response_line_graph: public line_graph_iface
+{
+ bool get_gridline(int index, int subindex, float &pos, bool &vertical, std::string &legend, cairo_iface *context);
+ virtual int get_changed_offsets(int generation, int &subindex_graph, int &subindex_dot, int &subindex_gridline);
+};
+
+class flanger_audio_module: public audio_module<flanger_metadata>, public frequency_response_line_graph
{
public:
dsp::simple_flanger<float, 2048> left, right;
@@ -119,11 +125,11 @@ public:
return outputs_mask; // XXXKF allow some delay after input going blank
}
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);
float freq_gain(int subindex, float freq, float srate);
+ virtual int get_changed_offsets(int generation, int &subindex_graph, int &subindex_dot, int &subindex_gridline) { subindex_graph = subindex_dot = subindex_gridline = 0; return 0; }
};
-class phaser_audio_module: public audio_module<phaser_metadata>, public line_graph_iface
+class phaser_audio_module: public audio_module<phaser_metadata>, public frequency_response_line_graph
{
public:
float *ins[in_count];
@@ -680,7 +686,7 @@ public:
class filter_audio_module:
public audio_module<filter_metadata>,
public filter_module_with_inertia<biquad_filter_module, filter_metadata>,
- public line_graph_iface
+ public frequency_response_line_graph
{
public:
void params_changed()
@@ -707,7 +713,6 @@ public:
}
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);
};
/// A multitap stereo chorus thing - processing
@@ -827,7 +832,7 @@ public:
class filterclavier_audio_module:
public audio_module<filterclavier_metadata>,
public filter_module_with_inertia<biquad_filter_module, filterclavier_metadata>,
- public line_graph_iface
+ public frequency_response_line_graph
{
const float min_gain;
const float max_gain;
@@ -909,7 +914,6 @@ public:
}
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);
private:
void adjust_gain_according_to_filter_mode(int velocity) {
diff --git a/src/modules_dsp.cpp b/src/modules_dsp.cpp
index 8e1269a..0395161 100644
--- a/src/modules_dsp.cpp
+++ b/src/modules_dsp.cpp
@@ -20,6 +20,7 @@
*/
#include <config.h>
#include <assert.h>
+#include <limits.h>
#include <memory.h>
#if USE_JACK
#include <jack/jack.h>
@@ -108,6 +109,22 @@ static bool get_freq_gridline(int subindex, float &pos, bool &vertical, std::str
return true;
}
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+bool frequency_response_line_graph::get_gridline(int index, int subindex, float &pos, bool &vertical, std::string &legend, cairo_iface *context)
+{
+ return get_freq_gridline(subindex, pos, vertical, legend, context);
+}
+
+int frequency_response_line_graph::get_changed_offsets(int generation, int &subindex_graph, int &subindex_dot, int &subindex_gridline)
+{
+ subindex_graph = 0;
+ subindex_dot = 0;
+ subindex_gridline = generation ? INT_MAX : 0;
+ return 1;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void flanger_audio_module::activate() {
left.reset();
@@ -145,13 +162,6 @@ float flanger_audio_module::freq_gain(int subindex, float freq, float srate)
return (subindex ? right : left).freq_gain(freq, srate);
}
-bool flanger_audio_module::get_gridline(int index, int subindex, float &pos, bool &vertical, std::string &legend, cairo_iface *context)
-{
- if (index == par_delay)
- return get_freq_gridline(subindex, pos, vertical, legend, context);
- return false;
-}
-
///////////////////////////////////////////////////////////////////////////////////////////////
void phaser_audio_module::set_sample_rate(uint32_t sr)
@@ -229,14 +239,6 @@ bool filter_audio_module::get_graph(int index, int subindex, float *data, int po
return false;
}
-bool filter_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;
-}
-
///////////////////////////////////////////////////////////////////////////////////////////////
bool filterclavier_audio_module::get_graph(int index, int subindex, float *data, int points, cairo_iface *context)
@@ -251,11 +253,6 @@ bool filterclavier_audio_module::get_graph(int index, int subindex, float *data,
return false;
}
-bool filterclavier_audio_module::get_gridline(int index, int subindex, float &pos, bool &vertical, std::string &legend, cairo_iface *context)
-{
- return get_freq_gridline(subindex, pos, vertical, legend, context);
-}
-
///////////////////////////////////////////////////////////////////////////////////////////////
rotary_speaker_audio_module::rotary_speaker_audio_module()
--
calf audio plugins packaging
More information about the pkg-multimedia-commits
mailing list