[arch-commits] Commit in guitarix/repos/community-x86_64 (3 files)

David Runge dvzrv at archlinux.org
Wed May 27 10:54:10 UTC 2020


    Date: Wednesday, May 27, 2020 @ 10:54:09
  Author: dvzrv
Revision: 635885

archrelease: copy trunk to community-x86_64

Added:
  guitarix/repos/community-x86_64/PKGBUILD
    (from rev 635884, guitarix/trunk/PKGBUILD)
Deleted:
  guitarix/repos/community-x86_64/PKGBUILD
  guitarix/repos/community-x86_64/guitarix-0.39.0-fix_faust_and_lv2_plugins.patch

-------------------------------------------------+
 PKGBUILD                                        |   90 
 guitarix-0.39.0-fix_faust_and_lv2_plugins.patch | 3296 ----------------------
 2 files changed, 44 insertions(+), 3342 deletions(-)

Deleted: PKGBUILD
===================================================================
--- PKGBUILD	2020-05-27 10:53:59 UTC (rev 635884)
+++ PKGBUILD	2020-05-27 10:54:09 UTC (rev 635885)
@@ -1,46 +0,0 @@
-# Maintainer: David Runge <dvzrv at archlinux.org
-
-pkgname=guitarix
-pkgver=0.39.0
-pkgrel=3
-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')
-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')
-
-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 \
-                --new-ladspa \
-                --shared-lib \
-                --lib-dev \
-                --ldflags="${LDFLAGS}"
-  waf build -vv
-}
-
-package() {
-  cd "${pkgname}-${pkgver}"
-  waf install --destdir="${pkgdir}"
-  # docs
-  install -vDm 644 {changelog,README} -t "${pkgdir}/usr/share/doc/${pkgname}/"
-}

Copied: guitarix/repos/community-x86_64/PKGBUILD (from rev 635884, guitarix/trunk/PKGBUILD)
===================================================================
--- PKGBUILD	                        (rev 0)
+++ PKGBUILD	2020-05-27 10:54:09 UTC (rev 635885)
@@ -0,0 +1,44 @@
+# Maintainer: David Runge <dvzrv at archlinux.org
+
+pkgname=guitarix
+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=('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")
+sha512sums=('902e4d924cae68a477518cb87d7b63edb8716db93e11add921e733c315f2646652fb1b434d182e836e1e866035cabe22a41d8dc66df0b6156b5242cdd31d51e8')
+
+build() {
+  cd "${pkgname}-${pkgver}"
+  waf configure --prefix=/usr \
+                --enable-nls \
+                --ladspa \
+                --new-ladspa \
+                --shared-lib \
+                --lib-dev \
+                --ldflags="${LDFLAGS}"
+  waf build -vv
+}
+
+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
+  install -vDm 644 {changelog,README} -t "${pkgdir}/usr/share/doc/${pkgname}/"
+}

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:53:59 UTC (rev 635884)
+++ guitarix-0.39.0-fix_faust_and_lv2_plugins.patch	2020-05-27 10:54:09 UTC (rev 635885)
@@ -1,3296 +0,0 @@
-From 949555d976d8cb3cd98be56ebe464ce7f859007b Mon Sep 17 00:00:00 2001
-From: brummer10 <brummer- at 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 <brummer- at 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.
-+# --------------------------------------------------------------------------
-+#
-+
-+
-+ at prefix doap: <http://usefulinc.com/ns/doap#> .
-+ at prefix foaf: <http://xmlns.com/foaf/0.1/> .
-+ at prefix lv2: <http://lv2plug.in/ns/lv2core#> .
-+ at prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
-+ at prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
-+ at prefix guiext: <http://lv2plug.in/ns/extensions/ui#>.
-+ at prefix time: <http://lv2plug.in/ns/ext/time#>.
-+ at prefix units: <http://lv2plug.in/ns/extensions/units#> .
-+
-+<http://guitarix.sourceforge.net#me>
-+	a foaf:Person ;
-+	foaf:name "Guitarix team" ;
-+	foaf:mbox <mailto:guitarix-developer at 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.
-+# --------------------------------------------------------------------------
-+#
-+
-+ at prefix lv2:  <http://lv2plug.in/ns/lv2core#> .
-+ at 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 at 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 @@
-+ at prefix modgui: <http://moddevices.com/ns/modgui#> .
-+ at 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 <brummer- at 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 <brummer- at 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.
--# --------------------------------------------------------------------------
--#
--
--
-- at prefix doap: <http://usefulinc.com/ns/doap#> .
-- at prefix foaf: <http://xmlns.com/foaf/0.1/> .
-- at prefix lv2: <http://lv2plug.in/ns/lv2core#> .
-- at prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
-- at prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
-- at prefix guiext: <http://lv2plug.in/ns/extensions/ui#>.
-- at prefix time: <http://lv2plug.in/ns/ext/time#>.
-- at prefix units: <http://lv2plug.in/ns/extensions/units#> .
--
--<http://guitarix.sourceforge.net#me>
--	a foaf:Person ;
--	foaf:name "Guitarix team" ;
--	foaf:mbox <mailto:guitarix-developer at 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.
--# --------------------------------------------------------------------------
--#
--
-- at prefix lv2:  <http://lv2plug.in/ns/lv2core#> .
-- at 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 at 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 @@
-- at prefix modgui: <http://moddevices.com/ns/modgui#> .
-- at 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 <brummer- at 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?= <hub at 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 <ad at 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
-



More information about the arch-commits mailing list