[SCM] calf/master: Patches refreshed/removed.
mira-guest at users.alioth.debian.org
mira-guest at users.alioth.debian.org
Sun Nov 26 18:22:53 UTC 2017
The following commit has been merged in the master branch:
commit 4dac0f4ad4cd03af18e81be5afbafc12138783dc
Author: Jaromír Mikeš <mira.mikes at seznam.cz>
Date: Sun Nov 26 18:51:39 2017 +0100
Patches refreshed/removed.
diff --git a/debian/patches/020150508~f57ab5f.patch b/debian/patches/020150508~f57ab5f.patch
deleted file mode 100644
index b9b20ea..0000000
--- a/debian/patches/020150508~f57ab5f.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Description: L10n: add l10n FR in .desktop file
-Origin: upstream, https://github.com/calf-studio-gear/calf/commit/f57ab5f
-Author: Olivier Humbert <trebmuh at tuxfamily.org>
-Forwarded: yes
-Last-Update: 2017-07-30
-
---- a/calf.desktop.in
-+++ b/calf.desktop.in
-@@ -2,10 +2,12 @@
- Name=Calf Plugin Pack for JACK
- Name[pl]=Zestaw wtyczek Calf
- Name[ru]=Набор эффектов и инструментов Calf для JACK
-+Name[fr]=Ensemble de greffons Calf pour JACK
- Version=@VERSION@
- Comment=Process and produce sounds using a set of plugins with JACK interface
- Comment[pl]=Przetwarzaj i generuj dźwięk używając zestawu wtyczek zgodnych z JACK
- Comment[ru]=Обработка и создание музыки при помощи эффектов и инструментов через JACK
-+Comment[fr]=Traitement et production de sons utilisant un ensemble de greffons avec une interface JACK
- Exec=calfjackhost
- Terminal=false
- Type=Application
diff --git a/debian/patches/020150624~d72df1d.patch b/debian/patches/020150624~d72df1d.patch
deleted file mode 100644
index fbe64bb..0000000
--- a/debian/patches/020150624~d72df1d.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Description: Try to fix a bug with unsorted plugins in Ardour
-Origin: upstream, https://github.com/calf-studio-gear/calf/commit/d72df1d
-Author: Markus Schmidt <schmidt at boomshop.net>
-Forwarded: yes
-Last-Update: 2017-07-30
-
---- a/src/makerdf.cpp
-+++ b/src/makerdf.cpp
-@@ -287,11 +287,12 @@
- " rdfs:label \"Output\" .\n\n";
- }
-
-- ttl += uri + " a lv2:Plugin ;\n";
-+ ttl += uri;
-
- if (classes.count(lpi.plugin_type))
-- ttl += " a " + classes[lpi.plugin_type]+" ;\n";
--
-+ ttl += " a " + classes[lpi.plugin_type]+" ;\n";
-+ else
-+ ttl += " a lv2:Plugin ;\n";
-
- ttl += " doap:name \""+string(lpi.name)+"\" ;\n";
- ttl += " doap:maintainer [ foaf:name \""+string(lpi.maker)+"\" ; ] ;\n";
diff --git a/debian/patches/020150629~52ecdb4.patch b/debian/patches/020150629~52ecdb4.patch
deleted file mode 100644
index 01ea97f..0000000
--- a/debian/patches/020150629~52ecdb4.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-Description: LED widget: fix drawing glitch
- Looks like the existing code tried to re-invent the wheel in the widget
- size allocation method - changed it to call the parent class and it
- seems to work correctly now.
-Origin: upstream, https://github.com/calf-studio-gear/calf/commit/52ecdb4
-Author: Krzysztof Foltman <wdev at foltman.com>
-Forwarded: yes
-Last-Update: 2017-07-30
-
---- a/src/calf/ctl_led.h
-+++ b/src/calf/ctl_led.h
-@@ -31,6 +31,7 @@
- #define CALF_IS_LED(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CALF_TYPE_LED))
- #define CALF_LED_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CALF_TYPE_LED, CalfLedClass))
- #define CALF_IS_LED_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((klass), CALF_TYPE_LED))
-+#define CALF_LED_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CALF_TYPE_LED, CalfLedClass))
-
- /// Instance object for CalfLed
- struct CalfLed
---- a/src/ctl_led.cpp
-+++ b/src/ctl_led.cpp
-@@ -213,14 +213,12 @@
- g_assert(CALF_IS_LED(widget));
- CalfLed *led = CALF_LED(widget);
-
-- widget->allocation = *allocation;
-+ GtkWidgetClass *parent_class = (GtkWidgetClass *) g_type_class_peek_parent( CALF_LED_GET_CLASS( led ) );
-+ parent_class->size_allocate( widget, allocation );
-
- if( led->cache_surface )
- cairo_surface_destroy( led->cache_surface );
- led->cache_surface = NULL;
--
-- if (GTK_WIDGET_REALIZED(widget))
-- gdk_window_move_resize(widget->window, allocation->x, allocation->y, allocation->width, allocation->height );
- }
-
- static gboolean
-@@ -246,6 +244,8 @@
- GtkWidget *widget = GTK_WIDGET(self);
- // GtkWidget *widget = GTK_WIDGET(self);
- // GTK_WIDGET_SET_FLAGS (widget, GTK_CAN_FOCUS);
-+ self->led_mode = 0;
-+ self->size = 0;
- self->led_value = 0.f;
- self->cache_surface = NULL;
- widget->requisition.width = self->size ? 24 : 19;
diff --git a/debian/patches/020150712~c115927.patch b/debian/patches/020150712~c115927.patch
deleted file mode 100644
index f6def5c..0000000
--- a/debian/patches/020150712~c115927.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-Description: Make Analyzer UI require instance-access
- The analyzer plugin is useless without graphs, which right now depend
- on LV2 instance+data-access. Also the instance/data-access feature was
- wrongly placed as plugin prop, when in fact it's a UI property.
-Origin: upstream, https://github.com/calf-studio-gear/calf/commit/c115927
-Author: falkTX <falktx at gmail.com>
-Forwarded: yes
-Last-Update: 2017-07-30
-
---- a/src/lv2gui.cpp
-+++ b/src/lv2gui.cpp
-@@ -475,5 +475,14 @@
- if (!index--)
- return >kgui;
-
-+ static LV2UI_Descriptor gtkguireq;
-+ gtkguireq.URI = "http://calf.sourceforge.net/plugins/gui/gtk2-gui-req";
-+ gtkguireq.instantiate = gui_instantiate;
-+ gtkguireq.cleanup = gui_cleanup;
-+ gtkguireq.port_event = gui_port_event;
-+ gtkguireq.extension_data = gui_extension;
-+ if (!index--)
-+ return >kguireq;
-+
- return NULL;
- }
---- a/src/makerdf.cpp
-+++ b/src/makerdf.cpp
-@@ -240,8 +240,23 @@
- string gtkgui_uri = "<http://calf.sourceforge.net/plugins/gui/gtk2-gui>";
- gui_header = gtkgui_uri + "\n"
- " a uiext:GtkUI ;\n"
-- " lv2:extensionData uiext:showInterface ;\n"
-+ " lv2:extensionData uiext:idleInterface ,\n"
-+ " uiext:showInterface ;\n"
- " lv2:requiredFeature uiext:makeResident ;\n"
-+ " lv2:optionalFeature <http://lv2plug.in/ns/ext/instance-access> ;\n"
-+ " lv2:optionalFeature <http://lv2plug.in/ns/ext/data-access> ;\n"
-+ " uiext:binary <calflv2gui.so> .\n"
-+ "\n"
-+ ;
-+
-+ string gtkgui_req_uri = "<http://calf.sourceforge.net/plugins/gui/gtk2-gui-req>";
-+ gui_header += gtkgui_req_uri + "\n"
-+ " a uiext:GtkUI ;\n"
-+ " lv2:extensionData uiext:idleInterface ,\n"
-+ " uiext:showInterface ;\n"
-+ " lv2:requiredFeature uiext:makeResident ;\n"
-+ " lv2:requiredFeature <http://lv2plug.in/ns/ext/instance-access> ;\n"
-+ " lv2:requiredFeature <http://lv2plug.in/ns/ext/data-access> ;\n"
- " uiext:binary <calflv2gui.so> .\n"
- "\n"
- ;
-@@ -259,6 +274,9 @@
- id_to_info[pi->get_id()] = make_pair(lpi.label, uri);
- string ttl;
- ttl = "@prefix : <" + unquoted_uri + "#> .\n" + header + gui_header;
-+
-+ bool uireq = !strcmp(lpi.label, "Analyzer");
-+
-
- #if USE_LV2_GUI
- for (int j = 0; j < pi->get_param_count(); j++)
-@@ -267,7 +285,7 @@
- if (props.flags & PF_PROP_OUTPUT)
- {
- string portnot = " uiext:portNotification [\n uiext:plugin " + uri + " ;\n uiext:portIndex " + i2s(j) + "\n] .\n\n";
-- ttl += gtkgui_uri + portnot;
-+ ttl += (uireq ? gtkgui_req_uri : gtkgui_uri) + portnot;
- }
- }
- #endif
-@@ -298,9 +316,7 @@
- ttl += " doap:maintainer [ foaf:name \""+string(lpi.maker)+"\" ; ] ;\n";
-
- #if USE_LV2_GUI
-- ttl += " uiext:ui <http://calf.sourceforge.net/plugins/gui/gtk2-gui> ;\n";
-- ttl += " lv2:optionalFeature <http://lv2plug.in/ns/ext/instance-access> ;\n";
-- ttl += " lv2:optionalFeature <http://lv2plug.in/ns/ext/data-access> ;\n";
-+ ttl += " uiext:ui " + (uireq ? gtkgui_req_uri : gtkgui_uri) + " ;\n";
- #endif
-
- ttl += " doap:license <http://usefulinc.com/doap/licenses/lgpl> ;\n";
diff --git a/debian/patches/020151209~b73bce3.patch b/debian/patches/020151209~b73bce3.patch
deleted file mode 100644
index eabb6bb..0000000
--- a/debian/patches/020151209~b73bce3.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Description: Line Graph: fix hover bug
-Origin: upstream, https://github.com/calf-studio-gear/calf/commit/b73bce3
-Author: Markus Schmidt <schmidt at boomshop.net>
-Forwarded: yes
-Last-Update: 2017-07-30
-
---- a/src/ctl_linegraph.cpp
-+++ b/src/ctl_linegraph.cpp
-@@ -1311,7 +1311,10 @@
- calf_line_graph_expose_request(widget, true);
- lg->mouse_x = -1;
- lg->mouse_y = -1;
--
-+ gdk_window_set_cursor(widget->window, lg->arrow_cursor);
-+ lg->handle_hovered = -1;
-+ lg->handle_redraw = 1;
-+ calf_line_graph_expose_request(widget, true);
- return TRUE;
- }
-
diff --git a/debian/patches/020160122~a4bb4b6.patch b/debian/patches/020160122~a4bb4b6.patch
deleted file mode 100644
index d12504f..0000000
--- a/debian/patches/020160122~a4bb4b6.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Description: Mono Input: fix use of uninitialized member
-Origin: upstream, https://github.com/calf-studio-gear/calf/commit/a4bb4b6
-Bug: https://github.com/calf-studio-gear/calf/issues/57
-Author: Krzysztof Foltman <wdev at foltman.com>
-Forwarded: yes
-Last-Update: 2017-07-30
-
---- a/src/modules_tools.cpp
-+++ b/src/modules_tools.cpp
-@@ -278,6 +278,7 @@
- meter_outL = 0.f;
- meter_outR = 0.f;
- _phase = -1.f;
-+ _sc_level = 0.f;
- }
- mono_audio_module::~mono_audio_module() {
- free(buffer);
diff --git a/debian/patches/020160503~413bd43.patch b/debian/patches/020160503~413bd43.patch
deleted file mode 100644
index 5fd6eef..0000000
--- a/debian/patches/020160503~413bd43.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Description: Fix comboboxes in Ardour4
-Origin: upstream, https://github.com/calf-studio-gear/calf/commit/413bd43
-Author: Markus Schmidt <schmidt at boomshop.net>
-Forwarded: yes
-Last-Update: 2016-06-18
-
---- a/src/gui_controls.cpp
-+++ b/src/gui_controls.cpp
-@@ -303,6 +303,7 @@
- {
- const parameter_properties &props = get_props();
- gtk_combo_box_set_active (GTK_COMBO_BOX (widget), (int)gui->plugin->get_param_value(param_no) - (int)props.min);
-+ gtk_widget_queue_draw(widget);
- }
- }
-
diff --git a/debian/patches/020160718~784c842.patch b/debian/patches/020160718~784c842.patch
deleted file mode 100644
index 26a3604..0000000
--- a/debian/patches/020160718~784c842.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-Description: Fix some type errors
-Origin: upstream, https://github.com/calf-studio-gear/calf/commit/784c842
-Bug: https://github.com/calf-studio-gear/calf/issues/82
-Author: cisoun <cysoun at gmail.com>
-Forwarded: yes
-Last-Update: 2017-07-30
-
---- a/src/analyzer.cpp
-+++ b/src/analyzer.cpp
-@@ -471,12 +471,12 @@
- //pumping up actual signal an erase surrounding
- // sounds
- fft_outL[_iter] = 0.25f * std::max(n * 0.6f * \
-- fabs(fft_outL[_iter]) - var1L , 1e-20);
-+ fabs(fft_outL[_iter]) - var1L , 1e-20f);
- if(_mode == 3 or _mode == 4) {
- // do the same with R channel if needed
- lastoutR = fft_outR[_iter];
- fft_outR[_iter] = 0.25f * std::max(n * \
-- 0.6f * fabs(fft_outR[_iter]) - var1R , 1e-20);
-+ 0.6f * fabs(fft_outR[_iter]) - var1R , 1e-20f);
- }
- break;
- }
---- a/src/jack_client.cpp
-+++ b/src/jack_client.cpp
-@@ -226,7 +226,7 @@
- map<string, int>::const_iterator p = port_to_plugin.find((*k) + cnlen + 1);
- if (p != port_to_plugin.end())
- {
-- run_before.insert(make_pair<int, int>(p->second, i));
-+ run_before.insert(make_pair<const int&, unsigned int&>(p->second, i));
- }
- }
- jack_free(conns);
---- a/src/modules_dist.cpp
-+++ b/src/modules_dist.cpp
-@@ -794,8 +794,8 @@
- lfo2.advance(1);
-
- // dot
-- rms = std::max((double)rms, (fabs(Lo) + fabs(Ro)) / 2);
-- input = std::max((double)input, (fabs(Lc) + fabs(Rc)) / 2);
-+ rms = std::max((double)rms, (double)((fabs(Lo) + fabs(Ro)) / 2));
-+ input = std::max((double)input, (double)((fabs(Lc) + fabs(Rc)) / 2));
-
- float values[] = {inL, inR, outs[0][i], outs[1][i]};
- meters.process(values);
---- a/src/modules_limit.cpp
-+++ b/src/modules_limit.cpp
-@@ -429,7 +429,7 @@
- }
-
- // write multiband coefficient to buffer
-- buffer[pos] = std::min(*params[param_limit] / std::max(fabs(tmpL), fabs(tmpR)), 1.0);
-+ buffer[pos] = std::min(*params[param_limit] / std::max(fabs(tmpL), fabs(tmpR)), 1.0f);
-
- // step forward in multiband buffer
- pos = (pos + channels) % buffer_size;
-@@ -811,7 +811,7 @@
- }
-
- // write multiband coefficient to buffer
-- buffer[pos] = std::min(*params[param_limit] / std::max(fabs(tmpL), fabs(tmpR)), 1.0);
-+ buffer[pos] = std::min(*params[param_limit] / std::max(fabs(tmpL), fabs(tmpR)), 1.0f);
-
- // step forward in multiband buffer
- pos = (pos + channels) % buffer_size;
diff --git a/debian/patches/020161201~6eb51ad.patch b/debian/patches/020161201~6eb51ad.patch
deleted file mode 100644
index 984027b..0000000
--- a/debian/patches/020161201~6eb51ad.patch
+++ /dev/null
@@ -1,436 +0,0 @@
-Description: Unified creator metadata
- Assign all the plugins the same unified creator metadata, so
- applications like Ardour will show all Calf plugins in a single creator
- category:
- .
- Mixer, New Plugin, By Creator, Calf Studio Gear, ...
-Origin: upstream, https://github.com/calf-studio-gear/calf/commit/6eb51ad
-Author: Pascal de Bruijn <pmjdebruijn at pcode.nl>
-Forwarded: yes
-Last-Update: 2017-07-30
-
---- a/src/metadata.cpp
-+++ b/src/metadata.cpp
-@@ -98,7 +98,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(flanger) = { 0x847d, "Flanger", "Calf Flanger", "Calf Studio Gear / Krzysztof Foltman", calf_plugins::calf_copyright_info, "ModulatorPlugin" };
-+CALF_PLUGIN_INFO(flanger) = { 0x847d, "Flanger", "Calf Flanger", "Calf Studio Gear", calf_plugins::calf_copyright_info, "ModulatorPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -116,7 +116,7 @@
- { 1.0, 0, 4, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF | PF_PROP_NOBOUNDS, NULL, "dry", "Dry Amount" },
- };
-
--CALF_PLUGIN_INFO(phaser) = { 0x8484, "Phaser", "Calf Phaser", "Calf Studio Gear / Krzysztof Foltman", calf_plugins::calf_copyright_info, "ModulatorPlugin" };
-+CALF_PLUGIN_INFO(phaser) = { 0x8484, "Phaser", "Calf Phaser", "Calf Studio Gear", calf_plugins::calf_copyright_info, "ModulatorPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -140,7 +140,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(reverb) = { 0x847e, "Reverb", "Calf Reverb", "Calf Studio Gear / Krzysztof Foltman", calf_plugins::calf_copyright_info, "ReverbPlugin" };
-+CALF_PLUGIN_INFO(reverb) = { 0x847e, "Reverb", "Calf Reverb", "Calf Studio Gear", calf_plugins::calf_copyright_info, "ReverbPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -171,7 +171,7 @@
- { 20, 5, 100, 20, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_MSEC, NULL, "inertia", "Inertia"},
- };
-
--CALF_PLUGIN_INFO(filter) = { 0x847f, "Filter", "Calf Filter", "Calf Studio Gear / Krzysztof Foltman", calf_plugins::calf_copyright_info, "FilterPlugin" };
-+CALF_PLUGIN_INFO(filter) = { 0x847f, "Filter", "Calf Filter", "Calf Studio Gear", calf_plugins::calf_copyright_info, "FilterPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -189,7 +189,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(filterclavier) = { 0x849f, "Filterclavier", "Calf Filterclavier", "Calf Studio Gear / Krzysztof Foltman / Hans Baier", calf_plugins::calf_copyright_info, "FilterPlugin" };
-+CALF_PLUGIN_INFO(filterclavier) = { 0x849f, "Filterclavier", "Calf Filterclavier", "Calf Studio Gear", calf_plugins::calf_copyright_info, "FilterPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -216,7 +216,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(envelopefilter) = { 0x8432, "EnvelopeFilter", "Calf Envelope Filter", "Calf Studio Gear / Markus Schmidt", calf_plugins::calf_copyright_info, "FilterPlugin" };
-+CALF_PLUGIN_INFO(envelopefilter) = { 0x8432, "EnvelopeFilter", "Calf Envelope Filter", "Calf Studio Gear", calf_plugins::calf_copyright_info, "FilterPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -251,7 +251,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(vintage_delay) = { 0x8482, "VintageDelay", "Calf Vintage Delay", "Calf Studio Gear / Krzysztof Foltman", calf_plugins::calf_copyright_info, "DelayPlugin" };
-+CALF_PLUGIN_INFO(vintage_delay) = { 0x8482, "VintageDelay", "Calf Vintage Delay", "Calf Studio Gear", calf_plugins::calf_copyright_info, "DelayPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
- CALF_PORT_NAMES(comp_delay) = { "In L", "In R", "Out L", "Out R" };
-@@ -266,7 +266,7 @@
- { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "bypass", "Bypass" },
- {}
- };
--CALF_PLUGIN_INFO(comp_delay) = { 0x8485, "CompensationDelay", "Calf Compensation Delay Line", "Calf Studio Gear / Vladimir Sadovnikov", calf_plugins::calf_copyright_info, "DelayPlugin" };
-+CALF_PLUGIN_INFO(comp_delay) = { 0x8485, "CompensationDelay", "Calf Compensation Delay Line", "Calf Studio Gear", calf_plugins::calf_copyright_info, "DelayPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -289,7 +289,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(reverse_delay) = { 0x8482, "ReverseDelay", "Calf Reverse Delay", "Calf Studio Gear / drgreenthumb", calf_plugins::calf_copyright_info, "DelayPlugin" };
-+CALF_PLUGIN_INFO(reverse_delay) = { 0x8482, "ReverseDelay", "Calf Reverse Delay", "Calf Studio Gear", calf_plugins::calf_copyright_info, "DelayPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -313,7 +313,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(rotary_speaker) = { 0x8483, "RotarySpeaker", "Calf Rotary Speaker", "Calf Studio Gear / Krzysztof Foltman", calf_plugins::calf_copyright_info, "SimulatorPlugin" };
-+CALF_PLUGIN_INFO(rotary_speaker) = { 0x8483, "RotarySpeaker", "Calf Rotary Speaker", "Calf Studio Gear", calf_plugins::calf_copyright_info, "SimulatorPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -334,7 +334,7 @@
- { 0.75, 0, 1, 0, PF_FLOAT | PF_SCALE_PERC | PF_CTL_KNOB, NULL, "overlap", "Overlap" },
- };
-
--CALF_PLUGIN_INFO(multichorus) = { 0x8501, "MultiChorus", "Calf Multi Chorus", "Calf Studio Gear / Krzysztof Foltman", calf_plugins::calf_copyright_info, "ModulatorPlugin" };
-+CALF_PLUGIN_INFO(multichorus) = { 0x8501, "MultiChorus", "Calf Multi Chorus", "Calf Studio Gear", calf_plugins::calf_copyright_info, "ModulatorPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -363,7 +363,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(monocompressor) = { 0x8577, "MonoCompressor", "Calf Mono Compressor", "Calf Studio Gear / Damien Zammit", calf_plugins::calf_copyright_info, "CompressorPlugin" };
-+CALF_PLUGIN_INFO(monocompressor) = { 0x8577, "MonoCompressor", "Calf Mono Compressor", "Calf Studio Gear", calf_plugins::calf_copyright_info, "CompressorPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -392,7 +392,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(compressor) = { 0x8502, "Compressor", "Calf Compressor", "Calf Studio Gear / Thor Harald Johansen", calf_plugins::calf_copyright_info, "CompressorPlugin" };
-+CALF_PLUGIN_INFO(compressor) = { 0x8502, "Compressor", "Calf Compressor", "Calf Studio Gear", calf_plugins::calf_copyright_info, "CompressorPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -443,7 +443,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(sidechaincompressor) = { 0x8517, "SidechainCompressor", "Calf Sidechain Compressor", "Calf Studio Gear / Markus Schmidt / Thor Harald Johansen", calf_plugins::calf_copyright_info, "CompressorPlugin" };
-+CALF_PLUGIN_INFO(sidechaincompressor) = { 0x8517, "SidechainCompressor", "Calf Sidechain Compressor", "Calf Studio Gear", calf_plugins::calf_copyright_info, "CompressorPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
- #define MULTI_BAND_COMP_PARAMS(band1, band2) \
-@@ -478,7 +478,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(multibandcompressor) = { 0x8516, "MultibandCompressor", "Calf Multiband Compressor", "Calf Studio Gear / Markus Schmidt / Thor Harald Johansen", calf_plugins::calf_copyright_info, "CompressorPlugin" };
-+CALF_PLUGIN_INFO(multibandcompressor) = { 0x8516, "MultibandCompressor", "Calf Multiband Compressor", "Calf Studio Gear", calf_plugins::calf_copyright_info, "CompressorPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -510,7 +510,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(deesser) = { 0x8515, "Deesser", "Calf Deesser", "Calf Studio Gear / Markus Schmidt / Thor Harald Johansen", calf_plugins::calf_copyright_info, "CompressorPlugin" };
-+CALF_PLUGIN_INFO(deesser) = { 0x8515, "Deesser", "Calf Deesser", "Calf Studio Gear", calf_plugins::calf_copyright_info, "CompressorPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -539,7 +539,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(gate) = { 0x8503, "Gate", "Calf Gate", "Calf Studio Gear / Damien Zammit / Thor Harald Johansen", calf_plugins::calf_copyright_info, "ExpanderPlugin" };
-+CALF_PLUGIN_INFO(gate) = { 0x8503, "Gate", "Calf Gate", "Calf Studio Gear", calf_plugins::calf_copyright_info, "ExpanderPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -590,7 +590,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(sidechaingate) = { 0x8504, "SidechainGate", "Calf Sidechain Gate", "Calf Studio Gear / Markus Schmidt / Damien Zammit / Thor Harald Johansen", calf_plugins::calf_copyright_info, "ExpanderPlugin" };
-+CALF_PLUGIN_INFO(sidechaingate) = { 0x8504, "SidechainGate", "Calf Sidechain Gate", "Calf Studio Gear", calf_plugins::calf_copyright_info, "ExpanderPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
- #define MULTI_BAND_GATE_PARAMS(band1, band2) \
-@@ -626,7 +626,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(multibandgate) = { 0x8505, "MultibandGate", "Calf Multiband Gate", "Calf Studio Gear / Markus Schmidt / Damien Zammit / Thor Harald Johansen", calf_plugins::calf_copyright_info, "ExpanderPlugin" };
-+CALF_PLUGIN_INFO(multibandgate) = { 0x8505, "MultibandGate", "Calf Multiband Gate", "Calf Studio Gear", calf_plugins::calf_copyright_info, "ExpanderPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -650,7 +650,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(limiter) = { 0x8521, "Limiter", "Calf Limiter", "Calf Studio Gear / Christian Holschuh / Markus Schmidt", calf_plugins::calf_copyright_info, "LimiterPlugin" };
-+CALF_PLUGIN_INFO(limiter) = { 0x8521, "Limiter", "Calf Limiter", "Calf Studio Gear", calf_plugins::calf_copyright_info, "LimiterPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -706,7 +706,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(multibandlimiter) = { 0x8520, "MultibandLimiter", "Calf Multiband Limiter", "Calf Studio Gear / Markus Schmidt / Christian Holschuh", calf_plugins::calf_copyright_info, "LimiterPlugin" };
-+CALF_PLUGIN_INFO(multibandlimiter) = { 0x8520, "MultibandLimiter", "Calf Multiband Limiter", "Calf Studio Gear", calf_plugins::calf_copyright_info, "LimiterPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -769,7 +769,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(sidechainlimiter) = { 0x8522, "SidechainLimiter", "Calf Sidechain Limiter", "Calf Studio Gear / Markus Schmidt / Christian Holschuh", calf_plugins::calf_copyright_info, "LimiterPlugin" };
-+CALF_PLUGIN_INFO(sidechainlimiter) = { 0x8522, "SidechainLimiter", "Calf Sidechain Limiter", "Calf Studio Gear", calf_plugins::calf_copyright_info, "LimiterPlugin" };
-
-
- ////////////////////////////////////////////////////////////////////////////
-@@ -786,7 +786,7 @@
- { 4, 0, 4, 0, PF_ENUM | PF_CTL_COMBO, emphasis_filter_types, "type", "Filter Type" },
- {}
- };
--CALF_PLUGIN_INFO(emphasis) = { 0x8599, "Emphasis", "Calf Emphasis", "Calf Studio Gear / Damien Zammit", calf_plugins::calf_copyright_info, "FilterPlugin" };
-+CALF_PLUGIN_INFO(emphasis) = { 0x8599, "Emphasis", "Calf Emphasis", "Calf Studio Gear", calf_plugins::calf_copyright_info, "FilterPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
- const char *active_mode_names[] = { " ", "ON", "Left", "Right", "Mid", "Side" };
-@@ -804,7 +804,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(equalizer5band) = { 0x8511, "Equalizer5Band", "Calf Equalizer 5 Band", "Calf Studio Gear / Markus Schmidt", calf_plugins::calf_copyright_info, "EQPlugin" };
-+CALF_PLUGIN_INFO(equalizer5band) = { 0x8511, "Equalizer5Band", "Calf Equalizer 5 Band", "Calf Studio Gear", calf_plugins::calf_copyright_info, "EQPlugin" };
-
- //////////////////////////////////////////////////////////////////////////////
-
-@@ -825,7 +825,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(equalizer8band) = { 0x8512, "Equalizer8Band", "Calf Equalizer 8 Band", "Calf Studio Gear / Markus Schmidt", calf_plugins::calf_copyright_info, "EQPlugin" };
-+CALF_PLUGIN_INFO(equalizer8band) = { 0x8512, "Equalizer8Band", "Calf Equalizer 8 Band", "Calf Studio Gear", calf_plugins::calf_copyright_info, "EQPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -848,7 +848,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(equalizer12band) = { 0x8513, "Equalizer12Band", "Calf Equalizer 12 Band", "Calf Studio Gear / Markus Schmidt", calf_plugins::calf_copyright_info, "EQPlugin" };
-+CALF_PLUGIN_INFO(equalizer12band) = { 0x8513, "Equalizer12Band", "Calf Equalizer 12 Band", "Calf Studio Gear", calf_plugins::calf_copyright_info, "EQPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -956,7 +956,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(equalizer30band) = { 0x8514, "Equalizer30Band", "Calf Equalizer 30 Band", "Calf Studio Gear / drgreenthumb", calf_plugins::calf_copyright_info, "EQPlugin" };
-+CALF_PLUGIN_INFO(equalizer30band) = { 0x8514, "Equalizer30Band", "Calf Equalizer 30 Band", "Calf Studio Gear", calf_plugins::calf_copyright_info, "EQPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -982,7 +982,7 @@
- XOVER_BAND_PARAMS(2)
- {}
- };
--CALF_PLUGIN_INFO(xover2) = { 0x8515, "XOver2Band", "Calf X-Over 2 Band", "Calf Studio Gear / Markus Schmidt", calf_plugins::calf_copyright_info, "UtilityPlugin" };
-+CALF_PLUGIN_INFO(xover2) = { 0x8515, "XOver2Band", "Calf X-Over 2 Band", "Calf Studio Gear", calf_plugins::calf_copyright_info, "UtilityPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -1000,7 +1000,7 @@
- XOVER_BAND_PARAMS(3)
- {}
- };
--CALF_PLUGIN_INFO(xover3) = { 0x8515, "XOver3Band", "Calf X-Over 3 Band", "Calf Studio Gear / Markus Schmidt", calf_plugins::calf_copyright_info, "UtilityPlugin" };
-+CALF_PLUGIN_INFO(xover3) = { 0x8515, "XOver3Band", "Calf X-Over 3 Band", "Calf Studio Gear", calf_plugins::calf_copyright_info, "UtilityPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -1020,7 +1020,7 @@
- XOVER_BAND_PARAMS(4)
- {}
- };
--CALF_PLUGIN_INFO(xover4) = { 0x8515, "XOver4Band", "Calf X-Over 4 Band", "Calf Studio Gear / Markus Schmidt", calf_plugins::calf_copyright_info, "UtilityPlugin" };
-+CALF_PLUGIN_INFO(xover4) = { 0x8515, "XOver4Band", "Calf X-Over 4 Band", "Calf Studio Gear", calf_plugins::calf_copyright_info, "UtilityPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -1108,7 +1108,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(vocoder) = { 0x8514, "Vocoder", "Calf Vocoder", "Calf Studio Gear / Markus Schmidt / Christian Holschuh", calf_plugins::calf_copyright_info, "FilterPlugin" };
-+CALF_PLUGIN_INFO(vocoder) = { 0x8514, "Vocoder", "Calf Vocoder", "Calf Studio Gear", calf_plugins::calf_copyright_info, "FilterPlugin" };
-
-
- ////////////////////////////////////////////////////////////////////////////
-@@ -1129,7 +1129,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(pulsator) = { 0x8514, "Pulsator", "Calf Pulsator", "Calf Studio Gear / Markus Schmidt", calf_plugins::calf_copyright_info, "ModulatorPlugin" };
-+CALF_PLUGIN_INFO(pulsator) = { 0x8514, "Pulsator", "Calf Pulsator", "Calf Studio Gear", calf_plugins::calf_copyright_info, "ModulatorPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -1172,7 +1172,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(ringmodulator) = { 0x8514, "RingModulator", "Calf Ring Modulator", "Calf Studio Gear / Markus Schmidt", calf_plugins::calf_copyright_info, "ModulatorPlugin" };
-+CALF_PLUGIN_INFO(ringmodulator) = { 0x8514, "RingModulator", "Calf Ring Modulator", "Calf Studio Gear", calf_plugins::calf_copyright_info, "ModulatorPlugin" };
-
-
- ////////////////////////////////////////////////////////////////////////////
-@@ -1199,7 +1199,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(saturator) = { 0x8530, "Saturator", "Calf Saturator", "Calf Studio Gear / Markus Schmidt / Krzysztof Foltman", calf_plugins::calf_copyright_info, "DistortionPlugin" };
-+CALF_PLUGIN_INFO(saturator) = { 0x8530, "Saturator", "Calf Saturator", "Calf Studio Gear", calf_plugins::calf_copyright_info, "DistortionPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -1226,7 +1226,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(exciter) = { 0x8531, "Exciter", "Calf Exciter", "Calf Studio Gear / Markus Schmidt / Krzysztof Foltman", calf_plugins::calf_copyright_info, "SpectralPlugin" };
-+CALF_PLUGIN_INFO(exciter) = { 0x8531, "Exciter", "Calf Exciter", "Calf Studio Gear", calf_plugins::calf_copyright_info, "SpectralPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -1253,7 +1253,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(bassenhancer) = { 0x8532, "BassEnhancer", "Calf Bass Enhancer", "Calf Studio Gear / Markus Schmidt / Krzysztof Foltman", calf_plugins::calf_copyright_info, "SpectralPlugin" };
-+CALF_PLUGIN_INFO(bassenhancer) = { 0x8532, "BassEnhancer", "Calf Bass Enhancer", "Calf Studio Gear", calf_plugins::calf_copyright_info, "SpectralPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -1289,7 +1289,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(stereo) = { 0x8588, "StereoTools", "Calf Stereo Tools", "Calf Studio Gear / Markus Schmidt", calf_plugins::calf_copyright_info, "SpatialPlugin" };
-+CALF_PLUGIN_INFO(stereo) = { 0x8588, "StereoTools", "Calf Stereo Tools", "Calf Studio Gear", calf_plugins::calf_copyright_info, "SpatialPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -1325,7 +1325,7 @@
-
- {}
- };
--CALF_PLUGIN_INFO(haas_enhancer) = { 0x8486, "HaasEnhancer", "Calf Haas Stereo Enhancer", "Calf Studio Gear / Vladimir Sadovnikov", calf_plugins::calf_copyright_info, "SpatialPlugin" };
-+CALF_PLUGIN_INFO(haas_enhancer) = { 0x8486, "HaasEnhancer", "Calf Haas Stereo Enhancer", "Calf Studio Gear", calf_plugins::calf_copyright_info, "SpatialPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -1356,7 +1356,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(mono) = { 0x8589, "MonoInput", "Calf Mono Input", "Calf Studio Gear / Markus Schmidt", calf_plugins::calf_copyright_info, "UtilityPlugin" };
-+CALF_PLUGIN_INFO(mono) = { 0x8589, "MonoInput", "Calf Mono Input", "Calf Studio Gear", calf_plugins::calf_copyright_info, "UtilityPlugin" };
-
-
- ////////////////////////////////////////////////////////////////////////////
-@@ -1397,7 +1397,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(analyzer) = { 0x8588, "Analyzer", "Calf Analyzer", "Calf Studio Gear / Christian Holschuh / Markus Schmidt", calf_plugins::calf_copyright_info, "AnalyserPlugin" };
-+CALF_PLUGIN_INFO(analyzer) = { 0x8588, "Analyzer", "Calf Analyzer", "Calf Studio Gear", calf_plugins::calf_copyright_info, "AnalyserPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
- const char *transientdesigner_view_names[] = { "Output", "Envelope", "Attack", "Release" };
-@@ -1424,7 +1424,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(transientdesigner) = { 0x8588, "TransientDesigner", "Calf Transient Designer", "Calf Studio Gear / Christian Holschuh / Markus Schmidt", calf_plugins::calf_copyright_info, "EnvelopePlugin" };
-+CALF_PLUGIN_INFO(transientdesigner) = { 0x8588, "TransientDesigner", "Calf Transient Designer", "Calf Studio Gear", calf_plugins::calf_copyright_info, "EnvelopePlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -1445,7 +1445,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(tapesimulator) = { 0x8588, "TapeSimulator", "Calf Tape Simulator", "Calf Studio Gear / Markus Schmidt / Christian Holschuh", calf_plugins::calf_copyright_info, "SimulatorPlugin" };
-+CALF_PLUGIN_INFO(tapesimulator) = { 0x8588, "TapeSimulator", "Calf Tape Simulator", "Calf Studio Gear", calf_plugins::calf_copyright_info, "SimulatorPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -1466,7 +1466,7 @@
- {}
- };
-
--CALF_PLUGIN_INFO(crusher) = { 0x8587, "Crusher", "Calf Crusher", "Calf Studio Gear / Markus Schmidt / Christian Holschuh", calf_plugins::calf_copyright_info, "DistortionPlugin" };
-+CALF_PLUGIN_INFO(crusher) = { 0x8587, "Crusher", "Calf Crusher", "Calf Studio Gear", calf_plugins::calf_copyright_info, "DistortionPlugin" };
-
- ////////////////////////////////////////////////////////////////////////////
-
-@@ -1491,7 +1491,7 @@
- "2x6dB/oct Bandpass",
- };
-
--CALF_PLUGIN_INFO(monosynth) = { 0x8480, "Monosynth", "Calf Monosynth", "Calf Studio Gear / Krzysztof Foltman", calf_plugins::calf_copyright_info, "InstrumentPlugin" };
-+CALF_PLUGIN_INFO(monosynth) = { 0x8480, "Monosynth", "Calf Monosynth", "Calf Studio Gear", calf_plugins::calf_copyright_info, "InstrumentPlugin" };
-
- CALF_PORT_PROPS(monosynth) = {
- { monosynth_metadata::wave_saw, 0, monosynth_metadata::wave_count - 1, 1, PF_ENUM | PF_CTL_COMBO | PF_PROP_GRAPH, monosynth_waveform_names, "o1_wave", "Osc1 Wave" },
-@@ -1601,7 +1601,7 @@
-
- ////////////////////////////////////////////////////////////////////////////
-
--CALF_PLUGIN_INFO(organ) = { 0x8481, "Organ", "Calf Organ", "Calf Studio Gear / Krzysztof Foltman", calf_plugins::calf_copyright_info, "InstrumentPlugin" };
-+CALF_PLUGIN_INFO(organ) = { 0x8481, "Organ", "Calf Organ", "Calf Studio Gear", calf_plugins::calf_copyright_info, "InstrumentPlugin" };
-
- plugin_command_info *organ_metadata::get_commands()
- {
-@@ -1807,7 +1807,7 @@
- "Out L", "Out R",
- };
-
--CALF_PLUGIN_INFO(fluidsynth) = { 0x8700, "Fluidsynth", "Calf Fluidsynth", "Calf Studio Gear / FluidSynth Team / Krzysztof Foltman", calf_plugins::calf_copyright_info, "InstrumentPlugin" };
-+CALF_PLUGIN_INFO(fluidsynth) = { 0x8700, "Fluidsynth", "Calf Fluidsynth", "Calf Studio Gear", calf_plugins::calf_copyright_info, "InstrumentPlugin" };
-
- CALF_PORT_PROPS(fluidsynth) = {
- { 0.5, 0, 1, 100, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_PROP_OUTPUT_GAIN, NULL, "master", "Volume" },
-@@ -1890,7 +1890,7 @@
- "Out L", "Out R",
- };
-
--CALF_PLUGIN_INFO(wavetable) = { 0x8701, "Wavetable", "Calf Wavetable", "Calf Studio Gear / Krzysztof Foltman", calf_plugins::calf_copyright_info, "InstrumentPlugin" };
-+CALF_PLUGIN_INFO(wavetable) = { 0x8701, "Wavetable", "Calf Wavetable", "Calf Studio Gear", calf_plugins::calf_copyright_info, "InstrumentPlugin" };
-
- CALF_PORT_PROPS(wavetable) = {
- { wavetable_metadata::wt_count - 1, 0, wavetable_metadata::wt_count - 1, 0, PF_ENUM | PF_SCALE_LINEAR | PF_CTL_COMBO, wavetable_names, "o1wave", "Osc1 Wave" },
diff --git a/debian/patches/020161210~f392c59.patch b/debian/patches/020161210~f392c59.patch
deleted file mode 100644
index d6c3cfc..0000000
--- a/debian/patches/020161210~f392c59.patch
+++ /dev/null
@@ -1,2153 +0,0 @@
-Description: Fix type errors causing gcc5/gcc6 build failure
- Fix some type errors which prevented either gcc5 or gcc6 from building.
- Fix some warnings.
-Origin: upstream, https://github.com/calf-studio-gear/calf/commit/f392c59
-Author: Markus Schmidt <schmidt at boomshop.net>
-Forwarded: yes
-Last-Update: 2017-07-30
-
---- a/src/analyzer.cpp
-+++ b/src/analyzer.cpp
-@@ -470,13 +470,13 @@
- lastoutL = fft_outL[_iter];
- //pumping up actual signal an erase surrounding
- // sounds
-- fft_outL[_iter] = 0.25f * std::max(n * 0.6f * \
-- fabs(fft_outL[_iter]) - var1L , 1e-20f);
-+ fft_outL[_iter] = 0.25f * std::max((float)(n * 0.6f * \
-+ fabs(fft_outL[_iter]) - var1L), 1e-20f);
- if(_mode == 3 or _mode == 4) {
- // do the same with R channel if needed
- lastoutR = fft_outR[_iter];
-- fft_outR[_iter] = 0.25f * std::max(n * \
-- 0.6f * fabs(fft_outR[_iter]) - var1R , 1e-20f);
-+ fft_outR[_iter] = 0.25f * std::max((float)(n * \
-+ 0.6f * fabs(fft_outR[_iter]) - var1R), 1e-20f);
- }
- break;
- }
---- a/src/calf/orfanidis_eq.h
-+++ b/src/calf/orfanidis_eq.h
-@@ -16,10 +16,10 @@
-
- //Eq types
- typedef enum {
-- none,
-- butterworth,
-- chebyshev1,
-- chebyshev2
-+ none,
-+ butterworth,
-+ chebyshev1,
-+ chebyshev2
- } filter_type;
-
- static const char *get_eq_text(filter_type type) {
-@@ -39,9 +39,9 @@
-
- //Eq errors
- typedef enum {
-- no_error,
-- invalid_input_data_error,
-- processing_error
-+ no_error,
-+ invalid_input_data_error,
-+ processing_error
- } eq_error_t;
-
- //Constants
-@@ -79,255 +79,255 @@
- //------------ Conversion functions class ------------
- class conversions
- {
-- int db_min_max;
-- std::vector<eq_double_t> lin_gains;
-+ int db_min_max;
-+ std::vector<eq_double_t> lin_gains;
-
-- int lin_gains_index(eq_double_t x) {
-- int int_x = (int)x;
-- if((x >= -db_min_max) && (x < db_min_max - 1))
-- return db_min_max + int_x;
--
-- return db_min_max;
-- }
-+ int lin_gains_index(eq_double_t x) {
-+ int int_x = (int)x;
-+ if((x >= -db_min_max) && (x < db_min_max - 1))
-+ return db_min_max + int_x;
-+
-+ return db_min_max;
-+ }
-
-- conversions(){}
-+ conversions(){}
-
- public:
-- conversions(int min_max) {
-- db_min_max = min_max;
-- //Update table (vector elements) for fast conversions
-- int step = -min_max;
-- while(step <= min_max)
-- lin_gains.push_back(db_2_lin(step++));
-- }
--
-- inline eq_double_t fast_db_2_lin(eq_double_t x) {
-- int int_part = (int)x;
-- eq_double_t frac_part = x - int_part;
-- return lin_gains[lin_gains_index(int_part)]*(1-frac_part) +
-- (lin_gains[lin_gains_index(int_part + 1)])*frac_part;
-- }
--
-- inline eq_double_t fast_lin_2_db(eq_double_t x) {
-- if((x >= lin_gains[0]) && (x < lin_gains[lin_gains.size() - 1])) {
-- for (unsigned int i = 0; i < lin_gains.size() - 2; i++)
-- if((x >= lin_gains[i]) && (x < lin_gains[i + 1])) {
-- int int_part = i - db_min_max;
-- eq_double_t frac_part = x - (int)(x);
-- return int_part + frac_part;
-- }
-- }
-- return 0;
-- }
--
-- inline static eq_double_t db_2_lin(eq_double_t x) {
-- return pow(10, x/20);
-- }
--
-- inline static eq_double_t lin_2_db(eq_double_t x) {
-- return 20*log10(x);
-- }
--
-- inline static eq_double_t rad_2_hz(eq_double_t x, eq_double_t fs) {
-- return 2*pi/x*fs;
-- }
--
-- inline static eq_double_t hz_2_rad(eq_double_t x, eq_double_t fs) {
-- return 2*pi*x/fs;
-- }
-+ conversions(int min_max) {
-+ db_min_max = min_max;
-+ //Update table (vector elements) for fast conversions
-+ int step = -min_max;
-+ while(step <= min_max)
-+ lin_gains.push_back(db_2_lin(step++));
-+ }
-+
-+ inline eq_double_t fast_db_2_lin(eq_double_t x) {
-+ int int_part = (int)x;
-+ eq_double_t frac_part = x - int_part;
-+ return lin_gains[lin_gains_index(int_part)]*(1-frac_part) +
-+ (lin_gains[lin_gains_index(int_part + 1)])*frac_part;
-+ }
-+
-+ inline eq_double_t fast_lin_2_db(eq_double_t x) {
-+ if((x >= lin_gains[0]) && (x < lin_gains[lin_gains.size() - 1])) {
-+ for (unsigned int i = 0; i < lin_gains.size() - 2; i++)
-+ if((x >= lin_gains[i]) && (x < lin_gains[i + 1])) {
-+ int int_part = i - db_min_max;
-+ eq_double_t frac_part = x - (int)(x);
-+ return int_part + frac_part;
-+ }
-+ }
-+ return 0;
-+ }
-+
-+ inline static eq_double_t db_2_lin(eq_double_t x) {
-+ return pow(10, x/20);
-+ }
-+
-+ inline static eq_double_t lin_2_db(eq_double_t x) {
-+ return 20*log10(x);
-+ }
-+
-+ inline static eq_double_t rad_2_hz(eq_double_t x, eq_double_t fs) {
-+ return 2*pi/x*fs;
-+ }
-+
-+ inline static eq_double_t hz_2_rad(eq_double_t x, eq_double_t fs) {
-+ return 2*pi*x/fs;
-+ }
- };
-
- //------------ Band freq's structure ------------
- struct band_freqs {
- private:
-- band_freqs();
-+ band_freqs();
-
- public:
-- eq_double_t min_freq;
-- eq_double_t center_freq;
-- eq_double_t max_freq;
-+ eq_double_t min_freq;
-+ eq_double_t center_freq;
-+ eq_double_t max_freq;
-
-- band_freqs(eq_double_t f1, eq_double_t f0, eq_double_t f2):
-- min_freq(f1), center_freq(f0), max_freq(f2){}
-+ band_freqs(eq_double_t f1, eq_double_t f0, eq_double_t f2):
-+ min_freq(f1), center_freq(f0), max_freq(f2){}
-
-- ~band_freqs(){}
-+ ~band_freqs(){}
- };
-
- //------------ Frequency grid class ------------
- class freq_grid {
- private:
-- std::vector<band_freqs> freqs_;
-+ std::vector<band_freqs> freqs_;
-
- public:
-- freq_grid(){}
-- freq_grid(const freq_grid& fg){this->freqs_ = fg.freqs_;}
-- ~freq_grid(){}
--
-- eq_error_t set_band(eq_double_t fmin, eq_double_t f0, eq_double_t fmax) {
-- freqs_.clear();
-- return add_band(fmin, f0, fmax);
-- }
--
-- //fc, fmin, fmax
-- eq_error_t add_band(eq_double_t fmin, eq_double_t f0, eq_double_t fmax) {
-- if(fmin < f0 && f0 < fmax)
-- freqs_.push_back(band_freqs(fmin, f0, fmax));
-- else
-- return invalid_input_data_error;
-- return no_error;
-- }
--
-- //f0, deltaf = fmax - fmin
-- eq_error_t add_band(eq_double_t f0, eq_double_t df) {
-- if(f0 >= df/2)
-- {
-- eq_double_t fmin = f0 - df/2;
-- eq_double_t fmax = f0 + df/2;
-- freqs_.push_back(band_freqs(fmin, f0, fmax));
-- }
-- else
-- return invalid_input_data_error;
-- return no_error;
-- }
--
-- eq_error_t set_5_bands(eq_double_t center_freq = bands_grid_center_freq_hz) {
-- freqs_.clear();
-- if(lowest_audio_freq_hz < center_freq &&
-- center_freq < highest_audio_freq_hz) {
--
-- //Find lowest center frequency in band
-- eq_double_t lowest_center_freq = center_freq;
-- while(lowest_center_freq > lowest_grid_center_freq_hz)
-- lowest_center_freq/=4.0;
-- if(lowest_center_freq < lowest_grid_center_freq_hz)
-- lowest_center_freq*=4.0;
--
-- //Calculate freq's
-- eq_double_t f0 = lowest_center_freq;
-- for(unsigned int i = 0; i < 5 ; i++) {
-- freqs_.push_back(band_freqs(f0/2, f0, f0*2));
-- f0 *= 4;
-- }
-- }
-- else
-- return invalid_input_data_error;
-- return no_error;
-- }
--
-- eq_error_t set_10_bands(eq_double_t center_freq = bands_grid_center_freq_hz) {
-- freqs_.clear();
-- if(lowest_audio_freq_hz < center_freq &&
-- center_freq < highest_audio_freq_hz) {
--
-- //Find lowest center frequency in band
-- eq_double_t lowest_center_freq = center_freq;
-- while(lowest_center_freq > lowest_grid_center_freq_hz)
-- lowest_center_freq/=2;
-- if(lowest_center_freq < lowest_grid_center_freq_hz)
-- lowest_center_freq*=2;
--
-- //Calculate freq's
-- eq_double_t f0 = lowest_center_freq;
-- for(unsigned int i = 0; i < 10; i++) {
-- freqs_.push_back(band_freqs(f0/pow(2,0.5), f0, f0*pow(2,0.5)));
-- f0 *= 2;
-- }
-- }
-- else
-- return invalid_input_data_error;
-- return no_error;
-- }
--
-- eq_error_t set_20_bands(eq_double_t center_freq = bands_grid_center_freq_hz) {
-- freqs_.clear();
-- if(lowest_audio_freq_hz < center_freq &&
-- center_freq < highest_audio_freq_hz) {
--
-- //Find lowest center frequency in band
-- eq_double_t lowest_center_freq = center_freq;
-- while(lowest_center_freq > lowest_audio_freq_hz)
-- lowest_center_freq/=pow(2,0.5);
-- if(lowest_center_freq < lowest_audio_freq_hz)
-- lowest_center_freq*=pow(2,0.5);
--
-- //Calculate freq's
-- eq_double_t f0 = lowest_center_freq;
-- for(unsigned int i = 0; i < 20; i++) {
-- freqs_.push_back(band_freqs(f0/pow(2,0.25),
-- f0, f0*pow(2,0.25)));
-- f0 *= pow(2,0.5);
-- }
-- }
-- else
-- return invalid_input_data_error;
-- return no_error;
-- }
--
-- eq_error_t set_30_bands(eq_double_t center_freq = bands_grid_center_freq_hz) {
-- freqs_.clear();
-- if(lowest_audio_freq_hz < center_freq &&
-- center_freq < highest_audio_freq_hz) {
--
-- //Find lowest center frequency in band
-- eq_double_t lowest_center_freq = center_freq;
-- while(lowest_center_freq > lowest_audio_freq_hz)
-- lowest_center_freq/=pow(2.0,1.0/3.0);
-- if(lowest_center_freq < lowest_audio_freq_hz)
-- lowest_center_freq*=pow(2.0,1.0/3.0);
--
-- //Calculate freq's
-- eq_double_t f0 = lowest_center_freq;
-- for(unsigned int i = 0; i < 30; i++) {
-- freqs_.push_back(band_freqs(f0/pow(2.0,1.0/6.0),
-- f0, f0*pow(2.0,1.0/6.0)));
-- f0 *= pow(2,1.0/3.0);
-- }
-- }
-- else
-- return invalid_input_data_error;
-- return no_error;
-- }
--
-- unsigned int get_number_of_bands(){return freqs_.size();}
--
-- std::vector<band_freqs> get_freqs(){return freqs_;}
--
-- unsigned int get_freq(unsigned int number) {
-- if(number < freqs_.size())
-- return freqs_[number].center_freq;
-- else
-- return 0;
-- }
--
-- unsigned int get_rounded_freq(unsigned int number) {
-- if(number < freqs_.size()) {
-- unsigned int freq = freqs_[number].center_freq;
-- if (freq < 100)
-- return freq;
-- else if(freq >= 100 && freq < 1000) {
-- unsigned int rest = freq%10;
-- if(rest < 5)
-- return freq - rest;
-- else
-- return freq - rest + 10;
-- }
-- else if(freq >= 1000 && freq < 10000) {
-- unsigned int rest = freq%100;
-- if(rest < 50)
-- return freq - rest;
-- else
-- return freq - rest + 100;
-- }
-- else if(freq >= 10000) {
-- unsigned int rest = freq%1000;
-- if(rest < 500)
-- return freq - rest;
-- else
-- return freq - rest + 1000;
-- }
-- }
-- return 0;
-- }
-+ freq_grid(){}
-+ freq_grid(const freq_grid& fg){this->freqs_ = fg.freqs_;}
-+ ~freq_grid(){}
-+
-+ eq_error_t set_band(eq_double_t fmin, eq_double_t f0, eq_double_t fmax) {
-+ freqs_.clear();
-+ return add_band(fmin, f0, fmax);
-+ }
-+
-+ //fc, fmin, fmax
-+ eq_error_t add_band(eq_double_t fmin, eq_double_t f0, eq_double_t fmax) {
-+ if(fmin < f0 && f0 < fmax)
-+ freqs_.push_back(band_freqs(fmin, f0, fmax));
-+ else
-+ return invalid_input_data_error;
-+ return no_error;
-+ }
-+
-+ //f0, deltaf = fmax - fmin
-+ eq_error_t add_band(eq_double_t f0, eq_double_t df) {
-+ if(f0 >= df/2)
-+ {
-+ eq_double_t fmin = f0 - df/2;
-+ eq_double_t fmax = f0 + df/2;
-+ freqs_.push_back(band_freqs(fmin, f0, fmax));
-+ }
-+ else
-+ return invalid_input_data_error;
-+ return no_error;
-+ }
-+
-+ eq_error_t set_5_bands(eq_double_t center_freq = bands_grid_center_freq_hz) {
-+ freqs_.clear();
-+ if(lowest_audio_freq_hz < center_freq &&
-+ center_freq < highest_audio_freq_hz) {
-+
-+ //Find lowest center frequency in band
-+ eq_double_t lowest_center_freq = center_freq;
-+ while(lowest_center_freq > lowest_grid_center_freq_hz)
-+ lowest_center_freq/=4.0;
-+ if(lowest_center_freq < lowest_grid_center_freq_hz)
-+ lowest_center_freq*=4.0;
-+
-+ //Calculate freq's
-+ eq_double_t f0 = lowest_center_freq;
-+ for(unsigned int i = 0; i < 5 ; i++) {
-+ freqs_.push_back(band_freqs(f0/2, f0, f0*2));
-+ f0 *= 4;
-+ }
-+ }
-+ else
-+ return invalid_input_data_error;
-+ return no_error;
-+ }
-+
-+ eq_error_t set_10_bands(eq_double_t center_freq = bands_grid_center_freq_hz) {
-+ freqs_.clear();
-+ if(lowest_audio_freq_hz < center_freq &&
-+ center_freq < highest_audio_freq_hz) {
-+
-+ //Find lowest center frequency in band
-+ eq_double_t lowest_center_freq = center_freq;
-+ while(lowest_center_freq > lowest_grid_center_freq_hz)
-+ lowest_center_freq/=2;
-+ if(lowest_center_freq < lowest_grid_center_freq_hz)
-+ lowest_center_freq*=2;
-+
-+ //Calculate freq's
-+ eq_double_t f0 = lowest_center_freq;
-+ for(unsigned int i = 0; i < 10; i++) {
-+ freqs_.push_back(band_freqs(f0/pow(2,0.5), f0, f0*pow(2,0.5)));
-+ f0 *= 2;
-+ }
-+ }
-+ else
-+ return invalid_input_data_error;
-+ return no_error;
-+ }
-+
-+ eq_error_t set_20_bands(eq_double_t center_freq = bands_grid_center_freq_hz) {
-+ freqs_.clear();
-+ if(lowest_audio_freq_hz < center_freq &&
-+ center_freq < highest_audio_freq_hz) {
-+
-+ //Find lowest center frequency in band
-+ eq_double_t lowest_center_freq = center_freq;
-+ while(lowest_center_freq > lowest_audio_freq_hz)
-+ lowest_center_freq/=pow(2,0.5);
-+ if(lowest_center_freq < lowest_audio_freq_hz)
-+ lowest_center_freq*=pow(2,0.5);
-+
-+ //Calculate freq's
-+ eq_double_t f0 = lowest_center_freq;
-+ for(unsigned int i = 0; i < 20; i++) {
-+ freqs_.push_back(band_freqs(f0/pow(2,0.25),
-+ f0, f0*pow(2,0.25)));
-+ f0 *= pow(2,0.5);
-+ }
-+ }
-+ else
-+ return invalid_input_data_error;
-+ return no_error;
-+ }
-+
-+ eq_error_t set_30_bands(eq_double_t center_freq = bands_grid_center_freq_hz) {
-+ freqs_.clear();
-+ if(lowest_audio_freq_hz < center_freq &&
-+ center_freq < highest_audio_freq_hz) {
-+
-+ //Find lowest center frequency in band
-+ eq_double_t lowest_center_freq = center_freq;
-+ while(lowest_center_freq > lowest_audio_freq_hz)
-+ lowest_center_freq/=pow(2.0,1.0/3.0);
-+ if(lowest_center_freq < lowest_audio_freq_hz)
-+ lowest_center_freq*=pow(2.0,1.0/3.0);
-+
-+ //Calculate freq's
-+ eq_double_t f0 = lowest_center_freq;
-+ for(unsigned int i = 0; i < 30; i++) {
-+ freqs_.push_back(band_freqs(f0/pow(2.0,1.0/6.0),
-+ f0, f0*pow(2.0,1.0/6.0)));
-+ f0 *= pow(2,1.0/3.0);
-+ }
-+ }
-+ else
-+ return invalid_input_data_error;
-+ return no_error;
-+ }
-+
-+ unsigned int get_number_of_bands(){return freqs_.size();}
-+
-+ std::vector<band_freqs> get_freqs(){return freqs_;}
-+
-+ unsigned int get_freq(unsigned int number) {
-+ if(number < freqs_.size())
-+ return freqs_[number].center_freq;
-+ else
-+ return 0;
-+ }
-+
-+ unsigned int get_rounded_freq(unsigned int number) {
-+ if(number < freqs_.size()) {
-+ unsigned int freq = freqs_[number].center_freq;
-+ if (freq < 100)
-+ return freq;
-+ else if(freq >= 100 && freq < 1000) {
-+ unsigned int rest = freq%10;
-+ if(rest < 5)
-+ return freq - rest;
-+ else
-+ return freq - rest + 10;
-+ }
-+ else if(freq >= 1000 && freq < 10000) {
-+ unsigned int rest = freq%100;
-+ if(rest < 50)
-+ return freq - rest;
-+ else
-+ return freq - rest + 100;
-+ }
-+ else if(freq >= 10000) {
-+ unsigned int rest = freq%1000;
-+ if(rest < 500)
-+ return freq - rest;
-+ else
-+ return freq - rest + 1000;
-+ }
-+ }
-+ return 0;
-+ }
- };
-
- //------------ Forth order sections ------------
-@@ -340,551 +340,551 @@
- eq_single_t denumBuf[fo_section_order];
-
- inline eq_single_t df1_fo_process(eq_single_t in) {
-- eq_single_t out = 0;
-- out+= b0*in;
-- out+= (b1*numBuf[0] - denumBuf[0]*a1);
-- out+= (b2*numBuf[1] - denumBuf[1]*a2);
-- out+= (b3*numBuf[2] - denumBuf[2]*a3);
-- out+= (b4*numBuf[3] - denumBuf[3]*a4);
--
-- numBuf[3] = numBuf[2];
-- numBuf[2] = numBuf[1];
-- numBuf[1] = numBuf[0];
-- *numBuf = in;
--
-- denumBuf[3] = denumBuf[2];
-- denumBuf[2] = denumBuf[1];
-- denumBuf[1] = denumBuf[0];
-- *denumBuf = out;
-+ eq_single_t out = 0;
-+ out+= b0*in;
-+ out+= (b1*numBuf[0] - denumBuf[0]*a1);
-+ out+= (b2*numBuf[1] - denumBuf[1]*a2);
-+ out+= (b3*numBuf[2] - denumBuf[2]*a3);
-+ out+= (b4*numBuf[3] - denumBuf[3]*a4);
-+
-+ numBuf[3] = numBuf[2];
-+ numBuf[2] = numBuf[1];
-+ numBuf[1] = numBuf[0];
-+ *numBuf = in;
-+
-+ denumBuf[3] = denumBuf[2];
-+ denumBuf[2] = denumBuf[1];
-+ denumBuf[1] = denumBuf[0];
-+ *denumBuf = out;
-
-- return(out);
-- }
-+ return(out);
-+ }
-
- public:
-- fo_section() {
-- b0 = 1; b1 = 0; b2 = 0; b3 = 0; b4 = 0;
-- a0 = 1; a1 = 0; a2 = 0; a3 = 0; a4 = 0;
--
-- for(unsigned int i = 0; i < fo_section_order; i++) {
-- numBuf[i] = 0;
-- denumBuf[i] = 0;
-- }
-- }
--
-- virtual ~fo_section(){}
--
-- eq_single_t process(eq_single_t in) {
-- return df1_fo_process(in);
-- }
--
-- virtual fo_section get() {
-- return *this;
-- }
-+ fo_section() {
-+ b0 = 1; b1 = 0; b2 = 0; b3 = 0; b4 = 0;
-+ a0 = 1; a1 = 0; a2 = 0; a3 = 0; a4 = 0;
-+
-+ for(unsigned int i = 0; i < fo_section_order; i++) {
-+ numBuf[i] = 0;
-+ denumBuf[i] = 0;
-+ }
-+ }
-+
-+ virtual ~fo_section(){}
-+
-+ eq_single_t process(eq_single_t in) {
-+ return df1_fo_process(in);
-+ }
-+
-+ virtual fo_section get() {
-+ return *this;
-+ }
- };
-
- class butterworth_fo_section : public fo_section {
-- butterworth_fo_section(){}
-- butterworth_fo_section(butterworth_fo_section&){}
-+ butterworth_fo_section(){}
-+ butterworth_fo_section(butterworth_fo_section&){}
- public:
-- butterworth_fo_section(eq_double_t beta,
-- eq_double_t s, eq_double_t g, eq_double_t g0,
-- eq_double_t D, eq_double_t c0) {
-- b0 = (g*g*beta*beta + 2*g*g0*s*beta + g0*g0)/D;
-- b1 = -4*c0*(g0*g0 + g*g0*s*beta)/D;
-- b2 = 2*(g0*g0*(1 + 2*c0*c0) - g*g*beta*beta)/D;
-- b3 = -4*c0*(g0*g0 - g*g0*s*beta)/D;
-- b4 = (g*g*beta*beta - 2*g*g0*s*beta + g0*g0)/D;
--
-- a0 = 1;
-- a1 = -4*c0*(1 + s*beta)/D;
-- a2 = 2*(1 + 2*c0*c0 - beta*beta)/D;
-- a3 = -4*c0*(1 - s*beta)/D;
-- a4 = (beta*beta - 2*s*beta + 1)/D;
-- }
-+ butterworth_fo_section(eq_double_t beta,
-+ eq_double_t s, eq_double_t g, eq_double_t g0,
-+ eq_double_t D, eq_double_t c0) {
-+ b0 = (g*g*beta*beta + 2*g*g0*s*beta + g0*g0)/D;
-+ b1 = -4*c0*(g0*g0 + g*g0*s*beta)/D;
-+ b2 = 2*(g0*g0*(1 + 2*c0*c0) - g*g*beta*beta)/D;
-+ b3 = -4*c0*(g0*g0 - g*g0*s*beta)/D;
-+ b4 = (g*g*beta*beta - 2*g*g0*s*beta + g0*g0)/D;
-+
-+ a0 = 1;
-+ a1 = -4*c0*(1 + s*beta)/D;
-+ a2 = 2*(1 + 2*c0*c0 - beta*beta)/D;
-+ a3 = -4*c0*(1 - s*beta)/D;
-+ a4 = (beta*beta - 2*s*beta + 1)/D;
-+ }
-
-- fo_section get() {return *this;}
-+ fo_section get() {return *this;}
- };
-
- class chebyshev_type1_fo_section : public fo_section {
-- chebyshev_type1_fo_section(){}
-- chebyshev_type1_fo_section(chebyshev_type1_fo_section&){}
-+ chebyshev_type1_fo_section(){}
-+ chebyshev_type1_fo_section(chebyshev_type1_fo_section&){}
- public:
-- chebyshev_type1_fo_section(eq_double_t a,
-- eq_double_t c, eq_double_t tetta_b,
-- eq_double_t g0, eq_double_t s, eq_double_t b,
-- eq_double_t D, eq_double_t c0) {
-- b0 = ((b*b + g0*g0*c*c)*tetta_b*tetta_b + 2*g0*b*s*tetta_b + g0*g0)/D;
-- b1 = -4*c0*(g0*g0 + g0*b*s*tetta_b)/D;
-- b2 = 2*(g0*g0*(1 + 2*c0*c0) - (b*b + g0*g0*c*c)*tetta_b*tetta_b)/D;
-- b3 = -4*c0*(g0*g0 - g0*b*s*tetta_b)/D;
-- b4 = ((b*b + g0*g0*c*c)*tetta_b*tetta_b - 2*g0*b*s*tetta_b + g0*g0)/D;
--
-- a0 = 1;
-- a1 = -4*c0*(1 + a*s*tetta_b)/D;
-- a2 = 2*(1 + 2*c0*c0 - (a*a + c*c)*tetta_b*tetta_b)/D;
-- a3 = -4*c0*(1 - a*s*tetta_b)/D;
-- a4 = ((a*a + c*c)*tetta_b*tetta_b - 2*a*s*tetta_b + 1)/D;
-- }
-+ chebyshev_type1_fo_section(eq_double_t a,
-+ eq_double_t c, eq_double_t tetta_b,
-+ eq_double_t g0, eq_double_t s, eq_double_t b,
-+ eq_double_t D, eq_double_t c0) {
-+ b0 = ((b*b + g0*g0*c*c)*tetta_b*tetta_b + 2*g0*b*s*tetta_b + g0*g0)/D;
-+ b1 = -4*c0*(g0*g0 + g0*b*s*tetta_b)/D;
-+ b2 = 2*(g0*g0*(1 + 2*c0*c0) - (b*b + g0*g0*c*c)*tetta_b*tetta_b)/D;
-+ b3 = -4*c0*(g0*g0 - g0*b*s*tetta_b)/D;
-+ b4 = ((b*b + g0*g0*c*c)*tetta_b*tetta_b - 2*g0*b*s*tetta_b + g0*g0)/D;
-+
-+ a0 = 1;
-+ a1 = -4*c0*(1 + a*s*tetta_b)/D;
-+ a2 = 2*(1 + 2*c0*c0 - (a*a + c*c)*tetta_b*tetta_b)/D;
-+ a3 = -4*c0*(1 - a*s*tetta_b)/D;
-+ a4 = ((a*a + c*c)*tetta_b*tetta_b - 2*a*s*tetta_b + 1)/D;
-+ }
-
-- fo_section get() {return *this;}
-+ fo_section get() {return *this;}
- };
-
- class chebyshev_type2_fo_section : public fo_section {
-- chebyshev_type2_fo_section(){}
-- chebyshev_type2_fo_section(chebyshev_type2_fo_section&){}
-+ chebyshev_type2_fo_section(){}
-+ chebyshev_type2_fo_section(chebyshev_type2_fo_section&){}
- public:
-- chebyshev_type2_fo_section(eq_double_t a,
-- eq_double_t c, eq_double_t tetta_b,
-- eq_double_t g, eq_double_t s, eq_double_t b,
-- eq_double_t D, eq_double_t c0) {
-- b0 = (g*g*tetta_b*tetta_b + 2*g*b*s*tetta_b + b*b + g*g*c*c)/D;
-- b1 = -4*c0*(b*b + g*g*c*c + g*b*s*tetta_b)/D;
-- b2 = 2*((b*b + g*g*c*c)*(1 + 2*c0*c0) - g*g*tetta_b*tetta_b)/D;
-- b3 = -4*c0*(b*b + g*g*c*c - g*b*s*tetta_b)/D;
-- b4 = (g*g*tetta_b*tetta_b - 2*g*b*s*tetta_b + b*b + g*g*c*c)/D;
--
-- a0 = 1;
-- a1 = -4*c0*(a*a + c*c + a*s*tetta_b)/D;
-- a2 = 2*((a*a + c*c)*(1 + 2*c0*c0) - tetta_b*tetta_b)/D;
-- a3 = -4*c0*(a*a + c*c - a*s*tetta_b)/D;
-- a4 = (tetta_b*tetta_b - 2*a*s*tetta_b + a*a + c*c)/D;
-- }
-+ chebyshev_type2_fo_section(eq_double_t a,
-+ eq_double_t c, eq_double_t tetta_b,
-+ eq_double_t g, eq_double_t s, eq_double_t b,
-+ eq_double_t D, eq_double_t c0) {
-+ b0 = (g*g*tetta_b*tetta_b + 2*g*b*s*tetta_b + b*b + g*g*c*c)/D;
-+ b1 = -4*c0*(b*b + g*g*c*c + g*b*s*tetta_b)/D;
-+ b2 = 2*((b*b + g*g*c*c)*(1 + 2*c0*c0) - g*g*tetta_b*tetta_b)/D;
-+ b3 = -4*c0*(b*b + g*g*c*c - g*b*s*tetta_b)/D;
-+ b4 = (g*g*tetta_b*tetta_b - 2*g*b*s*tetta_b + b*b + g*g*c*c)/D;
-+
-+ a0 = 1;
-+ a1 = -4*c0*(a*a + c*c + a*s*tetta_b)/D;
-+ a2 = 2*((a*a + c*c)*(1 + 2*c0*c0) - tetta_b*tetta_b)/D;
-+ a3 = -4*c0*(a*a + c*c - a*s*tetta_b)/D;
-+ a4 = (tetta_b*tetta_b - 2*a*s*tetta_b + a*a + c*c)/D;
-+ }
-
-- fo_section get() {return *this;}
-+ fo_section get() {return *this;}
- };
-
- //------------ Bandpass filters ------------
- class bp_filter {
- public:
-- bp_filter(){}
-- virtual ~bp_filter(){}
-+ bp_filter(){}
-+ virtual ~bp_filter(){}
-
-- virtual eq_single_t process(eq_single_t in) = 0;
-+ virtual eq_single_t process(eq_single_t in) = 0;
- };
-
- class butterworth_bp_filter : public bp_filter {
- private:
-- std::vector<fo_section> sections_;
-+ std::vector<fo_section> sections_;
-
-- butterworth_bp_filter(){}
-+ butterworth_bp_filter(){}
- public:
-- butterworth_bp_filter(butterworth_bp_filter& f) {
-- this->sections_ = f.sections_;
-- }
--
-- butterworth_bp_filter(unsigned int N,
-- eq_double_t w0, eq_double_t wb,
-- eq_double_t G, eq_double_t Gb, eq_double_t G0) {
-- //Case if G == 0 : allpass
-- if(G == 0 && G0 == 0) {
-- sections_.push_back(fo_section());
-- return;
-- }
--
-- //Get number of analog sections
-- unsigned int r = N%2;
-- unsigned int L = (N - r)/2;
--
-- //Convert gains to linear scale
-- G = conversions::db_2_lin(G);
-- Gb = conversions::db_2_lin(Gb);
-- G0 = conversions::db_2_lin(G0);
--
-- eq_double_t epsilon = pow(((eq_double_t)(G*G - Gb*Gb))/
-- (Gb*Gb - G0*G0),0.5);
-- eq_double_t g = pow(((eq_double_t)G),1.0/((eq_double_t)N));
-- eq_double_t g0 = pow(((eq_double_t)G0),1.0/((eq_double_t)N));
-- eq_double_t beta = pow(((eq_double_t)epsilon), -1.0/((eq_double_t)N))*
-- tan(wb/2.0);
--
-- eq_double_t c0 = cos(w0);
-- if (w0 == 0) c0 = 1;
-- if (w0 == pi/2) c0=0;
-- if (w0 == pi) c0 =- 1;
--
-- //Calculate every section
-- for(unsigned int i = 1; i <= L; i++) {
-- eq_double_t ui = (2.0*i-1)/N;
-- eq_double_t si = sin(pi*ui/2.0);
--
-- eq_double_t Di = beta*beta + 2*si*beta + 1;
--
-- sections_.push_back
-- (butterworth_fo_section(beta, si, g, g0, Di, c0));
-- }
-- }
--
-- ~butterworth_bp_filter(){}
--
-- static eq_single_t compute_bw_gain_db(eq_single_t gain) {
-- eq_single_t bw_gain = 0;
-- if(gain <= -6)
-- bw_gain = gain + common_base_gain_db;
-- else if(gain > -6 && gain < 6)
-- bw_gain = gain*0.5;
-- else if(gain >= 6)
-- bw_gain = gain - common_base_gain_db;
--
-- return bw_gain;
-- }
--
-- virtual eq_single_t process(eq_single_t in) {
-- eq_single_t p0 = in;
-- eq_single_t p1 = 0;
-- //Process FO sections in serial connection
-- for(unsigned int i = 0; i < sections_.size(); i++) {
-- p1 = sections_[i].process(p0);
-- p0 = p1;
-- }
-+ butterworth_bp_filter(butterworth_bp_filter& f) {
-+ this->sections_ = f.sections_;
-+ }
-+
-+ butterworth_bp_filter(unsigned int N,
-+ eq_double_t w0, eq_double_t wb,
-+ eq_double_t G, eq_double_t Gb, eq_double_t G0) {
-+ //Case if G == 0 : allpass
-+ if(G == 0 && G0 == 0) {
-+ sections_.push_back(fo_section());
-+ return;
-+ }
-+
-+ //Get number of analog sections
-+ unsigned int r = N%2;
-+ unsigned int L = (N - r)/2;
-+
-+ //Convert gains to linear scale
-+ G = conversions::db_2_lin(G);
-+ Gb = conversions::db_2_lin(Gb);
-+ G0 = conversions::db_2_lin(G0);
-+
-+ eq_double_t epsilon = pow(((eq_double_t)(G*G - Gb*Gb))/
-+ (Gb*Gb - G0*G0),0.5);
-+ eq_double_t g = pow(((eq_double_t)G),1.0/((eq_double_t)N));
-+ eq_double_t g0 = pow(((eq_double_t)G0),1.0/((eq_double_t)N));
-+ eq_double_t beta = pow(((eq_double_t)epsilon), -1.0/((eq_double_t)N))*
-+ tan(wb/2.0);
-+
-+ eq_double_t c0 = cos(w0);
-+ if (w0 == 0) c0 = 1;
-+ if (w0 == pi/2) c0=0;
-+ if (w0 == pi) c0 =- 1;
-+
-+ //Calculate every section
-+ for(unsigned int i = 1; i <= L; i++) {
-+ eq_double_t ui = (2.0*i-1)/N;
-+ eq_double_t si = sin(pi*ui/2.0);
-+
-+ eq_double_t Di = beta*beta + 2*si*beta + 1;
-+
-+ sections_.push_back
-+ (butterworth_fo_section(beta, si, g, g0, Di, c0));
-+ }
-+ }
-+
-+ ~butterworth_bp_filter(){}
-+
-+ static eq_single_t compute_bw_gain_db(eq_single_t gain) {
-+ eq_single_t bw_gain = 0;
-+ if(gain <= -6)
-+ bw_gain = gain + common_base_gain_db;
-+ else if(gain > -6 && gain < 6)
-+ bw_gain = gain*0.5;
-+ else if(gain >= 6)
-+ bw_gain = gain - common_base_gain_db;
-+
-+ return bw_gain;
-+ }
-+
-+ virtual eq_single_t process(eq_single_t in) {
-+ eq_single_t p0 = in;
-+ eq_single_t p1 = 0;
-+ //Process FO sections in serial connection
-+ for(unsigned int i = 0; i < sections_.size(); i++) {
-+ p1 = sections_[i].process(p0);
-+ p0 = p1;
-+ }
-
-- return p1;
-- }
-+ return p1;
-+ }
- };
-
- class chebyshev_type1_bp_filter : public bp_filter {
- private:
-- std::vector<fo_section> sections_;
-+ std::vector<fo_section> sections_;
-
-- chebyshev_type1_bp_filter(){}
-+ chebyshev_type1_bp_filter(){}
- public:
-- chebyshev_type1_bp_filter(unsigned int N,
-- eq_double_t w0, eq_double_t wb,
-- eq_double_t G, eq_double_t Gb, eq_double_t G0) {
-- //Case if G == 0 : allpass
-- if(G == 0 && G0 == 0) {
-- sections_.push_back(fo_section());
-- return;
-- }
--
-- //Get number of analog sections
-- unsigned int r = N%2;
-- unsigned int L = (N - r)/2;
--
-- //Convert gains to linear scale
-- G = conversions::db_2_lin(G);
-- Gb = conversions::db_2_lin(Gb);
-- G0 = conversions::db_2_lin(G0);
--
-- eq_double_t epsilon = pow((eq_double_t)(G*G - Gb*Gb)/
-- (Gb*Gb - G0*G0),0.5);
-- eq_double_t g0 = pow((eq_double_t)(G0),1.0/N);
-- eq_double_t alfa =
-- pow(1.0/epsilon + pow(1 + pow(epsilon,-2.0),0.5),1.0/N);
-- eq_double_t beta =
-- pow(G/epsilon + Gb*pow(1 + pow(epsilon,-2.0),0.5),1.0/N);
-- eq_double_t a = 0.5*(alfa - 1.0/alfa);
-- eq_double_t b = 0.5*(beta - g0*g0*(1/beta));
-- eq_double_t tetta_b = tan(wb/2);
--
-- eq_double_t c0 = cos(w0);
-- if (w0 == 0) c0 = 1;
-- if (w0 == pi/2) c0=0;
-- if (w0 == pi) c0 =- 1;
--
-- //Calculate every section
-- for(unsigned int i = 1; i <= L; i++) {
-- eq_double_t ui = (2.0*i-1.0)/N;
-- eq_double_t ci = cos(pi*ui/2.0);
-- eq_double_t si = sin(pi*ui/2.0);
--
-- eq_double_t Di = (a*a + ci*ci)*tetta_b*tetta_b +
-- 2.0*a*si*tetta_b + 1;
-- sections_.push_back(
-- chebyshev_type1_fo_section(a, ci, tetta_b, g0, si, b, Di, c0));
-- }
-- }
--
--
-- ~chebyshev_type1_bp_filter(){}
--
-- static eq_single_t compute_bw_gain_db(eq_single_t gain) {
-- eq_single_t bw_gain = 0;
-- if(gain <= -6)
-- bw_gain = gain + 1;
-- else if(gain > -6 && gain < 6)
-- bw_gain = gain*0.9;
-- else if(gain >= 6)
-- bw_gain = gain - 1;
--
-- return bw_gain;
-- }
--
-- eq_single_t process(eq_single_t in) {
-- eq_single_t p0 = in;
-- eq_single_t p1 = 0;
-- //Process FO sections in serial connection
-- for(unsigned int i = 0; i < sections_.size(); i++) {
-- p1 = sections_[i].process(p0);
-- p0 = p1;
-- }
-+ chebyshev_type1_bp_filter(unsigned int N,
-+ eq_double_t w0, eq_double_t wb,
-+ eq_double_t G, eq_double_t Gb, eq_double_t G0) {
-+ //Case if G == 0 : allpass
-+ if(G == 0 && G0 == 0) {
-+ sections_.push_back(fo_section());
-+ return;
-+ }
-+
-+ //Get number of analog sections
-+ unsigned int r = N%2;
-+ unsigned int L = (N - r)/2;
-+
-+ //Convert gains to linear scale
-+ G = conversions::db_2_lin(G);
-+ Gb = conversions::db_2_lin(Gb);
-+ G0 = conversions::db_2_lin(G0);
-+
-+ eq_double_t epsilon = pow((eq_double_t)(G*G - Gb*Gb)/
-+ (Gb*Gb - G0*G0),0.5);
-+ eq_double_t g0 = pow((eq_double_t)(G0),1.0/N);
-+ eq_double_t alfa =
-+ pow(1.0/epsilon + pow(1 + pow(epsilon,-2.0),0.5),1.0/N);
-+ eq_double_t beta =
-+ pow(G/epsilon + Gb*pow(1 + pow(epsilon,-2.0),0.5),1.0/N);
-+ eq_double_t a = 0.5*(alfa - 1.0/alfa);
-+ eq_double_t b = 0.5*(beta - g0*g0*(1/beta));
-+ eq_double_t tetta_b = tan(wb/2);
-+
-+ eq_double_t c0 = cos(w0);
-+ if (w0 == 0) c0 = 1;
-+ if (w0 == pi/2) c0=0;
-+ if (w0 == pi) c0 =- 1;
-+
-+ //Calculate every section
-+ for(unsigned int i = 1; i <= L; i++) {
-+ eq_double_t ui = (2.0*i-1.0)/N;
-+ eq_double_t ci = cos(pi*ui/2.0);
-+ eq_double_t si = sin(pi*ui/2.0);
-+
-+ eq_double_t Di = (a*a + ci*ci)*tetta_b*tetta_b +
-+ 2.0*a*si*tetta_b + 1;
-+ sections_.push_back(
-+ chebyshev_type1_fo_section(a, ci, tetta_b, g0, si, b, Di, c0));
-+ }
-+ }
-+
-+
-+ ~chebyshev_type1_bp_filter(){}
-+
-+ static eq_single_t compute_bw_gain_db(eq_single_t gain) {
-+ eq_single_t bw_gain = 0;
-+ if(gain <= -6)
-+ bw_gain = gain + 1;
-+ else if(gain > -6 && gain < 6)
-+ bw_gain = gain*0.9;
-+ else if(gain >= 6)
-+ bw_gain = gain - 1;
-+
-+ return bw_gain;
-+ }
-+
-+ eq_single_t process(eq_single_t in) {
-+ eq_single_t p0 = in;
-+ eq_single_t p1 = 0;
-+ //Process FO sections in serial connection
-+ for(unsigned int i = 0; i < sections_.size(); i++) {
-+ p1 = sections_[i].process(p0);
-+ p0 = p1;
-+ }
-
-- return p1;
-- }
-+ return p1;
-+ }
- };
-
- class chebyshev_type2_bp_filter : public bp_filter {
- private:
-- std::vector<fo_section> sections_;
-+ std::vector<fo_section> sections_;
-
-- chebyshev_type2_bp_filter(){}
-+ chebyshev_type2_bp_filter(){}
- public:
-- chebyshev_type2_bp_filter(unsigned int N,
-- eq_double_t w0, eq_double_t wb,
-- eq_double_t G, eq_double_t Gb, eq_double_t G0) {
-- //Case if G == 0 : allpass
-- if(G == 0 && G0 == 0) {
-- sections_.push_back(fo_section());
-- return;
-- }
--
-- //Get number of analog sections
-- unsigned int r = N%2;
-- unsigned int L = (N - r)/2;
--
-- //Convert gains to linear scale
-- G = conversions::db_2_lin(G);
-- Gb = conversions::db_2_lin(Gb);
-- G0 = conversions::db_2_lin(G0);
--
-- eq_double_t epsilon = pow((eq_double_t)((G*G - Gb*Gb)/
-- (Gb*Gb - G0*G0)),0.5);
-- eq_double_t g = pow((eq_double_t)(G),1.0/N);
-- eq_double_t eu = pow(epsilon + sqrt(1 + epsilon*epsilon), 1.0/N);
-- eq_double_t ew = pow(G0*epsilon + Gb*sqrt(1 + epsilon*epsilon), 1.0/N);
-- eq_double_t a = (eu - 1.0/eu)/2.0;
-- eq_double_t b = (ew - g*g/ew)/2.0;
-- eq_double_t tetta_b = tan(wb/2);
--
-- eq_double_t c0 = cos(w0);
-- if (w0 == 0) c0 = 1;
-- if (w0 == pi/2) c0=0;
-- if (w0 == pi) c0 =- 1;
--
-- //Calculate every section
-- for(unsigned int i = 1; i <= L; i++) {
-- eq_double_t ui = (2.0*i-1.0)/N;
-- eq_double_t ci = cos(pi*ui/2.0);
-- eq_double_t si = sin(pi*ui/2.0);
-- eq_double_t Di = tetta_b*tetta_b + 2*a*si*tetta_b + a*a + ci*ci;
--
-- sections_.push_back(
-- chebyshev_type2_fo_section(a, ci, tetta_b, g, si, b, Di, c0));
-- }
-- }
--
-- ~chebyshev_type2_bp_filter(){}
--
-- static eq_single_t compute_bw_gain_db(eq_single_t gain) {
-- eq_single_t bw_gain = 0;
-- if(gain <= -6)
-- bw_gain = -common_base_gain_db;
-- else if(gain > -6 && gain < 6)
-- bw_gain = gain*0.3;
-- else if(gain >= 6)
-- bw_gain = common_base_gain_db;
--
-- return bw_gain;
-- }
--
-- eq_single_t process(eq_single_t in) {
-- eq_single_t p0 = in;
-- eq_single_t p1 = 0;
--
-- //Process FO sections in serial connection
-- for(unsigned int i = 0; i < sections_.size(); i++) {
-- p1 = sections_[i].process(p0);
-- p0 = p1;
-- }
-+ chebyshev_type2_bp_filter(unsigned int N,
-+ eq_double_t w0, eq_double_t wb,
-+ eq_double_t G, eq_double_t Gb, eq_double_t G0) {
-+ //Case if G == 0 : allpass
-+ if(G == 0 && G0 == 0) {
-+ sections_.push_back(fo_section());
-+ return;
-+ }
-+
-+ //Get number of analog sections
-+ unsigned int r = N%2;
-+ unsigned int L = (N - r)/2;
-+
-+ //Convert gains to linear scale
-+ G = conversions::db_2_lin(G);
-+ Gb = conversions::db_2_lin(Gb);
-+ G0 = conversions::db_2_lin(G0);
-+
-+ eq_double_t epsilon = pow((eq_double_t)((G*G - Gb*Gb)/
-+ (Gb*Gb - G0*G0)),0.5);
-+ eq_double_t g = pow((eq_double_t)(G),1.0/N);
-+ eq_double_t eu = pow(epsilon + sqrt(1 + epsilon*epsilon), 1.0/N);
-+ eq_double_t ew = pow(G0*epsilon + Gb*sqrt(1 + epsilon*epsilon), 1.0/N);
-+ eq_double_t a = (eu - 1.0/eu)/2.0;
-+ eq_double_t b = (ew - g*g/ew)/2.0;
-+ eq_double_t tetta_b = tan(wb/2);
-+
-+ eq_double_t c0 = cos(w0);
-+ if (w0 == 0) c0 = 1;
-+ if (w0 == pi/2) c0=0;
-+ if (w0 == pi) c0 =- 1;
-+
-+ //Calculate every section
-+ for(unsigned int i = 1; i <= L; i++) {
-+ eq_double_t ui = (2.0*i-1.0)/N;
-+ eq_double_t ci = cos(pi*ui/2.0);
-+ eq_double_t si = sin(pi*ui/2.0);
-+ eq_double_t Di = tetta_b*tetta_b + 2*a*si*tetta_b + a*a + ci*ci;
-+
-+ sections_.push_back(
-+ chebyshev_type2_fo_section(a, ci, tetta_b, g, si, b, Di, c0));
-+ }
-+ }
-
-- return p1;
-- }
-+ ~chebyshev_type2_bp_filter(){}
-+
-+ static eq_single_t compute_bw_gain_db(eq_single_t gain) {
-+ eq_single_t bw_gain = 0;
-+ if(gain <= -6)
-+ bw_gain = -common_base_gain_db;
-+ else if(gain > -6 && gain < 6)
-+ bw_gain = gain*0.3;
-+ else if(gain >= 6)
-+ bw_gain = common_base_gain_db;
-+
-+ return bw_gain;
-+ }
-+
-+ eq_single_t process(eq_single_t in) {
-+ eq_single_t p0 = in;
-+ eq_single_t p1 = 0;
-+
-+ //Process FO sections in serial connection
-+ for(unsigned int i = 0; i < sections_.size(); i++) {
-+ p1 = sections_[i].process(p0);
-+ p0 = p1;
-+ }
-+
-+ return p1;
-+ }
- };
-
- // ------------ eq1 ------------
- // Equalizer with single precomputed filter for every band
- class eq1 {
- private:
-- conversions conv_;
-- eq_double_t sampling_frequency_;
-- freq_grid freq_grid_;
-- std::vector<eq_single_t> band_gains_;
-- std::vector<bp_filter*> filters_;
-- filter_type current_eq_type_;
--
-- eq1():conv_(eq_min_max_gain_db){}
-- eq1(const eq1&):conv_(eq_min_max_gain_db){}
--
-- void cleanup_filters_array() {
-- for(unsigned int j = 0; j < filters_.size(); j++)
-- delete filters_[j];
-- }
-+ conversions conv_;
-+ eq_double_t sampling_frequency_;
-+ freq_grid freq_grid_;
-+ std::vector<eq_single_t> band_gains_;
-+ std::vector<bp_filter*> filters_;
-+ filter_type current_eq_type_;
-+
-+ eq1():conv_(eq_min_max_gain_db){}
-+ eq1(const eq1&):conv_(eq_min_max_gain_db){}
-+
-+ void cleanup_filters_array() {
-+ for(unsigned int j = 0; j < filters_.size(); j++)
-+ delete filters_[j];
-+ }
-
- public:
-- eq1(const freq_grid &fg, filter_type eq_t) : conv_(eq_min_max_gain_db) {
-- sampling_frequency_ = default_sample_freq_hz;
-- freq_grid_ = fg;
-- current_eq_type_ = eq_t;
-+ eq1(const freq_grid &fg, filter_type eq_t) : conv_(eq_min_max_gain_db) {
-+ sampling_frequency_ = default_sample_freq_hz;
-+ freq_grid_ = fg;
-+ current_eq_type_ = eq_t;
- set_eq(freq_grid_, eq_t);
-- }
-- ~eq1(){cleanup_filters_array();}
-+ }
-+ ~eq1(){cleanup_filters_array();}
-+
-+ eq_error_t set_eq(freq_grid& fg, filter_type eqt) {
-+ band_gains_.clear();
-+ cleanup_filters_array();
-+ filters_.clear();
-+ freq_grid_ = fg;
-+
-+ for(unsigned int i = 0; i < freq_grid_.get_number_of_bands(); i++) {
-+
-+ eq_double_t wb = conversions::hz_2_rad(
-+ freq_grid_.get_freqs()[i].max_freq -
-+ freq_grid_.get_freqs()[i].min_freq,
-+ sampling_frequency_);
-+
-+ eq_double_t w0 = conversions::hz_2_rad(
-+ freq_grid_.get_freqs()[i].center_freq,
-+ sampling_frequency_);
-+
-+ switch(eqt) {
-+ case (butterworth): {
-+ butterworth_bp_filter* bf =
-+ new butterworth_bp_filter(
-+ default_eq_band_filters_order,
-+ w0,
-+ wb,
-+ max_base_gain_db,
-+ butterworth_band_gain_db,
-+ min_base_gain_db
-+ );
-
-- eq_error_t set_eq(freq_grid& fg, filter_type eqt) {
-- band_gains_.clear();
-- cleanup_filters_array();
-- filters_.clear();
-- freq_grid_ = fg;
--
-- for(unsigned int i = 0; i < freq_grid_.get_number_of_bands(); i++) {
--
-- eq_double_t wb = conversions::hz_2_rad(
-- freq_grid_.get_freqs()[i].max_freq -
-- freq_grid_.get_freqs()[i].min_freq,
-- sampling_frequency_);
--
-- eq_double_t w0 = conversions::hz_2_rad(
-- freq_grid_.get_freqs()[i].center_freq,
-- sampling_frequency_);
--
-- switch(eqt) {
-- case (butterworth): {
-- butterworth_bp_filter* bf =
-- new butterworth_bp_filter(
-- default_eq_band_filters_order,
-- w0,
-- wb,
-- max_base_gain_db,
-- butterworth_band_gain_db,
-- min_base_gain_db
-- );
--
-- filters_.push_back(bf);
-- break;
-- }
--
-- case (chebyshev1): {
-- chebyshev_type1_bp_filter* cf1 =
-- new chebyshev_type1_bp_filter(
-- default_eq_band_filters_order,
-- w0,
-- wb,
-- max_base_gain_db,
-- chebyshev1_band_base_gain_db,
-- min_base_gain_db
-- );
--
-- filters_.push_back(cf1);
-- break;
-- }
--
-- case (chebyshev2): {
-- chebyshev_type2_bp_filter* cf2 =
-- new chebyshev_type2_bp_filter(
-- default_eq_band_filters_order,
-- w0,
-- wb,
-- max_base_gain_db,
-- chebyshev2_band_base_gain_db,
-- min_base_gain_db
-- );
--
-- filters_.push_back(cf2);
-- break;
-- }
--
-- default:
-- current_eq_type_ = none;
-- return invalid_input_data_error;
--
-- }
-- band_gains_.push_back(max_base_gain_db);
-- }
--
-- current_eq_type_ = eqt;
-- return no_error;
-- }
--
-- eq_error_t set_eq(filter_type eqt)
-- {
-- return set_eq(freq_grid_, eqt);
-- }
--
-- eq_error_t set_sample_rate(eq_double_t sr) {
-- eq_error_t err = no_error;
-- sampling_frequency_ = sr;
-- err = set_eq(freq_grid_, current_eq_type_);
--
-- return err;
-- }
--
-- eq_error_t change_gains(std::vector<eq_single_t> band_gains) {
-- if(band_gains_.size() == band_gains.size())
-- band_gains_ = band_gains;
-- else
-- return invalid_input_data_error;
--
-- return no_error;
-- }
--
-- eq_error_t change_gains_db(std::vector<eq_single_t> band_gains) {
-- if(band_gains_.size() == band_gains.size())
-- for(unsigned int j = 0; j < get_number_of_bands(); j++)
-- band_gains_[j] = conv_.fast_db_2_lin(band_gains[j]);
-- else
-- return invalid_input_data_error;
--
-- return no_error;
-- }
--
-- eq_error_t change_band_gain(unsigned int band_number,
-- eq_single_t band_gain) {
-- if(band_number < get_number_of_bands())
-- band_gains_[band_number] = band_gain;
-+ filters_.push_back(bf);
-+ break;
-+ }
-+
-+ case (chebyshev1): {
-+ chebyshev_type1_bp_filter* cf1 =
-+ new chebyshev_type1_bp_filter(
-+ default_eq_band_filters_order,
-+ w0,
-+ wb,
-+ max_base_gain_db,
-+ chebyshev1_band_base_gain_db,
-+ min_base_gain_db
-+ );
-+
-+ filters_.push_back(cf1);
-+ break;
-+ }
-+
-+ case (chebyshev2): {
-+ chebyshev_type2_bp_filter* cf2 =
-+ new chebyshev_type2_bp_filter(
-+ default_eq_band_filters_order,
-+ w0,
-+ wb,
-+ max_base_gain_db,
-+ chebyshev2_band_base_gain_db,
-+ min_base_gain_db
-+ );
-+
-+ filters_.push_back(cf2);
-+ break;
-+ }
-+
-+ default:
-+ current_eq_type_ = none;
-+ return invalid_input_data_error;
-+
-+ }
-+ band_gains_.push_back(max_base_gain_db);
-+ }
-+
-+ current_eq_type_ = eqt;
-+ return no_error;
-+ }
-+
-+ eq_error_t set_eq(filter_type eqt)
-+ {
-+ return set_eq(freq_grid_, eqt);
-+ }
-+
-+ eq_error_t set_sample_rate(eq_double_t sr) {
-+ eq_error_t err = no_error;
-+ sampling_frequency_ = sr;
-+ err = set_eq(freq_grid_, current_eq_type_);
-+
-+ return err;
-+ }
-+
-+ eq_error_t change_gains(std::vector<eq_single_t> band_gains) {
-+ if(band_gains_.size() == band_gains.size())
-+ band_gains_ = band_gains;
-+ else
-+ return invalid_input_data_error;
-+
-+ return no_error;
-+ }
-+
-+ eq_error_t change_gains_db(std::vector<eq_single_t> band_gains) {
-+ if(band_gains_.size() == band_gains.size())
-+ for(unsigned int j = 0; j < get_number_of_bands(); j++)
-+ band_gains_[j] = conv_.fast_db_2_lin(band_gains[j]);
-+ else
-+ return invalid_input_data_error;
-+
-+ return no_error;
-+ }
-+
-+ eq_error_t change_band_gain(unsigned int band_number,
-+ eq_single_t band_gain) {
-+ if(band_number < get_number_of_bands())
-+ band_gains_[band_number] = band_gain;
- else
-- return invalid_input_data_error;
-+ return invalid_input_data_error;
-
-- return no_error;
-- }
-+ return no_error;
-+ }
-+
-+ eq_error_t change_band_gain_db(unsigned int band_number,
-+ eq_single_t band_gain) {
-+ if(band_number < get_number_of_bands())
-+ band_gains_[band_number] = conv_.fast_db_2_lin(band_gain);
-+ else
-+ return invalid_input_data_error;
-+
-+ return no_error;
-+ }
-
-- eq_error_t change_band_gain_db(unsigned int band_number,
-- eq_single_t band_gain) {
-- if(band_number < get_number_of_bands())
-- band_gains_[band_number] = conv_.fast_db_2_lin(band_gain);
-+ eq_error_t sbs_process_band(unsigned int band_number,
-+ eq_single_t *in, eq_single_t *out) {
-+ if(band_number < get_number_of_bands())
-+ *out = band_gains_[band_number]*
-+ filters_[band_number]->process(*in);
- else
-- return invalid_input_data_error;
-+ return invalid_input_data_error;
-
-- return no_error;
-- }
-+ return no_error;
-+ }
-
-- eq_error_t sbs_process_band(unsigned int band_number,
-- eq_single_t *in, eq_single_t *out) {
-- if(band_number < get_number_of_bands())
-- *out = band_gains_[band_number]*
-- filters_[band_number]->process(*in);
-- else
-- return invalid_input_data_error;
--
-- return no_error;
-- }
--
-- eq_error_t sbs_process(eq_single_t *in, eq_single_t *out) {
-- eq_error_t err = no_error;
-- eq_single_t acc_out = 0;
-- for(unsigned int j = 0; j < get_number_of_bands(); j++) {
-- eq_single_t band_out = 0;
-- err = sbs_process_band(j, in, &band_out);
-- acc_out += band_out;
-- }
-- *out = acc_out;
--
-- return err;
-- }
--
-- filter_type get_eq_type(){return current_eq_type_;}
-- const char* get_string_eq_type(){return get_eq_text(current_eq_type_);}
-- unsigned int get_number_of_bands() {
-- return freq_grid_.get_number_of_bands();
-- }
-- const char* get_version(){return eq_version;}
-+ eq_error_t sbs_process(eq_single_t *in, eq_single_t *out) {
-+ eq_error_t err = no_error;
-+ eq_single_t acc_out = 0;
-+ for(unsigned int j = 0; j < get_number_of_bands(); j++) {
-+ eq_single_t band_out = 0;
-+ err = sbs_process_band(j, in, &band_out);
-+ acc_out += band_out;
-+ }
-+ *out = acc_out;
-+
-+ return err;
-+ }
-+
-+ filter_type get_eq_type(){return current_eq_type_;}
-+ const char* get_string_eq_type(){return get_eq_text(current_eq_type_);}
-+ unsigned int get_number_of_bands() {
-+ return freq_grid_.get_number_of_bands();
-+ }
-+ const char* get_version(){return eq_version;}
- };
-
- //!!! New functionality
-@@ -894,143 +894,143 @@
- // consists of vector of filters for every gain value
- class eq_channel
- {
-- eq_single_t f0_;
-- eq_single_t fb_;
-- eq_single_t sampling_frequency_;
-- eq_single_t min_max_gain_db_;
-- eq_single_t gain_step_db_;
--
-- unsigned int current_filter_index_;
-- eq_single_t current_gain_db_;
--
-- std::vector<bp_filter*> filters_;
-- filter_type current_channel_type_;
--
-- eq_channel(){}
--
-- unsigned int get_flt_index(eq_single_t gain_db) {
-- unsigned int number_of_filters = filters_.size();
-- eq_single_t scale_coef = gain_db/min_max_gain_db_;
-- return (number_of_filters/2) + (number_of_filters/2)*scale_coef;
-- }
--
-- void cleanup_filters_array() {
-- for(unsigned int j = 0; j < filters_.size(); j++)
-- delete filters_[j];
-- }
--
-+ eq_single_t f0_;
-+ eq_single_t fb_;
-+ eq_single_t sampling_frequency_;
-+ eq_single_t min_max_gain_db_;
-+ eq_single_t gain_step_db_;
-+
-+ unsigned int current_filter_index_;
-+ eq_single_t current_gain_db_;
-+
-+ std::vector<bp_filter*> filters_;
-+ filter_type current_channel_type_;
-+
-+ eq_channel(){}
-+
-+ unsigned int get_flt_index(eq_single_t gain_db) {
-+ unsigned int number_of_filters = filters_.size();
-+ eq_single_t scale_coef = gain_db/min_max_gain_db_;
-+ return (number_of_filters/2) + (number_of_filters/2)*scale_coef;
-+ }
-+
-+ void cleanup_filters_array() {
-+ for(unsigned int j = 0; j < filters_.size(); j++)
-+ delete filters_[j];
-+ }
-+
- public:
-- eq_channel(filter_type ft,
-- eq_single_t fs, eq_single_t f0, eq_single_t fb,
-- eq_single_t min_max_gain_db = p_eq_min_max_gain_db,
-- eq_single_t step_db = p_eq_gain_step_db) {
--
-- //Init data fields
-- sampling_frequency_ = fs;
-- f0_ = f0;
-- fb_ = fb;
-- min_max_gain_db_ = min_max_gain_db;
-- gain_step_db_ = step_db;
--
-- current_gain_db_ = 0;
-- current_filter_index_ = 0;
--
-- current_channel_type_ = ft;
--
-- set_channel(current_channel_type_, sampling_frequency_);
-- }
--
-- ~eq_channel(){cleanup_filters_array();}
--
-- eq_error_t set_channel(filter_type ft, eq_single_t fs) {
--
-- eq_double_t wb = conversions::hz_2_rad(fb_, sampling_frequency_);
-+ eq_channel(filter_type ft,
-+ eq_single_t fs, eq_single_t f0, eq_single_t fb,
-+ eq_single_t min_max_gain_db = p_eq_min_max_gain_db,
-+ eq_single_t step_db = p_eq_gain_step_db) {
-+
-+ //Init data fields
-+ sampling_frequency_ = fs;
-+ f0_ = f0;
-+ fb_ = fb;
-+ min_max_gain_db_ = min_max_gain_db;
-+ gain_step_db_ = step_db;
-+
-+ current_gain_db_ = 0;
-+ current_filter_index_ = 0;
-+
-+ current_channel_type_ = ft;
-+
-+ set_channel(current_channel_type_, sampling_frequency_);
-+ }
-+
-+ ~eq_channel(){cleanup_filters_array();}
-+
-+ eq_error_t set_channel(filter_type ft, eq_single_t fs) {
-+
-+ eq_double_t wb = conversions::hz_2_rad(fb_, sampling_frequency_);
- eq_double_t w0 = conversions::hz_2_rad(f0_, sampling_frequency_);
--
-- for(eq_single_t gain = -min_max_gain_db_; gain <= min_max_gain_db_;
-- gain+= gain_step_db_) {
--
-- switch(ft) {
-- case (butterworth): {
-- eq_single_t bw_gain =
-- butterworth_bp_filter::compute_bw_gain_db(gain);
--
-- butterworth_bp_filter* bf =
-- new butterworth_bp_filter(
-- default_eq_band_filters_order,
-- w0,
-- wb,
-- gain,
-- bw_gain,
-- p_eq_default_gain_db
-- );
--
-- filters_.push_back(bf);
-- break;
-- }
-- case (chebyshev1): {
-- eq_single_t bw_gain =
-- chebyshev_type1_bp_filter::compute_bw_gain_db(gain);
--
-- chebyshev_type1_bp_filter* cf1 =
-- new chebyshev_type1_bp_filter(
-- default_eq_band_filters_order,
-- w0,
-- wb,
-- gain,
-- bw_gain,
-- p_eq_default_gain_db
-- );
--
-- filters_.push_back(cf1);
-- break;
-- }
-- case (chebyshev2): {
-- eq_single_t bw_gain =
-- chebyshev_type2_bp_filter::compute_bw_gain_db(gain);
--
-- chebyshev_type2_bp_filter* cf2 =
-- new chebyshev_type2_bp_filter(
-- default_eq_band_filters_order,
-- w0,
-- wb,
-- gain,
-- bw_gain,
-- p_eq_default_gain_db
-- );
--
-- filters_.push_back(cf2);
-- break;
-- }
-- default: {
-- current_channel_type_ = none;
-- return invalid_input_data_error;
-+
-+ for(eq_single_t gain = -min_max_gain_db_; gain <= min_max_gain_db_;
-+ gain+= gain_step_db_) {
-+
-+ switch(ft) {
-+ case (butterworth): {
-+ eq_single_t bw_gain =
-+ butterworth_bp_filter::compute_bw_gain_db(gain);
-+
-+ butterworth_bp_filter* bf =
-+ new butterworth_bp_filter(
-+ default_eq_band_filters_order,
-+ w0,
-+ wb,
-+ gain,
-+ bw_gain,
-+ p_eq_default_gain_db
-+ );
-+
-+ filters_.push_back(bf);
-+ break;
-+ }
-+ case (chebyshev1): {
-+ eq_single_t bw_gain =
-+ chebyshev_type1_bp_filter::compute_bw_gain_db(gain);
-+
-+ chebyshev_type1_bp_filter* cf1 =
-+ new chebyshev_type1_bp_filter(
-+ default_eq_band_filters_order,
-+ w0,
-+ wb,
-+ gain,
-+ bw_gain,
-+ p_eq_default_gain_db
-+ );
-+
-+ filters_.push_back(cf1);
-+ break;
-+ }
-+ case (chebyshev2): {
-+ eq_single_t bw_gain =
-+ chebyshev_type2_bp_filter::compute_bw_gain_db(gain);
-+
-+ chebyshev_type2_bp_filter* cf2 =
-+ new chebyshev_type2_bp_filter(
-+ default_eq_band_filters_order,
-+ w0,
-+ wb,
-+ gain,
-+ bw_gain,
-+ p_eq_default_gain_db
-+ );
-+
-+ filters_.push_back(cf2);
-+ break;
- }
-- }
-- }
--
-- //Get current filter index
-- current_gain_db_ = 0;
-- current_filter_index_ = get_flt_index(current_gain_db_);
--
-- return no_error;
-- }
--
-- eq_error_t set_gain_db(eq_single_t db) {
-- if (db > -min_max_gain_db_ && db < min_max_gain_db_) {
-- current_gain_db_ = db;
-- current_filter_index_ = get_flt_index(db);
-- }
-- else
-- return invalid_input_data_error;
--
-- return no_error;
-- }
--
-- eq_error_t sbs_process(eq_single_t *in, eq_single_t *out) {
-- *out = filters_[current_filter_index_]->process(*in);
-- return no_error;
-- }
-+ default: {
-+ current_channel_type_ = none;
-+ return invalid_input_data_error;
-+ }
-+ }
-+ }
-+
-+ //Get current filter index
-+ current_gain_db_ = 0;
-+ current_filter_index_ = get_flt_index(current_gain_db_);
-+
-+ return no_error;
-+ }
-+
-+ eq_error_t set_gain_db(eq_single_t db) {
-+ if (db > -min_max_gain_db_ && db < min_max_gain_db_) {
-+ current_gain_db_ = db;
-+ current_filter_index_ = get_flt_index(db);
-+ } else {
-+ return invalid_input_data_error;
-+ }
-+
-+ return no_error;
-+ }
-+
-+ eq_error_t sbs_process(eq_single_t *in, eq_single_t *out) {
-+ *out = filters_[current_filter_index_]->process(*in);
-+ return no_error;
-+ }
- };
-
- // ------------ eq2 ------------
-@@ -1038,123 +1038,123 @@
-
- class eq2
- {
-- conversions conv_;
-- eq_double_t sampling_frequency_;
-- freq_grid freq_grid_;
-- std::vector<eq_channel*> channels_;
-- filter_type current_eq_type_;
--
-- void cleanup_channels_array() {
-- for(unsigned int j = 0; j < channels_.size(); j++)
-- delete channels_[j];
-- }
-+ conversions conv_;
-+ eq_double_t sampling_frequency_;
-+ freq_grid freq_grid_;
-+ std::vector<eq_channel*> channels_;
-+ filter_type current_eq_type_;
-+
-+ void cleanup_channels_array() {
-+ for(unsigned int j = 0; j < channels_.size(); j++)
-+ delete channels_[j];
-+ }
-
- public:
-- eq2(freq_grid &fg, filter_type eq_t) : conv_(eq_min_max_gain_db) {
-- sampling_frequency_ = default_sample_freq_hz;
-- freq_grid_ = fg;
-- current_eq_type_ = eq_t;
-+ eq2(freq_grid &fg, filter_type eq_t) : conv_(eq_min_max_gain_db) {
-+ sampling_frequency_ = default_sample_freq_hz;
-+ freq_grid_ = fg;
-+ current_eq_type_ = eq_t;
- set_eq(freq_grid_, eq_t);
-- }
-- ~eq2(){cleanup_channels_array();}
--
-- eq_error_t set_eq(const freq_grid& fg, filter_type ft) {
-- cleanup_channels_array();
-- channels_.clear();
-- freq_grid_ = fg;
--
-- for(unsigned int i = 0; i < freq_grid_.get_number_of_bands(); i++) {
-- band_freqs b_fres = freq_grid_.get_freqs()[i];
--
-- eq_channel* eq_ch = new eq_channel(ft, sampling_frequency_,
-- b_fres.center_freq, b_fres.max_freq - b_fres.min_freq);
--
-- channels_.push_back(eq_ch);
-- channels_[i]->set_gain_db(p_eq_default_gain_db);
-- }
--
-- current_eq_type_ = ft;
-- return no_error;
-- }
--
-- eq_error_t set_eq(filter_type ft) {
-- eq_error_t err = set_eq(freq_grid_, ft);
-- return err;
-- }
--
-- eq_error_t set_sample_rate(eq_double_t sr) {
-- sampling_frequency_ = sr;
-- eq_error_t err = set_eq(current_eq_type_);
-- return err;
-- }
--
-- eq_error_t change_gains(std::vector<eq_single_t> band_gains) {
-- if(channels_.size() == band_gains.size())
-- for(unsigned int j = 0; j < channels_.size(); j++)
-- channels_[j]->set_gain_db(conv_.fast_lin_2_db(band_gains[j]));
-- else
-- return invalid_input_data_error;
--
-- return no_error;
-- }
--
-- eq_error_t change_gains_db(std::vector<eq_single_t> band_gains) {
-- if(channels_.size() == band_gains.size())
-- for(unsigned int j = 0; j < channels_.size(); j++)
-- channels_[j]->set_gain_db(band_gains[j]);
-- else
-- return invalid_input_data_error;
--
-- return no_error;
-- }
--
-- eq_error_t change_band_gain(unsigned int band_number,
-- eq_single_t band_gain) {
-- if(band_number < channels_.size())
-- channels_[band_number]->set_gain_db(conv_.fast_lin_2_db(band_gain));
-+ }
-+ ~eq2(){cleanup_channels_array();}
-+
-+ eq_error_t set_eq(const freq_grid& fg, filter_type ft) {
-+ cleanup_channels_array();
-+ channels_.clear();
-+ freq_grid_ = fg;
-+
-+ for(unsigned int i = 0; i < freq_grid_.get_number_of_bands(); i++) {
-+ band_freqs b_fres = freq_grid_.get_freqs()[i];
-+
-+ eq_channel* eq_ch = new eq_channel(ft, sampling_frequency_,
-+ b_fres.center_freq, b_fres.max_freq - b_fres.min_freq);
-+
-+ channels_.push_back(eq_ch);
-+ channels_[i]->set_gain_db(p_eq_default_gain_db);
-+ }
-+
-+ current_eq_type_ = ft;
-+ return no_error;
-+ }
-+
-+ eq_error_t set_eq(filter_type ft) {
-+ eq_error_t err = set_eq(freq_grid_, ft);
-+ return err;
-+ }
-+
-+ eq_error_t set_sample_rate(eq_double_t sr) {
-+ sampling_frequency_ = sr;
-+ eq_error_t err = set_eq(current_eq_type_);
-+ return err;
-+ }
-+
-+ eq_error_t change_gains(std::vector<eq_single_t> band_gains) {
-+ if(channels_.size() == band_gains.size())
-+ for(unsigned int j = 0; j < channels_.size(); j++)
-+ channels_[j]->set_gain_db(conv_.fast_lin_2_db(band_gains[j]));
- else
-- return invalid_input_data_error;
-+ return invalid_input_data_error;
-+
-+ return no_error;
-+ }
-+
-+ eq_error_t change_gains_db(std::vector<eq_single_t> band_gains) {
-+ if(channels_.size() == band_gains.size())
-+ for(unsigned int j = 0; j < channels_.size(); j++)
-+ channels_[j]->set_gain_db(band_gains[j]);
-+ else
-+ return invalid_input_data_error;
-+
-+ return no_error;
-+ }
-+
-+ eq_error_t change_band_gain(unsigned int band_number,
-+ eq_single_t band_gain) {
-+ if(band_number < channels_.size())
-+ channels_[band_number]->set_gain_db(conv_.fast_lin_2_db(band_gain));
-+ else
-+ return invalid_input_data_error;
-
-- return no_error;
-+ return no_error;
- }
-
- eq_error_t change_band_gain_db(unsigned int band_number,
-- eq_single_t band_gain) {
-- if(band_number < channels_.size())
-- channels_[band_number]->set_gain_db(band_gain);
-- else
-- return invalid_input_data_error;
-+ eq_single_t band_gain) {
-+ if(band_number < channels_.size())
-+ channels_[band_number]->set_gain_db(band_gain);
-+ else
-+ return invalid_input_data_error;
-
-- return no_error;
-+ return no_error;
- }
-
- eq_error_t sbs_process_band(unsigned int band_number,
-- eq_single_t *in, eq_single_t *out) {
-- if(band_number < get_number_of_bands())
-- channels_[band_number]->sbs_process(in, out);
-- else
-- return invalid_input_data_error;
--
-- return no_error;
-- }
-+ eq_single_t *in, eq_single_t *out) {
-+ if(band_number < get_number_of_bands())
-+ channels_[band_number]->sbs_process(in, out);
-+ else
-+ return invalid_input_data_error;
-+
-+ return no_error;
-+ }
-
- eq_error_t sbs_process(eq_single_t *in, eq_single_t *out) {
-- eq_error_t err = no_error;
-- eq_single_t in_out = *in;
-- for(unsigned int i = 0; i < get_number_of_bands(); i++)
-- err = sbs_process_band(i,&in_out,&in_out);
--
-- *out = in_out;
--
-- return err;
-- }
--
-- filter_type get_eq_type(){return current_eq_type_;}
-- const char* get_string_eq_type(){return get_eq_text(current_eq_type_);}
-- unsigned int get_number_of_bands() {
-- return freq_grid_.get_number_of_bands();
-- }
-- const char* get_version(){return eq_version;}
-+ eq_error_t err = no_error;
-+ eq_single_t in_out = *in;
-+ for(unsigned int i = 0; i < get_number_of_bands(); i++)
-+ err = sbs_process_band(i,&in_out,&in_out);
-+
-+ *out = in_out;
-+
-+ return err;
-+ }
-+
-+ filter_type get_eq_type(){return current_eq_type_;}
-+ const char* get_string_eq_type(){return get_eq_text(current_eq_type_);}
-+ unsigned int get_number_of_bands() {
-+ return freq_grid_.get_number_of_bands();
-+ }
-+ const char* get_version(){return eq_version;}
- };
-
- } //namespace orfanidis_eq
---- a/src/gui_controls.cpp
-+++ b/src/gui_controls.cpp
-@@ -1110,9 +1110,10 @@
- g_signal_connect(GTK_OBJECT(widget), "file-set", G_CALLBACK(filechooser_value_changed), (gpointer)this);
- if (attribs.count("width"))
- gtk_widget_set_size_request (widget, get_int("width", 200), -1);
-- if (attribs.count("width_chars"))
-- gtk_file_chooser_button_set_width_chars (filechooser, get_int("width_chars"));
-- gtk_widget_set_name(GTK_WIDGET(widget), "Calf-FileButton");
-+ if (attribs.count("width_chars")) {
-+ gtk_file_chooser_button_set_width_chars (filechooser, get_int("width_chars"));
-+ gtk_widget_set_name(GTK_WIDGET(widget), "Calf-FileButton");
-+ }
- return widget;
- }
-
---- a/src/host_session.cpp
-+++ b/src/host_session.cpp
-@@ -143,10 +143,12 @@
- void host_session::handle_jack_session_event(jack_session_event_t *event)
- {
- try {
-- asprintf(&event->command_line, "%s --load ${SESSION_DIR}" G_DIR_SEPARATOR_S "rack.xml --session-id %s" , calfjackhost_cmd.c_str(), event->client_uuid);
-- string fn = event->session_dir;
-- fn += "rack.xml";
-- save_file(fn.c_str());
-+ int size = asprintf(&event->command_line, "%s --load ${SESSION_DIR}" G_DIR_SEPARATOR_S "rack.xml --session-id %s" , calfjackhost_cmd.c_str(), event->client_uuid);
-+ if (size > -1) {
-+ string fn = event->session_dir;
-+ fn += "rack.xml";
-+ save_file(fn.c_str());
-+ }
- }
- catch(...)
- {
---- a/src/modules_delay.cpp
-+++ b/src/modules_delay.cpp
-@@ -385,9 +385,10 @@
- while(offset < end) {
- outs[0][offset] = ins[0][offset];
- buffer[w_ptr] = ins[0][offset];
-- if (stereo)
-+ if (stereo) {
- outs[1][offset] = ins[1][offset];
- buffer[w_ptr + 1] = ins[1][offset];
-+ }
- w_ptr = (w_ptr + 2) & b_mask;
- ++offset;
- }
---- a/src/modules_limit.cpp
-+++ b/src/modules_limit.cpp
-@@ -429,7 +429,7 @@
- }
-
- // write multiband coefficient to buffer
-- buffer[pos] = std::min(*params[param_limit] / std::max(fabs(tmpL), fabs(tmpR)), 1.0f);
-+ buffer[pos] = std::min((float)(*params[param_limit] / std::max(fabs(tmpL), fabs(tmpR))), 1.0f);
-
- // step forward in multiband buffer
- pos = (pos + channels) % buffer_size;
-@@ -811,7 +811,7 @@
- }
-
- // write multiband coefficient to buffer
-- buffer[pos] = std::min(*params[param_limit] / std::max(fabs(tmpL), fabs(tmpR)), 1.0f);
-+ buffer[pos] = std::min((float)(*params[param_limit] / std::max(fabs(tmpL), fabs(tmpR))), 1.0f);
-
- // step forward in multiband buffer
- pos = (pos + channels) % buffer_size;
diff --git a/debian/patches/020161212~b2cdb2f.patch b/debian/patches/020161212~b2cdb2f.patch
deleted file mode 100644
index b34b918..0000000
--- a/debian/patches/020161212~b2cdb2f.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Description: fix a manpage
- As suggested by Lintian:
- https://lintian.debian.org/tags/manpage-has-bad-whatis-entry.html
-Origin: upstream, https://github.com/calf-studio-gear/calf/commit/b2cdb2f
-Author: Olivier Humbert <trebmuh at users.noreply.github.com>
-Forwarded: yes
-Last-Update: 2017-07-30
-
---- a/calf.7
-+++ b/calf.7
-@@ -1,6 +1,6 @@
- .TH CALF 7 2015-03-03
- .SH NAME
--Calf Studio Gear \- audio plugin library
-+Calf_Studio_Gear \- audio plugin library
- .SH SYNOPSIS
- calfjackhost
- plugin
diff --git a/debian/patches/020170113~3ce5497.patch b/debian/patches/020170113~3ce5497.patch
deleted file mode 100644
index e0db2c3..0000000
--- a/debian/patches/020170113~3ce5497.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-Description: fix explicitly instantiate in namespace calf_plugins
-Origin: upstream, https://github.com/calf-studio-gear/calf/commit/3ce5497
-Author: JP Cimalando <jpcima at noreply.users.github.com>
-Forwarded: yes
-Last-Update: 2017-07-30
-
---- a/src/modules_filter.cpp
-+++ b/src/modules_filter.cpp
-@@ -492,9 +492,11 @@
- return ret;
- }
-
-+namespace calf_plugins {
- template class equalizerNband_audio_module<equalizer5band_metadata, false>;
- template class equalizerNband_audio_module<equalizer8band_metadata, true>;
- template class equalizerNband_audio_module<equalizer12band_metadata, true>;
-+}
-
- /**********************************************************************
- * EQUALIZER 30 BAND
-@@ -1042,9 +1044,11 @@
- return crossover.get_layers(index, generation, layers);
- }
-
-+namespace calf_plugins {
- template class xover_audio_module<xover2_metadata>;
- template class xover_audio_module<xover3_metadata>;
- template class xover_audio_module<xover4_metadata>;
-+}
-
-
- /**********************************************************************
diff --git a/debian/patches/020170113~7febcb6.patch b/debian/patches/020170113~7febcb6.patch
deleted file mode 100644
index 77ae01d..0000000
--- a/debian/patches/020170113~7febcb6.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Description: fix memory error
-Origin: upstream, https://github.com/calf-studio-gear/calf/commit/7febcb6
-Author: JP Cimalando <jpcima at noreply.users.github.com>
-Forwarded: yes
-Last-Update: 2017-07-30
-
---- a/src/audio_fx.cpp
-+++ b/src/audio_fx.cpp
-@@ -1326,7 +1326,6 @@
- }
- resampleN::~resampleN()
- {
-- free(tmp);
- }
- void resampleN::set_params(uint32_t sr, int fctr = 2, int fltrs = 2)
- {
diff --git a/debian/patches/020170113~93091c4.patch b/debian/patches/020170113~93091c4.patch
deleted file mode 100644
index 3133db6..0000000
--- a/debian/patches/020170113~93091c4.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Description: fix FFT buffer leak
-Origin: upstream, https://github.com/calf-studio-gear/calf/commit/93091c4
-Author: JP Cimalando <jpcima at noreply.users.github.com>
-Forwarded: yes
-Last-Update: 2017-07-30
-
---- a/src/analyzer.cpp
-+++ b/src/analyzer.cpp
-@@ -90,6 +90,7 @@
- free(fft_outL);
- free(fft_inR);
- free(fft_inL);
-+ free(fft_buffer);
- free(spline_buffer);
- }
- void analyzer::set_sample_rate(uint32_t sr) {
diff --git a/debian/patches/020170113~9c055ff.patch b/debian/patches/020170113~9c055ff.patch
deleted file mode 100644
index 010a829..0000000
--- a/debian/patches/020170113~9c055ff.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Description: fix c++11 type narrowing in initializer
-Origin: upstream, https://github.com/calf-studio-gear/calf/commit/9c055ff
-Author: JP Cimalando <jpcima at noreply.users.github.com>
-Forwarded: yes
-Last-Update: 2017-07-30
-
---- a/src/metadata.cpp
-+++ b/src/metadata.cpp
-@@ -1413,7 +1413,7 @@
- { 300.f, 1.f, 5000.f, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_MSEC, NULL, "release_time", "Release Time" },
- { 0.f, -1.f, 1.f, 0, PF_FLOAT | PF_SCALE_PERC | PF_CTL_KNOB | PF_UNIT_COEF | PF_PROP_GRAPH, NULL, "release_boost", "Release Boost" },
- { 2000.f, 50.f, 5000.f, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_MSEC, NULL, "display", "Display" },
-- { pow(2.0,-12.0), pow(2.0,-12.0),1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF | PF_PROP_GRAPH, NULL, "display_threshold", "Threshold" },
-+ { pow(2.0f,-12.0f), pow(2.0f,-12.0f),1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF | PF_PROP_GRAPH, NULL, "display_threshold", "Threshold" },
- { 0, 0, 100, 0, PF_INT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_SAMPLES, NULL, "lookahead", "Lookahead" },
- { 0, 0, 3, 0, PF_ENUM | PF_CTL_COMBO, transientdesigner_view_names, "view", "View Mode" },
- { 100, 20,20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ | PF_PROP_GRAPH, NULL, "hipass", "Highpass" },
diff --git a/debian/patches/020170113~a1d4da8.patch b/debian/patches/020170113~a1d4da8.patch
deleted file mode 100644
index 0d79d83..0000000
--- a/debian/patches/020170113~a1d4da8.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Description: fix cleanup of LV2 wrapped module which is never freed
-Origin: upstream, https://github.com/calf-studio-gear/calf/commit/a1d4da8
-Author: JP Cimalando <jpcima at noreply.users.github.com>
-Forwarded: yes
-Last-Update: 2017-07-30
-
---- a/src/calf/lv2wrap.h
-+++ b/src/calf/lv2wrap.h
-@@ -295,6 +295,7 @@
- static void cb_cleanup(LV2_Handle Instance)
- {
- instance *const mod = (instance *)Instance;
-+ delete mod->module;
- delete mod;
- }
-
diff --git a/debian/patches/020170113~e635e95.patch b/debian/patches/020170113~e635e95.patch
deleted file mode 100644
index 82e415d..0000000
--- a/debian/patches/020170113~e635e95.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Description: fix memory leak in waveform generation
-Origin: upstream, https://github.com/calf-studio-gear/calf/commit/e635e95
-Author: JP Cimalando <jpcima at noreply.users.github.com>
-Forwarded: yes
-Last-Update: 2017-07-30
-
---- a/src/calf/osc.h
-+++ b/src/calf/osc.h
-@@ -206,7 +206,9 @@
- float *wf = new float[SIZE+1];
- bl.make_waveform(wf, cutoff, foldover);
- wf[SIZE] = wf[0];
-- (*this)[base * (top / cutoff)] = wf;
-+ float **storage = &(*this)[base * (top / cutoff)];
-+ delete[] *storage;
-+ *storage = wf;
- cutoff = (int)(0.75 * cutoff);
- }
- }
diff --git a/debian/patches/020170113~ec8afdd.patch b/debian/patches/020170113~ec8afdd.patch
deleted file mode 100644
index 8f24f79..0000000
--- a/debian/patches/020170113~ec8afdd.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-Description: fix free() of uninitialized pointers
-Origin: upstream, https://github.com/calf-studio-gear/calf/commit/ec8afdd
-Author: JP Cimalando <jpcima at noreply.users.github.com>
-Forwarded: yes
-Last-Update: 2017-07-30
-
---- a/src/audio_fx.cpp
-+++ b/src/audio_fx.cpp
-@@ -587,6 +587,9 @@
- asc_pos = -1;
- asc_changed = false;
- asc_coeff = 1.f;
-+ buffer = NULL;
-+ nextpos = NULL;
-+ nextdelta = NULL;
- }
- lookahead_limiter::~lookahead_limiter()
- {
---- a/src/modules_comp.cpp
-+++ b/src/modules_comp.cpp
-@@ -2492,6 +2492,7 @@
- transients.set_channels(channels);
- hp_f_old = hp_m_old = lp_f_old = lp_m_old = 0;
- redraw = false;
-+ pbuffer = NULL;
- }
- transientdesigner_audio_module::~transientdesigner_audio_module()
- {
---- a/src/modules_filter.cpp
-+++ b/src/modules_filter.cpp
-@@ -914,6 +914,7 @@
- is_active = false;
- srate = 0;
- redraw_graph = true;
-+ buffer = NULL;
- crossover.init(AM::channels, AM::bands, 44100);
- }
- template<class XoverBaseClass>
---- a/src/modules_limit.cpp
-+++ b/src/modules_limit.cpp
-@@ -193,6 +193,7 @@
- _sanitize = false;
- is_active = false;
- cnt = 0;
-+ buffer = NULL;
-
- for(int i = 0; i < strips; i ++) {
- weight_old[i] = -1.f;
-@@ -585,6 +586,7 @@
- _sanitize = false;
- is_active = false;
- cnt = 0;
-+ buffer = NULL;
-
- for(int i = 0; i < strips; i ++) {
- weight_old[i] = -1.f;
---- a/src/modules_tools.cpp
-+++ b/src/modules_tools.cpp
-@@ -41,6 +41,7 @@
- stereo_audio_module::stereo_audio_module() {
- active = false;
- _phase = -1;
-+ buffer = NULL;
- }
- stereo_audio_module::~stereo_audio_module() {
- free(buffer);
-@@ -279,6 +280,7 @@
- meter_outR = 0.f;
- _phase = -1.f;
- _sc_level = 0.f;
-+ buffer = NULL;
- }
- mono_audio_module::~mono_audio_module() {
- free(buffer);
diff --git a/debian/patches/020170113~fe63fa9.patch b/debian/patches/020170113~fe63fa9.patch
deleted file mode 100644
index cbe4783..0000000
--- a/debian/patches/020170113~fe63fa9.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-Description: fix warnings about mismatched class/struct tags
-Origin: upstream, https://github.com/calf-studio-gear/calf/commit/fe63fa9
-Author: JP Cimalando <jpcima at noreply.users.github.com>
-Forwarded: yes
-Last-Update: 2017-07-30
-
---- a/src/calf/connector.h
-+++ b/src/calf/connector.h
-@@ -28,7 +28,7 @@
-
- namespace calf_plugins {
-
--class plugin_strip;
-+struct plugin_strip;
- class calf_connector;
-
- struct connector_port
---- a/src/calf/gui.h
-+++ b/src/calf/gui.h
-@@ -199,8 +199,8 @@
- static void xml_element_end(void *data, const char *element);
- };
-
--class main_window_iface;
--class main_window_owner_iface;
-+struct main_window_iface;
-+struct main_window_owner_iface;
-
- /// A class used to inform the plugin GUIs about the environment they run in
- /// (currently: what plugin features are accessible)
---- a/src/calf/preset.h
-+++ b/src/calf/preset.h
-@@ -27,8 +27,8 @@
-
- namespace calf_plugins {
-
--class plugin_ctl_iface;
--
-+struct plugin_ctl_iface;
-+
- /// Contents of single preset
- struct plugin_preset
- {
diff --git a/debian/patches/1001_use_autoconf_dirnames.patch b/debian/patches/1001_use_autoconf_dirnames.patch
index f067069..560b485 100644
--- a/debian/patches/1001_use_autoconf_dirnames.patch
+++ b/debian/patches/1001_use_autoconf_dirnames.patch
@@ -35,3 +35,21 @@ Index: calf/src/Makefile.am
endif
if USE_JACK
AM_CXXFLAGS += $(JACK_DEPS_CFLAGS)
+Index: calf/configure.ac
+===================================================================
+--- calf.orig/configure.ac
++++ calf/configure.ac
+@@ -219,13 +219,6 @@ fi
+
+ ############################################################################################
+
+-# Other defines
+-AC_DEFINE_UNQUOTED(PKGLIBDIR,"$prefix/share/calf/",[Calf shared data directory (bitmaps, GUI XML etc.)])
+-AC_DEFINE_UNQUOTED(PKGDOCDIR,"$prefix/share/doc/calf/",[Calf documentation directory])
+-
+-
+-############################################################################################
+-
+ # BASH completion
+
+ AC_ARG_WITH([bash-completion-dir],
diff --git a/debian/patches/2001_use_colorbox.patch b/debian/patches/2001_use_colorbox.patch
deleted file mode 100644
index 3138b0f..0000000
--- a/debian/patches/2001_use_colorbox.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-Description: use jQuery.colorbox
- The jQuery.prettyPhoto script used upstream as lightbox in
- documentation includes mechanisms breaching privacy.
- Those features are disabled in actual use, but just to be on the safe
- side we replace with the simpler and safer jQuery.colorbox.
-Author: Jonas Smedegaard <dr at jones.dk>
-Last-Update: 2014-09-15
-Forwarded: No
-
---- a/doc/manuals/scripts/manual.js
-+++ b/doc/manuals/scripts/manual.js
-@@ -148,11 +148,7 @@
- $("<br clear='all'/>").appendTo($("#index"));
- }
- }
-- $(".prettyPhoto").prettyPhoto({
-- theme: 'dark_rounded',
-- social_tools: '',
-- show_title: false,
-- });
-+ $(".prettyPhoto").colorbox();
- $(window).resize(resize);
- $(window).scroll(scroll);
- resize();
---- a/doc/manuals/scripts/prettyPhoto.css
-+++ b/doc/manuals/scripts/prettyPhoto.css
-@@ -168,3 +168,18 @@
- * html .pp_top .pp_middle,* html .pp_bottom .pp_middle{left:0;position:static}
- .pp_top .pp_right,.pp_bottom .pp_right{height:20px;left:auto;position:absolute;right:0;top:0;width:20px}
- .pp_fade,.pp_gallery li.default a img{display:none}
-+
-+#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
-+#cboxWrapper {max-width:none;}
-+#cboxOverlay{position:fixed; width:100%; height:100%;}
-+#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
-+#cboxContent{position:relative;}
-+#cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;}
-+#cboxTitle{margin:0;}
-+#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
-+#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
-+.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none; -ms-interpolation-mode:bicubic;}
-+.cboxIframe{width:100%; height:100%; display:block; border:0; padding:0; margin:0;}
-+#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;}
-+
-+#cboxOverlay{background:url(../images/prettyPhoto/dark_rounded/contentPattern.png) repeat 0 0; opacity: 0.9; filter: alpha(opacity = 90);}
--
calf audio plugins packaging
More information about the pkg-multimedia-commits
mailing list