[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