diff options
author | Ainola | 2015-08-08 13:06:29 -0600 |
---|---|---|
committer | Ainola | 2015-08-08 13:06:29 -0600 |
commit | 03b5b69ec9bbc7ceb6dda289a415ba886e853a6b (patch) | |
tree | 7dfb50abf299342f778c549e73ba5a6f6c852c80 /invada-studio-fixes.patch | |
download | aur-03b5b69ec9bbc7ceb6dda289a415ba886e853a6b.tar.gz |
initial
Diffstat (limited to 'invada-studio-fixes.patch')
-rw-r--r-- | invada-studio-fixes.patch | 2293 |
1 files changed, 2293 insertions, 0 deletions
diff --git a/invada-studio-fixes.patch b/invada-studio-fixes.patch new file mode 100644 index 000000000000..b0b72ffe9ce8 --- /dev/null +++ b/invada-studio-fixes.patch @@ -0,0 +1,2293 @@ +# https://code.launchpad.net/~shanipribadi/invada-studio/fixes +# +# 104. By ShaniHP on 2013-06-03 +# destroy widget on plugingui cleanup (fix segfault on closing gui) +# +# 103. By falkTX on 2013-06-03 +# Update to latest LV2 spec +# +# 102. By Carl Hetherington on 2013-06-03 +# add denormal handling + +diff -Naurd a/plugin/inv_delay.c b/plugin/inv_delay.c +--- a/plugin/inv_delay.c 2009-08-16 08:56:09.000000000 +0200 ++++ b/plugin/inv_delay.c 2014-03-08 01:17:40.050457000 +0100 +@@ -28,6 +28,8 @@ + #include "library/common.h" + #include "inv_delay.h" + ++#define SMALL_TO_ZERO(f) if (fabs(f) < 1e-16) f = 0; ++ + static LV2_Descriptor *IDelayMonoDescriptor = NULL; + static LV2_Descriptor *IDelaySumDescriptor = NULL; + +@@ -906,7 +908,9 @@ + } + + // munge it ++ SMALL_TO_ZERO(In1FBmix); + In1FB = (1-fMunge)*In1FBmix + fMunge*ITube_do(In1FBmix,1+fMunge); ++ SMALL_TO_ZERO(In2FBmix); + In2FB = (1-fMunge)*In2FBmix + fMunge*ITube_do(In2FBmix,1+fMunge); + HPF1 = ((fHPFsamples-1) * HPF1 + In1FB) / fHPFsamples; + HPF2 = ((fHPFsamples-1) * HPF2 + In2FB) / fHPFsamples; +diff -Naurd a/plugin/inv_input.h b/plugin/inv_input.h +--- a/plugin/inv_input.h 2009-05-09 08:17:48.000000000 +0200 ++++ b/plugin/inv_input.h 2014-03-08 01:17:40.050457000 +0100 +@@ -18,8 +18,8 @@ + + */ + +-#define IINPUT_URI "http://invadarecords.com/plugins/lv2/input"; +-#define IINPUT_GUI_URI "http://invadarecords.com/plugins/lv2/input/gui"; ++#define IINPUT_URI "http://invadarecords.com/plugins/lv2/input" ++#define IINPUT_GUI_URI "http://invadarecords.com/plugins/lv2/input/gui" + #define IINPUT_BYPASS 0 + #define IINPUT_PHASEL 1 + #define IINPUT_PHASER 2 +@@ -32,11 +32,11 @@ + #define IINPUT_AUDIO_OUTL 9 + #define IINPUT_AUDIO_OUTR 10 + #define IINPUT_METER_INL 11 +-#define IINPUT_METER_INR 12 ++#define IINPUT_METER_INR 12 + #define IINPUT_METER_OUTL 13 +-#define IINPUT_METER_OUTR 14 +-#define IINPUT_METER_PHASE 15 +-#define IINPUT_METER_DRIVE 16 ++#define IINPUT_METER_OUTR 14 ++#define IINPUT_METER_PHASE 15 ++#define IINPUT_METER_DRIVE 16 + + /* control conversion function */ + float convertParam(unsigned long param, float value, double sr); +diff -Naurd a/plugin/inv_meter.c b/plugin/inv_meter.c +--- a/plugin/inv_meter.c 2009-08-09 08:57:23.000000000 +0200 ++++ b/plugin/inv_meter.c 2014-03-08 01:17:40.050457000 +0100 +@@ -320,7 +320,9 @@ + plugin->EnvVuLLast = (fabs(EnvVuL)<1.0e-10) ? 0.f : EnvVuL; + plugin->EnvVuRLast = (fabs(EnvVuR)<1.0e-10) ? 0.f : EnvVuR; + plugin->EnvPhaseLast = (fabs(EnvPhase)<1.0e-10) ? 0.f : EnvPhase; ++ filter=plugin->filters; + for(i=0;i<FILTER_COUNT;i++) { ++ denormalBandpassFilter(&filter[i]); + plugin->EnvSpecLast[i] = (fabs(EnvSpec[i])<1.0e-10) ? 0.f : EnvSpec[i]; + } + +diff -Naurd a/plugin/inv_meter.h b/plugin/inv_meter.h +--- a/plugin/inv_meter.h 2009-08-08 11:00:52.000000000 +0200 ++++ b/plugin/inv_meter.h 2014-03-08 01:17:40.050457000 +0100 +@@ -18,8 +18,8 @@ + + */ + +-#define IMETER_URI "http://invadarecords.com/plugins/lv2/meter"; +-#define IMETER_GUI_URI "http://invadarecords.com/plugins/lv2/meter/gui"; ++#define IMETER_URI "http://invadarecords.com/plugins/lv2/meter" ++#define IMETER_GUI_URI "http://invadarecords.com/plugins/lv2/meter/gui" + #define IMETER_BYPASS 0 + #define IMETER_AUDIO_INL 1 + #define IMETER_AUDIO_INR 2 +diff -Naurd a/plugin/inv_testtone.h b/plugin/inv_testtone.h +--- a/plugin/inv_testtone.h 2009-06-30 00:37:22.000000000 +0200 ++++ b/plugin/inv_testtone.h 2014-03-08 01:17:40.050457000 +0100 +@@ -18,8 +18,8 @@ + + */ + +-#define ITONE_URI "http://invadarecords.com/plugins/lv2/testtone"; +-#define ITONE_GUI_URI "http://invadarecords.com/plugins/lv2/testtone/gui"; ++#define ITONE_URI "http://invadarecords.com/plugins/lv2/testtone" ++#define ITONE_GUI_URI "http://invadarecords.com/plugins/lv2/testtone/gui" + #define ITONE_ACTIVE 0 + #define ITONE_FREQ 1 + #define ITONE_TRIM 2 +diff -Naurd a/plugin/library/common.c b/plugin/library/common.c +--- a/plugin/library/common.c 2009-08-16 09:16:44.000000000 +0200 ++++ b/plugin/library/common.c 2014-03-08 01:17:40.050457000 +0100 +@@ -27,6 +27,7 @@ + #include <lv2.h> + #include "common.h" + ++#define SMALL_TO_ZERO(f) if (fabs(f) < 1e-16) f = 0; + + /* a function that checks to see if a control has been changed and calls the provided conversion fuction */ + void +@@ -99,6 +100,8 @@ + { + float valueA; + ++ SMALL_TO_ZERO(audio_value); ++ + valueA=fabs(audio_value); + + return (valueA > envelope_value) ? Env->attack * (valueA - envelope_value) : Env->decay * (valueA - envelope_value); +@@ -601,5 +604,16 @@ + } + } + ++void ++denormalBandpassFilter(struct FilterP *f) ++{ ++ int i; + ++ for(i=0;i<2;i++) { ++ f->x[i] = (fabs(f->x[i])<1.0e-10) ? 0.f : f->x[i]; ++ f->x2[i] = (fabs(f->x2[i])<1.0e-10) ? 0.f : f->x2[i]; ++ f->y[i] = (fabs(f->y[i])<1.0e-10) ? 0.f : f->y[i]; ++ f->y2[i] = (fabs(f->y2[i])<1.0e-10) ? 0.f : f->y2[i]; ++ } ++} + +diff -Naurd a/plugin/library/common.h b/plugin/library/common.h +--- a/plugin/library/common.h 2009-08-16 09:16:57.000000000 +0200 ++++ b/plugin/library/common.h 2014-03-08 01:17:40.050457000 +0100 +@@ -109,5 +109,6 @@ + /* Butterworth bandpass for spectral analysier */ + void initBandpassFilter(struct FilterP *f, double sr, double cf, double bw); + float applyBandpassFilter(struct FilterP *f, float in); ++void denormalBandpassFilter(struct FilterP *f); + + #endif /*__INVADA_COMMON_H */ +diff -Naurd a/plugingui/gtk/inv_input_gui.glade b/plugingui/gtk/inv_input_gui.glade +--- a/plugingui/gtk/inv_input_gui.glade 2009-05-09 13:03:37.000000000 +0200 ++++ b/plugingui/gtk/inv_input_gui.glade 2014-03-08 01:17:40.050457000 +0100 +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> +-<!--Generated with glade3 3.4.5 on Sat May 9 21:03:37 2009 --> ++<!--Generated with glade3 3.4.5 on Sun Aug 30 13:31:21 2009 --> + <glade-interface> + <widget class="GtkWindow" id="input_window"> + <property name="type">GTK_WINDOW_POPUP</property> +@@ -83,28 +83,19 @@ + <property name="n_rows">2</property> + <property name="n_columns">2</property> + <child> +- <widget class="GtkLabel" id="label4"> +- <property name="visible">True</property> +- <property name="yalign">0.20000000298023224</property> +- <property name="label" translatable="yes">Audio In</property> +- <property name="justify">GTK_JUSTIFY_RIGHT</property> +- <property name="width_chars">4</property> +- </widget> +- <packing> +- <property name="y_options"></property> +- </packing> +- </child> +- <child> +- <widget class="GtkLabel" id="label5"> ++ <widget class="GtkAlignment" id="alignment_meter_out"> + <property name="visible">True</property> +- <property name="yalign">0.20000000298023224</property> +- <property name="label" translatable="yes">Audio Out</property> +- <property name="justify">GTK_JUSTIFY_RIGHT</property> +- <property name="width_chars">5</property> ++ <property name="xscale">0</property> ++ <property name="yscale">0</property> ++ <child> ++ <placeholder/> ++ </child> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> ++ <property name="top_attach">1</property> ++ <property name="bottom_attach">2</property> + <property name="y_options"></property> + </packing> + </child> +@@ -124,19 +115,28 @@ + </packing> + </child> + <child> +- <widget class="GtkAlignment" id="alignment_meter_out"> ++ <widget class="GtkLabel" id="label5"> + <property name="visible">True</property> +- <property name="xscale">0</property> +- <property name="yscale">0</property> +- <child> +- <placeholder/> +- </child> ++ <property name="yalign">0.20000000298023224</property> ++ <property name="label" translatable="yes">Audio Out</property> ++ <property name="justify">GTK_JUSTIFY_RIGHT</property> ++ <property name="width_chars">5</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> +- <property name="top_attach">1</property> +- <property name="bottom_attach">2</property> ++ <property name="y_options"></property> ++ </packing> ++ </child> ++ <child> ++ <widget class="GtkLabel" id="label4"> ++ <property name="visible">True</property> ++ <property name="yalign">0.20000000298023224</property> ++ <property name="label" translatable="yes">Audio In</property> ++ <property name="justify">GTK_JUSTIFY_RIGHT</property> ++ <property name="width_chars">4</property> ++ </widget> ++ <packing> + <property name="y_options"></property> + </packing> + </child> +@@ -191,7 +191,7 @@ + <child> + <widget class="GtkLabel" id="label10"> + <property name="visible">True</property> +- <property name="label" translatable="yes">Phase</property> ++ <property name="label" translatable="yes">Stereo Width</property> + <property name="use_markup">True</property> + </widget> + <packing> +@@ -221,19 +221,57 @@ + <property name="n_columns">5</property> + <property name="row_spacing">2</property> + <child> +- <widget class="GtkFrame" id="frame-softclip"> ++ <widget class="GtkFrame" id="frame-width"> + <property name="visible">True</property> + <property name="label_xalign">0.5</property> + <child> +- <widget class="GtkAlignment" id="alignment1"> ++ <widget class="GtkAlignment" id="alignment_width_knob"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> ++ <property name="top_padding">4</property> ++ <property name="bottom_padding">4</property> ++ <property name="left_padding">4</property> ++ <property name="right_padding">4</property> + <child> +- <widget class="GtkVBox" id="vbox1"> ++ <placeholder/> ++ </child> ++ </widget> ++ </child> ++ <child> ++ <widget class="GtkLabel" id="label3"> ++ <property name="visible">True</property> ++ <property name="label" translatable="yes">Width</property> ++ <property name="use_markup">True</property> ++ </widget> ++ <packing> ++ <property name="type">label_item</property> ++ </packing> ++ </child> ++ </widget> ++ <packing> ++ <property name="left_attach">3</property> ++ <property name="right_attach">4</property> ++ <property name="x_options">GTK_EXPAND</property> ++ <property name="y_options">GTK_FILL</property> ++ <property name="x_padding">2</property> ++ <property name="y_padding">2</property> ++ </packing> ++ </child> ++ <child> ++ <widget class="GtkFrame" id="frame-phase"> ++ <property name="visible">True</property> ++ <property name="label_xalign">0.5</property> ++ <child> ++ <widget class="GtkAlignment" id="alignment2"> ++ <property name="visible">True</property> ++ <property name="xscale">0</property> ++ <property name="yscale">0</property> ++ <child> ++ <widget class="GtkVBox" id="vbox2"> + <property name="visible">True</property> + <child> +- <widget class="GtkAlignment" id="alignment_noclip_toggle"> ++ <widget class="GtkAlignment" id="alignment_phaseL"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> +@@ -247,7 +285,7 @@ + </widget> + </child> + <child> +- <widget class="GtkAlignment" id="alignment_noclip_lamp"> ++ <widget class="GtkAlignment" id="alignment_phaseR"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> +@@ -268,9 +306,9 @@ + </widget> + </child> + <child> +- <widget class="GtkLabel" id="label9"> ++ <widget class="GtkLabel" id="label2"> + <property name="visible">True</property> +- <property name="label" translatable="yes">Soft Clip</property> ++ <property name="label" translatable="yes">Phase</property> + <property name="use_markup">True</property> + </widget> + <packing> +@@ -279,8 +317,6 @@ + </child> + </widget> + <packing> +- <property name="left_attach">4</property> +- <property name="right_attach">5</property> + <property name="x_options">GTK_EXPAND</property> + <property name="y_options">GTK_FILL</property> + <property name="x_padding">2</property> +@@ -288,11 +324,11 @@ + </packing> + </child> + <child> +- <widget class="GtkFrame" id="frame-gain"> ++ <widget class="GtkFrame" id="frame-pan"> + <property name="visible">True</property> + <property name="label_xalign">0.5</property> + <child> +- <widget class="GtkAlignment" id="alignment_gain_knob"> ++ <widget class="GtkAlignment" id="alignment_pan_knob"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> +@@ -306,9 +342,9 @@ + </widget> + </child> + <child> +- <widget class="GtkLabel" id="label8"> ++ <widget class="GtkLabel" id="label6"> + <property name="visible">True</property> +- <property name="label" translatable="yes">Gain</property> ++ <property name="label" translatable="yes">Pan</property> + <property name="use_markup">True</property> + </widget> + <packing> +@@ -317,8 +353,8 @@ + </child> + </widget> + <packing> +- <property name="left_attach">1</property> +- <property name="right_attach">2</property> ++ <property name="left_attach">2</property> ++ <property name="right_attach">3</property> + <property name="x_options">GTK_EXPAND</property> + <property name="y_options">GTK_FILL</property> + <property name="x_padding">2</property> +@@ -326,11 +362,11 @@ + </packing> + </child> + <child> +- <widget class="GtkFrame" id="frame-pan"> ++ <widget class="GtkFrame" id="frame-gain"> + <property name="visible">True</property> + <property name="label_xalign">0.5</property> + <child> +- <widget class="GtkAlignment" id="alignment_pan_knob"> ++ <widget class="GtkAlignment" id="alignment_gain_knob"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> +@@ -344,9 +380,9 @@ + </widget> + </child> + <child> +- <widget class="GtkLabel" id="label6"> ++ <widget class="GtkLabel" id="label8"> + <property name="visible">True</property> +- <property name="label" translatable="yes">Pan</property> ++ <property name="label" translatable="yes">Gain</property> + <property name="use_markup">True</property> + </widget> + <packing> +@@ -355,8 +391,8 @@ + </child> + </widget> + <packing> +- <property name="left_attach">2</property> +- <property name="right_attach">3</property> ++ <property name="left_attach">1</property> ++ <property name="right_attach">2</property> + <property name="x_options">GTK_EXPAND</property> + <property name="y_options">GTK_FILL</property> + <property name="x_padding">2</property> +@@ -364,19 +400,19 @@ + </packing> + </child> + <child> +- <widget class="GtkFrame" id="frame-phase"> ++ <widget class="GtkFrame" id="frame-softclip"> + <property name="visible">True</property> + <property name="label_xalign">0.5</property> + <child> +- <widget class="GtkAlignment" id="alignment2"> ++ <widget class="GtkAlignment" id="alignment1"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <child> +- <widget class="GtkVBox" id="vbox2"> ++ <widget class="GtkVBox" id="vbox1"> + <property name="visible">True</property> + <child> +- <widget class="GtkAlignment" id="alignment_phaseL"> ++ <widget class="GtkAlignment" id="alignment_noclip_toggle"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> +@@ -390,7 +426,7 @@ + </widget> + </child> + <child> +- <widget class="GtkAlignment" id="alignment_phaseR"> ++ <widget class="GtkAlignment" id="alignment_noclip_lamp"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> +@@ -411,45 +447,9 @@ + </widget> + </child> + <child> +- <widget class="GtkLabel" id="label2"> +- <property name="visible">True</property> +- <property name="label" translatable="yes">Phase</property> +- <property name="use_markup">True</property> +- </widget> +- <packing> +- <property name="type">label_item</property> +- </packing> +- </child> +- </widget> +- <packing> +- <property name="x_options">GTK_EXPAND</property> +- <property name="y_options">GTK_FILL</property> +- <property name="x_padding">2</property> +- <property name="y_padding">2</property> +- </packing> +- </child> +- <child> +- <widget class="GtkFrame" id="frame-width"> +- <property name="visible">True</property> +- <property name="label_xalign">0.5</property> +- <child> +- <widget class="GtkAlignment" id="alignment_width_knob"> +- <property name="visible">True</property> +- <property name="xscale">0</property> +- <property name="yscale">0</property> +- <property name="top_padding">4</property> +- <property name="bottom_padding">4</property> +- <property name="left_padding">4</property> +- <property name="right_padding">4</property> +- <child> +- <placeholder/> +- </child> +- </widget> +- </child> +- <child> +- <widget class="GtkLabel" id="label3"> ++ <widget class="GtkLabel" id="label9"> + <property name="visible">True</property> +- <property name="label" translatable="yes">Width</property> ++ <property name="label" translatable="yes">Soft Clip</property> + <property name="use_markup">True</property> + </widget> + <packing> +@@ -458,8 +458,8 @@ + </child> + </widget> + <packing> +- <property name="left_attach">3</property> +- <property name="right_attach">4</property> ++ <property name="left_attach">4</property> ++ <property name="right_attach">5</property> + <property name="x_options">GTK_EXPAND</property> + <property name="y_options">GTK_FILL</property> + <property name="x_padding">2</property> +diff -Naurd a/plugingui/gtk/inv_input_gui.xml b/plugingui/gtk/inv_input_gui.xml +--- a/plugingui/gtk/inv_input_gui.xml 2009-05-09 13:04:43.000000000 +0200 ++++ b/plugingui/gtk/inv_input_gui.xml 2014-03-08 01:17:40.050457000 +0100 +@@ -1,5 +1,5 @@ + <?xml version="1.0"?> +-<!--Generated with glade3 3.4.5 on Sat May 9 21:03:37 2009 --> ++<!--Generated with glade3 3.4.5 on Sun Aug 30 13:31:21 2009 --> + <interface> + <object class="GtkWindow" id="input_window"> + <property name="type">GTK_WINDOW_POPUP</property> +@@ -82,28 +82,19 @@ + <property name="n_rows">2</property> + <property name="n_columns">2</property> + <child> +- <object class="GtkLabel" id="label4"> +- <property name="visible">True</property> +- <property name="yalign">0.20000000298023224</property> +- <property name="label" translatable="yes">Audio In</property> +- <property name="justify">GTK_JUSTIFY_RIGHT</property> +- <property name="width_chars">4</property> +- </object> +- <packing> +- <property name="y_options"/> +- </packing> +- </child> +- <child> +- <object class="GtkLabel" id="label5"> ++ <object class="GtkAlignment" id="alignment_meter_out"> + <property name="visible">True</property> +- <property name="yalign">0.20000000298023224</property> +- <property name="label" translatable="yes">Audio Out</property> +- <property name="justify">GTK_JUSTIFY_RIGHT</property> +- <property name="width_chars">5</property> ++ <property name="xscale">0</property> ++ <property name="yscale">0</property> ++ <child> ++ <placeholder/> ++ </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> ++ <property name="top_attach">1</property> ++ <property name="bottom_attach">2</property> + <property name="y_options"/> + </packing> + </child> +@@ -123,19 +114,28 @@ + </packing> + </child> + <child> +- <object class="GtkAlignment" id="alignment_meter_out"> ++ <object class="GtkLabel" id="label5"> + <property name="visible">True</property> +- <property name="xscale">0</property> +- <property name="yscale">0</property> +- <child> +- <placeholder/> +- </child> ++ <property name="yalign">0.20000000298023224</property> ++ <property name="label" translatable="yes">Audio Out</property> ++ <property name="justify">GTK_JUSTIFY_RIGHT</property> ++ <property name="width_chars">5</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> +- <property name="top_attach">1</property> +- <property name="bottom_attach">2</property> ++ <property name="y_options"/> ++ </packing> ++ </child> ++ <child> ++ <object class="GtkLabel" id="label4"> ++ <property name="visible">True</property> ++ <property name="yalign">0.20000000298023224</property> ++ <property name="label" translatable="yes">Audio In</property> ++ <property name="justify">GTK_JUSTIFY_RIGHT</property> ++ <property name="width_chars">4</property> ++ </object> ++ <packing> + <property name="y_options"/> + </packing> + </child> +@@ -187,7 +187,7 @@ + <child type="label"> + <object class="GtkLabel" id="label10"> + <property name="visible">True</property> +- <property name="label" translatable="yes">Phase</property> ++ <property name="label" translatable="yes">Stereo Width</property> + <property name="use_markup">True</property> + </object> + </child> +@@ -214,19 +214,54 @@ + <property name="n_columns">5</property> + <property name="row_spacing">2</property> + <child> +- <object class="GtkFrame" id="frame-softclip"> ++ <object class="GtkFrame" id="frame-width"> + <property name="visible">True</property> + <property name="label_xalign">0.5</property> + <child> +- <object class="GtkAlignment" id="alignment1"> ++ <object class="GtkAlignment" id="alignment_width_knob"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> ++ <property name="top_padding">4</property> ++ <property name="bottom_padding">4</property> ++ <property name="left_padding">4</property> ++ <property name="right_padding">4</property> + <child> +- <object class="GtkVBox" id="vbox1"> ++ <placeholder/> ++ </child> ++ </object> ++ </child> ++ <child type="label"> ++ <object class="GtkLabel" id="label3"> ++ <property name="visible">True</property> ++ <property name="label" translatable="yes">Width</property> ++ <property name="use_markup">True</property> ++ </object> ++ </child> ++ </object> ++ <packing> ++ <property name="left_attach">3</property> ++ <property name="right_attach">4</property> ++ <property name="x_options">GTK_EXPAND</property> ++ <property name="y_options">GTK_FILL</property> ++ <property name="x_padding">2</property> ++ <property name="y_padding">2</property> ++ </packing> ++ </child> ++ <child> ++ <object class="GtkFrame" id="frame-phase"> ++ <property name="visible">True</property> ++ <property name="label_xalign">0.5</property> ++ <child> ++ <object class="GtkAlignment" id="alignment2"> ++ <property name="visible">True</property> ++ <property name="xscale">0</property> ++ <property name="yscale">0</property> ++ <child> ++ <object class="GtkVBox" id="vbox2"> + <property name="visible">True</property> + <child> +- <object class="GtkAlignment" id="alignment_noclip_toggle"> ++ <object class="GtkAlignment" id="alignment_phaseL"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> +@@ -240,7 +275,7 @@ + </object> + </child> + <child> +- <object class="GtkAlignment" id="alignment_noclip_lamp"> ++ <object class="GtkAlignment" id="alignment_phaseR"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> +@@ -261,16 +296,14 @@ + </object> + </child> + <child type="label"> +- <object class="GtkLabel" id="label9"> ++ <object class="GtkLabel" id="label2"> + <property name="visible">True</property> +- <property name="label" translatable="yes">Soft Clip</property> ++ <property name="label" translatable="yes">Phase</property> + <property name="use_markup">True</property> + </object> + </child> + </object> + <packing> +- <property name="left_attach">4</property> +- <property name="right_attach">5</property> + <property name="x_options">GTK_EXPAND</property> + <property name="y_options">GTK_FILL</property> + <property name="x_padding">2</property> +@@ -278,11 +311,11 @@ + </packing> + </child> + <child> +- <object class="GtkFrame" id="frame-gain"> ++ <object class="GtkFrame" id="frame-pan"> + <property name="visible">True</property> + <property name="label_xalign">0.5</property> + <child> +- <object class="GtkAlignment" id="alignment_gain_knob"> ++ <object class="GtkAlignment" id="alignment_pan_knob"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> +@@ -296,16 +329,16 @@ + </object> + </child> + <child type="label"> +- <object class="GtkLabel" id="label8"> ++ <object class="GtkLabel" id="label6"> + <property name="visible">True</property> +- <property name="label" translatable="yes">Gain</property> ++ <property name="label" translatable="yes">Pan</property> + <property name="use_markup">True</property> + </object> + </child> + </object> + <packing> +- <property name="left_attach">1</property> +- <property name="right_attach">2</property> ++ <property name="left_attach">2</property> ++ <property name="right_attach">3</property> + <property name="x_options">GTK_EXPAND</property> + <property name="y_options">GTK_FILL</property> + <property name="x_padding">2</property> +@@ -313,11 +346,11 @@ + </packing> + </child> + <child> +- <object class="GtkFrame" id="frame-pan"> ++ <object class="GtkFrame" id="frame-gain"> + <property name="visible">True</property> + <property name="label_xalign">0.5</property> + <child> +- <object class="GtkAlignment" id="alignment_pan_knob"> ++ <object class="GtkAlignment" id="alignment_gain_knob"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> +@@ -331,16 +364,16 @@ + </object> + </child> + <child type="label"> +- <object class="GtkLabel" id="label6"> ++ <object class="GtkLabel" id="label8"> + <property name="visible">True</property> +- <property name="label" translatable="yes">Pan</property> ++ <property name="label" translatable="yes">Gain</property> + <property name="use_markup">True</property> + </object> + </child> + </object> + <packing> +- <property name="left_attach">2</property> +- <property name="right_attach">3</property> ++ <property name="left_attach">1</property> ++ <property name="right_attach">2</property> + <property name="x_options">GTK_EXPAND</property> + <property name="y_options">GTK_FILL</property> + <property name="x_padding">2</property> +@@ -348,19 +381,19 @@ + </packing> + </child> + <child> +- <object class="GtkFrame" id="frame-phase"> ++ <object class="GtkFrame" id="frame-softclip"> + <property name="visible">True</property> + <property name="label_xalign">0.5</property> + <child> +- <object class="GtkAlignment" id="alignment2"> ++ <object class="GtkAlignment" id="alignment1"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <child> +- <object class="GtkVBox" id="vbox2"> ++ <object class="GtkVBox" id="vbox1"> + <property name="visible">True</property> + <child> +- <object class="GtkAlignment" id="alignment_phaseL"> ++ <object class="GtkAlignment" id="alignment_noclip_toggle"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> +@@ -374,7 +407,7 @@ + </object> + </child> + <child> +- <object class="GtkAlignment" id="alignment_phaseR"> ++ <object class="GtkAlignment" id="alignment_noclip_lamp"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> +@@ -395,49 +428,16 @@ + </object> + </child> + <child type="label"> +- <object class="GtkLabel" id="label2"> +- <property name="visible">True</property> +- <property name="label" translatable="yes">Phase</property> +- <property name="use_markup">True</property> +- </object> +- </child> +- </object> +- <packing> +- <property name="x_options">GTK_EXPAND</property> +- <property name="y_options">GTK_FILL</property> +- <property name="x_padding">2</property> +- <property name="y_padding">2</property> +- </packing> +- </child> +- <child> +- <object class="GtkFrame" id="frame-width"> +- <property name="visible">True</property> +- <property name="label_xalign">0.5</property> +- <child> +- <object class="GtkAlignment" id="alignment_width_knob"> +- <property name="visible">True</property> +- <property name="xscale">0</property> +- <property name="yscale">0</property> +- <property name="top_padding">4</property> +- <property name="bottom_padding">4</property> +- <property name="left_padding">4</property> +- <property name="right_padding">4</property> +- <child> +- <placeholder/> +- </child> +- </object> +- </child> +- <child type="label"> +- <object class="GtkLabel" id="label3"> ++ <object class="GtkLabel" id="label9"> + <property name="visible">True</property> +- <property name="label" translatable="yes">Width</property> ++ <property name="label" translatable="yes">Soft Clip</property> + <property name="use_markup">True</property> + </object> + </child> + </object> + <packing> +- <property name="left_attach">3</property> +- <property name="right_attach">4</property> ++ <property name="left_attach">4</property> ++ <property name="right_attach">5</property> + <property name="x_options">GTK_EXPAND</property> + <property name="y_options">GTK_FILL</property> + <property name="x_padding">2</property> +diff -Naurd a/plugingui/gtk/inv_meter_gui.glade b/plugingui/gtk/inv_meter_gui.glade +--- a/plugingui/gtk/inv_meter_gui.glade 2009-08-22 09:36:39.000000000 +0200 ++++ b/plugingui/gtk/inv_meter_gui.glade 2014-03-08 01:17:40.050457000 +0100 +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> +-<!--Generated with glade3 3.4.5 on Sat Aug 22 17:36:39 2009 --> ++<!--Generated with glade3 3.4.5 on Sun Aug 30 13:31:06 2009 --> + <glade-interface> + <widget class="GtkWindow" id="meter_window"> + <property name="type">GTK_WINDOW_POPUP</property> +@@ -307,7 +307,7 @@ + <child> + <widget class="GtkLabel" id="label10"> + <property name="visible">True</property> +- <property name="label" translatable="yes">Phase</property> ++ <property name="label" translatable="yes">Stereo Width</property> + <property name="use_markup">True</property> + </widget> + <packing> +diff -Naurd a/plugingui/gtk/inv_meter_gui.xml b/plugingui/gtk/inv_meter_gui.xml +--- a/plugingui/gtk/inv_meter_gui.xml 2009-08-22 09:36:47.000000000 +0200 ++++ b/plugingui/gtk/inv_meter_gui.xml 2014-03-08 01:17:40.050457000 +0100 +@@ -1,5 +1,5 @@ + <?xml version="1.0"?> +-<!--Generated with glade3 3.4.5 on Sat Aug 22 17:36:39 2009 --> ++<!--Generated with glade3 3.4.5 on Sun Aug 30 13:31:06 2009 --> + <interface> + <object class="GtkWindow" id="meter_window"> + <property name="type">GTK_WINDOW_POPUP</property> +@@ -295,7 +295,7 @@ + <child type="label"> + <object class="GtkLabel" id="label10"> + <property name="visible">True</property> +- <property name="label" translatable="yes">Phase</property> ++ <property name="label" translatable="yes">Stereo Width</property> + <property name="use_markup">True</property> + </object> + </child> +diff -Naurd a/plugingui/inv_compressor_gui.c b/plugingui/inv_compressor_gui.c +--- a/plugingui/inv_compressor_gui.c 2009-07-04 12:51:18.000000000 +0200 ++++ b/plugingui/inv_compressor_gui.c 2014-03-08 01:17:40.050457000 +0100 +@@ -36,8 +36,6 @@ + #include "inv_compressor_gui.h" + + +-static LV2UI_Descriptor *ICompGuiDescriptor = NULL; +- + typedef struct { + GtkWidget *windowContainer; + GtkWidget *heading; +@@ -76,7 +74,7 @@ + + static LV2UI_Handle instantiateICompGui(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) + { +- ICompGui *pluginGui = (ICompGui *)malloc(sizeof(ICompGui)); ++ ICompGui *pluginGui = (ICompGui *)g_malloc0(sizeof(ICompGui)); + if(pluginGui==NULL) + return NULL; + +@@ -96,7 +94,7 @@ + builder = gtk_builder_new (); + file = g_strdup_printf("%s/gtk/inv_compressor_gui.xml",bundle_path); + gtk_builder_add_from_file (builder, file, &err); +- free(file); ++ g_free(file); + + window = GTK_WIDGET (gtk_builder_get_object (builder, "comp_window")); + +@@ -321,7 +319,11 @@ + + static void cleanupICompGui(LV2UI_Handle ui) + { +- return; ++ ICompGui *pluginGui = (ICompGui *)ui; ++ GtkWidget *window = (GtkWidget *) pluginGui->windowContainer; ++ gtk_widget_destroy(GTK_WIDGET(window)); ++ g_free(pluginGui); ++ return; + } + + +@@ -428,30 +430,23 @@ + } + + +-static void init() +-{ +- ICompGuiDescriptor = +- (LV2UI_Descriptor *)malloc(sizeof(LV2UI_Descriptor)); +- +- ICompGuiDescriptor->URI = ICOMP_GUI_URI; +- ICompGuiDescriptor->instantiate = instantiateICompGui; +- ICompGuiDescriptor->cleanup = cleanupICompGui; +- ICompGuiDescriptor->port_event = port_eventICompGui; +- ICompGuiDescriptor->extension_data = NULL; +- +-} ++static const ++LV2UI_Descriptor descriptor = { ++ ICOMP_GUI_URI, ++ &instantiateICompGui, ++ &cleanupICompGui, ++ &port_eventICompGui, ++ 0 ++}; + + ++LV2_SYMBOL_EXPORT + const LV2UI_Descriptor* lv2ui_descriptor(uint32_t index) + { +- if (!ICompGuiDescriptor) init(); +- +- switch (index) { +- case 0: +- return ICompGuiDescriptor; +- default: +- return NULL; +- } ++ if (index == 0) { ++ return &descriptor; ++ } ++ return 0; + } + + +diff -Naurd a/plugingui/inv_delay_gui.c b/plugingui/inv_delay_gui.c +--- a/plugingui/inv_delay_gui.c 2009-07-04 12:51:38.000000000 +0200 ++++ b/plugingui/inv_delay_gui.c 2014-03-08 01:17:40.050457000 +0100 +@@ -35,8 +35,6 @@ + #include "inv_delay_gui.h" + + +-static LV2UI_Descriptor *IDelayGuiDescriptor = NULL; +- + typedef struct { + GtkWidget *windowContainer; + GtkWidget *heading; +@@ -88,7 +86,7 @@ + static LV2UI_Handle + instantiateIDelayGui(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) + { +- IDelayGui *pluginGui = (IDelayGui *)malloc(sizeof(IDelayGui)); ++ IDelayGui *pluginGui = (IDelayGui *)g_malloc0(sizeof(IDelayGui)); + if(pluginGui==NULL) + return NULL; + +@@ -108,7 +106,7 @@ + builder = gtk_builder_new (); + file = g_strdup_printf("%s/gtk/inv_delay_gui.xml",bundle_path); + gtk_builder_add_from_file (builder, file, &err); +- free(file); ++ g_free(file); + + window = GTK_WIDGET (gtk_builder_get_object (builder, "delay_window")); + +@@ -410,7 +408,11 @@ + static void + cleanupIDelayGui(LV2UI_Handle ui) + { +- return; ++ IDelayGui *pluginGui = (IDelayGui *)ui; ++ GtkWidget *window = (GtkWidget *) pluginGui->windowContainer; ++ gtk_widget_destroy(GTK_WIDGET(window)); ++ g_free(pluginGui); ++ return; + } + + +@@ -544,31 +546,23 @@ + } + + +-static void +-init() +-{ +- IDelayGuiDescriptor = +- (LV2UI_Descriptor *)malloc(sizeof(LV2UI_Descriptor)); +- +- IDelayGuiDescriptor->URI = IDELAY_GUI_URI; +- IDelayGuiDescriptor->instantiate = instantiateIDelayGui; +- IDelayGuiDescriptor->cleanup = cleanupIDelayGui; +- IDelayGuiDescriptor->port_event = port_eventIDelayGui; +- IDelayGuiDescriptor->extension_data = NULL; +- +-} ++static const ++LV2UI_Descriptor descriptor = { ++ IDELAY_GUI_URI, ++ &instantiateIDelayGui, ++ &cleanupIDelayGui, ++ &port_eventIDelayGui, ++ 0 ++}; + + ++LV2_SYMBOL_EXPORT + const LV2UI_Descriptor* lv2ui_descriptor(uint32_t index) + { +- if (!IDelayGuiDescriptor) init(); +- +- switch (index) { +- case 0: +- return IDelayGuiDescriptor; +- default: +- return NULL; +- } ++ if (index == 0) { ++ return &descriptor; ++ } ++ return 0; + } + + +diff -Naurd a/plugingui/inv_erreverb_gui.c b/plugingui/inv_erreverb_gui.c +--- a/plugingui/inv_erreverb_gui.c 2009-07-04 08:22:56.000000000 +0200 ++++ b/plugingui/inv_erreverb_gui.c 2014-03-08 01:17:40.050457000 +0100 +@@ -35,8 +35,6 @@ + #include "inv_erreverb_gui.h" + + +-static LV2UI_Descriptor *IErReverbGuiDescriptor = NULL; +- + typedef struct { + GtkWidget *windowContainer; + GtkWidget *heading; +@@ -75,7 +73,7 @@ + static LV2UI_Handle + instantiateIErReverbGui(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) + { +- IErReverbGui *pluginGui = (IErReverbGui *)malloc(sizeof(IErReverbGui)); ++ IErReverbGui *pluginGui = (IErReverbGui *)g_malloc0(sizeof(IErReverbGui)); + if(pluginGui==NULL) + return NULL; + +@@ -95,7 +93,7 @@ + builder = gtk_builder_new (); + file = g_strdup_printf("%s/gtk/inv_erreverb_gui.xml",bundle_path); + gtk_builder_add_from_file (builder, file, &err); +- free(file); ++ g_free(file); + + window = GTK_WIDGET (gtk_builder_get_object (builder, "erreverb_window")); + +@@ -287,7 +285,11 @@ + static void + cleanupIErReverbGui(LV2UI_Handle ui) + { +- return; ++ IErReverbGui *pluginGui = (IErReverbGui *)ui; ++ GtkWidget *window = (GtkWidget *) pluginGui->windowContainer; ++ gtk_widget_destroy(GTK_WIDGET(window)); ++ g_free(pluginGui); ++ return; + } + + +@@ -392,31 +394,24 @@ + } + + +-static void +-init() +-{ +- IErReverbGuiDescriptor = +- (LV2UI_Descriptor *)malloc(sizeof(LV2UI_Descriptor)); +- +- IErReverbGuiDescriptor->URI = IERR_GUI_URI; +- IErReverbGuiDescriptor->instantiate = instantiateIErReverbGui; +- IErReverbGuiDescriptor->cleanup = cleanupIErReverbGui; +- IErReverbGuiDescriptor->port_event = port_eventIErReverbGui; +- IErReverbGuiDescriptor->extension_data = NULL; + +-} ++static const ++LV2UI_Descriptor descriptor = { ++ IERR_GUI_URI, ++ &instantiateIErReverbGui, ++ &cleanupIErReverbGui, ++ &port_eventIErReverbGui, ++ 0 ++}; + + ++LV2_SYMBOL_EXPORT + const LV2UI_Descriptor* lv2ui_descriptor(uint32_t index) + { +- if (!IErReverbGuiDescriptor) init(); +- +- switch (index) { +- case 0: +- return IErReverbGuiDescriptor; +- default: +- return NULL; +- } ++ if (index == 0) { ++ return &descriptor; ++ } ++ return 0; + } + + +diff -Naurd a/plugingui/inv_filter_gui.c b/plugingui/inv_filter_gui.c +--- a/plugingui/inv_filter_gui.c 2009-07-04 12:57:42.000000000 +0200 ++++ b/plugingui/inv_filter_gui.c 2014-03-08 01:17:40.050457000 +0100 +@@ -36,8 +36,6 @@ + #include "inv_filter_gui.h" + + +-static LV2UI_Descriptor *IFilterGuiDescriptor = NULL; +- + typedef struct { + GtkWidget *windowContainer; + GtkWidget *heading; +@@ -67,7 +65,7 @@ + static LV2UI_Handle + instantiateIFilterGui(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) + { +- IFilterGui *pluginGui = (IFilterGui *)malloc(sizeof(IFilterGui)); ++ IFilterGui *pluginGui = (IFilterGui *)g_malloc0(sizeof(IFilterGui)); + if(pluginGui==NULL) + return NULL; + +@@ -87,7 +85,7 @@ + builder = gtk_builder_new (); + file = g_strdup_printf("%s/gtk/inv_filter_gui.xml",bundle_path); + gtk_builder_add_from_file (builder, file, &err); +- free(file); ++ g_free(file); + + window = GTK_WIDGET (gtk_builder_get_object (builder, "filter_window")); + +@@ -250,7 +248,11 @@ + static void + cleanupIFilterGui(LV2UI_Handle ui) + { +- return; ++ IFilterGui *pluginGui = (IFilterGui *)ui; ++ GtkWidget *window = (GtkWidget *) pluginGui->windowContainer; ++ gtk_widget_destroy(GTK_WIDGET(window)); ++ g_free(pluginGui); ++ return; + } + + +@@ -325,31 +327,23 @@ + } + + +-static void +-init() +-{ +- IFilterGuiDescriptor = +- (LV2UI_Descriptor *)malloc(sizeof(LV2UI_Descriptor)); +- +- IFilterGuiDescriptor->URI = IFILTER_GUI_URI; +- IFilterGuiDescriptor->instantiate = instantiateIFilterGui; +- IFilterGuiDescriptor->cleanup = cleanupIFilterGui; +- IFilterGuiDescriptor->port_event = port_eventIFilterGui; +- IFilterGuiDescriptor->extension_data = NULL; +- +-} ++static const ++LV2UI_Descriptor descriptor = { ++ IFILTER_GUI_URI, ++ &instantiateIFilterGui, ++ &cleanupIFilterGui, ++ &port_eventIFilterGui, ++ 0 ++}; + + ++LV2_SYMBOL_EXPORT + const LV2UI_Descriptor* lv2ui_descriptor(uint32_t index) + { +- if (!IFilterGuiDescriptor) init(); +- +- switch (index) { +- case 0: +- return IFilterGuiDescriptor; +- default: +- return NULL; +- } ++ if (index == 0) { ++ return &descriptor; ++ } ++ return 0; + } + + +diff -Naurd a/plugingui/inv_input_gui.c b/plugingui/inv_input_gui.c +--- a/plugingui/inv_input_gui.c 2009-07-04 12:52:02.000000000 +0200 ++++ b/plugingui/inv_input_gui.c 2014-03-08 01:17:40.050457000 +0100 +@@ -36,8 +36,6 @@ + #include "inv_input_gui.h" + + +-static LV2UI_Descriptor *IInputGuiDescriptor = NULL; +- + typedef struct { + GtkWidget *windowContainer; + GtkWidget *heading; +@@ -74,7 +72,7 @@ + instantiateIInputGui(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) + { + +- IInputGui *pluginGui = (IInputGui *)malloc(sizeof(IInputGui)); ++ IInputGui *pluginGui = (IInputGui *)g_malloc0(sizeof(IInputGui)); + if(pluginGui==NULL) + return NULL; + +@@ -94,7 +92,7 @@ + builder = gtk_builder_new (); + file = g_strdup_printf("%s/gtk/inv_input_gui.xml",bundle_path); + gtk_builder_add_from_file (builder, file, &err); +- free(file); ++ g_free(file); + + window = GTK_WIDGET (gtk_builder_get_object (builder, "input_window")); + +@@ -277,7 +275,11 @@ + static void + cleanupIInputGui(LV2UI_Handle ui) + { +- return; ++ IInputGui *pluginGui = (IInputGui *)ui; ++ GtkWidget *window = (GtkWidget *) pluginGui->windowContainer; ++ gtk_widget_destroy(GTK_WIDGET(window)); ++ g_free(pluginGui); ++ return; + } + + +@@ -379,31 +381,23 @@ + } + + +-static void +-init() +-{ +- IInputGuiDescriptor = +- (LV2UI_Descriptor *)malloc(sizeof(LV2UI_Descriptor)); +- +- IInputGuiDescriptor->URI = IINPUT_GUI_URI; +- IInputGuiDescriptor->instantiate = instantiateIInputGui; +- IInputGuiDescriptor->cleanup = cleanupIInputGui; +- IInputGuiDescriptor->port_event = port_eventIInputGui; +- IInputGuiDescriptor->extension_data = NULL; +- +-} ++static const ++LV2UI_Descriptor descriptor = { ++ IINPUT_GUI_URI, ++ &instantiateIInputGui, ++ &cleanupIInputGui, ++ &port_eventIInputGui, ++ 0 ++}; + + ++LV2_SYMBOL_EXPORT + const LV2UI_Descriptor* lv2ui_descriptor(uint32_t index) + { +- if (!IInputGuiDescriptor) init(); +- +- switch (index) { +- case 0: +- return IInputGuiDescriptor; +- default: +- return NULL; +- } ++ if (index == 0) { ++ return &descriptor; ++ } ++ return 0; + } + + +diff -Naurd a/plugingui/inv_meter_gui.c b/plugingui/inv_meter_gui.c +--- a/plugingui/inv_meter_gui.c 2009-08-22 08:56:27.000000000 +0200 ++++ b/plugingui/inv_meter_gui.c 2014-03-08 01:17:40.050457000 +0100 +@@ -36,8 +36,6 @@ + #include "inv_meter_gui.h" + + +-static LV2UI_Descriptor *IMeterGuiDescriptor = NULL; +- + typedef struct { + GtkWidget *windowContainer; + GtkWidget *heading; +@@ -70,7 +68,7 @@ + instantiateIMeterGui(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) + { + +- IMeterGui *pluginGui = (IMeterGui *)malloc(sizeof(IMeterGui)); ++ IMeterGui *pluginGui = (IMeterGui *)g_malloc0(sizeof(IMeterGui)); + if(pluginGui==NULL) + return NULL; + +@@ -90,7 +88,7 @@ + builder = gtk_builder_new (); + file = g_strdup_printf("%s/gtk/inv_meter_gui.xml",bundle_path); + gtk_builder_add_from_file (builder, file, &err); +- free(file); ++ g_free(file); + + window = GTK_WIDGET (gtk_builder_get_object (builder, "meter_window")); + +@@ -185,7 +183,11 @@ + static void + cleanupIMeterGui(LV2UI_Handle ui) + { +- return; ++ IMeterGui *pluginGui = (IMeterGui *)ui; ++ GtkWidget *window = (GtkWidget *) pluginGui->windowContainer; ++ gtk_widget_destroy(GTK_WIDGET(window)); ++ g_free(pluginGui); ++ return; + } + + +@@ -291,31 +293,23 @@ + } + + +-static void +-init() +-{ +- IMeterGuiDescriptor = +- (LV2UI_Descriptor *)malloc(sizeof(LV2UI_Descriptor)); +- +- IMeterGuiDescriptor->URI = IMETER_GUI_URI; +- IMeterGuiDescriptor->instantiate = instantiateIMeterGui; +- IMeterGuiDescriptor->cleanup = cleanupIMeterGui; +- IMeterGuiDescriptor->port_event = port_eventIMeterGui; +- IMeterGuiDescriptor->extension_data = NULL; +- +-} ++static const ++LV2UI_Descriptor descriptor = { ++ IMETER_GUI_URI, ++ &instantiateIMeterGui, ++ &cleanupIMeterGui, ++ &port_eventIMeterGui, ++ 0 ++}; + + ++LV2_SYMBOL_EXPORT + const LV2UI_Descriptor* lv2ui_descriptor(uint32_t index) + { +- if (!IMeterGuiDescriptor) init(); +- +- switch (index) { +- case 0: +- return IMeterGuiDescriptor; +- default: +- return NULL; +- } ++ if (index == 0) { ++ return &descriptor; ++ } ++ return 0; + } + + +diff -Naurd a/plugingui/inv_phaser_gui.c b/plugingui/inv_phaser_gui.c +--- a/plugingui/inv_phaser_gui.c 2009-08-15 09:17:33.000000000 +0200 ++++ b/plugingui/inv_phaser_gui.c 2014-03-08 01:17:40.050457000 +0100 +@@ -35,8 +35,6 @@ + #include "inv_phaser_gui.h" + + +-static LV2UI_Descriptor *IPhaserGuiDescriptor = NULL; +- + typedef struct { + GtkWidget *windowContainer; + GtkWidget *heading; +@@ -71,7 +69,7 @@ + static LV2UI_Handle + instantiateIPhaserGui(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) + { +- IPhaserGui *pluginGui = (IPhaserGui *)malloc(sizeof(IPhaserGui)); ++ IPhaserGui *pluginGui = (IPhaserGui *)g_malloc0(sizeof(IPhaserGui)); + if(pluginGui==NULL) + return NULL; + +@@ -91,7 +89,7 @@ + builder = gtk_builder_new (); + file = g_strdup_printf("%s/gtk/inv_phaser_gui.xml",bundle_path); + gtk_builder_add_from_file (builder, file, &err); +- free(file); ++ g_free(file); + + window = GTK_WIDGET (gtk_builder_get_object (builder, "phaser_window")); + +@@ -278,7 +276,11 @@ + static void + cleanupIPhaserGui(LV2UI_Handle ui) + { +- return; ++ IPhaserGui *pluginGui = (IPhaserGui *)ui; ++ GtkWidget *window = (GtkWidget *) pluginGui->windowContainer; ++ gtk_widget_destroy(GTK_WIDGET(window)); ++ g_free(pluginGui); ++ return; + } + + +@@ -359,31 +361,23 @@ + } + + +-static void +-init() +-{ +- IPhaserGuiDescriptor = +- (LV2UI_Descriptor *)malloc(sizeof(LV2UI_Descriptor)); +- +- IPhaserGuiDescriptor->URI = IPHASER_GUI_URI; +- IPhaserGuiDescriptor->instantiate = instantiateIPhaserGui; +- IPhaserGuiDescriptor->cleanup = cleanupIPhaserGui; +- IPhaserGuiDescriptor->port_event = port_eventIPhaserGui; +- IPhaserGuiDescriptor->extension_data = NULL; +- +-} ++static const ++LV2UI_Descriptor descriptor = { ++ IPHASER_GUI_URI, ++ &instantiateIPhaserGui, ++ &cleanupIPhaserGui, ++ &port_eventIPhaserGui, ++ 0 ++}; + + ++LV2_SYMBOL_EXPORT + const LV2UI_Descriptor* lv2ui_descriptor(uint32_t index) + { +- if (!IPhaserGuiDescriptor) init(); +- +- switch (index) { +- case 0: +- return IPhaserGuiDescriptor; +- default: +- return NULL; +- } ++ if (index == 0) { ++ return &descriptor; ++ } ++ return 0; + } + + +diff -Naurd a/plugingui/inv_testtone_gui.c b/plugingui/inv_testtone_gui.c +--- a/plugingui/inv_testtone_gui.c 2009-08-23 07:06:02.000000000 +0200 ++++ b/plugingui/inv_testtone_gui.c 2014-03-08 01:17:40.050457000 +0100 +@@ -36,8 +36,6 @@ + #include "inv_testtone_gui.h" + + +-static LV2UI_Descriptor *IToneGuiDescriptor = NULL; +- + typedef struct { + GtkWidget *windowContainer; + GtkWidget *heading; +@@ -65,7 +63,7 @@ + instantiateIToneGui(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) + { + +- IToneGui *pluginGui = (IToneGui *)malloc(sizeof(IToneGui)); ++ IToneGui *pluginGui = (IToneGui *)g_malloc0(sizeof(IToneGui)); + if(pluginGui==NULL) + return NULL; + +@@ -85,7 +83,7 @@ + builder = gtk_builder_new (); + file = g_strdup_printf("%s/gtk/inv_testtone_gui.xml",bundle_path); + gtk_builder_add_from_file (builder, file, &err); +- free(file); ++ g_free(file); + + window = GTK_WIDGET (gtk_builder_get_object (builder, "testtone_window")); + +@@ -182,7 +180,11 @@ + static void + cleanupIToneGui(LV2UI_Handle ui) + { +- return; ++ IToneGui *pluginGui = (IToneGui *)ui; ++ GtkWidget *window = (GtkWidget *) pluginGui->windowContainer; ++ gtk_widget_destroy(GTK_WIDGET(window)); ++ g_free(pluginGui); ++ return; + } + + +@@ -233,33 +235,26 @@ + } + + +-static void +-init() +-{ +- IToneGuiDescriptor = +- (LV2UI_Descriptor *)malloc(sizeof(LV2UI_Descriptor)); +- +- IToneGuiDescriptor->URI = ITONE_GUI_URI; +- IToneGuiDescriptor->instantiate = instantiateIToneGui; +- IToneGuiDescriptor->cleanup = cleanupIToneGui; +- IToneGuiDescriptor->port_event = port_eventIToneGui; +- IToneGuiDescriptor->extension_data = NULL; +- +-} ++static const ++LV2UI_Descriptor descriptor = { ++ ITONE_GUI_URI, ++ &instantiateIToneGui, ++ &cleanupIToneGui, ++ &port_eventIToneGui, ++ 0 ++}; + + ++LV2_SYMBOL_EXPORT + const LV2UI_Descriptor* lv2ui_descriptor(uint32_t index) + { +- if (!IToneGuiDescriptor) init(); +- +- switch (index) { +- case 0: +- return IToneGuiDescriptor; +- default: +- return NULL; +- } ++ if (index == 0) { ++ return &descriptor; ++ } ++ return 0; + } + ++ + /*****************************************************************************/ + + static gint +diff -Naurd a/plugingui/inv_tube_gui.c b/plugingui/inv_tube_gui.c +--- a/plugingui/inv_tube_gui.c 2009-07-04 12:53:06.000000000 +0200 ++++ b/plugingui/inv_tube_gui.c 2014-03-08 01:17:40.050457000 +0100 +@@ -35,8 +35,6 @@ + #include "inv_tube_gui.h" + + +-static LV2UI_Descriptor *ITubeGuiDescriptor = NULL; +- + typedef struct { + GtkWidget *windowContainer; + GtkWidget *heading; +@@ -68,7 +66,7 @@ + instantiateITubeGui(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) + { + +- ITubeGui *pluginGui = (ITubeGui *)malloc(sizeof(ITubeGui)); ++ ITubeGui *pluginGui = (ITubeGui *)g_malloc0(sizeof(ITubeGui)); + if(pluginGui==NULL) + return NULL; + +@@ -88,7 +86,7 @@ + builder = gtk_builder_new (); + file = g_strdup_printf("%s/gtk/inv_tube_gui.xml",bundle_path); + gtk_builder_add_from_file (builder, file, &err); +- free(file); ++ g_free(file); + + window = GTK_WIDGET (gtk_builder_get_object (builder, "tube_window")); + +@@ -240,7 +238,11 @@ + static void + cleanupITubeGui(LV2UI_Handle ui) + { +- return; ++ ITubeGui *pluginGui = (ITubeGui *)ui; ++ GtkWidget *window = (GtkWidget *) pluginGui->windowContainer; ++ gtk_widget_destroy(GTK_WIDGET(window)); ++ g_free(pluginGui); ++ return; + } + + +@@ -317,31 +319,23 @@ + } + + +-static void +-init() +-{ +- ITubeGuiDescriptor = +- (LV2UI_Descriptor *)malloc(sizeof(LV2UI_Descriptor)); +- +- ITubeGuiDescriptor->URI = ITUBE_GUI_URI; +- ITubeGuiDescriptor->instantiate = instantiateITubeGui; +- ITubeGuiDescriptor->cleanup = cleanupITubeGui; +- ITubeGuiDescriptor->port_event = port_eventITubeGui; +- ITubeGuiDescriptor->extension_data = NULL; +- +-} ++static const ++LV2UI_Descriptor descriptor = { ++ ITUBE_GUI_URI, ++ &instantiateITubeGui, ++ &cleanupITubeGui, ++ &port_eventITubeGui, ++ 0 ++}; + + ++LV2_SYMBOL_EXPORT + const LV2UI_Descriptor* lv2ui_descriptor(uint32_t index) + { +- if (!ITubeGuiDescriptor) init(); +- +- switch (index) { +- case 0: +- return ITubeGuiDescriptor; +- default: +- return NULL; +- } ++ if (index == 0) { ++ return &descriptor; ++ } ++ return 0; + } + + +diff -Naurd a/rdf/inv_compressor.ttl b/rdf/inv_compressor.ttl +--- a/rdf/inv_compressor.ttl 2009-08-23 08:51:51.000000000 +0200 ++++ b/rdf/inv_compressor.ttl 2014-03-08 01:17:40.050457000 +0100 +@@ -1,19 +1,18 @@ +-@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +-@prefix foaf: <http://xmlns.com/foaf/0.1/> . +-@prefix doap: <http://usefulinc.com/ns/doap#> . +-@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +-@prefix units: <http://lv2plug.in/ns/extension/units#> . +-@prefix uiext: <http://lv2plug.in/ns/extensions/ui#> . +-@prefix epp: <http://lv2plug.in/ns/dev/extportinfo#> . +-@prefix dc: <http://dublincore.org/documents/dcmi-namespace/> . +-@prefix pg: <http://lv2plug.in/ns/dev/port-groups#> . ++@prefix lv2: <http://lv2plug.in/ns/lv2core#> . ++@prefix foaf: <http://xmlns.com/foaf/0.1/> . ++@prefix doap: <http://usefulinc.com/ns/doap#> . ++@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . ++@prefix units: <http://lv2plug.in/ns/extension/units#> . ++@prefix uiext: <http://lv2plug.in/ns/extensions/ui#> . ++@prefix pprops: <http://lv2plug.in/ns/ext/port-props#> . ++@prefix dct: <http://purl.org/dc/terms/> . ++@prefix pg: <http://lv2plug.in/ns/ext/port-groups#> . + + + <http://invadarecords.com/plugins/lv2/compressor/gui> + a uiext:GtkUI; + uiext:binary <inv_compressor_gui.so>; +- uiext:requiredFeature uiext:makeResident ; +- uiext:optionalFeature uiext:noUserResize ; ++ lv2:optionalFeature uiext:noUserResize ; + + uiext:portNotification [ + uiext:plugin <http://invadarecords.com/plugins/lv2/compressor/mono> ; +@@ -63,9 +62,9 @@ + foaf:mbox <mailto:fraser@arkhostings.com> ; + ] ; + doap:license <http://usefulinc.com/doap/licenses/gpl> ; +- lv2:optionalFeature lv2:hardRtCapable ; ++ lv2:optionalFeature lv2:hardRTCapable ; + uiext:ui <http://invadarecords.com/plugins/lv2/compressor/gui> ; +- dc:replaces <urn:ladspa:3308> ; ++ dct:replaces <urn:ladspa:3308> ; + + lv2:port [ + a lv2:InputPort, lv2:ControlPort ; +@@ -93,7 +92,7 @@ + lv2:minimum 0.00001 ; + lv2:maximum 0.750 ; + units:unit units:s ; +- lv2:portProperty epp:logarithmic ; ++ lv2:portProperty pprops:logarithmic ; + ] , [ + a lv2:InputPort, lv2:ControlPort ; + lv2:index 3 ; +@@ -103,7 +102,7 @@ + lv2:minimum 0.001 ; + lv2:maximum 5.0 ; + units:unit units:s ; +- lv2:portProperty epp:logarithmic ; ++ lv2:portProperty pprops:logarithmic ; + ] , [ + a lv2:InputPort, lv2:ControlPort ; + lv2:index 4 ; +@@ -210,9 +209,9 @@ + foaf:mbox <mailto:fraser@arkhostings.com> ; + ] ; + doap:license <http://usefulinc.com/doap/licenses/gpl> ; +- lv2:optionalFeature lv2:hardRtCapable ; ++ lv2:optionalFeature lv2:hardRTCapable ; + uiext:ui <http://invadarecords.com/plugins/lv2/compressor/gui> ; +- dc:replaces <urn:ladspa:3309> ; ++ dct:replaces <urn:ladspa:3309> ; + + lv2:port [ + a lv2:InputPort, lv2:ControlPort ; +@@ -240,7 +239,7 @@ + lv2:minimum 0.00001 ; + lv2:maximum 0.750 ; + units:unit units:s ; +- lv2:portProperty epp:logarithmic ; ++ lv2:portProperty pprops:logarithmic ; + ] , [ + a lv2:InputPort, lv2:ControlPort ; + lv2:index 3 ; +@@ -250,7 +249,7 @@ + lv2:minimum 0.001 ; + lv2:maximum 5.0 ; + units:unit units:s ; +- lv2:portProperty epp:logarithmic ; ++ lv2:portProperty pprops:logarithmic ; + ] , [ + a lv2:InputPort, lv2:ControlPort ; + lv2:index 4 ; +diff -Naurd a/rdf/inv_delay.ttl b/rdf/inv_delay.ttl +--- a/rdf/inv_delay.ttl 2009-08-23 08:52:29.000000000 +0200 ++++ b/rdf/inv_delay.ttl 2014-03-08 01:17:40.050457000 +0100 +@@ -1,17 +1,16 @@ +-@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +-@prefix foaf: <http://xmlns.com/foaf/0.1/> . +-@prefix doap: <http://usefulinc.com/ns/doap#> . +-@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +-@prefix units: <http://lv2plug.in/ns/extension/units#> . +-@prefix uiext: <http://lv2plug.in/ns/extensions/ui#> . +-@prefix epp: <http://lv2plug.in/ns/dev/extportinfo#> . +-@prefix pg: <http://lv2plug.in/ns/dev/port-groups#> . ++@prefix lv2: <http://lv2plug.in/ns/lv2core#> . ++@prefix foaf: <http://xmlns.com/foaf/0.1/> . ++@prefix doap: <http://usefulinc.com/ns/doap#> . ++@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . ++@prefix units: <http://lv2plug.in/ns/extension/units#> . ++@prefix uiext: <http://lv2plug.in/ns/extensions/ui#> . ++@prefix pprops: <http://lv2plug.in/ns/ext/port-props#> . ++@prefix pg: <http://lv2plug.in/ns/ext/port-groups#> . + + <http://invadarecords.com/plugins/lv2/delay/gui> + a uiext:GtkUI; + uiext:binary <inv_delay_gui.so>; +- uiext:requiredFeature uiext:makeResident ; +- uiext:optionalFeature uiext:noUserResize ; ++ lv2:optionalFeature uiext:noUserResize ; + + uiext:portNotification [ + uiext:plugin <http://invadarecords.com/plugins/lv2/delay/mono> ; +@@ -60,7 +59,7 @@ + foaf:mbox <mailto:fraser@arkhostings.com> ; + ] ; + doap:license <http://usefulinc.com/doap/licenses/gpl> ; +- lv2:optionalFeature lv2:hardRtCapable ; ++ lv2:optionalFeature lv2:hardRTCapable ; + uiext:ui <http://invadarecords.com/plugins/lv2/delay/gui>; + + lv2:port [ +@@ -108,7 +107,7 @@ + lv2:minimum 2.0 ; + lv2:maximum 200.0 ; + units:unit units:s ; +- lv2:portProperty epp:logarithmic ; ++ lv2:portProperty pprops:logarithmic ; + ] , [ + a lv2:InputPort, lv2:ControlPort ; + lv2:index 5 ; +@@ -127,7 +126,7 @@ + lv2:minimum 0.02 ; + lv2:maximum 2 ; + units:unit units:s ; +- lv2:portProperty epp:logarithmic ; ++ lv2:portProperty pprops:logarithmic ; + ] , [ + a lv2:InputPort, lv2:ControlPort ; + lv2:index 7 ; +@@ -163,7 +162,7 @@ + lv2:minimum 0.02 ; + lv2:maximum 2 ; + units:unit units:s ; +- lv2:portProperty epp:logarithmic ; ++ lv2:portProperty pprops:logarithmic ; + ] , [ + a lv2:InputPort, lv2:ControlPort ; + lv2:index 11 ; +@@ -270,7 +269,7 @@ + foaf:mbox <mailto:fraser@arkhostings.com> ; + ] ; + doap:license <http://usefulinc.com/doap/licenses/gpl> ; +- lv2:optionalFeature lv2:hardRtCapable ; ++ lv2:optionalFeature lv2:hardRTCapable ; + uiext:ui <http://invadarecords.com/plugins/lv2/delay/gui>; + + lv2:port [ +@@ -318,7 +317,7 @@ + lv2:minimum 2.0 ; + lv2:maximum 200.0 ; + units:unit units:s ; +- lv2:portProperty epp:logarithmic ; ++ lv2:portProperty pprops:logarithmic ; + ] , [ + a lv2:InputPort, lv2:ControlPort ; + lv2:index 5 ; +@@ -337,7 +336,7 @@ + lv2:minimum 0.02 ; + lv2:maximum 2 ; + units:unit units:s ; +- lv2:portProperty epp:logarithmic ; ++ lv2:portProperty pprops:logarithmic ; + ] , [ + a lv2:InputPort, lv2:ControlPort ; + lv2:index 7 ; +@@ -373,7 +372,7 @@ + lv2:minimum 0.02 ; + lv2:maximum 2 ; + units:unit units:s ; +- lv2:portProperty epp:logarithmic ; ++ lv2:portProperty pprops:logarithmic ; + ] , [ + a lv2:InputPort, lv2:ControlPort ; + lv2:index 11 ; +diff -Naurd a/rdf/inv_erreverb.ttl b/rdf/inv_erreverb.ttl +--- a/rdf/inv_erreverb.ttl 2009-08-23 08:52:51.000000000 +0200 ++++ b/rdf/inv_erreverb.ttl 2014-03-08 01:17:40.050457000 +0100 +@@ -1,19 +1,18 @@ +-@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +-@prefix foaf: <http://xmlns.com/foaf/0.1/> . +-@prefix doap: <http://usefulinc.com/ns/doap#> . +-@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +-@prefix units: <http://lv2plug.in/ns/extension/units#> . +-@prefix uiext: <http://lv2plug.in/ns/extensions/ui#> . +-@prefix epp: <http://lv2plug.in/ns/dev/extportinfo#> . +-@prefix dc: <http://dublincore.org/documents/dcmi-namespace/> . +-@prefix pg: <http://lv2plug.in/ns/dev/port-groups#> . ++@prefix lv2: <http://lv2plug.in/ns/lv2core#> . ++@prefix foaf: <http://xmlns.com/foaf/0.1/> . ++@prefix doap: <http://usefulinc.com/ns/doap#> . ++@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . ++@prefix units: <http://lv2plug.in/ns/extension/units#> . ++@prefix uiext: <http://lv2plug.in/ns/extensions/ui#> . ++@prefix pprops: <http://lv2plug.in/ns/ext/port-props#> . ++@prefix dct: <http://purl.org/dc/terms/> . ++@prefix pg: <http://lv2plug.in/ns/ext/port-groups#> . + + + <http://invadarecords.com/plugins/lv2/erreverb/gui> + a uiext:GtkUI; + uiext:binary <inv_erreverb_gui.so>; +- uiext:requiredFeature uiext:makeResident ; +- uiext:optionalFeature uiext:noUserResize ; ++ lv2:optionalFeature uiext:noUserResize ; + + uiext:portNotification [ + uiext:plugin <http://invadarecords.com/plugins/lv2/erreverb/mono> ; +@@ -56,9 +55,9 @@ + foaf:mbox <mailto:fraser@arkhostings.com> ; + ] ; + doap:license <http://usefulinc.com/doap/licenses/gpl> ; +- lv2:optionalFeature lv2:hardRtCapable ; ++ lv2:optionalFeature lv2:hardRTCapable ; + uiext:ui <http://invadarecords.com/plugins/lv2/erreverb/gui> ; +- dc:replaces <urn:ladspa:3311> ; ++ dct:replaces <urn:ladspa:3311> ; + + lv2:port [ + a lv2:InputPort, lv2:ControlPort ; +@@ -137,7 +136,7 @@ + lv2:minimum 20.0 ; + lv2:maximum 2000.0 ; + units:unit units:hz ; +- lv2:portProperty epp:logarithmic ; ++ lv2:portProperty pprops:logarithmic ; + ] , [ + a lv2:InputPort, lv2:ControlPort ; + lv2:index 9 ; +@@ -229,9 +228,9 @@ + foaf:mbox <mailto:fraser@arkhostings.com> ; + ] ; + doap:license <http://usefulinc.com/doap/licenses/gpl> ; +- lv2:optionalFeature lv2:hardRtCapable ; ++ lv2:optionalFeature lv2:hardRTCapable ; + uiext:ui <http://invadarecords.com/plugins/lv2/erreverb/gui> ; +- dc:replaces <urn:ladspa:3312> ; ++ dct:replaces <urn:ladspa:3312> ; + + lv2:port [ + a lv2:InputPort, lv2:ControlPort ; +@@ -310,7 +309,7 @@ + lv2:minimum 20.0 ; + lv2:maximum 2000.0 ; + units:unit units:hz ; +- lv2:portProperty epp:logarithmic ; ++ lv2:portProperty pprops:logarithmic ; + ] , [ + a lv2:InputPort, lv2:ControlPort ; + lv2:index 9 ; +diff -Naurd a/rdf/inv_filter.ttl b/rdf/inv_filter.ttl +--- a/rdf/inv_filter.ttl 2009-08-23 08:53:27.000000000 +0200 ++++ b/rdf/inv_filter.ttl 2014-03-08 01:17:40.050457000 +0100 +@@ -1,19 +1,18 @@ +-@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +-@prefix foaf: <http://xmlns.com/foaf/0.1/> . +-@prefix doap: <http://usefulinc.com/ns/doap#> . +-@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +-@prefix units: <http://lv2plug.in/ns/extension/units#> . +-@prefix uiext: <http://lv2plug.in/ns/extensions/ui#> . +-@prefix epp: <http://lv2plug.in/ns/dev/extportinfo#> . +-@prefix dc: <http://dublincore.org/documents/dcmi-namespace/> . +-@prefix pg: <http://lv2plug.in/ns/dev/port-groups#> . ++@prefix lv2: <http://lv2plug.in/ns/lv2core#> . ++@prefix foaf: <http://xmlns.com/foaf/0.1/> . ++@prefix doap: <http://usefulinc.com/ns/doap#> . ++@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . ++@prefix units: <http://lv2plug.in/ns/extension/units#> . ++@prefix uiext: <http://lv2plug.in/ns/extensions/ui#> . ++@prefix pprops: <http://lv2plug.in/ns/ext/port-props#> . ++@prefix dct: <http://purl.org/dc/terms/> . ++@prefix pg: <http://lv2plug.in/ns/ext/port-groups#> . + + + <http://invadarecords.com/plugins/lv2/filter/gui> + a uiext:GtkUI; + uiext:binary <inv_filter_gui.so>; +- uiext:requiredFeature uiext:makeResident ; +- uiext:optionalFeature uiext:noUserResize ; ++ lv2:optionalFeature uiext:noUserResize ; + + uiext:portNotification [ + uiext:plugin <http://invadarecords.com/plugins/lv2/filter/lpf/mono> ; +@@ -87,9 +86,9 @@ + foaf:mbox <mailto:fraser@arkhostings.com> ; + ] ; + doap:license <http://usefulinc.com/doap/licenses/gpl> ; +- lv2:optionalFeature lv2:hardRtCapable ; ++ lv2:optionalFeature lv2:hardRTCapable ; + uiext:ui <http://invadarecords.com/plugins/lv2/filter/gui> ; +- dc:replaces <urn:ladspa:3302> ; ++ dct:replaces <urn:ladspa:3302> ; + + lv2:port [ + a lv2:InputPort, lv2:ControlPort ; +@@ -109,7 +108,7 @@ + lv2:minimum 20 ; + lv2:maximum 20000 ; + units:unit units:hz ; +- lv2:portProperty epp:logarithmic ; ++ lv2:portProperty pprops:logarithmic ; + ] , [ + a lv2:InputPort, lv2:ControlPort ; + lv2:index 2 ; +@@ -190,9 +189,9 @@ + foaf:mbox <mailto:fraser@arkhostings.com> ; + ] ; + doap:license <http://usefulinc.com/doap/licenses/gpl> ; +- lv2:optionalFeature lv2:hardRtCapable ; ++ lv2:optionalFeature lv2:hardRTCapable ; + uiext:ui <http://invadarecords.com/plugins/lv2/filter/gui> ; +- dc:replaces <urn:ladspa:3304> ; ++ dct:replaces <urn:ladspa:3304> ; + + lv2:port [ + a lv2:InputPort, lv2:ControlPort ; +@@ -212,7 +211,7 @@ + lv2:minimum 20 ; + lv2:maximum 20000 ; + units:unit units:hz ; +- lv2:portProperty epp:logarithmic ; ++ lv2:portProperty pprops:logarithmic ; + ] , [ + a lv2:InputPort, lv2:ControlPort ; + lv2:index 2 ; +@@ -319,9 +318,9 @@ + foaf:mbox <mailto:fraser@arkhostings.com> ; + ] ; + doap:license <http://usefulinc.com/doap/licenses/gpl> ; +- lv2:optionalFeature lv2:hardRtCapable ; ++ lv2:optionalFeature lv2:hardRTCapable ; + uiext:ui <http://invadarecords.com/plugins/lv2/filter/gui> ; +- dc:replaces <urn:ladspa:3303> ; ++ dct:replaces <urn:ladspa:3303> ; + + lv2:port [ + a lv2:InputPort, lv2:ControlPort ; +@@ -341,7 +340,7 @@ + lv2:minimum 20 ; + lv2:maximum 20000 ; + units:unit units:hz ; +- lv2:portProperty epp:logarithmic ; ++ lv2:portProperty pprops:logarithmic ; + ] , [ + a lv2:InputPort, lv2:ControlPort ; + lv2:index 2 ; +@@ -422,9 +421,9 @@ + foaf:mbox <mailto:fraser@arkhostings.com> ; + ] ; + doap:license <http://usefulinc.com/doap/licenses/gpl> ; +- lv2:optionalFeature lv2:hardRtCapable ; ++ lv2:optionalFeature lv2:hardRTCapable ; + uiext:ui <http://invadarecords.com/plugins/lv2/filter/gui> ; +- dc:replaces <urn:ladspa:3305> ; ++ dct:replaces <urn:ladspa:3305> ; + + lv2:port [ + a lv2:InputPort, lv2:ControlPort ; +@@ -444,7 +443,7 @@ + lv2:minimum 20 ; + lv2:maximum 20000 ; + units:unit units:hz ; +- lv2:portProperty epp:logarithmic ; ++ lv2:portProperty pprops:logarithmic ; + ] , [ + a lv2:InputPort, lv2:ControlPort ; + lv2:index 2 ; +diff -Naurd a/rdf/inv_input.ttl b/rdf/inv_input.ttl +--- a/rdf/inv_input.ttl 2009-08-23 08:53:43.000000000 +0200 ++++ b/rdf/inv_input.ttl 2014-03-08 01:17:40.050457000 +0100 +@@ -4,15 +4,14 @@ + @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . + @prefix units: <http://lv2plug.in/ns/extension/units#> . + @prefix uiext: <http://lv2plug.in/ns/extensions/ui#> . +-@prefix dc: <http://dublincore.org/documents/dcmi-namespace/> . +-@prefix pg: <http://lv2plug.in/ns/dev/port-groups#> . ++@prefix dct: <http://purl.org/dc/terms/> . ++@prefix pg: <http://lv2plug.in/ns/ext/port-groups#> . + + + <http://invadarecords.com/plugins/lv2/input/gui> + a uiext:GtkUI; + uiext:binary <inv_input_gui.so>; +- uiext:requiredFeature uiext:makeResident ; +- uiext:optionalFeature uiext:noUserResize ; ++ lv2:optionalFeature uiext:noUserResize ; + + uiext:portNotification [ + uiext:plugin <http://invadarecords.com/plugins/lv2/input> ; +@@ -58,9 +57,9 @@ + foaf:homepage <http://www.invadarecords.com/Downloads.php?ID=00000264> ; + foaf:mbox <mailto:fraser@arkhostings.com> ; + ] ; +- lv2:optionalFeature lv2:hardRtCapable ; ++ lv2:optionalFeature lv2:hardRTCapable ; + uiext:ui <http://invadarecords.com/plugins/lv2/input/gui> ; +- dc:replaces <urn:ladspa:3301> ; ++ dct:replaces <urn:ladspa:3301> ; + + lv2:port [ + a lv2:InputPort, lv2:ControlPort ; +diff -Naurd a/rdf/inv_meter.ttl b/rdf/inv_meter.ttl +--- a/rdf/inv_meter.ttl 2009-08-23 08:54:48.000000000 +0200 ++++ b/rdf/inv_meter.ttl 2014-03-08 01:17:40.050457000 +0100 +@@ -4,14 +4,13 @@ + @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . + @prefix units: <http://lv2plug.in/ns/extension/units#> . + @prefix uiext: <http://lv2plug.in/ns/extensions/ui#> . +-@prefix pg: <http://lv2plug.in/ns/dev/port-groups#> . ++@prefix pg: <http://lv2plug.in/ns/ext/port-groups#> . + + + <http://invadarecords.com/plugins/lv2/meter/gui> + a uiext:GtkUI; + uiext:binary <inv_meter_gui.so>; +- uiext:requiredFeature uiext:makeResident ; +- uiext:optionalFeature uiext:noUserResize ; ++ lv2:optionalFeature uiext:noUserResize ; + + uiext:portNotification [ + uiext:plugin <http://invadarecords.com/plugins/lv2/meter> ; +@@ -147,7 +146,7 @@ + foaf:homepage <http://www.invadarecords.com/Downloads.php?ID=00000264> ; + foaf:mbox <mailto:fraser@arkhostings.com> ; + ] ; +- lv2:optionalFeature lv2:hardRtCapable ; ++ lv2:optionalFeature lv2:hardRTCapable ; + uiext:ui <http://invadarecords.com/plugins/lv2/meter/gui>; + + lv2:port [ +diff -Naurd a/rdf/inv_phaser.ttl b/rdf/inv_phaser.ttl +--- a/rdf/inv_phaser.ttl 2009-08-23 08:55:32.000000000 +0200 ++++ b/rdf/inv_phaser.ttl 2014-03-08 01:17:40.050457000 +0100 +@@ -1,17 +1,16 @@ +-@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +-@prefix foaf: <http://xmlns.com/foaf/0.1/> . +-@prefix doap: <http://usefulinc.com/ns/doap#> . +-@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +-@prefix units: <http://lv2plug.in/ns/extension/units#> . +-@prefix uiext: <http://lv2plug.in/ns/extensions/ui#> . +-@prefix epp: <http://lv2plug.in/ns/dev/extportinfo#> . +-@prefix pg: <http://lv2plug.in/ns/dev/port-groups#> . ++@prefix lv2: <http://lv2plug.in/ns/lv2core#> . ++@prefix foaf: <http://xmlns.com/foaf/0.1/> . ++@prefix doap: <http://usefulinc.com/ns/doap#> . ++@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . ++@prefix units: <http://lv2plug.in/ns/extension/units#> . ++@prefix uiext: <http://lv2plug.in/ns/extensions/ui#> . ++@prefix pprops: <http://lv2plug.in/ns/ext/port-props#> . ++@prefix pg: <http://lv2plug.in/ns/ext/port-groups#> . + + <http://invadarecords.com/plugins/lv2/phaser/gui> + a uiext:GtkUI; + uiext:binary <inv_phaser_gui.so>; +- uiext:requiredFeature uiext:makeResident ; +- uiext:optionalFeature uiext:noUserResize ; ++ lv2:optionalFeature uiext:noUserResize ; + + uiext:portNotification [ + uiext:plugin <http://invadarecords.com/plugins/lv2/phaser/mono> ; +@@ -97,7 +96,7 @@ + foaf:mbox <mailto:fraser@arkhostings.com> ; + ] ; + doap:license <http://usefulinc.com/doap/licenses/gpl> ; +- lv2:optionalFeature lv2:hardRtCapable ; ++ lv2:optionalFeature lv2:hardRTCapable ; + uiext:ui <http://invadarecords.com/plugins/lv2/phaser/gui>; + + lv2:port [ +@@ -118,7 +117,7 @@ + lv2:minimum 0.5 ; + lv2:maximum 500 ; + units:unit units:s ; +- lv2:portProperty epp:logarithmic ; ++ lv2:portProperty pprops:logarithmic ; + ] , [ + a lv2:InputPort, lv2:ControlPort ; + lv2:index 2 ; +@@ -251,7 +250,7 @@ + foaf:mbox <mailto:fraser@arkhostings.com> ; + ] ; + doap:license <http://usefulinc.com/doap/licenses/gpl> ; +- lv2:optionalFeature lv2:hardRtCapable ; ++ lv2:optionalFeature lv2:hardRTCapable ; + uiext:ui <http://invadarecords.com/plugins/lv2/phaser/gui>; + + lv2:port [ +@@ -272,7 +271,7 @@ + lv2:minimum 0.5 ; + lv2:maximum 500 ; + units:unit units:s ; +- lv2:portProperty epp:logarithmic ; ++ lv2:portProperty pprops:logarithmic ; + ] , [ + a lv2:InputPort, lv2:ControlPort ; + lv2:index 2 ; +@@ -423,7 +422,7 @@ + foaf:mbox <mailto:fraser@arkhostings.com> ; + ] ; + doap:license <http://usefulinc.com/doap/licenses/gpl> ; +- lv2:optionalFeature lv2:hardRtCapable ; ++ lv2:optionalFeature lv2:hardRTCapable ; + uiext:ui <http://invadarecords.com/plugins/lv2/phaser/gui>; + + lv2:port [ +diff -Naurd a/rdf/inv_testtone.ttl b/rdf/inv_testtone.ttl +--- a/rdf/inv_testtone.ttl 2009-08-23 08:55:47.000000000 +0200 ++++ b/rdf/inv_testtone.ttl 2014-03-08 01:17:40.050457000 +0100 +@@ -1,18 +1,17 @@ +-@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +-@prefix foaf: <http://xmlns.com/foaf/0.1/> . +-@prefix doap: <http://usefulinc.com/ns/doap#> . +-@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +-@prefix units: <http://lv2plug.in/ns/extension/units#> . +-@prefix uiext: <http://lv2plug.in/ns/extensions/ui#> . +-@prefix epp: <http://lv2plug.in/ns/dev/extportinfo#> . +-@prefix pg: <http://lv2plug.in/ns/dev/port-groups#> . ++@prefix lv2: <http://lv2plug.in/ns/lv2core#> . ++@prefix foaf: <http://xmlns.com/foaf/0.1/> . ++@prefix doap: <http://usefulinc.com/ns/doap#> . ++@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . ++@prefix units: <http://lv2plug.in/ns/extension/units#> . ++@prefix uiext: <http://lv2plug.in/ns/extensions/ui#> . ++@prefix pprops: <http://lv2plug.in/ns/ext/port-props#> . ++@prefix pg: <http://lv2plug.in/ns/ext/port-groups#> . + + + <http://invadarecords.com/plugins/lv2/testtone/gui> + a uiext:GtkUI; + uiext:binary <inv_testtone_gui.so>; +- uiext:requiredFeature uiext:makeResident ; +- uiext:optionalFeature uiext:noUserResize ; ++ lv2:optionalFeature uiext:noUserResize ; + + uiext:portNotification [ + uiext:plugin <http://invadarecords.com/plugins/lv2/testtone> ; +@@ -33,7 +32,7 @@ + foaf:homepage <http://www.invadarecords.com/Downloads.php?ID=00000264> ; + foaf:mbox <mailto:fraser@arkhostings.com> ; + ] ; +- lv2:optionalFeature lv2:hardRtCapable ; ++ lv2:optionalFeature lv2:hardRTCapable ; + uiext:ui <http://invadarecords.com/plugins/lv2/testtone/gui> ; + + lv2:port [ +@@ -54,7 +53,7 @@ + lv2:minimum 20.0 ; + lv2:maximum 20000.0 ; + units:unit units:hz ; +- lv2:portProperty epp:logarithmic ; ++ lv2:portProperty pprops:logarithmic ; + ] , [ + a lv2:InputPort, lv2:ControlPort ; + lv2:index 2 ; +diff -Naurd a/rdf/inv_tube.ttl b/rdf/inv_tube.ttl +--- a/rdf/inv_tube.ttl 2009-08-23 08:56:08.000000000 +0200 ++++ b/rdf/inv_tube.ttl 2014-03-08 01:17:40.050457000 +0100 +@@ -4,15 +4,14 @@ + @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . + @prefix units: <http://lv2plug.in/ns/extension/units#> . + @prefix uiext: <http://lv2plug.in/ns/extensions/ui#> . +-@prefix dc: <http://dublincore.org/documents/dcmi-namespace/> . +-@prefix pg: <http://lv2plug.in/ns/dev/port-groups#> . ++@prefix dct: <http://purl.org/dc/terms/> . ++@prefix pg: <http://lv2plug.in/ns/ext/port-groups#> . + + + <http://invadarecords.com/plugins/lv2/tube/gui> + a uiext:GtkUI; + uiext:binary <inv_tube_gui.so>; +- uiext:requiredFeature uiext:makeResident ; +- uiext:optionalFeature uiext:noUserResize ; ++ lv2:optionalFeature uiext:noUserResize ; + + uiext:portNotification [ + uiext:plugin <http://invadarecords.com/plugins/lv2/tube/mono> ; +@@ -57,9 +56,9 @@ + foaf:mbox <mailto:fraser@arkhostings.com> ; + ] ; + doap:license <http://usefulinc.com/doap/licenses/gpl> ; +- lv2:optionalFeature lv2:hardRtCapable ; ++ lv2:optionalFeature lv2:hardRTCapable ; + uiext:ui <http://invadarecords.com/plugins/lv2/tube/gui> ; +- dc:replaces <urn:ladspa:3306> ; ++ dct:replaces <urn:ladspa:3306> ; + + lv2:port [ + a lv2:InputPort, lv2:ControlPort ; +@@ -168,9 +167,9 @@ + foaf:mbox <mailto:fraser@arkhostings.com> ; + ] ; + doap:license <http://usefulinc.com/doap/licenses/gpl> ; +- lv2:optionalFeature lv2:hardRtCapable ; ++ lv2:optionalFeature lv2:hardRTCapable ; + uiext:ui <http://invadarecords.com/plugins/lv2/tube/gui> ; +- dc:replaces <urn:ladspa:3307> ; ++ dct:replaces <urn:ladspa:3307> ; + + lv2:port [ + a lv2:InputPort, lv2:ControlPort ; |