Date: Wednesday, May 27, 2020 @ 10:53:59 Author: dvzrv Revision: 635884
upgpkg: guitarix 0.40.0-1: Upgrading to 0.40.0. Adding all available sodeps in package() and moving the respective packages to makedepends. Removing included patches. Adding guitarix2 to conflicts/ provides (to make sure this gets picked up). Modified: guitarix/trunk/PKGBUILD Deleted: guitarix/trunk/guitarix-0.39.0-fix_faust_and_lv2_plugins.patch -------------------------------------------------+ PKGBUILD | 34 guitarix-0.39.0-fix_faust_and_lv2_plugins.patch | 3296 ---------------------- 2 files changed, 16 insertions(+), 3314 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2020-05-27 10:46:38 UTC (rev 635883) +++ PKGBUILD 2020-05-27 10:53:59 UTC (rev 635884) @@ -1,33 +1,26 @@ # Maintainer: David Runge <dv...@archlinux.org pkgname=guitarix -pkgver=0.39.0 -pkgrel=3 +pkgver=0.40.0 +pkgrel=1 pkgdesc="A simple mono guitar amplifier and FX for JACK using Faust" arch=('x86_64') url="https://guitarix.org" license=('GPL3') groups=('ladspa-plugins' 'lv2-plugins' 'pro-audio') -depends=('avahi' 'bluez-libs' 'cairo' 'cairomm' 'gcc-libs' 'gdk-pixbuf2' -'glib2' 'glibc' 'glibmm' 'gtk2' 'gtkmm' 'libboost_iostreams.so' 'libcurl.so' -'libjack.so' 'liblilv-0.so' 'liblrdf.so' 'libsndfile.so' 'libzita-convolver.so' -'libzita-resampler.so' 'pango' 'pangomm' 'ttf-roboto') -makedepends=('boost' 'eigen' 'faust' 'gperf' 'intltool' 'ladspa' 'lv2' 'waf') -provides=('libgxw.so' 'libgxwmm.so') +depends=('atkmm' 'bluez-libs' 'cairo' 'cairomm' 'gcc-libs' 'gdk-pixbuf2' +'glibc' 'glibmm' 'gtkmm3' 'libsigc++' 'libx11' 'pangomm' 'ttf-roboto') +makedepends=('avahi' 'curl' 'boost' 'eigen' 'faust' 'fftw' 'glib2' 'gperf' +'gtk3' 'intltool' 'jack' 'ladspa' 'liblrdf' 'lilv' 'lv2' 'pango' +'sassc' 'waf' 'zita-convolver' 'zita-resampler') +provides=('guitarix2' 'libgxw.so' 'libgxwmm.so') +conflicts=('guitarix2') replaces=('guitarix2') -source=("${pkgname}-${pkgver}.tar.xz::https://download.sourceforge.net/project/guitarix/guitarix/${pkgname}2-${pkgver}.tar.xz" - "${pkgname}-0.39.0-fix_faust_and_lv2_plugins.patch") -sha512sums=('5eb799498385ab9aa865e3f5a7e79d77f7f62c9bd7ad6875ec32bdec85829ed5b84bed3b0eab786ce74088fe2e1d53080f70afcb25ab1ef8d8f78a676b4947df' - '19e1573ced97e87dc8b64dcfcb5f9eff01650600fee317e0d75824550e0ac614ec06a98668c34c2d64c9043085318c07de7cce4c1e0a39be61b2fe613c6148b5') +source=("${pkgname}-${pkgver}.tar.xz::https://download.sourceforge.net/project/guitarix/guitarix/${pkgname}2-${pkgver}.tar.xz") +sha512sums=('902e4d924cae68a477518cb87d7b63edb8716db93e11add921e733c315f2646652fb1b434d182e836e1e866035cabe22a41d8dc66df0b6156b5242cdd31d51e8') -prepare() { - cd "${pkgname}-${pkgver}" - patch -Np2 -i "../${pkgname}-0.39.0-fix_faust_and_lv2_plugins.patch" -} - build() { cd "${pkgname}-${pkgver}" - # when building with faust 2.20.2 it fails: https://sourceforge.net/p/guitarix/bugs/86/ waf configure --prefix=/usr \ --enable-nls \ --ladspa \ @@ -39,6 +32,11 @@ } package() { + depends+=('libavahi-common.so' 'libavahi-gobject.so' 'libboost_iostreams.so' + 'libcurl.so' 'libfftw3f.so' 'libgdk-3.so' 'libgio-2.0.so' 'libglib-2.0.so' + 'libgobject-2.0.so' 'libjack.so' 'liblilv-0.so' 'liblrdf.so' + 'libpangocairo-1.0.so' 'libpango-1.0.so' 'libsndfile.so' + 'libzita-convolver.so' 'libzita-resampler.so') cd "${pkgname}-${pkgver}" waf install --destdir="${pkgdir}" # docs Deleted: guitarix-0.39.0-fix_faust_and_lv2_plugins.patch =================================================================== --- guitarix-0.39.0-fix_faust_and_lv2_plugins.patch 2020-05-27 10:46:38 UTC (rev 635883) +++ guitarix-0.39.0-fix_faust_and_lv2_plugins.patch 2020-05-27 10:53:59 UTC (rev 635884) @@ -1,3296 +0,0 @@ -From 949555d976d8cb3cd98be56ebe464ce7f859007b Mon Sep 17 00:00:00 2001 -From: brummer10 <brumm...@web.de> -Date: Tue, 14 Jan 2020 18:59:07 +0100 -Subject: [PATCH 1/8] fix issue #86 - ---- - trunk/src/LV2/faust-generated/highbooster.cc | 4 ++-- - trunk/src/LV2/faust/highbooster.dsp | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/trunk/src/LV2/faust-generated/highbooster.cc b/trunk/src/LV2/faust-generated/highbooster.cc -index 91a19fea..35c95ae9 100644 ---- a/trunk/src/LV2/faust-generated/highbooster.cc -+++ b/trunk/src/LV2/faust-generated/highbooster.cc -@@ -72,7 +72,7 @@ inline void Dsp::init(uint32_t samplingFreq) - fConst3 = (0.0 - (1.0 / (fConst2 * fConst0))); - fConst4 = (1.0 / fConst2); - fConst5 = (1.0 - fConst1); -- fVslider0 = FAUSTFLOAT(0.0); -+ fVslider0 = FAUSTFLOAT(0.5); - clear_state_f(); - } - -@@ -107,7 +107,7 @@ void Dsp::connect(uint32_t port,void* data) - switch ((PortIndex)port) - { - case LEVEL: -- fVslider0_ = (float*)data; // , 0.0, 0.5, 20.0, 0.5 -+ fVslider0_ = (float*)data; // , 0.5, 0.0, 20.0, 0.5 - break; - default: - break; -diff --git a/trunk/src/LV2/faust/highbooster.dsp b/trunk/src/LV2/faust/highbooster.dsp -index af4d839a..67a1df85 100644 ---- a/trunk/src/LV2/faust/highbooster.dsp -+++ b/trunk/src/LV2/faust/highbooster.dsp -@@ -3,7 +3,7 @@ declare category "Tone Control"; - - import("stdfaust.lib"); - --level = vslider("Level", 0, 0.5, 20, 0.5) ; -+level = vslider("Level", 0.5, 0.0, 20, 0.5) ; - hfboost(level,fx,x) = x + (ba.db2linear(level)-1)*fi.highpass(1,fx,x); - - process = hfboost(level, 1500); --- -2.25.1 - - -From a021bf7de6beae98f8c84a0b48b3a578aa8c19cf Mon Sep 17 00:00:00 2001 -From: brummer10 <brumm...@web.de> -Date: Mon, 20 Jan 2020 07:32:47 +0100 -Subject: [PATCH 2/8] rename src/LV2/gx_wah.lv2 to src/LV2/gx_colwah.lv2 to - avoid install of empty LV2 bundle - ---- - trunk/src/LV2/gx_colwah.lv2/gx_colwah.cpp | 254 ++++++++++++++ - trunk/src/LV2/gx_colwah.lv2/gx_colwah.h | 42 +++ - trunk/src/LV2/gx_colwah.lv2/gx_colwah.ttl | 141 ++++++++ - trunk/src/LV2/gx_colwah.lv2/gx_colwah_gui.cpp | 314 ++++++++++++++++++ - trunk/src/LV2/gx_colwah.lv2/manifest.ttl.in | 26 ++ - trunk/src/LV2/gx_colwah.lv2/modgui.ttl | 2 + - trunk/src/LV2/gx_colwah.lv2/wah.h | 26 ++ - trunk/src/LV2/gx_colwah.lv2/widget.cpp | 268 +++++++++++++++ - trunk/src/LV2/gx_colwah.lv2/widget.h | 96 ++++++ - trunk/src/LV2/gx_colwah.lv2/wscript | 62 ++++ - 10 files changed, 1231 insertions(+) - create mode 100644 trunk/src/LV2/gx_colwah.lv2/gx_colwah.cpp - create mode 100644 trunk/src/LV2/gx_colwah.lv2/gx_colwah.h - create mode 100644 trunk/src/LV2/gx_colwah.lv2/gx_colwah.ttl - create mode 100644 trunk/src/LV2/gx_colwah.lv2/gx_colwah_gui.cpp - create mode 100644 trunk/src/LV2/gx_colwah.lv2/manifest.ttl.in - create mode 100644 trunk/src/LV2/gx_colwah.lv2/modgui.ttl - create mode 100644 trunk/src/LV2/gx_colwah.lv2/wah.h - create mode 100644 trunk/src/LV2/gx_colwah.lv2/widget.cpp - create mode 100644 trunk/src/LV2/gx_colwah.lv2/widget.h - create mode 100644 trunk/src/LV2/gx_colwah.lv2/wscript - -diff --git a/trunk/src/LV2/gx_colwah.lv2/gx_colwah.cpp b/trunk/src/LV2/gx_colwah.lv2/gx_colwah.cpp -new file mode 100644 -index 00000000..331cf3fb ---- /dev/null -+++ b/trunk/src/LV2/gx_colwah.lv2/gx_colwah.cpp -@@ -0,0 +1,254 @@ -+/* -+ * Copyright (C) 2014 Guitarix project MOD project -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -------------------------------------------------------------------------- -+ */ -+ -+ -+////////////////////////////// LOCAL INCLUDES ////////////////////////// -+ -+#include "gx_common.h" // faust support and denormal protection (SSE) -+#include "gx_colwah.h" // define struct PortIndex -+#include "gx_pluginlv2.h" // define struct PluginLV2 -+#include "wah.h" // dsp class generated by faust -> dsp2cc -+ -+////////////////////////////// PLUG-IN CLASS /////////////////////////// -+ -+#define declare(n) namespace n { PluginLV2 *plugin(); } -+ -+declare(colwah); -+declare(dallaswah); -+declare(foxwah); -+declare(jenwah); -+declare(maestrowah); -+declare(selwah); -+declare(voxwah); -+ -+static plug wah_model [] = { -+ colwah::plugin, //0 -+ dallaswah::plugin, //1 -+ foxwah::plugin, //2 -+ jenwah::plugin, //3 -+ maestrowah::plugin, //4 -+ selwah::plugin, //5 -+ voxwah::plugin, //6 -+}; -+ -+static const size_t WAH_COUNT = sizeof(wah_model) / sizeof(wah_model[0]); -+ -+ -+namespace colwah { -+ -+class Gx_colwah_ -+{ -+private: -+ // pointer to buffer -+ float* output; -+ float* input; -+ // pointer to dsp class -+ PluginLV2* wah[WAH_COUNT]; -+ float* wahh_model; -+ uint32_t wah_model_; -+ uint32_t wah_max; -+ // private functions -+ inline void run_dsp_(uint32_t n_samples); -+ inline void connect_(uint32_t port,void* data); -+ inline void init_dsp_(uint32_t rate); -+ inline void connect_all__ports(uint32_t port, void* data); -+ inline void activate_f(); -+ inline void clean_up(); -+ inline void deactivate_f(); -+ -+public: -+ // LV2 Descriptor -+ static const LV2_Descriptor descriptor; -+ // static wrapper to private functions -+ static void deactivate(LV2_Handle instance); -+ static void cleanup(LV2_Handle instance); -+ static void run(LV2_Handle instance, uint32_t n_samples); -+ static void activate(LV2_Handle instance); -+ static void connect_port(LV2_Handle instance, uint32_t port, void* data); -+ static LV2_Handle instantiate(const LV2_Descriptor* descriptor, -+ double rate, const char* bundle_path, -+ const LV2_Feature* const* features); -+ Gx_colwah_(); -+ ~Gx_colwah_(); -+}; -+ -+// constructor -+Gx_colwah_::Gx_colwah_() : -+ output(NULL), -+ input(NULL), -+ wahh_model(NULL), -+ wah_model_(0) {}; -+ -+// destructor -+Gx_colwah_::~Gx_colwah_() -+{ -+ for(uint32_t i=0; i<WAH_COUNT; i++) { -+ wah[i]->delete_instance(wah[i]); -+ } -+ -+}; -+ -+///////////////////////// PRIVATE CLASS FUNCTIONS ///////////////////// -+ -+void Gx_colwah_::init_dsp_(uint32_t rate) -+{ -+ AVOIDDENORMALS(); // init the SSE denormal protection -+ -+ for(uint32_t i=0; i<WAH_COUNT; i++) { -+ wah[i] = wah_model[i](); -+ wah[i]->set_samplerate(rate, wah[i]); -+ } -+ wah_max = WAH_COUNT-1; -+} -+ -+// connect the Ports used by the plug-in class -+void Gx_colwah_::connect_(uint32_t port,void* data) -+{ -+ switch ((PortIndex)port) -+ { -+ case EFFECTS_OUTPUT: -+ output = static_cast<float*>(data); -+ break; -+ case EFFECTS_INPUT: -+ input = static_cast<float*>(data); -+ break; -+ case MODEL: -+ wahh_model = static_cast<float*>(data); -+ break; -+ default: -+ break; -+ } -+} -+ -+void Gx_colwah_::activate_f() -+{ -+ // allocate the internal DSP mem -+} -+ -+void Gx_colwah_::clean_up() -+{ -+ // delete the internal DSP mem -+} -+ -+void Gx_colwah_::deactivate_f() -+{ -+ // delete the internal DSP mem -+} -+ -+void Gx_colwah_::run_dsp_(uint32_t n_samples) -+{ -+ if (n_samples< 1) return; -+ wah_model_ = min(wah_max, static_cast<uint32_t>(*(wahh_model))); -+ wah[wah_model_]->mono_audio(static_cast<int>(n_samples), input, output, wah[wah_model_]); -+} -+ -+void Gx_colwah_::connect_all__ports(uint32_t port, void* data) -+{ -+ // connect the Ports used by the plug-in class -+ connect_(port,data); -+ // connect the Ports used by the DSP class -+ for(uint32_t i=0; i<WAH_COUNT; i++) { -+ wah[i]->connect_ports(port, data, wah[i]); -+ } -+} -+ -+////////////////////// STATIC CLASS FUNCTIONS //////////////////////// -+ -+LV2_Handle -+Gx_colwah_::instantiate(const LV2_Descriptor* descriptor, -+ double rate, const char* bundle_path, -+ const LV2_Feature* const* features) -+{ -+ // init the plug-in class -+ Gx_colwah_ *self = new Gx_colwah_(); -+ if (!self) -+ { -+ return NULL; -+ } -+ -+ self->init_dsp_((uint32_t)rate); -+ -+ return (LV2_Handle)self; -+} -+ -+void Gx_colwah_::connect_port(LV2_Handle instance, -+ uint32_t port, void* data) -+{ -+ // connect all ports -+ static_cast<Gx_colwah_*>(instance)->connect_all__ports(port, data); -+} -+ -+void Gx_colwah_::activate(LV2_Handle instance) -+{ -+ // allocate needed mem -+ static_cast<Gx_colwah_*>(instance)->activate_f(); -+} -+ -+void Gx_colwah_::run(LV2_Handle instance, uint32_t n_samples) -+{ -+ // run dsp -+ static_cast<Gx_colwah_*>(instance)->run_dsp_(n_samples); -+} -+ -+void Gx_colwah_::deactivate(LV2_Handle instance) -+{ -+ // free allocated mem -+ static_cast<Gx_colwah_*>(instance)->deactivate_f(); -+} -+ -+void Gx_colwah_::cleanup(LV2_Handle instance) -+{ -+ // well, clean up after us -+ Gx_colwah_* self = static_cast<Gx_colwah_*>(instance); -+ self->clean_up(); -+ delete self; -+} -+ -+const LV2_Descriptor Gx_colwah_::descriptor = -+{ -+ GXPLUGIN_URI "#_colwah_", -+ Gx_colwah_::instantiate, -+ Gx_colwah_::connect_port, -+ Gx_colwah_::activate, -+ Gx_colwah_::run, -+ Gx_colwah_::deactivate, -+ Gx_colwah_::cleanup, -+ NULL -+}; -+ -+ -+} // end namespace colwah -+ -+////////////////////////// LV2 SYMBOL EXPORT /////////////////////////// -+ -+extern "C" -+LV2_SYMBOL_EXPORT -+const LV2_Descriptor* -+lv2_descriptor(uint32_t index) -+{ -+ switch (index) -+ { -+ case 0: -+ return &colwah::Gx_colwah_::descriptor; -+ default: -+ return NULL; -+ } -+} -+ -+///////////////////////////// FIN ////////////////////////////////////// -diff --git a/trunk/src/LV2/gx_colwah.lv2/gx_colwah.h b/trunk/src/LV2/gx_colwah.lv2/gx_colwah.h -new file mode 100644 -index 00000000..9b23a29a ---- /dev/null -+++ b/trunk/src/LV2/gx_colwah.lv2/gx_colwah.h -@@ -0,0 +1,42 @@ -+/* -+ * Copyright (C) 2014 Guitarix project MOD project -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -------------------------------------------------------------------------- -+ */ -+ -+#pragma once -+ -+#ifndef SRC_HEADERS_GXEFFECTS_H_ -+#define SRC_HEADERS_GXEFFECTS_H_ -+ -+#include <lv2.h> -+ -+#define GXPLUGIN_URI "http://guitarix.sourceforge.net/plugins/gx_colwah_" -+#define GXPLUGIN_UI_URI "http://guitarix.sourceforge.net/plugins/gx_colwah_gui" -+ -+ -+typedef enum -+{ -+ EFFECTS_OUTPUT, -+ EFFECTS_INPUT, -+ WAH, -+ FREQ, -+ MODE, -+ MODEL, -+ WET_DRY, -+} PortIndex; -+ -+#endif //SRC_HEADERS_GXEFFECTS_H_ -diff --git a/trunk/src/LV2/gx_colwah.lv2/gx_colwah.ttl b/trunk/src/LV2/gx_colwah.lv2/gx_colwah.ttl -new file mode 100644 -index 00000000..5ba01ff6 ---- /dev/null -+++ b/trunk/src/LV2/gx_colwah.lv2/gx_colwah.ttl -@@ -0,0 +1,141 @@ -+# -+# Copyright (C) 2014 Guitarix project MOD project -+# -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 2 of the License, or -+# (at your option) any later version. -+# -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program; if not, write to the Free Software -+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -+# -------------------------------------------------------------------------- -+# -+ -+ -+@prefix doap: <http://usefulinc.com/ns/doap#> . -+@prefix foaf: <http://xmlns.com/foaf/0.1/> . -+@prefix lv2: <http://lv2plug.in/ns/lv2core#> . -+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . -+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . -+@prefix guiext: <http://lv2plug.in/ns/extensions/ui#>. -+@prefix time: <http://lv2plug.in/ns/ext/time#>. -+@prefix units: <http://lv2plug.in/ns/extensions/units#> . -+ -+<http://guitarix.sourceforge.net#me> -+ a foaf:Person ; -+ foaf:name "Guitarix team" ; -+ foaf:mbox <mailto:guitarix-develo...@lists.sourceforge.net> ; -+ rdfs:seeAlso <http://guitarix.sourceforge.net> . -+ -+<http://guitarix.sourceforge.net/plugins/gx_colwah_> -+ a doap:Project ; -+ doap:maintainer <http://guitarix.sourceforge.net#me> ; -+ doap:name "Gx_colwah_" . -+ -+<http://guitarix.sourceforge.net/plugins/gx_colwah_#_colwah_> -+ a lv2:Plugin , -+ lv2:ModulatorPlugin ; -+ doap:maintainer <http://guitarix.sourceforge.net#me> ; -+ doap:name "GxWahwah"; -+ doap:license <http://opensource.org/licenses/isc> ; -+ lv2:project <http://guitarix.sourceforge.net/plugins/gx_colwah_> ; -+ lv2:optionalFeature lv2:hardRTCapable ; -+ -+ lv2:minorVersion 34; -+ lv2:microVersion 0; -+ -+ guiext:ui <http://guitarix.sourceforge.net/plugins/gx_colwah_gui#_colwah_>; -+ -+rdfs:comment """ -+ -+... -+ -+"""; -+ -+ lv2:port [ -+ a lv2:AudioPort , -+ lv2:OutputPort ; -+ lv2:index 0 ; -+ lv2:symbol "out" ; -+ lv2:name "Out" -+ ] , [ -+ a lv2:AudioPort , -+ lv2:InputPort ; -+ lv2:index 1 ; -+ lv2:symbol "in" ; -+ lv2:name "In" ; -+ ] -+ , [ -+ a lv2:InputPort , -+ lv2:ControlPort ; -+ lv2:index 2 ; -+ lv2:symbol "WAH" ; -+ lv2:name "WAH" ; -+ lv2:default 0.0 ; -+ lv2:minimum 0.0 ; -+ lv2:maximum 1.0 ; -+ ] , [ -+ a lv2:InputPort , -+ lv2:ControlPort ; -+ lv2:index 3 ; -+ lv2:symbol "FREQ" ; -+ lv2:name "FREQ" ; -+ lv2:default 24.0 ; -+ lv2:minimum 24.0 ; -+ lv2:maximum 3.6e+02 ; -+ ] , [ -+ a lv2:InputPort , -+ lv2:ControlPort ; -+ lv2:index 4 ; -+ lv2:symbol "MODE" ; -+ lv2:name "MODE" ; -+ lv2:default 0.0 ; -+ lv2:minimum 0.0 ; -+ lv2:maximum 2.0 ; -+ lv2:portProperty lv2:integer; -+ lv2:portProperty lv2:enumeration ; -+ lv2:scalePoint [rdfs:label "manual"; rdf:value 0]; -+ lv2:scalePoint [rdfs:label "auto"; rdf:value 1]; -+ lv2:scalePoint [rdfs:label "alien"; rdf:value 2]; -+ -+ ] , [ -+ a lv2:InputPort , -+ lv2:ControlPort ; -+ lv2:index 5 ; -+ lv2:symbol "MODEL" ; -+ lv2:name "MODEL" ; -+ lv2:default 0.0 ; -+ lv2:minimum 0.0 ; -+ lv2:maximum 6.0 ; -+ lv2:portProperty lv2:integer; -+ lv2:portProperty lv2:enumeration ; -+ lv2:scalePoint [rdfs:label "Colorsound Wah"; rdf:value 0]; -+ lv2:scalePoint [rdfs:label "Dallas Wah"; rdf:value 1]; -+ lv2:scalePoint [rdfs:label "Foxx Wah"; rdf:value 2]; -+ lv2:scalePoint [rdfs:label "Jen Wah"; rdf:value 3]; -+ lv2:scalePoint [rdfs:label "Maestro Wah"; rdf:value 4]; -+ lv2:scalePoint [rdfs:label "SelmerWah"; rdf:value 5]; -+ lv2:scalePoint [rdfs:label "Vox Wah V847"; rdf:value 6]; -+ -+ ] , [ -+ a lv2:InputPort , -+ lv2:ControlPort ; -+ lv2:index 6 ; -+ lv2:symbol "WET_DRY" ; -+ lv2:name "WET_DRY" ; -+ lv2:default 1e+02 ; -+ lv2:minimum 0.0 ; -+ lv2:maximum 1e+02 ; -+ ] . -+ -+<http://guitarix.sourceforge.net/plugins/gx_colwah_gui#_colwah_> -+ a guiext:GtkUI; -+ guiext:binary <gx_colwah_gui.so>; -+ guiext:requiredFeature guiext:makeResident; -+ . -diff --git a/trunk/src/LV2/gx_colwah.lv2/gx_colwah_gui.cpp b/trunk/src/LV2/gx_colwah.lv2/gx_colwah_gui.cpp -new file mode 100644 -index 00000000..449a8d33 ---- /dev/null -+++ b/trunk/src/LV2/gx_colwah.lv2/gx_colwah_gui.cpp -@@ -0,0 +1,314 @@ -+/* -+ * Copyright (C) 2012 Hermann Meyer, Andreas Degert, Pete Shorthose, Steve Poskitt -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -------------------------------------------------------------------------- -+ */ -+ -+ -+#include <string> -+#include <iostream> -+ -+#include <gtkmm.h> -+#include "gx_colwah.h" -+#include "widget.h" -+ -+ -+#include <lv2.h> -+#include <lv2/lv2plug.in/ns/extensions/ui/ui.h> -+ -+using namespace std; -+ -+class Gx_colwah_GUI -+{ -+private: -+ Glib::ustring plugskin; -+ Glib::ustring addKnob; -+ Glib::ustring plug_name; -+ void set_knob(Glib::ustring knob); -+ void set_skin(); -+ void set_plug_name(const char * plugin_uri); -+ GtkWidget* make_gui(); -+public: -+ -+ Widget* widget; -+ static void set_plug_name_static(Gx_colwah_GUI *self, const char * plugin_uri) -+ { -+ self->set_plug_name(plugin_uri); -+ } -+ static GtkWidget* make_gui_static(Gx_colwah_GUI *self) -+ { -+ return self->make_gui(); -+ } -+ -+ Gx_colwah_GUI () {}; -+ ~Gx_colwah_GUI () {}; -+} ; -+ -+void Gx_colwah_GUI::set_knob( Glib::ustring knob) -+{ -+ addKnob = " style 'gx_"; -+ addKnob += plug_name; -+ addKnob += "_dark_skin_icons'\n" -+ " { \n" -+ " stock['bigknob'] = {{'"; -+ addKnob += knob; -+ addKnob += ".png'}}\n" -+ " stock['smallknob'] = {{'"; -+ addKnob += knob; -+ addKnob += "-small.png'}}\n" -+ " stock['smallknobr'] = {{'"; -+ addKnob += knob; -+ addKnob += "-middle.png'}}\n" -+ " stock['button_on'] = {{'" -+ "echo-switch_on.png'}}\n" -+ " stock['button_off'] = {{'" -+ "echo-switch_off.png'}}\n" -+ " }\n" -+ "widget '*."; -+ addKnob += plug_name; -+ addKnob += "' style 'gx_"; -+ addKnob += plug_name; -+ addKnob += "_dark_skin_icons' \n" -+ "class '*GxToggleImage' style'gx_"; -+ addKnob += plug_name; -+ addKnob += "_dark_skin_icons' \n"; -+} -+ -+void Gx_colwah_GUI::set_skin() -+{ -+ Glib::ustring toparse = "pixmap_path "; -+ toparse += " '"; -+ toparse += GX_LV2_STYLE_DIR; -+ toparse += "/'\n"; -+ toparse += "style \"gx_"; -+ toparse += plug_name; -+ toparse += "_dark-paintbox\"\n" -+ " { \n" -+ " GxPaintBox::icon-set =9\n" -+ " stock['gxhead'] = {{'"; -+ toparse += plugskin; -+ toparse += "'}}\n" -+ " }\n" -+ "\n" -+ "style 'gx_head_black_box' \n" -+ " { \n" -+ " font_name = 'sans bold 7.5'\n" -+ " fg[NORMAL] = '#ff9000' \n" -+ " }\n"; -+ toparse += addKnob; -+ -+ toparse += " widget '*.amplabel' style:highest 'gx_head_black_box'\n" -+ "widget '*."; -+ toparse += plug_name; -+ toparse += "' style 'gx_"; -+ toparse += plug_name; -+ toparse += "_dark-paintbox' "; -+ -+ toparse += "style 'guitarix_default' {\n" -+ -+ " GxPaintBox::bevel = 0.11\n" -+ " GxPaintBox::inverse = 0\n" -+ " GxPaintBox::alternate-box = { 0, 0, 30, 15 }\n" -+ -+ " fg[NORMAL] = '#ff9000'\n" -+ " fg[ACTIVE] = { 1.0, 1.0, 1.0 }\n" -+ " fg[PRELIGHT] = { 1.0, 1.0, 1.0 }\n" -+ " fg[INSENSITIVE] = { 0.5, 0.5, 0.5 }\n" -+ " fg[SELECTED] = { 0.9, 0.9, 0.9 }\n" -+ -+ " bg[NORMAL] = { 0.13, 0.13, 0.13 }\n" -+ " bg[ACTIVE] = { 0.0, 0.0, 0.0 }\n" -+ " bg[PRELIGHT] = { 0.25, 0.25, 0.25 }\n" -+ " bg[INSENSITIVE] = { 0.2, 0.2, 0.2 }\n" -+ " bg[SELECTED] = { 0.25, 0.25, 0.25 }\n" -+ -+ " text[NORMAL] = { 0.9, 0.9, 0.9 }\n" -+ " text[ACTIVE] = '#ff9000'\n" -+ " text[PRELIGHT] = { 1.0, 1.0, 1.0 }\n" -+ " text[INSENSITIVE] = { 0.5, 0.5, 0.5 }\n" -+ " text[SELECTED] = { 1.0, 1.0, 1.0 }\n" -+ -+ " base[NORMAL] = { 0.0, 0.0, 0.0 }\n" -+ " base[ACTIVE] = { 0.18, 0.18, 0.18 }\n" -+ " base[PRELIGHT] = { 0.1, 0.1, 0.1 }\n" -+ " base[INSENSITIVE] = { 0.2, 0.2, 0.2 }\n" -+ " base[SELECTED] = { 0.8, 0.18, 0.18 }\n" -+ "}\n" -+ "widget '*."; -+ toparse += plug_name; -+ toparse += "' style:highest 'guitarix_default'\n"; -+ toparse += " style 'gx_selector'\n" -+ " {\n" -+ " fg[NORMAL] = '#ff9000' \n" -+ " fg[PRELIGHT] = '#ffffff' \n" -+ " bg[NORMAL] = '#2f2f2f' \n" -+ " bg[PRELIGHT] = '#2f2f2f' \n" -+ " base[NORMAL] = { 0.05, 0.05, 0.05 } \n" -+ " base[PRELIGHT] = '#000000' \n" -+ " text[NORMAL] = '#ff9000' \n" -+ " text[PRELIGHT] = '#ffffff' \n" -+ " GxRegler::value-border = { 4, 4, 2, 2 } \n" -+ " GxRegler::border-radius = 6\n" -+ " GxRegler::bevel = 0.12\n" -+ " GtkRange::trough-border = 2\n" -+ " GtkRange::stepper-size = 8\n" -+ " GtkRange::stepper-spacing = 2\n" -+ " GxRegler::value-border = { 2, 0, 0, 0 }\n" -+ " font_name = 'sans bold 7.5'\n" -+ " xthickness = 8\n" -+ " ythickness = 4\n" -+ " }\n" -+ "class '*GxSelector' style:highest 'gx_selector'\n"; -+ toparse += " style 'guitarix_knobs' {\n" -+ " fg[INSENSITIVE] = '#211006'\n" -+ "}\n" -+ "class 'GxKnob' style:highest 'guitarix_knobs'\n" -+ -+ "style 'guitarix_small_knob' {\n" -+ " GxKnob::x_center = -1\n" -+ " GxKnob::y_center = -1\n" -+ " GxKnob::ring_radius = 15\n" -+ " GxKnob::ring_width = 2\n" -+ " GxKnob::ring_led_size = 3\n" -+ " GxKnob::ring_led_distance = 2\n" -+ " GxKnob::indicator_radius = 11\n" -+ " GxKnob::indicator_width = 2\n" -+ " GxKnob::indicator_length = 5\n" -+ "}\n" -+ "widget_class '*GxSmallKnob' style:highest 'guitarix_small_knob'\n" -+ -+ "style 'guitarix_small_knob_r' {\n" -+ " GxKnob::x_center = -1\n" -+ " GxKnob::y_center = -1\n" -+ " GxKnob::ring_radius = 26\n" -+ " GxKnob::ring_width = 3\n" -+ " GxKnob::ring_led_size = 3\n" -+ " GxKnob::ring_led_distance = 2\n" -+ " GxKnob::indicator_radius = 12\n" -+ " GxKnob::indicator_width = 3\n" -+ " GxKnob::indicator_length = 3\n" -+ "}\n" -+ "widget_class '*GxSmallKnobR' style:highest 'guitarix_small_knob_r'\n" -+ -+ "style 'guitarix_mid_knob' {\n" -+ " GxKnob::x_center = -1\n" -+ " GxKnob::y_center = -1\n" -+ " GxKnob::ring_radius = 35\n" -+ " GxKnob::ring_width = 6\n" -+ " GxKnob::ring_led_size = 2\n" -+ " GxKnob::ring_led_distance = 2\n" -+ " GxKnob::indicator_radius = 27\n" -+ " GxKnob::indicator_width = 2\n" -+ " GxKnob::indicator_length = 6\n" -+ "}\n" -+ "widget_class '*GxMidKnob' style:highest 'guitarix_mid_knob'\n" -+ -+ "style 'guitarix_big_knob' {\n" -+ " GxKnob::x_center = -1\n" -+ " GxKnob::y_center = -1\n" -+ " GxKnob::ring_radius = 50.5\n" -+ " GxKnob::ring_width = 3\n" -+ " GxKnob::ring_led_size = 0\n" -+ " GxKnob::ring_led_distance = 0\n" -+ " GxKnob::indicator_radius = 46\n" -+ " GxKnob::indicator_width = 3\n" -+ " GxKnob::indicator_length = 6\n" -+ "}\n" -+ "widget_class '*GxBigKnob' style:highest 'guitarix_big_knob'\n" -+ " \n"; -+ -+ gtk_rc_parse_string (toparse.c_str()); -+} -+ -+void Gx_colwah_GUI::set_plug_name( const char * plugin_uri) -+{ -+ addKnob = ""; -+ -+ if (strcmp("http://guitarix.sourceforge.net/plugins/gx_colwah_gui#_colwah_", plugin_uri) == 0) -+ { -+ plug_name = "Wahwah"; -+ //set_knob("nk-knob"); -+ } -+ else -+ { -+ plug_name = "Wahwah"; -+ } -+} -+ -+GtkWidget* Gx_colwah_GUI::make_gui() -+{ -+ // init the gxwmm library -+ Gxw::init(); -+ set_skin(); -+ GtkWidget* container = gtk_vbox_new(FALSE, 2); -+ widget = new Widget(plug_name); -+ GtkWidget* cWidget = GTK_WIDGET(widget->gobj()); -+ gtk_container_add(GTK_CONTAINER(container), cWidget ); -+ -+ return container; -+} -+ -+ -+static LV2UI_Handle instantiate(const struct _LV2UI_Descriptor * descriptor, -+ const char * plugin_uri, -+ const char * bundle_path, -+ LV2UI_Write_Function write_function, -+ LV2UI_Controller controller, -+ LV2UI_Widget * widget, -+ const LV2_Feature * const * features) -+{ -+ Gx_colwah_GUI* self = new Gx_colwah_GUI(); -+ if (self == NULL) return NULL; -+ self->set_plug_name_static(self, plugin_uri); -+ *widget = (LV2UI_Widget)self->make_gui_static(self); -+ self->widget->controller = controller; -+ self->widget->write_function = write_function; -+ return (LV2UI_Handle)self; -+} -+ -+static void cleanup(LV2UI_Handle ui) -+{ -+ Gx_colwah_GUI *pluginGui = static_cast<Gx_colwah_GUI*>(ui); -+ delete pluginGui->widget; -+ delete pluginGui; -+} -+ -+static void port_event(LV2UI_Handle ui, -+ uint32_t port_index, -+ uint32_t buffer_size, -+ uint32_t format, -+ const void * buffer) -+{ -+ Gx_colwah_GUI *self = static_cast<Gx_colwah_GUI*>(ui); -+ self->widget->set_value_static( port_index, buffer_size, format, buffer, self->widget); -+ return; -+} -+ -+static LV2UI_Descriptor descriptors[] = -+{ -+ {GXPLUGIN_UI_URI"#_colwah_", instantiate, cleanup, port_event, NULL} -+}; -+ -+const LV2UI_Descriptor * lv2ui_descriptor(uint32_t index) -+{ -+ //printf("lv2ui_descriptor(%u) called\n", (uint32_t)index); -+ if (index >= sizeof(descriptors) / sizeof(descriptors[0])) -+ { -+ return NULL; -+ } -+ return descriptors + index; -+} -+ -diff --git a/trunk/src/LV2/gx_colwah.lv2/manifest.ttl.in b/trunk/src/LV2/gx_colwah.lv2/manifest.ttl.in -new file mode 100644 -index 00000000..d67c6974 ---- /dev/null -+++ b/trunk/src/LV2/gx_colwah.lv2/manifest.ttl.in -@@ -0,0 +1,26 @@ -+# -+# Copyright (C) 2012 Hermann Meyer, Andreas Degert, Pete Shorthose, Steve Poskitt -+# -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 2 of the License, or -+# (at your option) any later version. -+# -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program; if not, write to the Free Software -+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -+# -------------------------------------------------------------------------- -+# -+ -+@prefix lv2: <http://lv2plug.in/ns/lv2core#> . -+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . -+ -+<http://guitarix.sourceforge.net/plugins/gx_colwah_#_colwah_> -+ a lv2:Plugin ; -+ lv2:binary <gx_colwah@LIB_EXT@> ; -+ rdfs:seeAlso <gx_colwah.ttl> , <modgui.ttl>. -diff --git a/trunk/src/LV2/gx_colwah.lv2/modgui.ttl b/trunk/src/LV2/gx_colwah.lv2/modgui.ttl -new file mode 100644 -index 00000000..4e30c382 ---- /dev/null -+++ b/trunk/src/LV2/gx_colwah.lv2/modgui.ttl -@@ -0,0 +1,2 @@ -+@prefix modgui: <http://moddevices.com/ns/modgui#> . -+@prefix lv2: <http://lv2plug.in/ns/lv2core#> . -diff --git a/trunk/src/LV2/gx_colwah.lv2/wah.h b/trunk/src/LV2/gx_colwah.lv2/wah.h -new file mode 100644 -index 00000000..01bd2fcb ---- /dev/null -+++ b/trunk/src/LV2/gx_colwah.lv2/wah.h -@@ -0,0 +1,26 @@ -+/* -+ * Copyright (C) 2014 Guitarix project MOD project -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -------------------------------------------------------------------------- -+ */ -+ -+#include "colwah.cc" -+#include "dallaswah.cc" -+#include "foxwah.cc" -+#include "jenwah.cc" -+#include "maestrowah.cc" -+#include "selwah.cc" -+#include "voxwah.cc" -diff --git a/trunk/src/LV2/gx_colwah.lv2/widget.cpp b/trunk/src/LV2/gx_colwah.lv2/widget.cpp -new file mode 100644 -index 00000000..8575d25f ---- /dev/null -+++ b/trunk/src/LV2/gx_colwah.lv2/widget.cpp -@@ -0,0 +1,268 @@ -+/* -+ * Copyright (C) 2012 Hermann Meyer, Andreas Degert, Pete Shorthose, Steve Poskitt -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -------------------------------------------------------------------------- -+ */ -+ -+ -+#include "widget.h" -+ -+#include <iostream> -+ -+ -+/* @get controller by port -+ * this function is used by make_selector() make_controller_box() -+ * set_value() and on_value_changed() -+ * so controller widgets needs only here asined to a port, -+ * and all functions which need acess to the controller widget pointer -+ * can receive them by port number -+ */ -+ -+Gtk::Widget* Widget::get_controller_by_port(uint32_t port_index) -+{ -+ switch ((PortIndex)port_index ) -+ { -+ case WAH: -+ return &m_bigknob[0]; -+ case FREQ: -+ return &m_bigknob[1]; -+ case MODE: -+ return &m_selector[0]; -+ case MODEL: -+ return &m_selector[1]; -+ case WET_DRY: -+ return &m_bigknob[2]; -+ -+ default: -+ return NULL; -+ } -+} -+ -+Widget::Widget(Glib::ustring plugname): -+plug_name(plugname), -+logo(plugname) -+{ -+ Glib::ustring enumMODEL[] = {"Colorsound Wah","Dallas Wah","Foxx Wah","Jen Wah","Maestro Wah","Selmer Wah","Vox Wah V847"}; -+ static const size_t enumMODEL_size = sizeof(enumMODEL) / sizeof(enumMODEL[0]); -+ make_selector_box(&m_vboxs[0],"MODEL", enumMODEL, enumMODEL_size, 0,1.0, MODEL); -+ -+ Glib::ustring enumMODE[] = {"manual","auto","alien"}; -+ static const size_t enumMODE_size = sizeof(enumMODE) / sizeof(enumMODE[0]); -+ make_selector_box(&m_vboxs[1],"MODE", enumMODE, enumMODE_size, 0,1.0, MODE); -+ -+ // create controllers for port name -+ make_controller_box(&m_vboxc[0], "WAH", 0.0, 1.0, 0.01, WAH); -+ make_controller_box(&m_vboxc[1], "ALIEN FREQ", 24.0, 3.6e+02, 1.0, FREQ); -+ make_controller_box(&m_vboxc[2], "WET_DRY", 0.0, 1e+02, 1.0, WET_DRY); -+ -+ // set propertys for the main paintbox holding the skin -+ m_paintbox.set_border_width(10); -+ m_paintbox.set_spacing(6); -+ m_paintbox.set_homogeneous(false); -+ m_paintbox.set_name(plug_name); -+ m_paintbox.property_paint_func() = "rack_unit_expose"; -+ add(m_paintbox); -+ // box for the controllers -+ m_hbox_.set_spacing(25); -+ m_hbox_.set_border_width(24); -+ m_hbox_.set_homogeneous(false); -+ // set a vertical box in the paintbox -+ m_vbox.set_border_width(14); -+ m_vbox1.set_border_width(14); -+ m_paintbox.pack_start(m_vbox_); -+ -+ // modify logo layout -+ Pango::FontDescription font_desc = logo.get_style()->get_font(); -+ font_desc.set_size(int(14*Pango::SCALE)); -+ font_desc.set_weight(Pango::WEIGHT_BOLD); -+ logo.modify_font(font_desc); -+ -+ // and controller box on top -+ //m_hbox1_.set_border_width(24); -+ m_hbox1_.set_spacing(64); -+ logo.set_name("amplabel"); -+ m_vbox_.pack_start(m_hbox1_, Gtk::PACK_SHRINK); -+ m_hbox1_.pack_start(m_vbox1_, Gtk::PACK_EXPAND_PADDING); -+ m_hbox1_.pack_end(m_vbox2_, Gtk::PACK_SHRINK); -+ m_hbox1_.pack_end(logo, Gtk::PACK_SHRINK); -+ m_vbox_.pack_start(m_hbox_, Gtk::PACK_SHRINK); -+ m_vbox_.set_homogeneous(false); -+ // put boxed controllers into controller box -+ m_hbox_.pack_start(m_vbox1, Gtk::PACK_EXPAND_PADDING); -+ for (int i = 0; i<2;i++) { -+ m_vboxs_.pack_start(m_vboxs[i]); -+ } -+ m_vboxs_.set_spacing(5); -+ m_hbox_.pack_start(m_vboxs_, Gtk::PACK_EXPAND_PADDING); -+ for (int i = 0; i<3;i++) { -+ m_hbox_.pack_start(m_vboxc[i]); -+ } -+ m_hbox_.pack_start(m_vbox, Gtk::PACK_EXPAND_PADDING); -+ -+ // connect expose handler as resize handler -+ m_paintbox.signal_expose_event().connect( -+ sigc::mem_fun(this, &Widget::_expose_event), true); -+ -+ set_app_paintable(true); -+ show_all(); -+} -+ -+Widget::~Widget() -+{ -+ -+} -+ -+// set borderwith for paintbox when widget resize -+// to hold controllers in place -+bool Widget::_expose_event(GdkEventExpose *event) -+{ -+ int x, y, width, height, depth; -+ m_paintbox.get_window()->get_geometry(x, y, width, height, depth); -+ //double_t height = m_paintbox.get_window()->get_height(); -+ m_paintbox.set_border_width(height/10); -+ return false; -+} -+ -+// create selectors from gxwmm -+void Widget::make_selector_box(Gtk::Box *box, -+ Glib::ustring labela, -+ Glib::ustring tables[], -+ size_t _size, -+ float min, float digits, -+ PortIndex port_name) -+{ -+ Gxw::Selector *regler = static_cast<Gxw::Selector*> -+ (get_controller_by_port(port_name)); -+ if (regler) -+ { -+ float max = static_cast<float>(_size+1); -+ -+ Gtk::TreeModelColumn<Glib::ustring> label; -+ Gtk::TreeModelColumnRecord rec; -+ rec.add(label); -+ Glib::RefPtr<Gtk::ListStore> ls = Gtk::ListStore::create(rec); -+ -+ for (uint32_t i = 0 ; i< _size; ++i) { -+ ls->append()->set_value(0, tables[i]); -+ } -+ regler->set_model(ls); -+ regler->set_has_tooltip(); -+ regler->set_tooltip_text(labela); -+ regler->cp_configure("SELECTOR", labela, min, max, digits); -+ regler->set_show_value(false); -+ regler->set_name(plug_name); -+ regler->signal_value_changed().connect(sigc::bind(sigc::mem_fun( -+ *this, &Widget::on_value_changed), port_name)); -+ box->pack_start(*regler,Gtk::PACK_SHRINK); -+ } -+} -+ -+// create stackboxes with controllers for port name -+void Widget::make_controller_box(Gtk::Box *box, -+ Glib::ustring label, -+ float min, float max, -+ float digits, -+ PortIndex port_name) -+{ -+ Gxw::Regler *regler = static_cast<Gxw::Regler*>( -+ get_controller_by_port(port_name)); -+ if (regler) -+ { -+ Gtk::Label* pr = new Gtk::Label(label, 0); -+ pr->set_name("amplabel"); -+ // use label images instead simple string labes -+ //Glib::ustring label_image = GX_LV2_STYLE_DIR; -+ //label_image += "/"; -+ //label_image += label; -+ //label_image += ".png"; -+ //Gtk::Image *pr = new Gtk::Image(label_image); -+ -+ Gtk::VBox* b1 = new Gtk::VBox(); -+ box->pack_start( *Gtk::manage(b1), Gtk::PACK_EXPAND_PADDING); -+ box->pack_start( *Gtk::manage(pr),Gtk::PACK_SHRINK); -+ regler->cp_configure("KNOB", label, min, max, digits); -+ regler->set_show_value(true); -+ regler->set_name(plug_name); -+ box->pack_start(*regler,Gtk::PACK_SHRINK); -+ Gtk::VBox* b2 = new Gtk::VBox(); -+ box->pack_start( *Gtk::manage(b2), Gtk::PACK_EXPAND_PADDING); -+ regler->signal_value_changed().connect(sigc::bind(sigc::mem_fun( -+ *this, &Widget::on_value_changed), port_name)); -+ } -+} -+ -+// create stackboxes with switch controller for port name -+void Widget::make_switch_box(Gtk::Box *box, -+ Glib::ustring label, -+ PortIndex port_name) -+{ -+ Gxw::Switch *regler = static_cast<Gxw::Switch*>( -+ get_controller_by_port(port_name)); -+ if (regler) -+ { -+ Gtk::Label* pr = new Gtk::Label(label, 0); -+ pr->set_name("amplabel"); -+ // use label images instead simple string labes -+ /*Glib::ustring label_image = GX_LV2_STYLE_DIR; -+ label_image += "/"+plug_name+"-"; -+ label_image += label; -+ label_image += "-label.png"; -+ Gtk::Image *pr = new Gtk::Image(label_image);*/ -+ -+ regler->cp_configure("switch", label, 0, 1, 1); -+ regler->set_name(plug_name); -+ regler->set_base_name( "button" ); -+ Gtk::VBox* b1 = new Gtk::VBox(); -+ box->pack_start( *Gtk::manage(b1), Gtk::PACK_EXPAND_PADDING); -+ box->pack_start( *Gtk::manage(pr),Gtk::PACK_SHRINK); -+ box->pack_start(*regler,Gtk::PACK_SHRINK); -+ Gtk::VBox* b2 = new Gtk::VBox(); -+ box->pack_start( *Gtk::manage(b2), Gtk::PACK_EXPAND_PADDING); -+ regler->signal_toggled().connect(sigc::bind(sigc::mem_fun( -+ *this, &Widget::on_value_changed), port_name)); -+ } -+} -+ -+// receive controller value changes from host and set them to controller -+void Widget::set_value(uint32_t port_index, -+ uint32_t format, -+ const void * buffer) -+{ -+ if ( format == 0 ) -+ { -+ Gxw::Regler *regler = static_cast<Gxw::Regler*>( -+ get_controller_by_port(port_index)); -+ if (regler) -+ { -+ float value = *static_cast<const float*>(buffer); -+ regler->cp_set_value(value); -+ } -+ } -+} -+ -+// write (UI) controller value changes to the host->engine -+void Widget::on_value_changed(uint32_t port_index) -+{ -+ Gxw::Regler *regler = static_cast<Gxw::Regler*>( -+ get_controller_by_port(port_index)); -+ if (regler) -+ { -+ float value = regler->cp_get_value(); -+ write_function(controller, port_index, sizeof(float), 0, -+ static_cast<const void*>(&value)); -+ } -+} -+ -diff --git a/trunk/src/LV2/gx_colwah.lv2/widget.h b/trunk/src/LV2/gx_colwah.lv2/widget.h -new file mode 100644 -index 00000000..7ec76d20 ---- /dev/null -+++ b/trunk/src/LV2/gx_colwah.lv2/widget.h -@@ -0,0 +1,96 @@ -+/* -+ * Copyright (C) 2012 Hermann Meyer, Andreas Degert, Pete Shorthose, Steve Poskitt -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -------------------------------------------------------------------------- -+ */ -+ -+#pragma once -+ -+#ifndef SRC_HEADERS_WIDGET_H_ -+#define SRC_HEADERS_WIDGET_H_ -+ -+#include <gtkmm.h> -+#include <gxwmm.h> -+#include "gx_colwah.h" -+#include "../config.h" // for GX_STYLE_DIR -+// LV2UI stuff -+#include "lv2/lv2plug.in/ns/extensions/ui/ui.h" -+ -+class Widget : public Gtk::HBox -+{ -+private: -+ Gtk::Widget* get_controller_by_port(uint32_t port_index); -+ -+ void on_value_changed(uint32_t port_index); -+ -+ void make_controller_box(Gtk::Box *box, -+ Glib::ustring label, -+ float min, float max, -+ float digits, -+ PortIndex port_name); -+ -+ void make_selector_box(Gtk::Box *box, -+ Glib::ustring label, -+ Glib::ustring tables[], -+ size_t _size, -+ float min, float digits, -+ PortIndex port_name); -+ -+ void make_switch_box(Gtk::Box *box, -+ Glib::ustring label, -+ PortIndex port_name); -+ -+ bool _expose_event(GdkEventExpose *event); -+ -+ void set_value(uint32_t port_index, -+ uint32_t format, -+ const void * buffer); -+public: -+ -+ // public Lv2 communication stuff -+ LV2UI_Controller controller; -+ LV2UI_Write_Function write_function; -+ static void set_value_static(uint32_t port_index, -+ uint32_t buffer_size, -+ uint32_t format, -+ const void * buffer, Widget *self) -+ { -+ self->set_value(port_index,format,buffer); -+ } -+ -+ Widget(Glib::ustring plugname); -+ ~Widget(); -+ -+protected: -+ Glib::ustring plug_name; -+ Gtk::Label logo; -+ Gtk::VBox m_vbox_; -+ Gtk::VBox m_vbox1_; -+ Gtk::VBox m_vbox2_; -+ Gtk::VBox m_vbox; -+ Gtk::VBox m_vbox1; -+ Gtk::VBox m_vboxc[3]; -+ Gtk::VBox m_vboxs[2]; -+ Gtk::VBox m_vboxs_; -+ Gtk::HBox m_hbox_; -+ Gtk::HBox m_hbox1_; -+ -+ Gxw::PaintBox m_paintbox; -+ Gxw::Selector m_selector[2]; -+ Gxw::SmallKnobR m_bigknob[3]; -+}; -+ -+#endif //SRC_HEADERS_WIDGET_H_ -diff --git a/trunk/src/LV2/gx_colwah.lv2/wscript b/trunk/src/LV2/gx_colwah.lv2/wscript -new file mode 100644 -index 00000000..fa66b426 ---- /dev/null -+++ b/trunk/src/LV2/gx_colwah.lv2/wscript -@@ -0,0 +1,62 @@ -+#!/usr/bin/env python -+# encoding: utf-8 -+ -+import sys -+ -+def configure(conf): -+ pass -+ -+def build(bld): -+ bundle = 'gx_colwah.lv2' -+ -+ src = ['gx_colwah.cpp' -+ ] -+ incl = ['../faust','./', '../DSP'] -+ lib = [] -+ if sys.platform.startswith("linux"): -+ lib.append('dl') -+ uselib = ['LV2CORE'] -+ cxxflag =[] -+ if not bld.env['OPT'] and bld.env['SSE2']: -+ cxxflag = [ "-msse2", "-mfpmath=sse"] -+ lv2_effects = bld.shlib( -+ includes = incl, -+ lib = lib, -+ uselib = uselib, -+ obj_ext = '_14.o', -+ cxxflags = cxxflag, -+ defines = ["LV2_SO"], -+ target = 'gx_colwah', -+ source = src, -+ install_path = '${LV2DIR}/%s' % bundle, -+ chmod = 0o755, -+ ) -+ lv2_effects.env['cxxshlib_PATTERN'] = '%s.so' -+ -+ if bld.env['LV2GUI']: -+ libpath1 = [] -+ lib1 = [] -+ incl = [] -+ if sys.platform.startswith("linux"): -+ lib1.append('dl') -+ -+ lv2_plugin_gui = bld.shlib( -+ includes = incl, -+ lib = lib1, -+ libpath = libpath1, -+ use = ['gxwmm','LV2CORE','GTKMM'], -+ linkflags = '-Wl,-z,nodelete', -+ defines = ["LV2_GUI"], -+ target = 'gx_colwah_gui', -+ source = 'widget.cpp gx_colwah_gui.cpp', -+ install_path = '${LV2DIR}/%s' % bundle, -+ chmod = 0o755, -+ ) -+ lv2_plugin_gui.env['cxxshlib_PATTERN'] = '%s.so' -+ -+ install_path = '${LV2DIR}/%s' % bundle, -+ if bld.env['MODGUI']: -+ bld.install_files('${LV2DIR}/gx_colwah.lv2', bld.path.ant_glob('*.ttl'), relative_trick=True) -+ bld.install_files('${LV2DIR}/gx_colwah.lv2', bld.path.ant_glob('modgui/**/*'), relative_trick=True) -+ else: -+ bld.install_files('${LV2DIR}/gx_colwah.lv2', bld.path.ant_glob('*.ttl', excl=['modgui.ttl']), relative_trick=True) --- -2.25.1 - - -From cd979978eac96372b5a4e5bf228a5c0b0b933ff9 Mon Sep 17 00:00:00 2001 -From: brummer10 <brumm...@web.de> -Date: Mon, 20 Jan 2020 07:34:31 +0100 -Subject: [PATCH 3/8] fix rename gx_wah.lv2 to gy_colwah.lv2 - ---- - trunk/src/LV2/wscript | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/trunk/src/LV2/wscript b/trunk/src/LV2/wscript -index 4bcaa063..5a0d96c7 100644 ---- a/trunk/src/LV2/wscript -+++ b/trunk/src/LV2/wscript -@@ -88,7 +88,7 @@ subdirs = [ - 'gx_mole.lv2', - 'gx_rangem.lv2', - 'gx_hogsfoot.lv2', -- 'gx_wah.lv2', -+ 'gx_colwah.lv2', - 'gx_gcb_95.lv2', - 'gx_aclipper.lv2', - 'gx_bmp.lv2', --- -2.25.1 - - -From d9b0f5dedb05914867954611f88a8e81699da0e5 Mon Sep 17 00:00:00 2001 -From: brummer10 <brumm...@web.de> -Date: Mon, 20 Jan 2020 07:35:19 +0100 -Subject: [PATCH 4/8] remove gx_wah.lv2 - ---- - trunk/src/LV2/gx_wah.lv2/gx_colwah.cpp | 254 ----------------- - trunk/src/LV2/gx_wah.lv2/gx_colwah.h | 42 --- - trunk/src/LV2/gx_wah.lv2/gx_colwah.ttl | 141 --------- - trunk/src/LV2/gx_wah.lv2/gx_colwah_gui.cpp | 314 --------------------- - trunk/src/LV2/gx_wah.lv2/manifest.ttl.in | 26 -- - trunk/src/LV2/gx_wah.lv2/modgui.ttl | 2 - - trunk/src/LV2/gx_wah.lv2/wah.h | 26 -- - trunk/src/LV2/gx_wah.lv2/widget.cpp | 268 ------------------ - trunk/src/LV2/gx_wah.lv2/widget.h | 96 ------- - trunk/src/LV2/gx_wah.lv2/wscript | 62 ---- - 10 files changed, 1231 deletions(-) - delete mode 100644 trunk/src/LV2/gx_wah.lv2/gx_colwah.cpp - delete mode 100644 trunk/src/LV2/gx_wah.lv2/gx_colwah.h - delete mode 100644 trunk/src/LV2/gx_wah.lv2/gx_colwah.ttl - delete mode 100644 trunk/src/LV2/gx_wah.lv2/gx_colwah_gui.cpp - delete mode 100644 trunk/src/LV2/gx_wah.lv2/manifest.ttl.in - delete mode 100644 trunk/src/LV2/gx_wah.lv2/modgui.ttl - delete mode 100644 trunk/src/LV2/gx_wah.lv2/wah.h - delete mode 100644 trunk/src/LV2/gx_wah.lv2/widget.cpp - delete mode 100644 trunk/src/LV2/gx_wah.lv2/widget.h - delete mode 100644 trunk/src/LV2/gx_wah.lv2/wscript - -diff --git a/trunk/src/LV2/gx_wah.lv2/gx_colwah.cpp b/trunk/src/LV2/gx_wah.lv2/gx_colwah.cpp -deleted file mode 100644 -index 331cf3fb..00000000 ---- a/trunk/src/LV2/gx_wah.lv2/gx_colwah.cpp -+++ /dev/null -@@ -1,254 +0,0 @@ --/* -- * Copyright (C) 2014 Guitarix project MOD project -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License as published by -- * the Free Software Foundation; either version 2 of the License, or -- * (at your option) any later version. -- * -- * This program is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU General Public License for more details. -- * -- * You should have received a copy of the GNU General Public License -- * along with this program; if not, write to the Free Software -- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -- * -------------------------------------------------------------------------- -- */ -- -- --////////////////////////////// LOCAL INCLUDES ////////////////////////// -- --#include "gx_common.h" // faust support and denormal protection (SSE) --#include "gx_colwah.h" // define struct PortIndex --#include "gx_pluginlv2.h" // define struct PluginLV2 --#include "wah.h" // dsp class generated by faust -> dsp2cc -- --////////////////////////////// PLUG-IN CLASS /////////////////////////// -- --#define declare(n) namespace n { PluginLV2 *plugin(); } -- --declare(colwah); --declare(dallaswah); --declare(foxwah); --declare(jenwah); --declare(maestrowah); --declare(selwah); --declare(voxwah); -- --static plug wah_model [] = { -- colwah::plugin, //0 -- dallaswah::plugin, //1 -- foxwah::plugin, //2 -- jenwah::plugin, //3 -- maestrowah::plugin, //4 -- selwah::plugin, //5 -- voxwah::plugin, //6 --}; -- --static const size_t WAH_COUNT = sizeof(wah_model) / sizeof(wah_model[0]); -- -- --namespace colwah { -- --class Gx_colwah_ --{ --private: -- // pointer to buffer -- float* output; -- float* input; -- // pointer to dsp class -- PluginLV2* wah[WAH_COUNT]; -- float* wahh_model; -- uint32_t wah_model_; -- uint32_t wah_max; -- // private functions -- inline void run_dsp_(uint32_t n_samples); -- inline void connect_(uint32_t port,void* data); -- inline void init_dsp_(uint32_t rate); -- inline void connect_all__ports(uint32_t port, void* data); -- inline void activate_f(); -- inline void clean_up(); -- inline void deactivate_f(); -- --public: -- // LV2 Descriptor -- static const LV2_Descriptor descriptor; -- // static wrapper to private functions -- static void deactivate(LV2_Handle instance); -- static void cleanup(LV2_Handle instance); -- static void run(LV2_Handle instance, uint32_t n_samples); -- static void activate(LV2_Handle instance); -- static void connect_port(LV2_Handle instance, uint32_t port, void* data); -- static LV2_Handle instantiate(const LV2_Descriptor* descriptor, -- double rate, const char* bundle_path, -- const LV2_Feature* const* features); -- Gx_colwah_(); -- ~Gx_colwah_(); --}; -- --// constructor --Gx_colwah_::Gx_colwah_() : -- output(NULL), -- input(NULL), -- wahh_model(NULL), -- wah_model_(0) {}; -- --// destructor --Gx_colwah_::~Gx_colwah_() --{ -- for(uint32_t i=0; i<WAH_COUNT; i++) { -- wah[i]->delete_instance(wah[i]); -- } -- --}; -- --///////////////////////// PRIVATE CLASS FUNCTIONS ///////////////////// -- --void Gx_colwah_::init_dsp_(uint32_t rate) --{ -- AVOIDDENORMALS(); // init the SSE denormal protection -- -- for(uint32_t i=0; i<WAH_COUNT; i++) { -- wah[i] = wah_model[i](); -- wah[i]->set_samplerate(rate, wah[i]); -- } -- wah_max = WAH_COUNT-1; --} -- --// connect the Ports used by the plug-in class --void Gx_colwah_::connect_(uint32_t port,void* data) --{ -- switch ((PortIndex)port) -- { -- case EFFECTS_OUTPUT: -- output = static_cast<float*>(data); -- break; -- case EFFECTS_INPUT: -- input = static_cast<float*>(data); -- break; -- case MODEL: -- wahh_model = static_cast<float*>(data); -- break; -- default: -- break; -- } --} -- --void Gx_colwah_::activate_f() --{ -- // allocate the internal DSP mem --} -- --void Gx_colwah_::clean_up() --{ -- // delete the internal DSP mem --} -- --void Gx_colwah_::deactivate_f() --{ -- // delete the internal DSP mem --} -- --void Gx_colwah_::run_dsp_(uint32_t n_samples) --{ -- if (n_samples< 1) return; -- wah_model_ = min(wah_max, static_cast<uint32_t>(*(wahh_model))); -- wah[wah_model_]->mono_audio(static_cast<int>(n_samples), input, output, wah[wah_model_]); --} -- --void Gx_colwah_::connect_all__ports(uint32_t port, void* data) --{ -- // connect the Ports used by the plug-in class -- connect_(port,data); -- // connect the Ports used by the DSP class -- for(uint32_t i=0; i<WAH_COUNT; i++) { -- wah[i]->connect_ports(port, data, wah[i]); -- } --} -- --////////////////////// STATIC CLASS FUNCTIONS //////////////////////// -- --LV2_Handle --Gx_colwah_::instantiate(const LV2_Descriptor* descriptor, -- double rate, const char* bundle_path, -- const LV2_Feature* const* features) --{ -- // init the plug-in class -- Gx_colwah_ *self = new Gx_colwah_(); -- if (!self) -- { -- return NULL; -- } -- -- self->init_dsp_((uint32_t)rate); -- -- return (LV2_Handle)self; --} -- --void Gx_colwah_::connect_port(LV2_Handle instance, -- uint32_t port, void* data) --{ -- // connect all ports -- static_cast<Gx_colwah_*>(instance)->connect_all__ports(port, data); --} -- --void Gx_colwah_::activate(LV2_Handle instance) --{ -- // allocate needed mem -- static_cast<Gx_colwah_*>(instance)->activate_f(); --} -- --void Gx_colwah_::run(LV2_Handle instance, uint32_t n_samples) --{ -- // run dsp -- static_cast<Gx_colwah_*>(instance)->run_dsp_(n_samples); --} -- --void Gx_colwah_::deactivate(LV2_Handle instance) --{ -- // free allocated mem -- static_cast<Gx_colwah_*>(instance)->deactivate_f(); --} -- --void Gx_colwah_::cleanup(LV2_Handle instance) --{ -- // well, clean up after us -- Gx_colwah_* self = static_cast<Gx_colwah_*>(instance); -- self->clean_up(); -- delete self; --} -- --const LV2_Descriptor Gx_colwah_::descriptor = --{ -- GXPLUGIN_URI "#_colwah_", -- Gx_colwah_::instantiate, -- Gx_colwah_::connect_port, -- Gx_colwah_::activate, -- Gx_colwah_::run, -- Gx_colwah_::deactivate, -- Gx_colwah_::cleanup, -- NULL --}; -- -- --} // end namespace colwah -- --////////////////////////// LV2 SYMBOL EXPORT /////////////////////////// -- --extern "C" --LV2_SYMBOL_EXPORT --const LV2_Descriptor* --lv2_descriptor(uint32_t index) --{ -- switch (index) -- { -- case 0: -- return &colwah::Gx_colwah_::descriptor; -- default: -- return NULL; -- } --} -- --///////////////////////////// FIN ////////////////////////////////////// -diff --git a/trunk/src/LV2/gx_wah.lv2/gx_colwah.h b/trunk/src/LV2/gx_wah.lv2/gx_colwah.h -deleted file mode 100644 -index 9b23a29a..00000000 ---- a/trunk/src/LV2/gx_wah.lv2/gx_colwah.h -+++ /dev/null -@@ -1,42 +0,0 @@ --/* -- * Copyright (C) 2014 Guitarix project MOD project -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License as published by -- * the Free Software Foundation; either version 2 of the License, or -- * (at your option) any later version. -- * -- * This program is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU General Public License for more details. -- * -- * You should have received a copy of the GNU General Public License -- * along with this program; if not, write to the Free Software -- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -- * -------------------------------------------------------------------------- -- */ -- --#pragma once -- --#ifndef SRC_HEADERS_GXEFFECTS_H_ --#define SRC_HEADERS_GXEFFECTS_H_ -- --#include <lv2.h> -- --#define GXPLUGIN_URI "http://guitarix.sourceforge.net/plugins/gx_colwah_" --#define GXPLUGIN_UI_URI "http://guitarix.sourceforge.net/plugins/gx_colwah_gui" -- -- --typedef enum --{ -- EFFECTS_OUTPUT, -- EFFECTS_INPUT, -- WAH, -- FREQ, -- MODE, -- MODEL, -- WET_DRY, --} PortIndex; -- --#endif //SRC_HEADERS_GXEFFECTS_H_ -diff --git a/trunk/src/LV2/gx_wah.lv2/gx_colwah.ttl b/trunk/src/LV2/gx_wah.lv2/gx_colwah.ttl -deleted file mode 100644 -index 5ba01ff6..00000000 ---- a/trunk/src/LV2/gx_wah.lv2/gx_colwah.ttl -+++ /dev/null -@@ -1,141 +0,0 @@ --# --# Copyright (C) 2014 Guitarix project MOD project --# --# This program is free software; you can redistribute it and/or modify --# it under the terms of the GNU General Public License as published by --# the Free Software Foundation; either version 2 of the License, or --# (at your option) any later version. --# --# This program is distributed in the hope that it will be useful, --# but WITHOUT ANY WARRANTY; without even the implied warranty of --# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --# GNU General Public License for more details. --# --# You should have received a copy of the GNU General Public License --# along with this program; if not, write to the Free Software --# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. --# -------------------------------------------------------------------------- --# -- -- --@prefix doap: <http://usefulinc.com/ns/doap#> . --@prefix foaf: <http://xmlns.com/foaf/0.1/> . --@prefix lv2: <http://lv2plug.in/ns/lv2core#> . --@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . --@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . --@prefix guiext: <http://lv2plug.in/ns/extensions/ui#>. --@prefix time: <http://lv2plug.in/ns/ext/time#>. --@prefix units: <http://lv2plug.in/ns/extensions/units#> . -- --<http://guitarix.sourceforge.net#me> -- a foaf:Person ; -- foaf:name "Guitarix team" ; -- foaf:mbox <mailto:guitarix-develo...@lists.sourceforge.net> ; -- rdfs:seeAlso <http://guitarix.sourceforge.net> . -- --<http://guitarix.sourceforge.net/plugins/gx_colwah_> -- a doap:Project ; -- doap:maintainer <http://guitarix.sourceforge.net#me> ; -- doap:name "Gx_colwah_" . -- --<http://guitarix.sourceforge.net/plugins/gx_colwah_#_colwah_> -- a lv2:Plugin , -- lv2:ModulatorPlugin ; -- doap:maintainer <http://guitarix.sourceforge.net#me> ; -- doap:name "GxWahwah"; -- doap:license <http://opensource.org/licenses/isc> ; -- lv2:project <http://guitarix.sourceforge.net/plugins/gx_colwah_> ; -- lv2:optionalFeature lv2:hardRTCapable ; -- -- lv2:minorVersion 34; -- lv2:microVersion 0; -- -- guiext:ui <http://guitarix.sourceforge.net/plugins/gx_colwah_gui#_colwah_>; -- --rdfs:comment """ -- --... -- --"""; -- -- lv2:port [ -- a lv2:AudioPort , -- lv2:OutputPort ; -- lv2:index 0 ; -- lv2:symbol "out" ; -- lv2:name "Out" -- ] , [ -- a lv2:AudioPort , -- lv2:InputPort ; -- lv2:index 1 ; -- lv2:symbol "in" ; -- lv2:name "In" ; -- ] -- , [ -- a lv2:InputPort , -- lv2:ControlPort ; -- lv2:index 2 ; -- lv2:symbol "WAH" ; -- lv2:name "WAH" ; -- lv2:default 0.0 ; -- lv2:minimum 0.0 ; -- lv2:maximum 1.0 ; -- ] , [ -- a lv2:InputPort , -- lv2:ControlPort ; -- lv2:index 3 ; -- lv2:symbol "FREQ" ; -- lv2:name "FREQ" ; -- lv2:default 24.0 ; -- lv2:minimum 24.0 ; -- lv2:maximum 3.6e+02 ; -- ] , [ -- a lv2:InputPort , -- lv2:ControlPort ; -- lv2:index 4 ; -- lv2:symbol "MODE" ; -- lv2:name "MODE" ; -- lv2:default 0.0 ; -- lv2:minimum 0.0 ; -- lv2:maximum 2.0 ; -- lv2:portProperty lv2:integer; -- lv2:portProperty lv2:enumeration ; -- lv2:scalePoint [rdfs:label "manual"; rdf:value 0]; -- lv2:scalePoint [rdfs:label "auto"; rdf:value 1]; -- lv2:scalePoint [rdfs:label "alien"; rdf:value 2]; -- -- ] , [ -- a lv2:InputPort , -- lv2:ControlPort ; -- lv2:index 5 ; -- lv2:symbol "MODEL" ; -- lv2:name "MODEL" ; -- lv2:default 0.0 ; -- lv2:minimum 0.0 ; -- lv2:maximum 6.0 ; -- lv2:portProperty lv2:integer; -- lv2:portProperty lv2:enumeration ; -- lv2:scalePoint [rdfs:label "Colorsound Wah"; rdf:value 0]; -- lv2:scalePoint [rdfs:label "Dallas Wah"; rdf:value 1]; -- lv2:scalePoint [rdfs:label "Foxx Wah"; rdf:value 2]; -- lv2:scalePoint [rdfs:label "Jen Wah"; rdf:value 3]; -- lv2:scalePoint [rdfs:label "Maestro Wah"; rdf:value 4]; -- lv2:scalePoint [rdfs:label "SelmerWah"; rdf:value 5]; -- lv2:scalePoint [rdfs:label "Vox Wah V847"; rdf:value 6]; -- -- ] , [ -- a lv2:InputPort , -- lv2:ControlPort ; -- lv2:index 6 ; -- lv2:symbol "WET_DRY" ; -- lv2:name "WET_DRY" ; -- lv2:default 1e+02 ; -- lv2:minimum 0.0 ; -- lv2:maximum 1e+02 ; -- ] . -- --<http://guitarix.sourceforge.net/plugins/gx_colwah_gui#_colwah_> -- a guiext:GtkUI; -- guiext:binary <gx_colwah_gui.so>; -- guiext:requiredFeature guiext:makeResident; -- . -diff --git a/trunk/src/LV2/gx_wah.lv2/gx_colwah_gui.cpp b/trunk/src/LV2/gx_wah.lv2/gx_colwah_gui.cpp -deleted file mode 100644 -index 449a8d33..00000000 ---- a/trunk/src/LV2/gx_wah.lv2/gx_colwah_gui.cpp -+++ /dev/null -@@ -1,314 +0,0 @@ --/* -- * Copyright (C) 2012 Hermann Meyer, Andreas Degert, Pete Shorthose, Steve Poskitt -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License as published by -- * the Free Software Foundation; either version 2 of the License, or -- * (at your option) any later version. -- * -- * This program is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU General Public License for more details. -- * -- * You should have received a copy of the GNU General Public License -- * along with this program; if not, write to the Free Software -- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -- * -------------------------------------------------------------------------- -- */ -- -- --#include <string> --#include <iostream> -- --#include <gtkmm.h> --#include "gx_colwah.h" --#include "widget.h" -- -- --#include <lv2.h> --#include <lv2/lv2plug.in/ns/extensions/ui/ui.h> -- --using namespace std; -- --class Gx_colwah_GUI --{ --private: -- Glib::ustring plugskin; -- Glib::ustring addKnob; -- Glib::ustring plug_name; -- void set_knob(Glib::ustring knob); -- void set_skin(); -- void set_plug_name(const char * plugin_uri); -- GtkWidget* make_gui(); --public: -- -- Widget* widget; -- static void set_plug_name_static(Gx_colwah_GUI *self, const char * plugin_uri) -- { -- self->set_plug_name(plugin_uri); -- } -- static GtkWidget* make_gui_static(Gx_colwah_GUI *self) -- { -- return self->make_gui(); -- } -- -- Gx_colwah_GUI () {}; -- ~Gx_colwah_GUI () {}; --} ; -- --void Gx_colwah_GUI::set_knob( Glib::ustring knob) --{ -- addKnob = " style 'gx_"; -- addKnob += plug_name; -- addKnob += "_dark_skin_icons'\n" -- " { \n" -- " stock['bigknob'] = {{'"; -- addKnob += knob; -- addKnob += ".png'}}\n" -- " stock['smallknob'] = {{'"; -- addKnob += knob; -- addKnob += "-small.png'}}\n" -- " stock['smallknobr'] = {{'"; -- addKnob += knob; -- addKnob += "-middle.png'}}\n" -- " stock['button_on'] = {{'" -- "echo-switch_on.png'}}\n" -- " stock['button_off'] = {{'" -- "echo-switch_off.png'}}\n" -- " }\n" -- "widget '*."; -- addKnob += plug_name; -- addKnob += "' style 'gx_"; -- addKnob += plug_name; -- addKnob += "_dark_skin_icons' \n" -- "class '*GxToggleImage' style'gx_"; -- addKnob += plug_name; -- addKnob += "_dark_skin_icons' \n"; --} -- --void Gx_colwah_GUI::set_skin() --{ -- Glib::ustring toparse = "pixmap_path "; -- toparse += " '"; -- toparse += GX_LV2_STYLE_DIR; -- toparse += "/'\n"; -- toparse += "style \"gx_"; -- toparse += plug_name; -- toparse += "_dark-paintbox\"\n" -- " { \n" -- " GxPaintBox::icon-set =9\n" -- " stock['gxhead'] = {{'"; -- toparse += plugskin; -- toparse += "'}}\n" -- " }\n" -- "\n" -- "style 'gx_head_black_box' \n" -- " { \n" -- " font_name = 'sans bold 7.5'\n" -- " fg[NORMAL] = '#ff9000' \n" -- " }\n"; -- toparse += addKnob; -- -- toparse += " widget '*.amplabel' style:highest 'gx_head_black_box'\n" -- "widget '*."; -- toparse += plug_name; -- toparse += "' style 'gx_"; -- toparse += plug_name; -- toparse += "_dark-paintbox' "; -- -- toparse += "style 'guitarix_default' {\n" -- -- " GxPaintBox::bevel = 0.11\n" -- " GxPaintBox::inverse = 0\n" -- " GxPaintBox::alternate-box = { 0, 0, 30, 15 }\n" -- -- " fg[NORMAL] = '#ff9000'\n" -- " fg[ACTIVE] = { 1.0, 1.0, 1.0 }\n" -- " fg[PRELIGHT] = { 1.0, 1.0, 1.0 }\n" -- " fg[INSENSITIVE] = { 0.5, 0.5, 0.5 }\n" -- " fg[SELECTED] = { 0.9, 0.9, 0.9 }\n" -- -- " bg[NORMAL] = { 0.13, 0.13, 0.13 }\n" -- " bg[ACTIVE] = { 0.0, 0.0, 0.0 }\n" -- " bg[PRELIGHT] = { 0.25, 0.25, 0.25 }\n" -- " bg[INSENSITIVE] = { 0.2, 0.2, 0.2 }\n" -- " bg[SELECTED] = { 0.25, 0.25, 0.25 }\n" -- -- " text[NORMAL] = { 0.9, 0.9, 0.9 }\n" -- " text[ACTIVE] = '#ff9000'\n" -- " text[PRELIGHT] = { 1.0, 1.0, 1.0 }\n" -- " text[INSENSITIVE] = { 0.5, 0.5, 0.5 }\n" -- " text[SELECTED] = { 1.0, 1.0, 1.0 }\n" -- -- " base[NORMAL] = { 0.0, 0.0, 0.0 }\n" -- " base[ACTIVE] = { 0.18, 0.18, 0.18 }\n" -- " base[PRELIGHT] = { 0.1, 0.1, 0.1 }\n" -- " base[INSENSITIVE] = { 0.2, 0.2, 0.2 }\n" -- " base[SELECTED] = { 0.8, 0.18, 0.18 }\n" -- "}\n" -- "widget '*."; -- toparse += plug_name; -- toparse += "' style:highest 'guitarix_default'\n"; -- toparse += " style 'gx_selector'\n" -- " {\n" -- " fg[NORMAL] = '#ff9000' \n" -- " fg[PRELIGHT] = '#ffffff' \n" -- " bg[NORMAL] = '#2f2f2f' \n" -- " bg[PRELIGHT] = '#2f2f2f' \n" -- " base[NORMAL] = { 0.05, 0.05, 0.05 } \n" -- " base[PRELIGHT] = '#000000' \n" -- " text[NORMAL] = '#ff9000' \n" -- " text[PRELIGHT] = '#ffffff' \n" -- " GxRegler::value-border = { 4, 4, 2, 2 } \n" -- " GxRegler::border-radius = 6\n" -- " GxRegler::bevel = 0.12\n" -- " GtkRange::trough-border = 2\n" -- " GtkRange::stepper-size = 8\n" -- " GtkRange::stepper-spacing = 2\n" -- " GxRegler::value-border = { 2, 0, 0, 0 }\n" -- " font_name = 'sans bold 7.5'\n" -- " xthickness = 8\n" -- " ythickness = 4\n" -- " }\n" -- "class '*GxSelector' style:highest 'gx_selector'\n"; -- toparse += " style 'guitarix_knobs' {\n" -- " fg[INSENSITIVE] = '#211006'\n" -- "}\n" -- "class 'GxKnob' style:highest 'guitarix_knobs'\n" -- -- "style 'guitarix_small_knob' {\n" -- " GxKnob::x_center = -1\n" -- " GxKnob::y_center = -1\n" -- " GxKnob::ring_radius = 15\n" -- " GxKnob::ring_width = 2\n" -- " GxKnob::ring_led_size = 3\n" -- " GxKnob::ring_led_distance = 2\n" -- " GxKnob::indicator_radius = 11\n" -- " GxKnob::indicator_width = 2\n" -- " GxKnob::indicator_length = 5\n" -- "}\n" -- "widget_class '*GxSmallKnob' style:highest 'guitarix_small_knob'\n" -- -- "style 'guitarix_small_knob_r' {\n" -- " GxKnob::x_center = -1\n" -- " GxKnob::y_center = -1\n" -- " GxKnob::ring_radius = 26\n" -- " GxKnob::ring_width = 3\n" -- " GxKnob::ring_led_size = 3\n" -- " GxKnob::ring_led_distance = 2\n" -- " GxKnob::indicator_radius = 12\n" -- " GxKnob::indicator_width = 3\n" -- " GxKnob::indicator_length = 3\n" -- "}\n" -- "widget_class '*GxSmallKnobR' style:highest 'guitarix_small_knob_r'\n" -- -- "style 'guitarix_mid_knob' {\n" -- " GxKnob::x_center = -1\n" -- " GxKnob::y_center = -1\n" -- " GxKnob::ring_radius = 35\n" -- " GxKnob::ring_width = 6\n" -- " GxKnob::ring_led_size = 2\n" -- " GxKnob::ring_led_distance = 2\n" -- " GxKnob::indicator_radius = 27\n" -- " GxKnob::indicator_width = 2\n" -- " GxKnob::indicator_length = 6\n" -- "}\n" -- "widget_class '*GxMidKnob' style:highest 'guitarix_mid_knob'\n" -- -- "style 'guitarix_big_knob' {\n" -- " GxKnob::x_center = -1\n" -- " GxKnob::y_center = -1\n" -- " GxKnob::ring_radius = 50.5\n" -- " GxKnob::ring_width = 3\n" -- " GxKnob::ring_led_size = 0\n" -- " GxKnob::ring_led_distance = 0\n" -- " GxKnob::indicator_radius = 46\n" -- " GxKnob::indicator_width = 3\n" -- " GxKnob::indicator_length = 6\n" -- "}\n" -- "widget_class '*GxBigKnob' style:highest 'guitarix_big_knob'\n" -- " \n"; -- -- gtk_rc_parse_string (toparse.c_str()); --} -- --void Gx_colwah_GUI::set_plug_name( const char * plugin_uri) --{ -- addKnob = ""; -- -- if (strcmp("http://guitarix.sourceforge.net/plugins/gx_colwah_gui#_colwah_", plugin_uri) == 0) -- { -- plug_name = "Wahwah"; -- //set_knob("nk-knob"); -- } -- else -- { -- plug_name = "Wahwah"; -- } --} -- --GtkWidget* Gx_colwah_GUI::make_gui() --{ -- // init the gxwmm library -- Gxw::init(); -- set_skin(); -- GtkWidget* container = gtk_vbox_new(FALSE, 2); -- widget = new Widget(plug_name); -- GtkWidget* cWidget = GTK_WIDGET(widget->gobj()); -- gtk_container_add(GTK_CONTAINER(container), cWidget ); -- -- return container; --} -- -- --static LV2UI_Handle instantiate(const struct _LV2UI_Descriptor * descriptor, -- const char * plugin_uri, -- const char * bundle_path, -- LV2UI_Write_Function write_function, -- LV2UI_Controller controller, -- LV2UI_Widget * widget, -- const LV2_Feature * const * features) --{ -- Gx_colwah_GUI* self = new Gx_colwah_GUI(); -- if (self == NULL) return NULL; -- self->set_plug_name_static(self, plugin_uri); -- *widget = (LV2UI_Widget)self->make_gui_static(self); -- self->widget->controller = controller; -- self->widget->write_function = write_function; -- return (LV2UI_Handle)self; --} -- --static void cleanup(LV2UI_Handle ui) --{ -- Gx_colwah_GUI *pluginGui = static_cast<Gx_colwah_GUI*>(ui); -- delete pluginGui->widget; -- delete pluginGui; --} -- --static void port_event(LV2UI_Handle ui, -- uint32_t port_index, -- uint32_t buffer_size, -- uint32_t format, -- const void * buffer) --{ -- Gx_colwah_GUI *self = static_cast<Gx_colwah_GUI*>(ui); -- self->widget->set_value_static( port_index, buffer_size, format, buffer, self->widget); -- return; --} -- --static LV2UI_Descriptor descriptors[] = --{ -- {GXPLUGIN_UI_URI"#_colwah_", instantiate, cleanup, port_event, NULL} --}; -- --const LV2UI_Descriptor * lv2ui_descriptor(uint32_t index) --{ -- //printf("lv2ui_descriptor(%u) called\n", (uint32_t)index); -- if (index >= sizeof(descriptors) / sizeof(descriptors[0])) -- { -- return NULL; -- } -- return descriptors + index; --} -- -diff --git a/trunk/src/LV2/gx_wah.lv2/manifest.ttl.in b/trunk/src/LV2/gx_wah.lv2/manifest.ttl.in -deleted file mode 100644 -index d67c6974..00000000 ---- a/trunk/src/LV2/gx_wah.lv2/manifest.ttl.in -+++ /dev/null -@@ -1,26 +0,0 @@ --# --# Copyright (C) 2012 Hermann Meyer, Andreas Degert, Pete Shorthose, Steve Poskitt --# --# This program is free software; you can redistribute it and/or modify --# it under the terms of the GNU General Public License as published by --# the Free Software Foundation; either version 2 of the License, or --# (at your option) any later version. --# --# This program is distributed in the hope that it will be useful, --# but WITHOUT ANY WARRANTY; without even the implied warranty of --# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --# GNU General Public License for more details. --# --# You should have received a copy of the GNU General Public License --# along with this program; if not, write to the Free Software --# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. --# -------------------------------------------------------------------------- --# -- --@prefix lv2: <http://lv2plug.in/ns/lv2core#> . --@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . -- --<http://guitarix.sourceforge.net/plugins/gx_colwah_#_colwah_> -- a lv2:Plugin ; -- lv2:binary <gx_colwah@LIB_EXT@> ; -- rdfs:seeAlso <gx_colwah.ttl> , <modgui.ttl>. -diff --git a/trunk/src/LV2/gx_wah.lv2/modgui.ttl b/trunk/src/LV2/gx_wah.lv2/modgui.ttl -deleted file mode 100644 -index 4e30c382..00000000 ---- a/trunk/src/LV2/gx_wah.lv2/modgui.ttl -+++ /dev/null -@@ -1,2 +0,0 @@ --@prefix modgui: <http://moddevices.com/ns/modgui#> . --@prefix lv2: <http://lv2plug.in/ns/lv2core#> . -diff --git a/trunk/src/LV2/gx_wah.lv2/wah.h b/trunk/src/LV2/gx_wah.lv2/wah.h -deleted file mode 100644 -index 01bd2fcb..00000000 ---- a/trunk/src/LV2/gx_wah.lv2/wah.h -+++ /dev/null -@@ -1,26 +0,0 @@ --/* -- * Copyright (C) 2014 Guitarix project MOD project -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License as published by -- * the Free Software Foundation; either version 2 of the License, or -- * (at your option) any later version. -- * -- * This program is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU General Public License for more details. -- * -- * You should have received a copy of the GNU General Public License -- * along with this program; if not, write to the Free Software -- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -- * -------------------------------------------------------------------------- -- */ -- --#include "colwah.cc" --#include "dallaswah.cc" --#include "foxwah.cc" --#include "jenwah.cc" --#include "maestrowah.cc" --#include "selwah.cc" --#include "voxwah.cc" -diff --git a/trunk/src/LV2/gx_wah.lv2/widget.cpp b/trunk/src/LV2/gx_wah.lv2/widget.cpp -deleted file mode 100644 -index 8575d25f..00000000 ---- a/trunk/src/LV2/gx_wah.lv2/widget.cpp -+++ /dev/null -@@ -1,268 +0,0 @@ --/* -- * Copyright (C) 2012 Hermann Meyer, Andreas Degert, Pete Shorthose, Steve Poskitt -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License as published by -- * the Free Software Foundation; either version 2 of the License, or -- * (at your option) any later version. -- * -- * This program is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU General Public License for more details. -- * -- * You should have received a copy of the GNU General Public License -- * along with this program; if not, write to the Free Software -- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -- * -------------------------------------------------------------------------- -- */ -- -- --#include "widget.h" -- --#include <iostream> -- -- --/* @get controller by port -- * this function is used by make_selector() make_controller_box() -- * set_value() and on_value_changed() -- * so controller widgets needs only here asined to a port, -- * and all functions which need acess to the controller widget pointer -- * can receive them by port number -- */ -- --Gtk::Widget* Widget::get_controller_by_port(uint32_t port_index) --{ -- switch ((PortIndex)port_index ) -- { -- case WAH: -- return &m_bigknob[0]; -- case FREQ: -- return &m_bigknob[1]; -- case MODE: -- return &m_selector[0]; -- case MODEL: -- return &m_selector[1]; -- case WET_DRY: -- return &m_bigknob[2]; -- -- default: -- return NULL; -- } --} -- --Widget::Widget(Glib::ustring plugname): --plug_name(plugname), --logo(plugname) --{ -- Glib::ustring enumMODEL[] = {"Colorsound Wah","Dallas Wah","Foxx Wah","Jen Wah","Maestro Wah","Selmer Wah","Vox Wah V847"}; -- static const size_t enumMODEL_size = sizeof(enumMODEL) / sizeof(enumMODEL[0]); -- make_selector_box(&m_vboxs[0],"MODEL", enumMODEL, enumMODEL_size, 0,1.0, MODEL); -- -- Glib::ustring enumMODE[] = {"manual","auto","alien"}; -- static const size_t enumMODE_size = sizeof(enumMODE) / sizeof(enumMODE[0]); -- make_selector_box(&m_vboxs[1],"MODE", enumMODE, enumMODE_size, 0,1.0, MODE); -- -- // create controllers for port name -- make_controller_box(&m_vboxc[0], "WAH", 0.0, 1.0, 0.01, WAH); -- make_controller_box(&m_vboxc[1], "ALIEN FREQ", 24.0, 3.6e+02, 1.0, FREQ); -- make_controller_box(&m_vboxc[2], "WET_DRY", 0.0, 1e+02, 1.0, WET_DRY); -- -- // set propertys for the main paintbox holding the skin -- m_paintbox.set_border_width(10); -- m_paintbox.set_spacing(6); -- m_paintbox.set_homogeneous(false); -- m_paintbox.set_name(plug_name); -- m_paintbox.property_paint_func() = "rack_unit_expose"; -- add(m_paintbox); -- // box for the controllers -- m_hbox_.set_spacing(25); -- m_hbox_.set_border_width(24); -- m_hbox_.set_homogeneous(false); -- // set a vertical box in the paintbox -- m_vbox.set_border_width(14); -- m_vbox1.set_border_width(14); -- m_paintbox.pack_start(m_vbox_); -- -- // modify logo layout -- Pango::FontDescription font_desc = logo.get_style()->get_font(); -- font_desc.set_size(int(14*Pango::SCALE)); -- font_desc.set_weight(Pango::WEIGHT_BOLD); -- logo.modify_font(font_desc); -- -- // and controller box on top -- //m_hbox1_.set_border_width(24); -- m_hbox1_.set_spacing(64); -- logo.set_name("amplabel"); -- m_vbox_.pack_start(m_hbox1_, Gtk::PACK_SHRINK); -- m_hbox1_.pack_start(m_vbox1_, Gtk::PACK_EXPAND_PADDING); -- m_hbox1_.pack_end(m_vbox2_, Gtk::PACK_SHRINK); -- m_hbox1_.pack_end(logo, Gtk::PACK_SHRINK); -- m_vbox_.pack_start(m_hbox_, Gtk::PACK_SHRINK); -- m_vbox_.set_homogeneous(false); -- // put boxed controllers into controller box -- m_hbox_.pack_start(m_vbox1, Gtk::PACK_EXPAND_PADDING); -- for (int i = 0; i<2;i++) { -- m_vboxs_.pack_start(m_vboxs[i]); -- } -- m_vboxs_.set_spacing(5); -- m_hbox_.pack_start(m_vboxs_, Gtk::PACK_EXPAND_PADDING); -- for (int i = 0; i<3;i++) { -- m_hbox_.pack_start(m_vboxc[i]); -- } -- m_hbox_.pack_start(m_vbox, Gtk::PACK_EXPAND_PADDING); -- -- // connect expose handler as resize handler -- m_paintbox.signal_expose_event().connect( -- sigc::mem_fun(this, &Widget::_expose_event), true); -- -- set_app_paintable(true); -- show_all(); --} -- --Widget::~Widget() --{ -- --} -- --// set borderwith for paintbox when widget resize --// to hold controllers in place --bool Widget::_expose_event(GdkEventExpose *event) --{ -- int x, y, width, height, depth; -- m_paintbox.get_window()->get_geometry(x, y, width, height, depth); -- //double_t height = m_paintbox.get_window()->get_height(); -- m_paintbox.set_border_width(height/10); -- return false; --} -- --// create selectors from gxwmm --void Widget::make_selector_box(Gtk::Box *box, -- Glib::ustring labela, -- Glib::ustring tables[], -- size_t _size, -- float min, float digits, -- PortIndex port_name) --{ -- Gxw::Selector *regler = static_cast<Gxw::Selector*> -- (get_controller_by_port(port_name)); -- if (regler) -- { -- float max = static_cast<float>(_size+1); -- -- Gtk::TreeModelColumn<Glib::ustring> label; -- Gtk::TreeModelColumnRecord rec; -- rec.add(label); -- Glib::RefPtr<Gtk::ListStore> ls = Gtk::ListStore::create(rec); -- -- for (uint32_t i = 0 ; i< _size; ++i) { -- ls->append()->set_value(0, tables[i]); -- } -- regler->set_model(ls); -- regler->set_has_tooltip(); -- regler->set_tooltip_text(labela); -- regler->cp_configure("SELECTOR", labela, min, max, digits); -- regler->set_show_value(false); -- regler->set_name(plug_name); -- regler->signal_value_changed().connect(sigc::bind(sigc::mem_fun( -- *this, &Widget::on_value_changed), port_name)); -- box->pack_start(*regler,Gtk::PACK_SHRINK); -- } --} -- --// create stackboxes with controllers for port name --void Widget::make_controller_box(Gtk::Box *box, -- Glib::ustring label, -- float min, float max, -- float digits, -- PortIndex port_name) --{ -- Gxw::Regler *regler = static_cast<Gxw::Regler*>( -- get_controller_by_port(port_name)); -- if (regler) -- { -- Gtk::Label* pr = new Gtk::Label(label, 0); -- pr->set_name("amplabel"); -- // use label images instead simple string labes -- //Glib::ustring label_image = GX_LV2_STYLE_DIR; -- //label_image += "/"; -- //label_image += label; -- //label_image += ".png"; -- //Gtk::Image *pr = new Gtk::Image(label_image); -- -- Gtk::VBox* b1 = new Gtk::VBox(); -- box->pack_start( *Gtk::manage(b1), Gtk::PACK_EXPAND_PADDING); -- box->pack_start( *Gtk::manage(pr),Gtk::PACK_SHRINK); -- regler->cp_configure("KNOB", label, min, max, digits); -- regler->set_show_value(true); -- regler->set_name(plug_name); -- box->pack_start(*regler,Gtk::PACK_SHRINK); -- Gtk::VBox* b2 = new Gtk::VBox(); -- box->pack_start( *Gtk::manage(b2), Gtk::PACK_EXPAND_PADDING); -- regler->signal_value_changed().connect(sigc::bind(sigc::mem_fun( -- *this, &Widget::on_value_changed), port_name)); -- } --} -- --// create stackboxes with switch controller for port name --void Widget::make_switch_box(Gtk::Box *box, -- Glib::ustring label, -- PortIndex port_name) --{ -- Gxw::Switch *regler = static_cast<Gxw::Switch*>( -- get_controller_by_port(port_name)); -- if (regler) -- { -- Gtk::Label* pr = new Gtk::Label(label, 0); -- pr->set_name("amplabel"); -- // use label images instead simple string labes -- /*Glib::ustring label_image = GX_LV2_STYLE_DIR; -- label_image += "/"+plug_name+"-"; -- label_image += label; -- label_image += "-label.png"; -- Gtk::Image *pr = new Gtk::Image(label_image);*/ -- -- regler->cp_configure("switch", label, 0, 1, 1); -- regler->set_name(plug_name); -- regler->set_base_name( "button" ); -- Gtk::VBox* b1 = new Gtk::VBox(); -- box->pack_start( *Gtk::manage(b1), Gtk::PACK_EXPAND_PADDING); -- box->pack_start( *Gtk::manage(pr),Gtk::PACK_SHRINK); -- box->pack_start(*regler,Gtk::PACK_SHRINK); -- Gtk::VBox* b2 = new Gtk::VBox(); -- box->pack_start( *Gtk::manage(b2), Gtk::PACK_EXPAND_PADDING); -- regler->signal_toggled().connect(sigc::bind(sigc::mem_fun( -- *this, &Widget::on_value_changed), port_name)); -- } --} -- --// receive controller value changes from host and set them to controller --void Widget::set_value(uint32_t port_index, -- uint32_t format, -- const void * buffer) --{ -- if ( format == 0 ) -- { -- Gxw::Regler *regler = static_cast<Gxw::Regler*>( -- get_controller_by_port(port_index)); -- if (regler) -- { -- float value = *static_cast<const float*>(buffer); -- regler->cp_set_value(value); -- } -- } --} -- --// write (UI) controller value changes to the host->engine --void Widget::on_value_changed(uint32_t port_index) --{ -- Gxw::Regler *regler = static_cast<Gxw::Regler*>( -- get_controller_by_port(port_index)); -- if (regler) -- { -- float value = regler->cp_get_value(); -- write_function(controller, port_index, sizeof(float), 0, -- static_cast<const void*>(&value)); -- } --} -- -diff --git a/trunk/src/LV2/gx_wah.lv2/widget.h b/trunk/src/LV2/gx_wah.lv2/widget.h -deleted file mode 100644 -index 7ec76d20..00000000 ---- a/trunk/src/LV2/gx_wah.lv2/widget.h -+++ /dev/null -@@ -1,96 +0,0 @@ --/* -- * Copyright (C) 2012 Hermann Meyer, Andreas Degert, Pete Shorthose, Steve Poskitt -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License as published by -- * the Free Software Foundation; either version 2 of the License, or -- * (at your option) any later version. -- * -- * This program is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU General Public License for more details. -- * -- * You should have received a copy of the GNU General Public License -- * along with this program; if not, write to the Free Software -- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -- * -------------------------------------------------------------------------- -- */ -- --#pragma once -- --#ifndef SRC_HEADERS_WIDGET_H_ --#define SRC_HEADERS_WIDGET_H_ -- --#include <gtkmm.h> --#include <gxwmm.h> --#include "gx_colwah.h" --#include "../config.h" // for GX_STYLE_DIR --// LV2UI stuff --#include "lv2/lv2plug.in/ns/extensions/ui/ui.h" -- --class Widget : public Gtk::HBox --{ --private: -- Gtk::Widget* get_controller_by_port(uint32_t port_index); -- -- void on_value_changed(uint32_t port_index); -- -- void make_controller_box(Gtk::Box *box, -- Glib::ustring label, -- float min, float max, -- float digits, -- PortIndex port_name); -- -- void make_selector_box(Gtk::Box *box, -- Glib::ustring label, -- Glib::ustring tables[], -- size_t _size, -- float min, float digits, -- PortIndex port_name); -- -- void make_switch_box(Gtk::Box *box, -- Glib::ustring label, -- PortIndex port_name); -- -- bool _expose_event(GdkEventExpose *event); -- -- void set_value(uint32_t port_index, -- uint32_t format, -- const void * buffer); --public: -- -- // public Lv2 communication stuff -- LV2UI_Controller controller; -- LV2UI_Write_Function write_function; -- static void set_value_static(uint32_t port_index, -- uint32_t buffer_size, -- uint32_t format, -- const void * buffer, Widget *self) -- { -- self->set_value(port_index,format,buffer); -- } -- -- Widget(Glib::ustring plugname); -- ~Widget(); -- --protected: -- Glib::ustring plug_name; -- Gtk::Label logo; -- Gtk::VBox m_vbox_; -- Gtk::VBox m_vbox1_; -- Gtk::VBox m_vbox2_; -- Gtk::VBox m_vbox; -- Gtk::VBox m_vbox1; -- Gtk::VBox m_vboxc[3]; -- Gtk::VBox m_vboxs[2]; -- Gtk::VBox m_vboxs_; -- Gtk::HBox m_hbox_; -- Gtk::HBox m_hbox1_; -- -- Gxw::PaintBox m_paintbox; -- Gxw::Selector m_selector[2]; -- Gxw::SmallKnobR m_bigknob[3]; --}; -- --#endif //SRC_HEADERS_WIDGET_H_ -diff --git a/trunk/src/LV2/gx_wah.lv2/wscript b/trunk/src/LV2/gx_wah.lv2/wscript -deleted file mode 100644 -index fa66b426..00000000 ---- a/trunk/src/LV2/gx_wah.lv2/wscript -+++ /dev/null -@@ -1,62 +0,0 @@ --#!/usr/bin/env python --# encoding: utf-8 -- --import sys -- --def configure(conf): -- pass -- --def build(bld): -- bundle = 'gx_colwah.lv2' -- -- src = ['gx_colwah.cpp' -- ] -- incl = ['../faust','./', '../DSP'] -- lib = [] -- if sys.platform.startswith("linux"): -- lib.append('dl') -- uselib = ['LV2CORE'] -- cxxflag =[] -- if not bld.env['OPT'] and bld.env['SSE2']: -- cxxflag = [ "-msse2", "-mfpmath=sse"] -- lv2_effects = bld.shlib( -- includes = incl, -- lib = lib, -- uselib = uselib, -- obj_ext = '_14.o', -- cxxflags = cxxflag, -- defines = ["LV2_SO"], -- target = 'gx_colwah', -- source = src, -- install_path = '${LV2DIR}/%s' % bundle, -- chmod = 0o755, -- ) -- lv2_effects.env['cxxshlib_PATTERN'] = '%s.so' -- -- if bld.env['LV2GUI']: -- libpath1 = [] -- lib1 = [] -- incl = [] -- if sys.platform.startswith("linux"): -- lib1.append('dl') -- -- lv2_plugin_gui = bld.shlib( -- includes = incl, -- lib = lib1, -- libpath = libpath1, -- use = ['gxwmm','LV2CORE','GTKMM'], -- linkflags = '-Wl,-z,nodelete', -- defines = ["LV2_GUI"], -- target = 'gx_colwah_gui', -- source = 'widget.cpp gx_colwah_gui.cpp', -- install_path = '${LV2DIR}/%s' % bundle, -- chmod = 0o755, -- ) -- lv2_plugin_gui.env['cxxshlib_PATTERN'] = '%s.so' -- -- install_path = '${LV2DIR}/%s' % bundle, -- if bld.env['MODGUI']: -- bld.install_files('${LV2DIR}/gx_colwah.lv2', bld.path.ant_glob('*.ttl'), relative_trick=True) -- bld.install_files('${LV2DIR}/gx_colwah.lv2', bld.path.ant_glob('modgui/**/*'), relative_trick=True) -- else: -- bld.install_files('${LV2DIR}/gx_colwah.lv2', bld.path.ant_glob('*.ttl', excl=['modgui.ttl']), relative_trick=True) --- -2.25.1 - - -From 2addb8b8028486992b1ca93f4a6c000d39cb0911 Mon Sep 17 00:00:00 2001 -From: brummer10 <brumm...@web.de> -Date: Mon, 20 Jan 2020 07:38:47 +0100 -Subject: [PATCH 5/8] introduce new midi toggle behavior Toggle, fix bug #79 - ---- - trunk/src/gx_head/engine/gx_paramtable.cpp | 8 ++++++++ - trunk/src/headers/gx_main_midi.h | 3 ++- - trunk/src/headers/gx_parameter.h | 2 +- - 3 files changed, 11 insertions(+), 2 deletions(-) - -diff --git a/trunk/src/gx_head/engine/gx_paramtable.cpp b/trunk/src/gx_head/engine/gx_paramtable.cpp -index caa65a34..0b8f87a2 100644 ---- a/trunk/src/gx_head/engine/gx_paramtable.cpp -+++ b/trunk/src/gx_head/engine/gx_paramtable.cpp -@@ -326,6 +326,14 @@ bool MidiController::set_midi(int n, int last_value, bool update) { - } - break; - } -+ case Parameter::toggle_type::Toggle: { -+ if (param->on_off_value() && !n) { -+ ret = param->midi_set(0, 127, _lower, _upper); -+ } else { -+ ret = param->midi_set(127, 127, _lower, _upper); -+ } -+ break; -+ } - } - } else { - //fprintf(stderr,"continues %s \n",param->id().c_str()); -diff --git a/trunk/src/headers/gx_main_midi.h b/trunk/src/headers/gx_main_midi.h -index 9c0ebc4d..c68502e5 100644 ---- a/trunk/src/headers/gx_main_midi.h -+++ b/trunk/src/headers/gx_main_midi.h -@@ -77,7 +77,8 @@ class MidiConnect { - enum { RESPONSE_DELETE = 1 }; - std::map<gx_engine::Parameter::toggle_type, const char*> toggle_behaviour_descriptions { - { gx_engine::Parameter::toggle_type::OnOff, "off /on states transition toggle" }, -- { gx_engine::Parameter::toggle_type::Constant, "constant state toggle" } -+ { gx_engine::Parameter::toggle_type::Constant, "constant state toggle" }, -+ { gx_engine::Parameter::toggle_type::Toggle, "toggle state" } - }; - GtkTreeSelection* selection; - GtkListStore* store; -diff --git a/trunk/src/headers/gx_parameter.h b/trunk/src/headers/gx_parameter.h -index fa0fb680..c4c9cca5 100644 ---- a/trunk/src/headers/gx_parameter.h -+++ b/trunk/src/headers/gx_parameter.h -@@ -106,7 +106,7 @@ class FileParameter; - class Parameter: boost::noncopyable { - public: - enum ctrl_type { None, Continuous, Switch, Enum }; -- enum toggle_type { OnOff = 0, Constant = 1, _Count = 2 }; -+ enum toggle_type { OnOff = 0, Constant = 1, Toggle = 2, _Count = 3 }; - private: - virtual bool midi_set(float n, float high, float llimit, float ulimit); //RT - virtual bool midi_set_bpm(float n, float high, float llimit, float ulimit); //RT --- -2.25.1 - - -From 504e88037300f6252aa9620d9f3e1d08be7d9b68 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Hubert=20Figui=C3=A8re?= <h...@figuiere.net> -Date: Sun, 26 Jan 2020 11:03:44 -0500 -Subject: [PATCH 7/8] Gxw::FastMeter: add missing properties - ---- - trunk/libgxwmm/gxwmm/fastmeter.hg | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/trunk/libgxwmm/gxwmm/fastmeter.hg b/trunk/libgxwmm/gxwmm/fastmeter.hg -index 2d525758..60c1cd25 100644 ---- a/trunk/libgxwmm/gxwmm/fastmeter.hg -+++ b/trunk/libgxwmm/gxwmm/fastmeter.hg -@@ -33,6 +33,8 @@ class FastMeter: public Gtk::DrawingArea { - _WRAP_METHOD(void set_hold_count(int val), gx_fast_meter_set_hold_count) - _WRAP_PROPERTY(hold, int) - _WRAP_PROPERTY(dimen, int) -+ _WRAP_PROPERTY(horiz, bool) -+ _WRAP_PROPERTY(type, int) - _WRAP_PROPERTY("var-id", Glib::ustring) - }; - --- -2.25.1 - - -From 872954ce5c41890f2a1975726803e9e6e75d3387 Mon Sep 17 00:00:00 2001 -From: Andreas Degert <a...@papyrus-gmbh.de> -Date: Wed, 29 Jan 2020 22:01:58 +0100 -Subject: [PATCH 8/8] dsp2cc, dsp2insert: make it work with Faust 2.20.2 - - - 2 variables in Faust output are renamed, the tools now detect the - correct variable name (so it still works with Faust 2.15.11) - - - added an option --no-version-header to suppress the Faust version - number in der generated output (so two different Faust versions - have a chance to produce identical output) - -In an attempt to find (and fix) the cause of a long-standing Faust bug -which leads to random order of output terms, I found commit -18c4b269 Introduction of serial numbers in trees (2019-04-02) -which might have fixed the bug. It's included in Faust 2.20.2, so -maybe we have reproducible output if we switch to that version. ---- - trunk/tools/dsp2cc | 123 +++++++++++++++++++++-------------------- - trunk/tools/dsp2insert | 56 +++++++++---------- - 2 files changed, 91 insertions(+), 88 deletions(-) - -diff --git a/trunk/tools/dsp2cc b/trunk/tools/dsp2cc -index 4951ba59..9bc272c7 100755 ---- a/trunk/tools/dsp2cc -+++ b/trunk/tools/dsp2cc -@@ -193,63 +193,59 @@ class Parser(object): - return line - return "" - -+ @staticmethod -+ def remove_indentation(cp): -+ m = re.compile(r"\t*").match -+ n = 10 -+ for l in cp: -+ if l != "\n": -+ n = min(n, len(m(l).group(0))) -+ return [l[n:] for l in cp] -+ - def copy(self, exp, line=None): - cp = [] - if line: - cp.append(line) - m = re.compile(exp).match -- p = re.compile(r"\tint fSamplingFreq;").match -+ p = re.compile(r"\tint (fSamplingFreq|fSampleRate);").match - o = re.compile(r" public:").match - for line in self.lines: - if not line.strip(): - continue -- if p(line): -+ t = p(line) -+ if t: -+ self.sample_rate_var = t.group(1) - continue - if m(line): - break - if o(line): - break - cp.append(line) -- # remove indentation -- m = re.compile(r"\t*").match -- n = 10 -- for l in cp: -- if l != "\n": -- n = min(n, len(m(l).group(0))) -- return [l[n:] for l in cp] -+ return self.remove_indentation(cp) - - def read_init(self, exp, line=None): - cp = [] - if line: - cp.append(line) - m = re.compile(exp).match -- n = re.compile(" }").match -- p = re.compile(r"\tint fSamplingFreq;").match - o = re.compile(r" public:").match - for line in self.lines: - if not line.strip(): - continue -- if p(line): -- continue -- if n(line): -- continue - if m(line): - break - if o(line): - break - if line.startswith(" for"): - line = line.replace("{\n","") -- line = line.replace("\t","") - l = next(self.lines) - line += l.replace("\t","") -+ l = next(self.lines) -+ if not l.strip(): -+ l = next(self.lines) -+ assert l.strip() == '}', repr(l) - cp.append(line) -- # remove indentation -- m = re.compile(r"\t*").match -- n = 10 -- for l in cp: -- if l != "\n": -- n = min(n, len(m(l).group(0))) -- return [l[n:] for l in cp] -+ return self.remove_indentation(cp) - - def get_section_list(self): - return "includes", "incl_class", "var-decl", "alias-defines", "alias-undefines", "var-init", "var-free", "ui", "compute", "post_compute" -@@ -579,7 +575,12 @@ class Parser(object): - s = {} - self.ui = UIDefs() - #self.readMeta() # (needed only for faust 9.4 -- self.headvers = self.skip_until(r"\s*\s*(Code generated with Faust.*)").group(1) -+ headvers = self.skip_until(r"\s*\s*((Code generated with Faust *)([^ ]*)(.*))") -+ self.faust_version = headvers.group(3) -+ if self.options.version_header: -+ self.headvers = headvers.group(1) -+ else: -+ self.headvers = headvers.group(2) + headvers.group(4).lstrip() - cl,self.l,s["includes"] = self.readIncludes(r"#ifndef FAUSTCLASS") - if cl: - s["incl_class"] = self.readClass(r"#ifndef FAUSTCLASS") -@@ -600,8 +601,8 @@ class Parser(object): - self.skip_until(r"\s*virtual void instanceResetUserInterface") - s["var-init"] += self.copy(r"\s*}$") - self.skip_until(r"\s*virtual void instanceClear") -- s["var-init"] += self.read_init(r"\s*virtual void init") -- del s["var-init"] [-1] -+ s["var-init"] += self.read_init(r'\t}') -+ self.sample_rate_param = self.skip_until(r"\s*virtual void init\(int ([a-zA-Z_]+)\)").group(1) - self.skip_until(r"\s*virtual void buildUserInterface") - s["ui"] = self.readUI(r"\s*}$") - s["var-decl"], s["alias-defines"], s["alias-undefines"] = self.change_var_decl(var_decl,options.init_type) -@@ -854,7 +855,7 @@ namespace %(namespace)s { - #if %(has_activate)s - static bool mem_allocated = false; - #endif --static int fSamplingFreq; -+static int %(sample_rate_var)s; - - #if %(has_state)s - static void clear_state_f(PluginDef* = 0) -@@ -863,7 +864,7 @@ static void clear_state_f(PluginDef* = 0) - } - - #endif --static void init(unsigned int samplingFreq, PluginDef* = 0) -+static void init(unsigned int %(sample_rate_param)s, PluginDef* = 0) - { - %(init_body)s\ - #if %(has_state_no_activate)s -@@ -1054,16 +1055,16 @@ private: - #if %(has_stereo)s - gx_resample::FixedRateResampler smps; - #endif -- int samplingFreq; -+ int %(sample_rate_param)s; - #endif - #if %(has_oversample)s - gx_resample::FixedRateResampler smp; - #if %(has_stereo)s - gx_resample::FixedRateResampler smps; - #endif -- int samplingFreq; -+ int %(sample_rate_param)s; - #endif -- int fSamplingFreq; -+ int %(sample_rate_var)s; - %(var_decl)s\ - - #if %(has_insert_p)s -@@ -1097,7 +1098,7 @@ public: - static const char *glade_def; - #endif - #endif -- void init(unsigned int samplingFreq); -+ void init(unsigned int %(sample_rate_param)s); - void compute(int %(countname)s%(compute_args)s); - int register_par(const ParamReg& reg); - #if %(has_plugindef)s -@@ -1111,7 +1112,7 @@ public: - #if %(has_ui)s - static int load_ui_f_static(const UiBuilder& b, int form); - #endif -- static void init_static(unsigned int samplingFreq, PluginDef*); -+ static void init_static(unsigned int %(sample_rate_param)s, PluginDef*); - static void compute_static(int %(countname)s%(compute_args)s, PluginDef*); - static int register_params_static(const ParamReg& reg); - static void del_instance(PluginDef *p); -@@ -1189,23 +1190,23 @@ void Dsp::clear_state_f_static(PluginDef *p) - #if %(has_fixedrate)s - inline void Dsp::init(unsigned int RsamplingFreq) - { -- samplingFreq = %(fixedrate)s; -- smp.setup(RsamplingFreq, samplingFreq); -+ %(sample_rate_param)s = %(fixedrate)s; -+ smp.setup(RsamplingFreq, %(sample_rate_param)s); - #if %(has_stereo)s -- smps.setup(RsamplingFreq, samplingFreq); -+ smps.setup(RsamplingFreq, %(sample_rate_param)s); - #endif - #endif - #if %(has_oversample)s - inline void Dsp::init(unsigned int RsamplingFreq) - { -- samplingFreq = %(oversample)s * RsamplingFreq; -- smp.setup(RsamplingFreq, samplingFreq); -+ %(sample_rate_param)s = %(oversample)s * RsamplingFreq; -+ smp.setup(RsamplingFreq, %(sample_rate_param)s); - #if %(has_stereo)s -- smps.setup(RsamplingFreq, samplingFreq); -+ smps.setup(RsamplingFreq, %(sample_rate_param)s); - #endif - #endif - #if %(no_oversample)s --inline void Dsp::init(unsigned int samplingFreq) -+inline void Dsp::init(unsigned int %(sample_rate_param)s) - { - #endif - %(init_body)s\ -@@ -1218,9 +1219,9 @@ inline void Dsp::init(unsigned int samplingFreq) - } - - #if %(has_plugindef)s --void Dsp::init_static(unsigned int samplingFreq, PluginDef *p) -+void Dsp::init_static(unsigned int %(sample_rate_param)s, PluginDef *p) - { -- static_cast<Dsp*>(p)->init(samplingFreq); -+ static_cast<Dsp*>(p)->init(%(sample_rate_param)s); - } - - #endif -@@ -1470,16 +1471,16 @@ private: - #if %(has_stereo)s - gx_resample::FixedRateResampler smps; - #endif -- uint32_t samplingFreq; -+ uint32_t %(sample_rate_param)s; - #endif - #if %(has_oversample)s - gx_resample::FixedRateResampler smp; - #if %(has_stereo)s - gx_resample::FixedRateResampler smps; - #endif -- uint32_t samplingFreq; -+ uint32_t %(sample_rate_param)s; - #endif -- uint32_t fSamplingFreq; -+ uint32_t %(sample_rate_var)s; - %(var_decl)s\ - - #if %(has_insert_p)s -@@ -1512,7 +1513,7 @@ public: - #if %(has_activate)s - int activate(bool start); - #endif -- void init(uint32_t samplingFreq); -+ void init(uint32_t %(sample_rate_param)s); - void compute(int %(countname)s%(compute_args)s); - #if %(has_plugindef)s - -@@ -1522,7 +1523,7 @@ public: - #if %(has_activate)s - static int activate_static(bool start, PluginLV2*); - #endif -- static void init_static(uint32_t samplingFreq, PluginLV2*); -+ static void init_static(uint32_t %(sample_rate_param)s, PluginLV2*); - static void compute_static(int %(countname)s%(compute_args)s, PluginLV2*); - static void del_instance(PluginLV2 *p); - #if %(has_lv2)s -@@ -1596,23 +1597,23 @@ void Dsp::clear_state_f_static(PluginLV2 *p) - #if %(has_fixedrate)s - inline void Dsp::init(uint32_t RsamplingFreq) - { -- samplingFreq = %(fixedrate)s; -- smp.setup(RsamplingFreq, samplingFreq); -+ %(sample_rate_param)s = %(fixedrate)s; -+ smp.setup(RsamplingFreq, %(sample_rate_param)s); - #if %(has_stereo)s -- smps.setup(RsamplingFreq, samplingFreq); -+ smps.setup(RsamplingFreq, %(sample_rate_param)s); - #endif - #endif - #if %(has_oversample)s - inline void Dsp::init(uint32_t RsamplingFreq) - { -- samplingFreq = %(oversample)s * RsamplingFreq; -- smp.setup(RsamplingFreq, samplingFreq); -+ %(sample_rate_param)s = %(oversample)s * RsamplingFreq; -+ smp.setup(RsamplingFreq, %(sample_rate_param)s); - #if %(has_stereo)s -- smps.setup(RsamplingFreq, samplingFreq); -+ smps.setup(RsamplingFreq, %(sample_rate_param)s); - #endif - #endif - #if %(no_oversample)s --inline void Dsp::init(uint32_t samplingFreq) -+inline void Dsp::init(uint32_t %(sample_rate_param)s) - { - #endif - %(init_body)s\ -@@ -1625,9 +1626,9 @@ inline void Dsp::init(uint32_t samplingFreq) - } - - #if %(has_plugindef)s --void Dsp::init_static(uint32_t samplingFreq, PluginLV2 *p) -+void Dsp::init_static(uint32_t %(sample_rate_param)s, PluginLV2 *p) - { -- static_cast<Dsp*>(p)->init(samplingFreq); -+ static_cast<Dsp*>(p)->init(%(sample_rate_param)s); - } - - #endif -@@ -2177,6 +2178,8 @@ class Output(object): - has_separate_header = fp_head is not None, - header_name = h_name, - sharedlib = self.options.template_type == "sharedlib", -+ sample_rate_param = self.parser.sample_rate_param, -+ sample_rate_var = self.parser.sample_rate_var, - )) - s.seek(0) - preprocess(s, fp, fp_head) -@@ -2193,18 +2196,18 @@ class Output(object): - self.parser.write(fp, "var-decl", dct=dict(static="static ")) - if self.has_activate: - fp.write("static bool mem_allocated = false;\n") -- fp.write("static int\tfSamplingFreq;\n\n") -+ fp.write("static int\t%s;\n\n" % self.parser.sample_rate_var) - if self.state_init: - fp.write("static void clear_state_f(PluginDef* = 0)\n{\n") - fp.write(self.state_init); - fp.write("}\n\n") - if self.state_init and not self.has_activate: -- fp.write("static void init(unsigned int samplingFreq, PluginDef* = 0)\n{\n") -+ fp.write("static void init(unsigned int %s, PluginDef* = 0)\n{\n" % self.parser.sample_rate_param) - self.parser.write(fp, "var-init", 1, filt=self.parser.ui.var_filter(1)) - fp.write('\tclear_state_f();\n') - fp.write("}\n\n") - else: -- fp.write("static void init(unsigned int samplingFreq, PluginDef* = 0)\n{\n") -+ fp.write("static void init(unsigned int %s, PluginDef* = 0)\n{\n" % self.parser.sample_rate_param) - self.parser.write(fp, "var-init", 1, filt=self.parser.ui.var_filter(1)) - fp.write("}\n\n") - if self.has_activate: -@@ -2276,6 +2279,8 @@ def main(): - help="put definitions inside an extra namespace") - op.add_option("-e", "--param-warn", dest="param_warn", action="store_true", default=False, - help="don't signal an error when the ui definition references an unknown dsp parameter") -+ op.add_option("--no-version-header", dest="version_header", action="store_false", default=True, -+ help="don't display the faust version in generated files") - options, args = op.parse_args() - if options.init_type not in init_opts: - op.error("unknown init-type") -diff --git a/trunk/tools/dsp2insert b/trunk/tools/dsp2insert -index b54c03bb..0a298fe2 100755 ---- a/trunk/tools/dsp2insert -+++ b/trunk/tools/dsp2insert -@@ -187,63 +187,59 @@ class Parser(object): - return line - return "" - -+ @staticmethod -+ def remove_indentation(cp): -+ m = re.compile(r"\t*").match -+ n = 10 -+ for l in cp: -+ if l != "\n": -+ n = min(n, len(m(l).group(0))) -+ return [l[n:] for l in cp] -+ - def copy(self, exp, line=None): - cp = [] - if line: - cp.append(line) - m = re.compile(exp).match -- p = re.compile(r"\tint fSamplingFreq;").match -+ p = re.compile(r"\tint (fSamplingFreq|fSampleRate);").match - o = re.compile(r" public:").match - for line in self.lines: - if not line.strip(): - continue -- if p(line): -+ t = p(line) -+ if t: -+ self.sample_rate_var = t.group(1) - continue - if m(line): - break - if o(line): - break - cp.append(line) -- # remove indentation -- m = re.compile(r"\t*").match -- n = 10 -- for l in cp: -- if l != "\n": -- n = min(n, len(m(l).group(0))) -- return [l[n:] for l in cp] -+ return self.remove_indentation(cp) - - def read_init(self, exp, line=None): - cp = [] - if line: - cp.append(line) - m = re.compile(exp).match -- n = re.compile(" }").match -- p = re.compile(r"\tint fSamplingFreq;").match - o = re.compile(r" public:").match - for line in self.lines: - if not line.strip(): - continue -- if p(line): -- continue -- if n(line): -- continue - if m(line): - break - if o(line): - break - if line.startswith(" for"): - line = line.replace("{\n","") -- line = line.replace("\t","") - l = next(self.lines) - line += l.replace("\t","") -+ l = next(self.lines) -+ if not l.strip(): -+ l = next(self.lines) -+ assert l.strip() == '}', repr(l) - cp.append(line) -- # remove indentation -- m = re.compile(r"\t*").match -- n = 10 -- for l in cp: -- if l != "\n": -- n = min(n, len(m(l).group(0))) -- return [l[n:] for l in cp] -+ return self.remove_indentation(cp) - - def get_section_list(self): - return "includes", "var-decl", "alias-defines", "alias-undefines", "var-init", "var-free", "ui", "compute" -@@ -551,8 +547,8 @@ class Parser(object): - self.skip_until(r"\s*virtual void instanceResetUserInterface") - s["var-init"] += self.copy(r"\s*}$") - self.skip_until(r"\s*virtual void instanceClear") -- s["var-init"] += self.read_init(r"\s*virtual void init") -- del s["var-init"] [-1] -+ s["var-init"] += self.read_init(r'\t}') -+ self.sample_rate_param = self.skip_until(r"\s*virtual void init\(int ([a-zA-Z_]+)\)").group(1) - self.skip_until(r"\s*virtual void buildUserInterface") - s["ui"] = self.readUI(r"\s*}$") - s["var-decl"], s["alias-defines"], s["alias-undefines"] = self.change_var_decl(var_decl,options.init_type) -@@ -686,7 +682,7 @@ insert_p1_incl = \"\"\" - - insert_p1_class = \"\"\" - #if %(has_oversample)s -- int samplingFreq; -+ int %(sample_rate_param)s; - gx_resample::FixedRateResampler smpCl; - #if %(has_stereo)s - gx_resample::FixedRateResampler smpsCl; -@@ -697,10 +693,10 @@ insert_p1_class = \"\"\" - - insert_p1_init = \"\"\" - #if %(has_oversample)s -- samplingFreq = %(oversample)s; -- smpCl.setup(fSamplingFreq, samplingFreq); -+ %(sample_rate_param)s = %(oversample)s; -+ smpCl.setup(%(sample_rate_var)s, %(sample_rate_param)s); - #if %(has_stereo)s -- smpsCl.setup(fSamplingFreq, samplingFreq); -+ smpsCl.setup(%(sample_rate_var)s, %(sample_rate_param)s); - #endif - #endif - %(init_body)s\ -@@ -864,6 +860,8 @@ class Output(object): - compute_body = self.parser_sect("compute", 1), - undefines = self.parser_sect("alias-undefines", 0), - register_body = self.parser_ui("reg."), -+ sample_rate_param = self.parser.sample_rate_param, -+ sample_rate_var = self.parser.sample_rate_var, - )) - s.seek(0) - preprocess(s, fp, fp_head) --- -2.25.1 -