From b703eab295330e6f81564fbb39a10a1a2fdd2f54 Mon Sep 17 00:00:00 2001
From: Robert Jonsson <spamatica@gmail.com>
Date: Sun, 27 Dec 2009 11:30:35 +0000
Subject: moved old qt4 branch

---
 .../synti/zynaddsubfx/UI/ADnoteUI.fl               | 1107 ++++++++++
 muse_qt4_evolution/synti/zynaddsubfx/UI/BankUI.fl  |  352 +++
 .../synti/zynaddsubfx/UI/CMakeLists.txt            |   54 +
 .../synti/zynaddsubfx/UI/ConfigUI.fl               |  443 ++++
 muse_qt4_evolution/synti/zynaddsubfx/UI/EffUI.fl   | 2310 ++++++++++++++++++++
 .../synti/zynaddsubfx/UI/EnvelopeUI.fl             |  851 +++++++
 .../synti/zynaddsubfx/UI/FilterUI.fl               |  624 ++++++
 muse_qt4_evolution/synti/zynaddsubfx/UI/LFOUI.fl   |  176 ++
 .../synti/zynaddsubfx/UI/MasterUI.fl               | 1798 +++++++++++++++
 .../synti/zynaddsubfx/UI/MicrotonalUI.fl           |  270 +++
 .../synti/zynaddsubfx/UI/OscilGenUI.fl             | 1131 ++++++++++
 .../synti/zynaddsubfx/UI/PADnoteUI.fl              | 1086 +++++++++
 muse_qt4_evolution/synti/zynaddsubfx/UI/PartUI.fl  | 1086 +++++++++
 .../synti/zynaddsubfx/UI/PresetsUI.fl              |  200 ++
 .../synti/zynaddsubfx/UI/ResonanceUI.fl            |  392 ++++
 .../synti/zynaddsubfx/UI/SUBnoteUI.fl              |  449 ++++
 muse_qt4_evolution/synti/zynaddsubfx/UI/SeqUI.fl   |   73 +
 .../synti/zynaddsubfx/UI/VirKeyboard.fl            |  400 ++++
 .../synti/zynaddsubfx/UI/WidgetPDial.fl            |  131 ++
 19 files changed, 12933 insertions(+)
 create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/ADnoteUI.fl
 create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/BankUI.fl
 create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/CMakeLists.txt
 create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/ConfigUI.fl
 create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/EffUI.fl
 create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/EnvelopeUI.fl
 create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/FilterUI.fl
 create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/LFOUI.fl
 create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/MasterUI.fl
 create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/MicrotonalUI.fl
 create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/OscilGenUI.fl
 create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/PADnoteUI.fl
 create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/PartUI.fl
 create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/PresetsUI.fl
 create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/ResonanceUI.fl
 create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/SUBnoteUI.fl
 create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/SeqUI.fl
 create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/VirKeyboard.fl
 create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/UI/WidgetPDial.fl

(limited to 'muse_qt4_evolution/synti/zynaddsubfx/UI')

diff --git a/muse_qt4_evolution/synti/zynaddsubfx/UI/ADnoteUI.fl b/muse_qt4_evolution/synti/zynaddsubfx/UI/ADnoteUI.fl
new file mode 100644
index 00000000..33e25dff
--- /dev/null
+++ b/muse_qt4_evolution/synti/zynaddsubfx/UI/ADnoteUI.fl
@@ -0,0 +1,1107 @@
+# data file for the Fltk User Interface Designer (fluid)
+version 1.0106 
+header_name {.h} 
+code_name {.cc}
+decl {//Copyright (c) 2002-2005 Nasca Octavian Paul} {} 
+
+decl {//License: GNU GPL version 2} {} 
+
+decl {\#include "../Params/ADnoteParameters.h"} {public
+} 
+
+decl {\#include "../Misc/Util.h"} {public
+} 
+
+decl {\#include "../Misc/Master.h"} {public
+} 
+
+decl {\#include "ResonanceUI.h"} {public
+} 
+
+decl {\#include <FL/Fl_Box.H>} {public
+} 
+
+decl {\#include <FL/Fl_Group.H>} {public
+} 
+
+decl {\#include <math.h>} {} 
+
+decl {\#include <stdio.h>} {} 
+
+decl {\#include <stdlib.h>} {} 
+
+decl {\#include <string.h>} {} 
+
+decl {\#include "WidgetPDial.h"} {public
+} 
+
+decl {\#include "EnvelopeUI.h"} {public
+} 
+
+decl {\#include "LFOUI.h"} {public
+} 
+
+decl {\#include "FilterUI.h"} {public
+} 
+
+decl {\#include "OscilGenUI.h"} {public
+} 
+
+decl {\#include "PresetsUI.h"} {public
+} 
+
+class ADvoicelistitem {: {public Fl_Group}
+} {
+  Function {make_window()} {private
+  } {
+    Fl_Window ADnoteVoiceListItem {
+      private xywh {247 599 615 30} type Double hide
+      class Fl_Group
+    } {
+      Fl_Group voicelistitemgroup {
+        private xywh {50 0 570 25} box FLAT_BOX
+        code0 {if (pars->VoicePar[nvoice].Enabled==0) o->deactivate();}
+      } {
+        Fl_Value_Slider voicevolume {
+          callback {pars->VoicePar[nvoice].PVolume=(int)o->value();}
+          tooltip Volume xywh {90 5 115 20} type {Horz Knob} box FLAT_BOX labelsize 8 align 5 maximum 127 step 1
+          code0 {o->value(pars->VoicePar[nvoice].PVolume);}
+        }
+        Fl_Check_Button voiceresonanceenabled {
+          callback {pars->VoicePar[nvoice].Presonance=(int)o->value();}
+          tooltip {Resonance On/Off} xywh {245 7 15 17} down_box DOWN_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 12 align 4
+          code0 {o->value(pars->VoicePar[nvoice].Presonance);}
+        }
+        Fl_Value_Slider voicelfofreq {
+          callback {pars->VoicePar[nvoice].FreqLfo->Pintensity=(int)o->value();}
+          tooltip {Frequency LFO amount} xywh {500 5 115 20} type {Horz Knob} box FLAT_BOX labelsize 8 align 5 maximum 127 step 1
+          code0 {o->value(pars->VoicePar[nvoice].FreqLfo->Pintensity);}
+        }
+        Fl_Dial voicepanning {
+          callback {pars->VoicePar[nvoice].PPanning=(int) o->value();}
+          tooltip {Panning (leftmost is Random)} xywh {215 5 20 20} box ROUND_UP_BOX labelsize 11 align 4 maximum 127 step 1
+          code0 {o->value(pars->VoicePar[nvoice].PPanning);}
+          class WidgetPDial
+        }
+        Fl_Group voiceoscil {open
+          xywh {60 5 30 20} box THIN_DOWN_BOX color 32 selection_color 71 labelcolor 179
+          code0 {osc=new Oscilloscope(o->x(),o->y(),o->w(),o->h(),"");}
+          code1 {osc->init(pars->VoicePar[nvoice].OscilSmp,0,pars->VoicePar[nvoice].Poscilphase,master);}
+          code2 {if (pars->VoicePar[nvoice].Pextoscil != -1) {osc->init(pars->VoicePar[pars->VoicePar[nvoice].Pextoscil].OscilSmp,master);}}
+        } {}
+        Fl_Value_Output detunevalueoutput {
+          callback {o->value(getdetune((pars->VoicePar[nvoice].PDetuneType==0)?(pars->GlobalPar.PDetuneType) : (pars->VoicePar[nvoice].PDetuneType),0,pars->VoicePar[nvoice].PDetune)*pars->getBandwidthDetuneMultiplier());}
+          xywh {265 5 45 20} labelsize 10 align 5 minimum -5000 maximum 5000 step 0.01 textfont 1 textsize 10
+          code0 {o->value(getdetune(pars->VoicePar[nvoice].PDetuneType,0,pars->VoicePar[nvoice].PDetune)*pars->getBandwidthDetuneMultiplier());}
+        }
+        Fl_Slider voicedetune {
+          callback {pars->VoicePar[nvoice].PDetune=(int)o->value()+8192;
+detunevalueoutput->do_callback();}
+          tooltip {Fine Detune (cents)} xywh {315 5 185 20} type {Horz Knob} box FLAT_BOX minimum -8192 maximum 8191 step 1
+          code0 {o->value(pars->VoicePar[nvoice].PDetune-8192);}
+        }
+        Fl_Box noiselabel {
+          label N
+          callback {if (pars->VoicePar[nvoice].Type==0) {
+  o->hide();
+  voiceresonanceenabled->activate();
+  detunevalueoutput->activate();
+  voicedetune->activate();
+  voicelfofreq->activate();
+  voiceoscil->activate();
+} else {
+  o->show();
+  voiceresonanceenabled->deactivate();
+  detunevalueoutput->deactivate();
+  voicedetune->deactivate();
+  voicelfofreq->deactivate();
+  voiceoscil->deactivate();
+};}
+          xywh {65 5 20 20} labelfont 1 labelsize 16 labelcolor 7
+          code0 {if (pars->VoicePar[nvoice].Type==0) o->hide();}
+        }
+      }
+      Fl_Check_Button voiceenabled {
+        label 01
+        callback {pars->VoicePar[nvoice].Enabled=(int)o->value();
+if (o->value()==0) voicelistitemgroup->deactivate();
+else voicelistitemgroup->activate();
+o->redraw();}
+        private xywh {30 5 20 20} down_box DOWN_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 16 align 4
+        code0 {char tmp[10];snprintf(tmp,10,"%d",nvoice+1);o->label(strdup(tmp));}
+        code1 {o->value(pars->VoicePar[nvoice].Enabled);}
+      }
+    }
+  }
+  Function {ADvoicelistitem(int x,int y, int w, int h, const char *label=0):Fl_Group(x,y,w,h,label)} {} {
+    code {nvoice=0;
+pars=NULL;} {}
+  }
+  Function {init(ADnoteParameters *parameters,int nvoice_,Master *master_)} {} {
+    code {pars=parameters;
+nvoice=nvoice_;
+master=master_;
+make_window();
+ADnoteVoiceListItem->show();
+end();} {}
+  }
+  Function {refreshlist()} {} {
+    code {voiceenabled->value(pars->VoicePar[nvoice].Enabled);
+voiceresonanceenabled->value(pars->VoicePar[nvoice].Presonance);
+voicevolume->value(pars->VoicePar[nvoice].PVolume);
+voicedetune->value(pars->VoicePar[nvoice].PDetune-8192);
+voicepanning->value(pars->VoicePar[nvoice].PPanning);
+voicelfofreq->value(pars->VoicePar[nvoice].FreqLfo->Pintensity);
+if (pars->VoicePar[nvoice].Pextoscil != -1) {
+  osc->init(pars->VoicePar[pars->VoicePar[nvoice].Pextoscil].OscilSmp,0,pars->VoicePar[nvoice].Poscilphase,master);
+} else 
+  osc->init(pars->VoicePar[nvoice].OscilSmp,0,pars->VoicePar[nvoice].Poscilphase,master);
+if (pars->VoicePar[nvoice].Enabled==0) voicelistitemgroup->deactivate();
+    else voicelistitemgroup->activate();
+detunevalueoutput->do_callback();
+noiselabel->do_callback();
+ADnoteVoiceListItem->redraw();} {}
+  }
+  Function {~ADvoicelistitem()} {} {
+    code {ADnoteVoiceListItem->hide();
+//delete(ADnoteVoiceListItem);} {}
+  }
+  decl {ADnoteParameters *pars;} {}
+  decl {int nvoice;} {}
+  decl {Oscilloscope *osc;} {}
+  decl {Master *master;} {}
+} 
+
+class ADvoiceUI {: {public Fl_Group}
+} {
+  Function {make_window()} {} {
+    Fl_Window ADnoteVoiceParameters {
+      label Voice
+      xywh {231 132 765 525} type Double hide
+      class Fl_Group
+    } {
+      Fl_Group voiceparametersgroup {
+        xywh {0 0 765 525} box THIN_UP_BOX color 48
+        code0 {if (pars->VoicePar[nvoice].Enabled==0) o->deactivate();}
+      } {
+        Fl_Group voicemodegroup {
+          xywh {0 5 760 515}
+        } {
+          Fl_Group voiceFMparametersgroup {
+            label MODULATOR
+            xywh {530 5 230 515} box THIN_UP_FRAME color 48 labeltype EMBOSSED_LABEL labelfont 1 labelsize 18 align 17
+            code0 {if (pars->VoicePar[nvoice].PFMEnabled==0) o->deactivate();}
+          } {
+            Fl_Group modfrequency {
+              label {Mod.FREQUENCY}
+              xywh {535 220 220 145} box THIN_UP_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 16 align 17
+            } {
+              Fl_Group voiceFMfreqenvgroup {
+                label {ADSynth Modulator - Frequency Envelope}
+                xywh {540 290 205 70} box FLAT_BOX color 51 align 144
+                code0 {o->init(pars->VoicePar[nvoice].FMFreqEnvelope);}
+                code1 {if (pars->VoicePar[nvoice].PFMFreqEnvelopeEnabled==0) o->deactivate();}
+                class EnvelopeUI
+              } {}
+              Fl_Check_Button {} {
+                label Enable
+                callback {pars->VoicePar[nvoice].PFMFreqEnvelopeEnabled=(int)o->value();
+if (o->value()==0) voiceFMfreqenvgroup->deactivate();
+else voiceFMfreqenvgroup->activate();
+o->redraw();}
+                tooltip {Forced Relase} xywh {545 295 50 10} down_box DOWN_BOX labelfont 1 labelsize 10
+                code0 {o->value(pars->VoicePar[nvoice].PFMFreqEnvelopeEnabled);}
+              }
+              Fl_Counter {} {
+                label {Coarse Det.}
+                callback {int k=(int) o->value();
+if (k<0) k+=1024;
+pars->VoicePar[nvoice].PFMCoarseDetune = k+
+   (pars->VoicePar[nvoice].PFMCoarseDetune/1024)*1024;}
+                tooltip {Coarse Detune} xywh {685 270 60 15} labelsize 11 align 1 minimum -64 maximum 63 step 1 textfont 1 textsize 12
+                code0 {int k=pars->VoicePar[nvoice].PFMCoarseDetune%1024;}
+                code1 {if (k>=512) k-=1024;}
+                code2 {o->value(k);}
+                code3 {o->lstep(10);}
+              }
+              Fl_Counter {} {
+                label Octave
+                callback {int k=(int) o->value();
+if (k<0) k+=16;
+pars->VoicePar[nvoice].PFMCoarseDetune = k*1024+
+   pars->VoicePar[nvoice].PFMCoarseDetune%1024;}
+                tooltip Octave xywh {625 270 45 15} type Simple labelsize 10 align 1 minimum -8 maximum 7 step 1 textfont 1 textsize 12
+                code0 {int k=pars->VoicePar[nvoice].PFMCoarseDetune/1024;}
+                code1 {if (k>=8) k-=16;}
+                code2 {o->value(k);}
+              }
+              Fl_Slider {} {
+                callback {pars->VoicePar[nvoice].PFMDetune=(int)o->value()+8192;
+fmdetunevalueoutput->do_callback();}
+                tooltip {Fine Detune (cents)} xywh {590 245 160 10} type {Horz Knob} box FLAT_BOX minimum -8192 maximum 8191 step 1
+                code0 {o->value(pars->VoicePar[nvoice].PFMDetune-8192);}
+              }
+              Fl_Value_Output fmdetunevalueoutput {
+                label Detune
+                callback {o->value(getdetune((pars->VoicePar[nvoice].PFMDetuneType==0)?(pars->GlobalPar.PDetuneType) : (pars->VoicePar[nvoice].PFMDetuneType),0,pars->VoicePar[nvoice].PFMDetune));}
+                xywh {540 245 45 13} labelsize 8 align 5 minimum -5000 maximum 5000 step 0.01 textfont 1 textsize 8
+                code0 {o->value(getdetune((pars->VoicePar[nvoice].PFMDetuneType==0)?(pars->GlobalPar.PDetuneType) : (pars->VoicePar[nvoice].PFMDetuneType),0,pars->VoicePar[nvoice].PFMDetune));}
+                code1 {//o->value(getdetune(pars->VoicePar[nvoice].PFMDetuneType,0,pars->VoicePar[nvoice].PFMDetune));}
+              }
+              Fl_Choice {} {
+                label {Detune Type}
+                callback {pars->VoicePar[nvoice].PFMDetuneType=(int) o->value();
+fmdetunevalueoutput->do_callback();} open
+                xywh {540 270 75 15} down_box BORDER_BOX labelsize 10 align 5 textfont 1 textsize 10
+                code0 {o->add("Default");o->add("L35cents");o->add("L10cents");o->add("E100cents");o->add("E1200cents");}
+                code1 {o->value(pars->VoicePar[nvoice].PFMDetuneType);}
+              } {}
+            }
+            Fl_Group {} {
+              label {Mod.AMPLITUDE}
+              xywh {535 60 220 160} box THIN_UP_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 16 align 17
+            } {
+              Fl_Value_Slider {} {
+                label Vol
+                callback {pars->VoicePar[nvoice].PFMVolume=(int)o->value();}
+                tooltip Volume xywh {540 80 160 15} type {Horz Knob} box FLAT_BOX labelsize 12 align 8 maximum 127 step 1
+                code0 {o->value(pars->VoicePar[nvoice].PFMVolume);}
+              }
+              Fl_Value_Slider {} {
+                label {V.Sns}
+                callback {pars->VoicePar[nvoice].PFMVelocityScaleFunction=(int) o->value();}
+                tooltip {Velocity Sensing Function (rightmost to disable)} xywh {540 100 160 15} type {Horz Knob} box FLAT_BOX labelsize 12 align 8 maximum 127 step 1
+                code0 {o->value(pars->VoicePar[nvoice].PFMVelocityScaleFunction);}
+              }
+              Fl_Group voiceFMampenvgroup {
+                label {ADSynth Modulator - Amplitude Envelope} open
+                xywh {540 145 205 70} box FLAT_BOX color 51 align 144
+                code0 {o->init(pars->VoicePar[nvoice].FMAmpEnvelope);}
+                code1 {if (pars->VoicePar[nvoice].PFMAmpEnvelopeEnabled==0) o->deactivate();}
+                class EnvelopeUI
+              } {}
+              Fl_Check_Button {} {
+                label Enable
+                callback {pars->VoicePar[nvoice].PFMAmpEnvelopeEnabled=(int)o->value();
+if (o->value()==0) voiceFMampenvgroup->deactivate();
+else voiceFMampenvgroup->activate();
+o->redraw();}
+                tooltip {Forced Relase} xywh {545 150 50 10} down_box DOWN_BOX labelfont 1 labelsize 10
+                code0 {o->value(pars->VoicePar[nvoice].PFMAmpEnvelopeEnabled);}
+              }
+              Fl_Value_Slider {} {
+                label {F.Damp}
+                callback {pars->VoicePar[nvoice].PFMVolumeDamp=(int) o->value()+64;}
+                tooltip {Modulator Damp at Higher frequency} xywh {540 120 160 15} type {Horz Knob} box FLAT_BOX labelsize 12 align 8 minimum -64 maximum 63 step 1
+                code0 {o->value(pars->VoicePar[nvoice].PFMVolumeDamp-64);}
+              }
+            }
+            Fl_Group modoscil {
+              xywh {535 365 220 150}
+            } {
+              Fl_Group fmoscil {open
+                xywh {535 405 220 110} box THIN_DOWN_BOX color 32 selection_color 71 labelcolor 179
+                code0 {oscFM=new Oscilloscope(o->x(),o->y(),o->w(),o->h(),"");}
+                code1 {int nv=nvoice; if (pars->VoicePar[nvoice].PextFMoscil>=0) nv=pars->VoicePar[nvoice].PextFMoscil;}
+                code2 {oscFM->init(pars->VoicePar[nv].FMSmp,0,pars->VoicePar[nvoice].PFMoscilphase,master);}
+              } {}
+              Fl_Box {} {
+                label {Mod.Oscillator}
+                xywh {535 365 155 20} labelfont 1 align 20
+              }
+              Fl_Button changeFMoscilbutton {
+                label Change
+                callback {if (oscedit!=NULL) delete(oscedit);
+
+int nv=nvoice;
+if (pars->VoicePar[nvoice].PextFMoscil>=0) nv=pars->VoicePar[nvoice].PextFMoscil;
+
+oscedit=new OscilEditor(pars->VoicePar[nv].FMSmp,fmoscil,NULL,NULL,master);} selected
+                xywh {700 370 55 15} box THIN_UP_BOX labelfont 1 labelsize 12
+                code0 {if (pars->VoicePar[nvoice].PextFMoscil>=0) o->labelcolor(FL_BLUE);}
+              }
+              Fl_Slider {} {
+                label Phase
+                callback {pars->VoicePar[nvoice].PFMoscilphase=64-(int)o->value();
+oscFM->phase=64-(int) o->value();
+fmoscil->redraw();}
+                xywh {665 395 65 10} type {Horz Knob} box FLAT_BOX labelsize 10 align 5 minimum -64 maximum 63 step 1
+                code0 {o->value(64-pars->VoicePar[nvoice].PFMoscilphase);}
+              }
+              Fl_Choice {} {
+                label Use
+                callback {pars->VoicePar[nvoice].PextFMoscil=(int)o->value()-1;
+if ((int) o->value() != 0) {
+    oscFM->init(pars->VoicePar[(int) o->value()-1].FMSmp,master);
+    changeFMoscilbutton->labelcolor(FL_BLUE);
+} else { 
+    oscFM->init(pars->VoicePar[nvoice].FMSmp,master);
+    changeFMoscilbutton->labelcolor(FL_BLACK);
+};
+voiceFMparametersgroup->redraw();} open
+                xywh {560 390 75 15} down_box BORDER_BOX labelsize 10 textfont 1 textsize 10
+                code0 {o->add("Internal");}
+                code1 {char tmp[50]; for (int i=0;i<nvoice;i++) {sprintf(tmp,"ExtM.%2d",i+1);o->add(tmp);};}
+                code3 {o->value(pars->VoicePar[nvoice].PextFMoscil+1);}
+              } {}
+            }
+            Fl_Choice {} {
+              label {External Mod.}
+              callback {pars->VoicePar[nvoice].PFMVoice=(int)o->value()-1;
+if ((int) o->value() != 0) {
+    modoscil->deactivate();
+    modfrequency->deactivate();
+} else { 
+    modoscil->activate();
+    modfrequency->activate();
+};
+voiceFMparametersgroup->redraw();} open
+              xywh {635 40 85 20} down_box BORDER_BOX labelsize 10 align 5 textfont 1 textsize 10
+              code0 {o->add("OFF");}
+              code1 {char tmp[50]; for (int i=0;i<nvoice;i++) {sprintf(tmp,"ExtMod.%2d",i+1);o->add(tmp);};}
+              code2 {o->value(pars->VoicePar[nvoice].PFMVoice+1);}
+              code3 {if ((int) o->value() != 0) {modoscil->deactivate();modfrequency->deactivate();}}
+            } {}
+          }
+          Fl_Choice {} {
+            label {Type:}
+            callback {pars->VoicePar[nvoice].PFMEnabled=(int)o->value();
+if (o->value()==0) voiceFMparametersgroup->deactivate();
+else voiceFMparametersgroup->activate();
+o->redraw();}
+            xywh {535 40 80 20} down_box BORDER_BOX align 5
+            code0 {o->value(pars->VoicePar[nvoice].PFMEnabled);}
+          } {
+            menuitem {} {
+              label OFF
+              xywh {40 40 100 20} labelfont 1
+            }
+            menuitem {} {
+              label MORPH
+              xywh {50 50 100 20} labelfont 1
+            }
+            menuitem {} {
+              label RING
+              xywh {60 60 100 20} labelfont 1
+            }
+            menuitem {} {
+              label PM
+              xywh {70 70 100 20} labelfont 1
+            }
+            menuitem {} {
+              label FM
+              xywh {80 80 100 20} labelfont 1
+            }
+            menuitem {} {
+              label PITCH
+              xywh {90 90 100 20} labelfont 1 deactivate
+            }
+          }
+          Fl_Group {} {
+            label FREQUENCY
+            xywh {5 250 525 120} box THIN_UP_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 16 align 17
+          } {
+            Fl_Group voicefreqenvgroup {
+              label {ADSynth Voice - Frequency Envelope} open
+              xywh {10 290 205 70} box FLAT_BOX color 51 align 144
+              code0 {o->init(pars->VoicePar[nvoice].FreqEnvelope);}
+              code1 {if (pars->VoicePar[nvoice].PFreqEnvelopeEnabled==0) o->deactivate();}
+              class EnvelopeUI
+            } {}
+            Fl_Check_Button {} {
+              label Enable
+              callback {pars->VoicePar[nvoice].PFreqEnvelopeEnabled=(int)o->value();
+if (o->value()==0) voicefreqenvgroup->deactivate();
+else voicefreqenvgroup->activate();
+o->redraw();}
+              tooltip {Forced Relase} xywh {15 295 50 10} down_box DOWN_BOX labelfont 1 labelsize 10
+              code0 {o->value(pars->VoicePar[nvoice].PFreqEnvelopeEnabled);}
+            }
+            Fl_Group voicefreqlfogroup {
+              label {Frequency LFO     } open
+              xywh {215 290 230 70} box FLAT_BOX color 47 align 144
+              code0 {o->init(pars->VoicePar[nvoice].FreqLfo);}
+              code1 {if (pars->VoicePar[nvoice].PFreqLfoEnabled==0) o->deactivate();}
+              class LFOUI
+            } {}
+            Fl_Check_Button {} {
+              label Enable
+              callback {pars->VoicePar[nvoice].PFreqLfoEnabled=(int)o->value();
+if (o->value()==0) voicefreqlfogroup->deactivate();
+else voicefreqlfogroup->activate();
+o->redraw();}
+              tooltip {Forced Relase} xywh {220 295 55 10} down_box DOWN_BOX labelfont 1 labelsize 12 align 24
+              code0 {o->value(pars->VoicePar[nvoice].PFreqLfoEnabled);}
+            }
+            Fl_Counter {} {
+              label Octave
+              callback {int k=(int) o->value();
+if (k<0) k+=16;
+pars->VoicePar[nvoice].PCoarseDetune = k*1024+
+   pars->VoicePar[nvoice].PCoarseDetune%1024;}
+              tooltip Octave xywh {470 270 45 15} type Simple labelsize 10 align 1 minimum -8 maximum 7 step 1 textfont 1 textsize 12
+              code0 {int k=pars->VoicePar[nvoice].PCoarseDetune/1024;}
+              code1 {if (k>=8) k-=16;}
+              code2 {o->value(k);}
+            }
+            Fl_Counter {} {
+              label {Coarse Det.}
+              callback {int k=(int) o->value();
+if (k<0) k+=1024;
+pars->VoicePar[nvoice].PCoarseDetune = k+
+   (pars->VoicePar[nvoice].PCoarseDetune/1024)*1024;}
+              tooltip {Coarse Detune} xywh {455 340 60 20} labelsize 11 align 1 minimum -64 maximum 63 step 1 textfont 1 textsize 12
+              code0 {int k=pars->VoicePar[nvoice].PCoarseDetune%1024;}
+              code1 {if (k>=512) k-=1024;}
+              code2 {o->value(k);}
+              code3 {o->lstep(10);}
+            }
+            Fl_Slider {} {
+              callback {pars->VoicePar[nvoice].PDetune=(int)o->value()+8192;
+detunevalueoutput->do_callback();}
+              tooltip {Fine Detune (cents)} xywh {58 272 392 13} type {Horz Knob} box FLAT_BOX minimum -8192 maximum 8191 step 1
+              code0 {o->value(pars->VoicePar[nvoice].PDetune-8192);}
+            }
+            Fl_Value_Output detunevalueoutput {
+              label Detune
+              callback {o->value(getdetune((pars->VoicePar[nvoice].PDetuneType==0)?(pars->GlobalPar.PDetuneType) : (pars->VoicePar[nvoice].PDetuneType),0,pars->VoicePar[nvoice].PDetune)*pars->getBandwidthDetuneMultiplier());}
+              xywh {10 272 45 15} labelsize 10 align 5 minimum -5000 maximum 5000 step 0.01 textfont 1 textsize 10
+              code0 {o->value(getdetune((pars->VoicePar[nvoice].PDetuneType==0)?(pars->GlobalPar.PDetuneType) : (pars->VoicePar[nvoice].PDetuneType),0,pars->VoicePar[nvoice].PDetune)*pars->getBandwidthDetuneMultiplier());}
+            }
+            Fl_Check_Button {} {
+              label 440Hz
+              callback {int x=(int) o->value();
+pars->VoicePar[nvoice].Pfixedfreq=x;
+if (x==0) fixedfreqetdial->deactivate();
+    else fixedfreqetdial->activate();}
+              tooltip {Set the voice base frequency to 440Hz} xywh {345 253 55 15} down_box DOWN_BOX labelfont 1 labelsize 12
+              code0 {o->value(pars->VoicePar[nvoice].Pfixedfreq);}
+            }
+            Fl_Dial fixedfreqetdial {
+              label {Eq.T.}
+              callback {pars->VoicePar[nvoice].PfixedfreqET=(int) o->value();}
+              tooltip {How the frequency varies acording to the keyboard (leftmost for fixed frequency)} xywh {405 255 15 15} box ROUND_UP_BOX labelsize 10 align 8 maximum 127 step 1
+              code0 {o->value(pars->VoicePar[nvoice].PfixedfreqET);}
+              code1 {if (pars->VoicePar[nvoice].Pfixedfreq==0) o->deactivate();}
+              class WidgetPDial
+            }
+            Fl_Choice {} {
+              label {Detune Type}
+              callback {pars->VoicePar[nvoice].PDetuneType=(int) o->value();
+detunevalueoutput->do_callback();} open
+              xywh {450 305 75 15} down_box BORDER_BOX labelsize 10 align 5 textfont 1 textsize 10
+              code0 {o->add("Default");o->add("L35cents");o->add("L10cents");o->add("E100cents");o->add("E1200cents");}
+              code1 {o->value(pars->VoicePar[nvoice].PDetuneType);}
+            } {}
+          }
+          Fl_Group voiceoscil {
+            xywh {80 375 445 145} box THIN_DOWN_BOX color 32 selection_color 71 labelcolor 179
+            code0 {osc=new Oscilloscope(o->x(),o->y(),o->w(),o->h(),"");}
+            code1 {int nv=nvoice; if (pars->VoicePar[nvoice].Pextoscil>=0) nv=pars->VoicePar[nvoice].Pextoscil;}
+            code2 {osc->init(pars->VoicePar[nv].OscilSmp,0,pars->VoicePar[nvoice].Poscilphase,master);}
+          } {}
+          Fl_Button changevoiceoscilbutton {
+            label Change
+            callback {if (oscedit!=NULL) delete(oscedit);
+
+int nv=nvoice;
+if (pars->VoicePar[nvoice].Pextoscil>=0) nv=pars->VoicePar[nvoice].Pextoscil;
+
+oscedit=new OscilEditor(pars->VoicePar[nv].OscilSmp,voiceoscil,NULL,NULL,master);}
+            xywh {5 475 65 20} box THIN_UP_BOX labelfont 1 labelsize 12
+            code0 {if (pars->VoicePar[nvoice].Pextoscil>=0) o->labelcolor(FL_BLUE);}
+          }
+          Fl_Box {} {
+            label {Voice Oscillator}
+            xywh {5 375 75 35} labelfont 1 align 128
+          }
+          Fl_Slider {} {
+            label Phase
+            callback {pars->VoicePar[nvoice].Poscilphase=64-(int)o->value();
+osc->phase=64-(int) o->value();
+voiceoscil->redraw();}
+            xywh {10 420 65 10} type {Horz Knob} box FLAT_BOX labelsize 10 align 5 minimum -64 maximum 63 step 1
+            code0 {o->value(64-pars->VoicePar[nvoice].Poscilphase);}
+          }
+          Fl_Check_Button {} {
+            label {R.}
+            callback {pars->VoicePar[nvoice].Presonance=(int) o->value();}
+            tooltip {Resonance On/Off} xywh {210 5 35 35} box THIN_UP_BOX down_box DOWN_BOX labelfont 1 labelsize 12
+            code0 {o->value(pars->VoicePar[nvoice].Presonance);}
+          }
+          Fl_Choice {} {
+            label {Use Oscil.}
+            callback {pars->VoicePar[nvoice].Pextoscil=(int)o->value()-1;
+if ((int) o->value() != 0) {
+    osc->init(pars->VoicePar[(int) o->value()-1].OscilSmp,master);
+    changevoiceoscilbutton->labelcolor(FL_BLUE);
+} else { 
+    osc->init(pars->VoicePar[nvoice].OscilSmp,master);
+    changevoiceoscilbutton->labelcolor(FL_BLACK);
+};
+
+voiceparametersgroup->redraw();
+voiceonbutton->redraw();} open
+            xywh {5 455 65 15} down_box BORDER_BOX labelsize 10 align 5 textfont 1 textsize 10
+            code0 {o->add("Internal");}
+            code1 {char tmp[50]; for (int i=0;i<nvoice;i++) {sprintf(tmp,"Ext.%2d",i+1);o->add(tmp);};}
+            code3 {o->value(pars->VoicePar[nvoice].Pextoscil+1);}
+          } {}
+        }
+        Fl_Group {} {
+          label AMPLITUDE
+          xywh {5 40 240 210} box THIN_UP_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 16 align 17
+        } {
+          Fl_Value_Slider {} {
+            label Vol
+            callback {pars->VoicePar[nvoice].PVolume=(int)o->value();}
+            tooltip Volume xywh {10 60 160 15} type {Horz Knob} box FLAT_BOX labelsize 12 align 8 maximum 127 step 1
+            code0 {o->value(pars->VoicePar[nvoice].PVolume);}
+          }
+          Fl_Value_Slider {} {
+            label {V.Sns}
+            callback {pars->VoicePar[nvoice].PAmpVelocityScaleFunction=(int) o->value();}
+            tooltip {Velocity Sensing Function (rightmost to disable)} xywh {10 80 160 15} type {Horz Knob} box FLAT_BOX labelsize 12 align 8 maximum 127 step 1
+            code0 {o->value(pars->VoicePar[nvoice].PAmpVelocityScaleFunction);}
+          }
+          Fl_Group voiceampenvgroup {
+            label {ADSynth Voice - Amplitude Envelope} open
+            xywh {10 105 205 70} box FLAT_BOX color 51 align 144
+            code0 {o->init(pars->VoicePar[nvoice].AmpEnvelope);}
+            code1 {if (pars->VoicePar[nvoice].PAmpEnvelopeEnabled==0) o->deactivate();}
+            class EnvelopeUI
+          } {}
+          Fl_Dial {} {
+            label Pan
+            callback {pars->VoicePar[nvoice].PPanning=(int) o->value();}
+            tooltip {Panning (leftmost is Random)} xywh {210 60 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+            code0 {o->value(pars->VoicePar[nvoice].PPanning);}
+            class WidgetPDial
+          }
+          Fl_Check_Button {} {
+            label Enable
+            callback {pars->VoicePar[nvoice].PAmpEnvelopeEnabled=(int)o->value();
+if (o->value()==0) voiceampenvgroup->deactivate();
+else voiceampenvgroup->activate();
+o->redraw();}
+            tooltip {Forced Relase} xywh {15 110 50 10} down_box DOWN_BOX labelfont 1 labelsize 10
+            code0 {o->value(pars->VoicePar[nvoice].PAmpEnvelopeEnabled);}
+          }
+          Fl_Group voiceamplfogroup {
+            label {Amplitude LFO     } open
+            xywh {10 175 230 70} box FLAT_BOX color 47 align 144
+            code0 {o->init(pars->VoicePar[nvoice].AmpLfo);}
+            code1 {if (pars->VoicePar[nvoice].PAmpLfoEnabled==0) o->deactivate();}
+            class LFOUI
+          } {}
+          Fl_Check_Button {} {
+            label Enable
+            callback {pars->VoicePar[nvoice].PAmpLfoEnabled=(int)o->value();
+if (o->value()==0) voiceamplfogroup->deactivate();
+else voiceamplfogroup->activate();
+o->redraw();}
+            tooltip {Forced Relase} xywh {15 180 55 10} down_box DOWN_BOX labelfont 1 labelsize 12 align 24
+            code0 {o->value(pars->VoicePar[nvoice].PAmpLfoEnabled);}
+          }
+          Fl_Check_Button {} {
+            label Minus
+            callback {pars->VoicePar[nvoice].PVolumeminus=(int)o->value();}
+            xywh {10 45 50 10} down_box DOWN_BOX labelfont 1 labelsize 10
+            code0 {o->value(pars->VoicePar[nvoice].PVolumeminus);}
+          }
+        }
+        Fl_Group voicefiltergroup {
+          label FILTER
+          xywh {245 5 285 245} box THIN_UP_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 16 align 17
+          code0 {if (pars->VoicePar[nvoice].PFilterEnabled==0) o->deactivate();}
+        } {
+          Fl_Group {} {
+            label {ADsynth Voice - Filter} open
+            xywh {250 30 275 75} box FLAT_BOX color 50 align 144
+            code0 {o->init(pars->VoicePar[nvoice].VoiceFilter,NULL,NULL);}
+            class FilterUI
+          } {}
+          Fl_Group voicefilterenvgroup {
+            label {ADSynth Voice - Filter Envelope} open
+            xywh {250 105 275 70} box FLAT_BOX color 51 align 144
+            code0 {o->init(pars->VoicePar[nvoice].FilterEnvelope);}
+            code1 {if (pars->VoicePar[nvoice].PFilterEnvelopeEnabled==0) o->deactivate();}
+            class EnvelopeUI
+          } {}
+          Fl_Check_Button {} {
+            label Enable
+            callback {pars->VoicePar[nvoice].PFilterEnvelopeEnabled=(int)o->value();
+if (o->value()==0) voicefilterenvgroup->deactivate();
+else voicefilterenvgroup->activate();
+o->redraw();}
+            tooltip {Forced Relase} xywh {255 110 55 10} down_box DOWN_BOX labelfont 1 labelsize 10
+            code0 {o->value(pars->VoicePar[nvoice].PFilterEnvelopeEnabled);}
+          }
+          Fl_Group voicefilterlfogroup {
+            label {Filter LFO     } open
+            xywh {250 175 230 70} box FLAT_BOX color 47 align 144
+            code0 {o->init(pars->VoicePar[nvoice].FilterLfo);}
+            code1 {if (pars->VoicePar[nvoice].PFilterLfoEnabled==0) o->deactivate();}
+            class LFOUI
+          } {}
+          Fl_Check_Button {} {
+            label Enable
+            callback {pars->VoicePar[nvoice].PFilterLfoEnabled=(int)o->value();
+if (o->value()==0) voicefilterlfogroup->deactivate();
+else voicefilterlfogroup->activate();
+o->redraw();}
+            tooltip {Forced Relase} xywh {255 180 55 10} down_box DOWN_BOX labelfont 1 labelsize 12 align 24
+            code0 {o->value(pars->VoicePar[nvoice].PFilterLfoEnabled);}
+          }
+        }
+        Fl_Group {} {
+          label 01
+          xywh {5 5 55 35} box THIN_UP_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 30 align 16
+          code0 {char tmp[10];snprintf(tmp,10,"%d",nvoice+1);o->label(strdup(tmp));}
+        } {}
+        Fl_Choice {} {
+          callback {int x=(int) o->value();
+pars->VoicePar[nvoice].Type=x;
+if (x==0) voicemodegroup->activate();
+  else voicemodegroup->deactivate();
+noiselabel->do_callback();}
+          tooltip {Oscillator Type (sound/noise)} xywh {5 500 65 20} down_box BORDER_BOX labelsize 11 textfont 1 textsize 11
+          code0 {o->value(pars->VoicePar[nvoice].Type);}
+          code1 {if (pars->VoicePar[nvoice].Type!=0) voicemodegroup->deactivate();}
+        } {
+          menuitem {} {
+            label Sound
+            xywh {5 5 100 20} labelfont 1 labelsize 13
+          }
+          menuitem {} {
+            label NOISE
+            xywh {15 15 100 20} labelfont 1 labelsize 13 labelcolor 1
+          }
+        }
+        Fl_Check_Button bypassfiltercheckbutton {
+          label {Bypass Global F.}
+          callback {pars->VoicePar[nvoice].Pfilterbypass=(int)o->value();}
+          xywh {425 10 100 20} down_box DOWN_BOX labelfont 1 labelsize 10 align 148
+          code0 {o->value(pars->VoicePar[nvoice].Pfilterbypass);}
+        }
+        Fl_Group {} {
+          xywh {115 5 95 35} box THIN_UP_BOX
+        } {
+          Fl_Value_Slider {} {
+            label Delay
+            callback {pars->VoicePar[nvoice].PDelay=(int)o->value();}
+            tooltip Volume xywh {120 21 84 12} type {Horz Knob} box FLAT_BOX labelsize 12 align 5 maximum 127 step 1
+            code0 {o->value(pars->VoicePar[nvoice].PDelay);}
+          }
+        }
+        Fl_Check_Button {} {
+          label Enable
+          callback {pars->VoicePar[nvoice].PFilterEnabled=(int)o->value();
+if (o->value()==0) voicefiltergroup->deactivate();
+else voicefiltergroup->activate();
+o->redraw();
+bypassfiltercheckbutton->redraw();}
+          tooltip {Enable Filter} xywh {250 15 60 15} down_box DOWN_BOX labelfont 1 labelsize 12
+          code0 {o->value(pars->VoicePar[nvoice].PFilterEnabled);}
+        }
+        Fl_Box noiselabel {
+          label {White Noise}
+          callback {if (pars->VoicePar[nvoice].Type==0) o->hide(); else o->show();}
+          xywh {150 415 300 65} labelfont 1 labelsize 50 labelcolor 7
+          code0 {if (pars->VoicePar[nvoice].Type==0) o->hide(); else o->show();}
+        }
+      }
+      Fl_Check_Button voiceonbutton {
+        label On
+        callback {pars->VoicePar[nvoice].Enabled=(int)o->value();
+if (o->value()==0) voiceparametersgroup->deactivate();
+else voiceparametersgroup->activate();
+o->redraw();}
+        xywh {60 5 55 35} box THIN_UP_BOX down_box DOWN_BOX labelfont 1 labelsize 16
+        code0 {o->value(pars->VoicePar[nvoice].Enabled);}
+      }
+    }
+  }
+  Function {ADvoiceUI(int x,int y, int w, int h, const char *label=0):Fl_Group(x,y,w,h,label)} {} {
+    code {nvoice=0;
+pars=NULL;
+oscedit=NULL;} {}
+  }
+  Function {init(ADnoteParameters *parameters,int nvoice_,Master *master_)} {} {
+    code {pars=parameters;
+nvoice=nvoice_;
+master=master_;
+make_window();
+end();
+ADnoteVoiceParameters->show();} {}
+  }
+  Function {~ADvoiceUI()} {} {
+    code {ADnoteVoiceParameters->hide();
+hide();
+if (oscedit!=NULL) {
+    delete(oscedit);
+};
+//delete (ADnoteVoiceParameters);} {}
+  }
+  decl {int nvoice;} {}
+  decl {ADnoteParameters *pars;} {}
+  decl {OscilEditor *oscedit;} {}
+  decl {Oscilloscope *osc;} {}
+  decl {Oscilloscope *oscFM;} {}
+  decl {Master *master;} {}
+} 
+
+class ADnoteUI {: {public PresetsUI_}
+} {
+  Function {make_window()} {private
+  } {
+    Fl_Window ADnoteGlobalParameters {
+      label {ADsynth Global Parameters of the Instrument}
+      xywh {66 187 535 405} type Double hide
+    } {
+      Fl_Group {} {
+        label FREQUENCY
+        xywh {5 255 525 115} box THIN_UP_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 16 align 17
+      } {
+        Fl_Group freqenv {
+          label {ADSynth Global - Frequency Envelope} open
+          xywh {10 295 205 70} box FLAT_BOX color 51 align 144
+          code0 {o->init(pars->GlobalPar.FreqEnvelope);}
+          class EnvelopeUI
+        } {}
+        Fl_Counter octave {
+          label Octave
+          callback {int k=(int) o->value();
+if (k<0) k+=16;
+pars->GlobalPar.PCoarseDetune = k*1024+
+   pars->GlobalPar.PCoarseDetune%1024;}
+          tooltip Octave xywh {450 275 45 15} type Simple labelsize 10 align 1 minimum -8 maximum 7 step 1 textfont 1 textsize 12
+          code0 {int k=pars->GlobalPar.PCoarseDetune/1024;if (k>=8) k-=16;}
+          code2 {o->value(k);}
+        }
+        Fl_Counter coarsedet {
+          label {Coarse det.}
+          callback {int k=(int) o->value();
+if (k<0) k+=1024;
+pars->GlobalPar.PCoarseDetune = k+
+   (pars->GlobalPar.PCoarseDetune/1024)*1024;}
+          tooltip {Coarse Detune} xywh {455 345 60 20} labelsize 10 align 5 minimum -64 maximum 63 step 1 textfont 1 textsize 12
+          code0 {int k=pars->GlobalPar.PCoarseDetune%1024;if (k>=512) k-=1024;}
+          code2 {o->value(k);}
+          code3 {o->lstep(10);}
+        }
+        Fl_Group freqlfo {
+          label {Frequency LFO     } open
+          xywh {215 295 230 70} box FLAT_BOX color 47 align 144
+          code0 {o->init(pars->GlobalPar.FreqLfo);}
+          class LFOUI
+        } {}
+        Fl_Slider freq {
+          callback {pars->GlobalPar.PDetune=(int)o->value()+8192;
+detunevalueoutput->do_callback();}
+          tooltip {Fine Detune (cents)} xywh {60 275 385 15} type {Horz Knob} box FLAT_BOX minimum -8192 maximum 8191 step 1
+          code0 {o->value(pars->GlobalPar.PDetune-8192);}
+        }
+        Fl_Value_Output detunevalueoutput {
+          label Detune
+          callback {o->value(getdetune(pars->GlobalPar.PDetuneType,0,pars->GlobalPar.PDetune));}
+          xywh {12 275 45 15} labelsize 10 align 5 minimum -5000 maximum 5000 step 0.01 textfont 1 textsize 10
+          code0 {o->value(getdetune(pars->GlobalPar.PDetuneType,0,pars->GlobalPar.PDetune));}
+        }
+        Fl_Choice detunetype {
+          label {Detune Type}
+          callback {pars->GlobalPar.PDetuneType=(int) o->value()+1;
+detunevalueoutput->do_callback();} open
+          xywh {450 315 75 15} down_box BORDER_BOX labelsize 10 align 5 textfont 1 textsize 10
+          code0 {o->add("L35cents");o->add("L10cents");o->add("E100cents");o->add("E1200cents");}
+          code1 {o->value(pars->GlobalPar.PDetuneType-1);}
+        } {}
+        Fl_Dial {} {
+          label relBW
+          callback {pars->GlobalPar.PBandwidth=(int) o->value();
+
+pars->getBandwidthDetuneMultiplier();
+
+for (int i=0;i<NUM_VOICES;i++){
+  voicelistitem[i]->refreshlist();
+};}
+          tooltip {Bandwidth - how the relative fine detune of the voice are changed} xywh {500 270 25 25} box ROUND_UP_BOX labelsize 11 align 1 maximum 127 step 1
+          code0 {o->value(pars->GlobalPar.PBandwidth);}
+          class WidgetPDial
+        }
+      }
+      Fl_Group {} {
+        label AMPLITUDE
+        xywh {5 5 240 250} box THIN_UP_FRAME labeltype EMBOSSED_LABEL labelfont 1 labelsize 16 align 17
+      } {
+        Fl_Value_Slider volume {
+          label Vol
+          callback {pars->GlobalPar.PVolume=(int)o->value();}
+          tooltip Volume xywh {10 30 160 15} type {Horz Knob} box FLAT_BOX labelsize 12 align 8 maximum 127 step 1
+          code0 {o->value(pars->GlobalPar.PVolume);}
+        }
+        Fl_Value_Slider vsns {
+          label {V.Sns}
+          callback {pars->GlobalPar.PAmpVelocityScaleFunction=(int) o->value();}
+          tooltip {Velocity Sensing Function (rightmost to disable)} xywh {10 50 160 15} type {Horz Knob} box FLAT_BOX labelsize 12 align 8 maximum 127 step 1
+          code0 {o->value(pars->GlobalPar.PAmpVelocityScaleFunction);}
+        }
+        Fl_Dial pan {
+          label Pan
+          callback {pars->GlobalPar.PPanning=(int) o->value();}
+          tooltip {Panning (leftmost is Random)} xywh {210 25 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(pars->GlobalPar.PPanning);}
+          class WidgetPDial
+        }
+        Fl_Dial pstr {
+          label {P.Str.}
+          callback {pars->GlobalPar.PPunchStrength=(int) o->value();}
+          tooltip {Punch Strength} xywh {125 227 25 25} box ROUND_UP_BOX labelsize 11 align 1 maximum 127 step 1
+          code0 {o->value(pars->GlobalPar.PPunchStrength);}
+          class WidgetPDial
+        }
+        Fl_Dial pt {
+          label {P.t.}
+          callback {pars->GlobalPar.PPunchTime=(int) o->value();}
+          tooltip {Punch Time (duration)} xywh {155 227 25 25} box ROUND_UP_BOX labelsize 11 align 1 maximum 127 step 1
+          code0 {o->value(pars->GlobalPar.PPunchTime);}
+          class WidgetPDial
+        }
+        Fl_Dial pstc {
+          label {P.Stc.}
+          callback {pars->GlobalPar.PPunchStretch=(int) o->value();}
+          tooltip {Punch Stretch} xywh {185 227 25 25} box ROUND_UP_BOX labelsize 11 align 1 maximum 127 step 1
+          code0 {o->value(pars->GlobalPar.PPunchStretch);}
+          class WidgetPDial
+        }
+        Fl_Dial pvel {
+          label {P.Vel.}
+          callback {pars->GlobalPar.PPunchVelocitySensing=(int) o->value();}
+          tooltip {Punch Velocity Sensing} xywh {215 227 25 25} box ROUND_UP_BOX labelsize 11 align 1 maximum 127 step 1
+          code0 {o->value(pars->GlobalPar.PPunchVelocitySensing);}
+          class WidgetPDial
+        }
+        Fl_Group ampenv {
+          label {ADSynth Global - Amplitude Envelope} open
+          xywh {10 75 205 70} box FLAT_BOX color 51 align 144
+          code0 {o->init(pars->GlobalPar.AmpEnvelope);}
+          class EnvelopeUI
+        } {}
+        Fl_Group amplfo {
+          label {Amplitude LFO          } open
+          xywh {10 145 230 70} box FLAT_BOX color 47 align 144
+          code0 {o->init(pars->GlobalPar.AmpLfo);}
+          class LFOUI
+        } {}
+        Fl_Check_Button rndgrp {
+          label {Rnd Grp}
+          callback {pars->GlobalPar.Hrandgrouping=(int) o->value();}
+          tooltip {How the Harmonic Amplitude is applied to voices that use the same oscillator} xywh {70 225 40 25} down_box DOWN_BOX labelsize 10 align 148
+          code0 {o->value(pars->GlobalPar.Hrandgrouping);}
+        }
+      }
+      Fl_Group {} {
+        label FILTER
+        xywh {245 5 285 250} box THIN_UP_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 16 align 17
+      } {
+        Fl_Group filterenv {
+          label {ADSynth Global - Filter Envelope} open
+          xywh {250 110 275 70} box FLAT_BOX color 51 align 144
+          code0 {o->init(pars->GlobalPar.FilterEnvelope);}
+          class EnvelopeUI
+        } {}
+        Fl_Group filterlfo {
+          label {Filter LFO} open
+          xywh {250 180 230 70} box FLAT_BOX color 47 align 144
+          code0 {o->init(pars->GlobalPar.FilterLfo);}
+          class LFOUI
+        } {}
+        Fl_Group filterui {
+          label {ADsynth Global - Filter} open
+          xywh {250 35 275 75} box FLAT_BOX color 50 align 144
+          code0 {o->init(pars->GlobalPar.GlobalFilter,&pars->GlobalPar.PFilterVelocityScale,&pars->GlobalPar.PFilterVelocityScaleFunction);}
+          class FilterUI
+        } {}
+      }
+      Fl_Check_Button stereo {
+        label Stereo
+        callback {pars->GlobalPar.PStereo=(int) o->value();}
+        xywh {5 220 65 35} box ENGRAVED_BOX down_box DOWN_BOX labelfont 1 labelsize 12
+        code0 {o->value(pars->GlobalPar.PStereo);}
+      }
+      Fl_Button {} {
+        label {Show Voice List}
+        callback {for (int i=0;i<NUM_VOICES;i++){
+  voicelistitem[i]->refreshlist();
+}
+ADnoteVoiceList->show();}
+        xywh {180 375 125 25}
+      }
+      Fl_Button {} {
+        label {Show Voice Parameters}
+        callback {ADnoteVoice->show();}
+        xywh {5 375 170 25} labelfont 1
+      }
+      Fl_Button {} {
+        label Close
+        callback {ADnoteGlobalParameters->hide();}
+        xywh {470 375 60 25} box THIN_UP_BOX
+      }
+      Fl_Button {} {
+        label Resonance
+        callback {resui->resonancewindow->redraw();
+resui->resonancewindow->show();}
+        tooltip Resonance xywh {309 375 86 25} box THIN_UP_BOX
+      }
+      Fl_Button {} {
+        label C
+        callback {presetsui->copy(pars);}
+        xywh {405 380 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
+      }
+      Fl_Button {} {
+        label P
+        callback {presetsui->paste(pars,this);}
+        xywh {435 380 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
+      }
+    }
+    Fl_Window ADnoteVoice {
+      label {ADsynth Voice Parameters}
+      xywh {53 58 765 560} type Double hide
+    } {
+      Fl_Group advoice {
+        xywh {0 0 760 525} box BORDER_BOX
+        code0 {o->init(pars,nvoice,master);}
+        code1 {o->show();}
+        class ADvoiceUI
+      } {}
+      Fl_Button {} {
+        label {Close Window}
+        callback {ADnoteVoice->hide();}
+        xywh {300 530 195 25} box THIN_UP_BOX labelfont 1
+      }
+      Fl_Counter currentvoicecounter {
+        label {Current Voice}
+        callback {nvoice=(int)o->value()-1;
+advoice->hide();
+ADnoteVoice->remove(advoice);
+delete advoice;
+advoice=new ADvoiceUI(0,0,765,525);
+ADnoteVoice->add(advoice);
+advoice->init(pars,nvoice,master);
+advoice->show();
+ADnoteVoice->redraw();}
+        xywh {5 530 130 25} type Simple labelfont 1 align 8 minimum 0 maximum 2 step 1 value 1 textfont 1 textsize 18
+        code0 {o->bounds(1,NUM_VOICES);}
+      }
+      Fl_Button {} {
+        label C
+        callback {presetsui->copy(pars,nvoice);}
+        xywh {700 535 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
+      }
+      Fl_Button {} {
+        label P
+        callback {presetsui->paste(pars,this,nvoice);}
+        xywh {730 535 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
+      }
+    }
+    Fl_Window ADnoteVoiceList {
+      label {ADsynth Voices list}
+      xywh {32 266 650 260} type Double hide
+    } {
+      Fl_Text_Display {} {
+        label {No.}
+        xywh {10 15 30 10} box NO_BOX labelfont 1 labelsize 13
+      }
+      Fl_Text_Display {} {
+        label Vol
+        xywh {145 15 30 10} box NO_BOX labelfont 1 labelsize 13
+      }
+      Fl_Text_Display {} {
+        label Detune
+        xywh {384 15 25 10} box NO_BOX labelfont 1 labelsize 13
+      }
+      Fl_Text_Display {} {
+        label Pan
+        xywh {210 15 30 10} box NO_BOX labelfont 1 labelsize 13
+      }
+      Fl_Text_Display {} {
+        label {Vib. Depth}
+        xywh {560 15 30 10} box NO_BOX labelfont 1 labelsize 13
+      }
+      Fl_Text_Display {} {
+        label {R.}
+        xywh {245 15 25 10} box NO_BOX labelfont 1 labelsize 13
+      }
+      Fl_Button {} {
+        label {Hide Voice List}
+        callback {ADnoteVoiceList->hide();}
+        xywh {255 237 125 20}
+      }
+      Fl_Scroll {} {open
+        xywh {0 15 640 220} type VERTICAL box THIN_UP_BOX
+      } {
+        Fl_Pack {} {open
+          xywh {0 20 620 210}
+          code0 {for (int i=0;i<NUM_VOICES;i++){voicelistitem[i]=new ADvoicelistitem(0,0,620,25,"");voicelistitem[i]->init(pars,i,master);}}
+        } {}
+      }
+    }
+  }
+  Function {ADnoteUI(ADnoteParameters *parameters,Master *master_)} {} {
+    code {pars=parameters;
+master=master_;
+nvoice=0;
+resui=new ResonanceUI(pars->GlobalPar.Reson);
+make_window();} {}
+  }
+  Function {~ADnoteUI()} {} {
+    code {ADnoteVoiceList->hide();
+ADnoteGlobalParameters->hide();
+ADnoteVoice->hide();
+delete(ADnoteVoiceList);
+delete(ADnoteGlobalParameters);
+delete(ADnoteVoice);
+delete(resui);} {}
+  }
+  Function {refresh()} {} {
+    code {volume->value(pars->GlobalPar.PVolume);
+vsns->value(pars->GlobalPar.PAmpVelocityScaleFunction);
+pan->value(pars->GlobalPar.PPanning);
+
+stereo->value(pars->GlobalPar.PStereo);
+rndgrp->value(pars->GlobalPar.Hrandgrouping);
+
+pstr->value(pars->GlobalPar.PPunchStrength);
+pt->value(pars->GlobalPar.PPunchTime);
+pstc->value(pars->GlobalPar.PPunchStretch);
+pvel->value(pars->GlobalPar.PPunchVelocitySensing);
+
+detunevalueoutput->value(getdetune(pars->GlobalPar.PDetuneType,0,pars->GlobalPar.PDetune));
+freq->value(pars->GlobalPar.PDetune-8192);
+
+int k=pars->GlobalPar.PCoarseDetune/1024;if (k>=8) k-=16;
+octave->value(k);
+
+detunetype->value(pars->GlobalPar.PDetuneType-1);
+k=pars->GlobalPar.PCoarseDetune%1024;if (k>=512) k-=1024;
+coarsedet->value(k);
+amplfo->refresh();
+freqlfo->refresh();
+filterlfo->refresh();
+
+ampenv->refresh();
+freqenv->refresh();
+filterenv->refresh();
+filterui->refresh();
+
+for (int i=0;i<NUM_VOICES;i++) voicelistitem[i]->refreshlist();
+
+resui->refresh();
+currentvoicecounter->do_callback();} {}
+  }
+  decl {ADnoteParameters *pars;} {}
+  decl {ResonanceUI *resui;} {}
+  decl {Master *master;} {}
+  decl {int nvoice;} {}
+  decl {ADvoicelistitem *voicelistitem[NUM_VOICES];} {}
+} 
diff --git a/muse_qt4_evolution/synti/zynaddsubfx/UI/BankUI.fl b/muse_qt4_evolution/synti/zynaddsubfx/UI/BankUI.fl
new file mode 100644
index 00000000..cf1cfe9e
--- /dev/null
+++ b/muse_qt4_evolution/synti/zynaddsubfx/UI/BankUI.fl
@@ -0,0 +1,352 @@
+# data file for the Fltk User Interface Designer (fluid)
+version 1.0104 
+header_name {.h} 
+code_name {.cc}
+decl {//Copyright (c) 2002-2005 Nasca Octavian Paul} {} 
+
+decl {//License: GNU GPL version 2} {} 
+
+decl {\#include <stdlib.h>} {public
+} 
+
+decl {\#include <stdio.h>} {public
+} 
+
+decl {\#include <string.h>} {public
+} 
+
+decl {\#include <FL/Fl_Button.H>} {public
+} 
+
+decl {\#include <FL/Fl_File_Chooser.H>} {public
+} 
+
+decl {\#include "../Misc/Master.h"} {public
+} 
+
+decl {\#include "../Misc/Bank.h"} {public
+} 
+
+decl {\#include "../Misc/Config.h"} {public
+} 
+
+class BankProcess_ {} {
+  Function {process()} {open return_type {virtual void}
+  } {}
+  decl {Bank *bank;} {public
+  }
+} 
+
+class BankSlot {: {public Fl_Button,BankProcess_}
+} {
+  Function {BankSlot(int x,int y, int w, int h, const char *label=0):Fl_Button(x,y,w,h,label)} {} {
+    code {what=NULL;
+whatslot=NULL;
+nslot=0;
+nselected=NULL;} {}
+  }
+  Function {handle(int event)} {return_type int
+  } {
+    code {if (what==NULL) return(0);
+if (Fl::event_inside(this)){
+  *what=0;*whatslot=nslot;
+  if ((event==FL_RELEASE)&&(Fl::event_button()==1))*what=1;
+  if ((event==FL_RELEASE)&&(Fl::event_button()==3))*what=2;
+  if (event==FL_PUSH) highlight=1;
+}else highlight=0;
+
+int tmp=Fl_Button::handle(event);
+if ((*what!=0) && Fl::event_inside(this)) (bp->*fnc)();
+return(tmp);} {}
+  }
+  Function {init(int nslot_, int *what_, int *whatslot_,void (BankProcess_:: *fnc_)(void),BankProcess_ *bp_,Bank *bank_,int *nselected_)} {} {
+    code {nslot=nslot_;
+what=what_;
+whatslot=whatslot_;
+fnc=fnc_;
+bp=bp_;
+bank=bank_;
+nselected=nselected_;
+box(FL_THIN_UP_BOX);
+align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE|FL_ALIGN_CLIP);
+
+highlight=0;
+refresh();} {}
+  }
+  Function {refresh()} {} {
+    code {if (bank->emptyslot(nslot)) {
+	color(46);
+} else {
+	if (bank->isPADsynth_used(nslot)) color(26);
+		else color(51);
+};
+
+if (*nselected==nslot) color(6);
+
+
+label(bank->getnamenumbered(nslot));} {}
+  }
+  decl {int *what,*whatslot,nslot,highlight, *nselected;} {}
+  decl {void (BankProcess_:: *fnc)(void);} {}
+  decl {BankProcess_ *bp;} {}
+} 
+
+class BankUI {: {public BankProcess_}
+} {
+  Function {make_window()} {} {
+    Fl_Window bankuiwindow {
+      label Bank
+      xywh {4 64 785 575} type Double hide
+      code0 {o->label(bank->bankfiletitle);}
+      code1 {if (bank->bankfiletitle==NULL) o->label ("Choose a bank from the bank list on the left (or go to settings if to configure the bank location) or choose 'New Bank...' to make a new bank.");}
+    } {
+      Fl_Button {} {
+        label Close
+        callback {bankuiwindow->hide();}
+        xywh {705 546 70 24} box THIN_UP_BOX
+      }
+      Fl_Group {} {
+        xywh {5 34 772 491} box ENGRAVED_FRAME
+      } {
+        Fl_Pack {} {
+          xywh {10 39 150 481} box BORDER_BOX
+          code0 {o->box(FL_NO_BOX);}
+          code1 {for (int i=0;i<32;i++){bs[i]=new BankSlot (0,0,o->w(),15," ");bs[i]->init(i,&what,&slot,&BankProcess_::process,(BankProcess_ *)this,bank,&nselected);};}
+        } {}
+        Fl_Pack {} {
+          xywh {163 39 150 481} box BORDER_BOX
+          code0 {o->box(FL_NO_BOX);}
+          code1 {for (int i=32;i<64;i++){bs[i]=new BankSlot (0,0,o->w(),15," ");bs[i]->init(i,&what,&slot,&BankProcess_::process,(BankProcess_ *)this,bank,&nselected);};}
+        } {}
+        Fl_Pack {} {
+          xywh {316 39 150 481} box BORDER_BOX
+          code0 {o->box(FL_NO_BOX);}
+          code1 {for (int i=64;i<96;i++){bs[i]=new BankSlot (0,0,o->w(),15," ");bs[i]->init(i,&what,&slot,&BankProcess_::process,(BankProcess_ *)this,bank,&nselected);};}
+        } {}
+        Fl_Pack {} {
+          xywh {469 39 150 481} box BORDER_BOX
+          code0 {o->box(FL_NO_BOX);}
+          code1 {for (int i=96;i<128;i++){bs[i]=new BankSlot (0,0,o->w(),15," ");bs[i]->init(i,&what,&slot,&BankProcess_::process,(BankProcess_ *)this,bank,&nselected);};}
+        } {}
+        Fl_Pack {} {
+          xywh {622 39 150 481} box BORDER_BOX
+          code0 {o->box(FL_NO_BOX);}
+          code1 {for (int i=128;i<160;i++){bs[i]=new BankSlot (0,0,o->w(),15," ");bs[i]->init(i,&what,&slot,&BankProcess_::process,(BankProcess_ *)this,bank,&nselected);};}
+        } {}
+      }
+      Fl_Group modeselect {
+        xywh {5 528 425 42} box ENGRAVED_BOX
+      } {
+        Fl_Light_Button writebutton {
+          label WRITE
+          callback {if (o->value()>0.5) mode=2;
+removeselection();}
+          xywh {116 534 99 30} type Radio box PLASTIC_UP_BOX down_box THIN_DOWN_BOX selection_color 1 labeltype ENGRAVED_LABEL labelfont 1 labelsize 18
+          code0 {if (bank->locked()) o->deactivate();}
+        }
+        Fl_Light_Button readbutton {
+          label READ
+          callback {if (o->value()>0.5) mode=1;
+removeselection();}
+          xywh {11 534 99 30} type Radio box PLASTIC_UP_BOX down_box THIN_DOWN_BOX selection_color 101 labeltype ENGRAVED_LABEL labelfont 1 labelsize 18
+          code0 {o->value(1);}
+        }
+        Fl_Light_Button clearbutton {
+          label CLEAR
+          callback {if (o->value()>0.5) mode=3;
+removeselection();}
+          xywh {221 534 99 30} type Radio box PLASTIC_UP_BOX down_box THIN_DOWN_BOX selection_color 0 labeltype ENGRAVED_LABEL labelfont 1 labelsize 18
+          code0 {if (bank->locked()) o->deactivate();}
+        }
+        Fl_Light_Button swapbutton {
+          label SWAP
+          callback {if (o->value()>0.5) mode=4;
+removeselection();}
+          xywh {325 534 99 30} type Radio box PLASTIC_UP_BOX down_box THIN_DOWN_BOX selection_color 227 labeltype ENGRAVED_LABEL labelfont 1 labelsize 18
+          code0 {if (bank->locked()) o->deactivate();}
+        }
+      }
+      Fl_Button {} {
+        label {New Bank...}
+        callback {const char *dirname;
+
+dirname=fl_input("New empty Bank:");
+if (dirname==NULL) return;
+
+
+int result=bank->newbank(dirname);
+
+if (result!=0) fl_alert("Error: Could not make a new bank (directory)..");
+
+refreshmainwindow();}
+        xywh {685 5 93 25} box PLASTIC_UP_BOX labelfont 1 labelsize 12 align 128
+      }
+      Fl_Check_Button {} {
+        label {auto close}
+        callback {config.cfg.BankUIAutoClose=(int) o->value();}
+        tooltip {automatically close the bank window if the instrument is loaded} xywh {705 529 60 15} down_box DOWN_BOX labelsize 10
+        code0 {o->value(config.cfg.BankUIAutoClose);}
+      }
+      Fl_Choice banklist {
+        callback {int n=o->value();
+char *dirname=bank->banks[n].dir;
+if (dirname==NULL) return;
+
+if (bank->loadbank(dirname)==2)
+       fl_alert("Error: Could not load the bank from the directory\\n%s.",dirname);
+for (int i=0;i<BANK_SIZE;i++) bs[i]->refresh();
+refreshmainwindow();} open
+        xywh {5 8 220 20} down_box BORDER_BOX labelfont 1 align 0 textfont 1 textsize 12
+      } {}
+      Fl_Button {} {
+        label {Refresh bank list}
+        callback {rescan_for_banks();
+banklist->value(0);}
+        tooltip {Refresh the bank list (rescan)} xywh {230 8 105 20} box THIN_UP_BOX color 50 labelsize 12
+      }
+      Fl_Check_Button {} {
+        label {Show PADsynth status}
+        callback {config.cfg.CheckPADsynth=(int) o->value();
+refreshmainwindow();}
+        xywh {435 530 150 15} down_box DOWN_BOX labelsize 12
+        code0 {o->value(config.cfg.CheckPADsynth);}
+      }
+    }
+  }
+  Function {BankUI(Master *master_,int *npart_)} {} {
+    code {fnc=&BankProcess_::process;
+master=master_;
+npart=npart_;
+bank=&master_->bank;
+what=0;
+nselected=-1;
+make_window();
+mode=1;} {}
+  }
+  Function {~BankUI()} {return_type virtual
+  } {
+    code {bankuiwindow->hide();
+delete(bankuiwindow);} {}
+  }
+  Function {show()} {} {
+    code {bankuiwindow->show();
+simplesetmode(config.cfg.UserInterfaceMode==2);} {}
+  }
+  Function {hide()} {} {
+    code {bankuiwindow->hide();} {}
+  }
+  Function {init(Fl_Valuator *cbwig_)} {} {
+    code {cbwig=cbwig_;
+rescan_for_banks();} {}
+  }
+  Function {process()} {return_type void
+  } {
+    code {int slot=this->slot;
+
+if ((what==2)&&(bank->emptyslot(slot)==0)&&(mode!=4)) {//Rename slot
+    const char *tmp=fl_input("Slot (instrument) name:",(const char *)bank->getname(slot));
+    if (tmp!=NULL) bank->setname(slot,tmp,-1);
+    bs[slot]->refresh();
+};
+
+if ((what==1)&&(mode==1)&&(!bank->emptyslot(slot))){//Reads from slot
+    master->busy=true;
+     bank->loadfromslot(slot,master->part[*npart]);
+    master->busy=false;
+    master->part[*npart]->applyparameters();
+    snprintf((char *)master->part[*npart]->Pname,PART_MAX_NAME_LEN,"%s",bank->getname(slot));
+     cbwig->do_callback();
+     
+     if (config.cfg.BankUIAutoClose!=0)
+         bankuiwindow->hide();
+
+};
+
+if ((what==1)&&(mode==2)){//save(write) to slot
+     if (!bank->emptyslot(slot)){
+       if (!fl_ask("Overwrite the slot no. %d ?",slot+1)) goto nooverwriteslot;
+      };
+       master->busy=true;
+        bank->savetoslot(slot,master->part[*npart]);
+       master->busy=false;
+
+       bs[slot]->refresh();
+       mode=1;readbutton->value(1);writebutton->value(0);
+       nooverwriteslot:;
+};
+
+
+
+if ((what==1)&&(mode==3)&&(!bank->emptyslot(slot))){//Clears the slot
+      if (fl_ask("Clear the slot no. %d ?",slot+1)){
+          bank->clearslot(slot);
+          bs[slot]->refresh();
+      };
+};
+
+if (mode==4){//swap
+    bool done=false;
+    if ((what==1)&&(nselected>=0)){
+         bank->swapslot(nselected,slot);
+         int ns=nselected;
+         nselected=-1;
+         bs[slot]->refresh();
+         bs[ns]->refresh();
+         done=true;
+    };
+    if (((nselected<0)||(what==2))&&(!done)){
+        int ns=nselected;
+        nselected=slot;
+        if (ns>0) bs[ns]->refresh();
+        bs[slot]->refresh();
+    };
+};
+if (mode!=4) refreshmainwindow();} {selected
+    }
+  }
+  Function {refreshmainwindow()} {} {
+    code {bankuiwindow->label(bank->bankfiletitle);
+mode=1;readbutton->value(1);writebutton->value(0);clearbutton->value(0);swapbutton->value(0);
+nselected=-1;
+if (bank->locked()){
+    writebutton->deactivate();
+    clearbutton->deactivate();
+    swapbutton->deactivate();
+} else {
+    writebutton->activate();
+    clearbutton->activate();
+    swapbutton->activate();
+};
+for (int i=0;i<BANK_SIZE;i++) bs[i]->refresh();} {}
+  }
+  Function {removeselection()} {} {
+    code {if (nselected>=0) {
+   int ns=nselected;
+   nselected=-1;
+   bs[ns]->refresh();
+};} {}
+  }
+  Function {rescan_for_banks()} {} {
+    code {banklist->clear();
+banklist->add(" ");
+bank->rescanforbanks();
+
+for (int i=1;i<MAX_NUM_BANKS;i++) {
+    if (bank->banks[i].name!=NULL) banklist->add(bank->banks[i].name);
+};} {}
+  }
+  Function {simplesetmode(bool beginnerui)} {} {
+    code {readbutton->value(1);
+mode=1;
+removeselection();
+if (beginnerui) modeselect->hide();
+	else modeselect->show();} {}
+  }
+  decl {BankSlot *bs[BANK_SIZE];} {}
+  decl {int slot,what;//"what"=what button is pressed} {}
+  decl {int mode,*npart,nselected;} {}
+  decl {Master *master;} {}
+  decl {void (BankProcess_::* fnc)(void);} {}
+  decl {Fl_Valuator *cbwig;} {public
+  }
+} 
diff --git a/muse_qt4_evolution/synti/zynaddsubfx/UI/CMakeLists.txt b/muse_qt4_evolution/synti/zynaddsubfx/UI/CMakeLists.txt
new file mode 100644
index 00000000..9b385ff9
--- /dev/null
+++ b/muse_qt4_evolution/synti/zynaddsubfx/UI/CMakeLists.txt
@@ -0,0 +1,54 @@
+#=============================================================================
+#  MusE
+#  Linux Music Editor
+#  $Id:$
+#
+#  Copyright (C) 2006-2008 by Werner Schweer and others
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License version 2.
+#
+#  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., 675 Mass Ave, Cambridge, MA 02139, USA.
+#=============================================================================
+
+
+FLTK_WRAP_UI (
+      FLTKUI
+      ADnoteUI.fl
+      BankUI.fl
+      ConfigUI.fl
+      EffUI.fl
+      EnvelopeUI.fl
+      FilterUI.fl
+      LFOUI.fl
+      MasterUI.fl
+      MicrotonalUI.fl
+      OscilGenUI.fl
+      PADnoteUI.fl
+      PartUI.fl
+      PresetsUI.fl
+      ResonanceUI.fl
+      SUBnoteUI.fl
+      SeqUI.fl
+      VirKeyboard.fl
+      WidgetPDial.fl
+      )
+
+add_library (
+      zyngui STATIC
+      ${FLTKUI_FLTK_UI_SRCS}
+      )
+
+set_target_properties ( zyngui
+      PROPERTIES
+      COMPILE_FLAGS "-O3 -fPIC -fvisibility=hidden -DASM_F2I_YES -DOS_LINUX -DFFTW_VERSION_3"
+      )
+
+
diff --git a/muse_qt4_evolution/synti/zynaddsubfx/UI/ConfigUI.fl b/muse_qt4_evolution/synti/zynaddsubfx/UI/ConfigUI.fl
new file mode 100644
index 00000000..c130259e
--- /dev/null
+++ b/muse_qt4_evolution/synti/zynaddsubfx/UI/ConfigUI.fl
@@ -0,0 +1,443 @@
+# data file for the Fltk User Interface Designer (fluid)
+version 1.0106 
+header_name {.h} 
+code_name {.cc}
+decl {//Copyright (c) 2002-2005 Nasca Octavian Paul} {} 
+
+decl {//License: GNU GPL version 2} {} 
+
+decl {\#include <stdio.h>} {public
+} 
+
+decl {\#include <math.h>} {public
+} 
+
+decl {\#include <stdlib.h>} {public
+} 
+
+decl {\#include <FL/Fl_File_Chooser.H>} {public
+} 
+
+decl {\#include "../globals.h"} {public
+} 
+
+decl {\#include "../Misc/Util.h"} {public
+} 
+
+decl {\#include "../Misc/Dump.h"} {public
+} 
+
+decl {extern Dump dump;} {public
+} 
+
+class ConfigUI {} {
+  Function {make_window()} {} {
+    Fl_Window configwindow {
+      label {ZynAddSubFX Settings}
+      callback {writebankcfg();
+o->hide();}
+      xywh {88 313 510 340} type Double hide
+    } {
+      Fl_Tabs {} {
+        xywh {5 5 500 305}
+      } {
+        Fl_Group {} {
+          label {Main settings}
+          xywh {5 25 500 285}
+        } {
+          Fl_Group {} {
+            label {Sample Rate}
+            xywh {15 45 165 30} box ENGRAVED_FRAME
+          } {
+            Fl_Choice {} {
+              callback {if ((int)o->value()==0) samplerateinput->activate();
+       else samplerateinput->deactivate();
+
+int samplerates[8]={44100,16000,22050,32000,44100,48000,88200,96000};
+config.cfg.SampleRate=samplerates[(int)o->value()];
+
+setsamplerateinput();}
+              xywh {20 50 85 20} down_box BORDER_BOX textsize 10
+              code0 {o->value(getsamplerateorder());}
+            } {
+              menuitem {} {
+                label Custom
+                xywh {10 10 100 20} labelfont 1
+              }
+              menuitem {} {
+                label 16000Hz
+                xywh {30 30 100 20} labelfont 1
+              }
+              menuitem {} {
+                label 22050Hz
+                xywh {20 20 100 20} labelfont 1
+              }
+              menuitem {} {
+                label 32000Hz
+                xywh {30 30 100 20} labelfont 1
+              }
+              menuitem {} {
+                label 44100Hz
+                xywh {40 40 100 20} labelfont 1
+              }
+              menuitem {} {
+                label 48000Hz
+                xywh {50 50 100 20} labelfont 1
+              }
+              menuitem {} {
+                label 88200Hz
+                xywh {60 60 100 20} labelfont 1
+              }
+              menuitem {} {
+                label 96000Hz
+                xywh {70 70 100 20} labelfont 1
+              }
+            }
+            Fl_Input samplerateinput {
+              callback {char *tmp;
+config.cfg.SampleRate=strtoul(o->value(),&tmp,10);}
+              xywh {115 50 60 20} type Int textfont 1
+              code0 {setsamplerateinput();}
+              code1 {if (getsamplerateorder()!=0) o->deactivate();}
+            }
+          }
+          Fl_Input {} {
+            label {Buffer Size}
+            callback {char *tmp;
+config.cfg.SoundBufferSize=strtoul(o->value(),&tmp,10);}
+            tooltip {Internal Sound Buffer Size (samples)} xywh {190 45 60 20} type Int labelsize 12 align 129 textfont 1
+            code0 {char *tmpbuf=new char[100];o->cut(0,o->maximum_size());}
+            code1 {snprintf(tmpbuf,100,"%d",config.cfg.SoundBufferSize);o->insert(tmpbuf);}
+            code2 {delete(tmpbuf);}
+          }
+          Fl_Light_Button {} {
+            label {Swap Stereo }
+            callback {config.cfg.SwapStereo=(int) o->value();}
+            xywh {20 80 85 20} box THIN_UP_BOX labelsize 11
+            code0 {o->value(config.cfg.SwapStereo);}
+          }
+          Fl_Choice {} {
+            label OscilSize
+            callback {config.cfg.OscilSize=128<<o->value();}
+            tooltip {ADSynth Oscillator Size (samples)} xywh {175 80 75 20} down_box BORDER_BOX labelfont 1 labelsize 12 textsize 10
+            code0 {o->value( (int) (log(config.cfg.OscilSize/128.0-1.0)/log(2)) +1);}
+          } {
+            menuitem {} {
+              label 128
+              xywh {25 25 100 20} labelfont 1
+            }
+            menuitem {} {
+              label 256
+              xywh {35 35 100 20} labelfont 1
+            }
+            menuitem {} {
+              label 512
+              xywh {45 45 100 20} labelfont 1
+            }
+            menuitem {} {
+              label 1024
+              xywh {45 45 100 20} labelfont 1
+            }
+            menuitem {} {
+              label 2048
+              xywh {55 55 100 20} labelfont 1
+            }
+            menuitem {} {
+              label 4096
+              xywh {55 55 100 20} labelfont 1
+            }
+            menuitem {} {
+              label 8192
+              xywh {65 65 100 20} labelfont 1
+            }
+            menuitem {} {
+              label 16384
+              xywh {75 75 100 20} labelfont 1
+            }
+          }
+          Fl_Box {} {
+            label {Most settings has effect only after ZynAddSubFX is restarted.}
+            xywh {15 275 235 30} labelfont 1 labelsize 12 align 128
+          }
+          Fl_Box {} {
+            label {Read the Readme.txt for other settings}
+            xywh {10 255 240 20} labelfont 1 labelsize 12 align 128
+          }
+          Fl_Group {} {
+            xywh {15 125 230 85} box ENGRAVED_BOX
+          } {
+            Fl_File_Input {} {
+              label {Dump File}
+              callback {snprintf(config.cfg.DumpFile,config.maxstringsize,"%s",o->value());}
+              xywh {20 170 220 35} align 5
+              code0 {o->insert(config.cfg.DumpFile);}
+            }
+            Fl_Check_Button {} {
+              label {Dump notes}
+              callback {config.cfg.DumpNotesToFile=(int) o->value();
+dump.startnow();//this has effect only if this option was disabled}
+              xywh {20 130 100 20} down_box DOWN_BOX
+              code0 {o->value(config.cfg.DumpNotesToFile);}
+            }
+            Fl_Check_Button {} {
+              label Append
+              callback {config.cfg.DumpAppend=(int) o->value();}
+              xywh {160 130 80 20} down_box DOWN_BOX
+              code0 {o->value(config.cfg.DumpAppend);}
+            }
+          }
+          Fl_Group {} {
+            xywh {255 45 245 260} box ENGRAVED_FRAME
+          } {
+            Fl_Box {} {
+              label {Note: Not all the following settings are used (this depends on the operating system, etc..)}
+              xywh {260 50 235 45} labelfont 1 labelsize 12 align 128
+            }
+            Fl_Group {} {
+              label Linux
+              xywh {260 110 235 115} box ENGRAVED_BOX labelfont 1 labelsize 16 align 5
+            } {
+              Fl_File_Input {} {
+                label {OSS Sequencer Device (/dev/...)}
+                callback {snprintf(config.cfg.LinuxOSSSeqInDev,config.maxstringsize,"%s",o->value());}
+                xywh {265 180 225 35} align 5
+                code0 {o->insert(config.cfg.LinuxOSSSeqInDev);}
+              }
+              Fl_File_Input {} {
+                label {OSS Wave Out Device (/dev/...)}
+                callback {snprintf(config.cfg.LinuxOSSWaveOutDev,config.maxstringsize,"%s",o->value());}
+                xywh {265 130 225 35} align 5
+                code0 {o->insert(config.cfg.LinuxOSSWaveOutDev);}
+              }
+            }
+            Fl_Group {} {
+              label Windows
+              xywh {260 250 235 50} box ENGRAVED_BOX labelfont 1 labelsize 16 align 5
+            } {
+              Fl_Counter {} {
+                label {Midi In Dev}
+                callback {config.cfg.WindowsMidiInId=(int) o->value();
+midiinputnamebox->label(config.winmididevices[config.cfg.WindowsMidiInId].name);}
+                xywh {270 270 65 20} type Simple labelsize 12 align 1 minimum 0 maximum 100 step 1
+                code0 {o->maximum(config.winmidimax-1);}
+                code1 {o->value(config.cfg.WindowsMidiInId);}
+              }
+              Fl_Box midiinputnamebox {
+                label {Midi input device name}
+                xywh {340 260 150 35} labelfont 1 labelsize 12 align 212
+                code0 {o->label(config.winmididevices[config.cfg.WindowsMidiInId].name);}
+              }
+            }
+          }
+          Fl_Counter {} {
+            label {XML compression level}
+            callback {config.cfg.GzipCompression=(int) o->value();}
+            tooltip {gzip compression level (0 - uncompressed)} xywh {20 215 65 15} type Simple labelsize 12 align 8 minimum 0 maximum 9 step 1
+            code0 {o->value(config.cfg.GzipCompression);}
+          }
+          Fl_Choice {} {
+            label {PADsynth Interpolation}
+            callback {config.cfg.Interpolation=(int) o->value();}
+            xywh {175 105 75 15} down_box BORDER_BOX labelsize 11 textsize 12
+            code0 {o->value(config.cfg.Interpolation);}
+          } {
+            menuitem {} {
+              label {Linear(fast)}
+              xywh {0 0 100 20} labelfont 1 labelsize 10
+            }
+            menuitem {} {
+              label {Cubic(slow)}
+              xywh {10 10 100 20} labelfont 1 labelsize 10
+            }
+          }
+          Fl_Choice {} {
+            label {Virtual Keyboard Layout}
+            callback {config.cfg.VirKeybLayout=(int) o->value();;} open selected
+            xywh {155 235 85 20} down_box BORDER_BOX labelsize 13 textfont 1 textsize 12
+            code0 {o->value(config.cfg.VirKeybLayout);}
+          } {
+            menuitem {} {
+              label { }
+              xywh {5 5 100 20} labelfont 1 labelsize 13 deactivate
+            }
+            menuitem {} {
+              label QWERTY
+              xywh {15 15 100 20} labelfont 1 labelsize 13
+            }
+            menuitem {} {
+              label Dvorak
+              xywh {25 25 100 20} labelfont 1 labelsize 13
+            }
+          }
+        }
+        Fl_Group {} {
+          label {Bank root dirs}
+          xywh {5 25 500 285} hide
+        } {
+          Fl_Browser rootsbrowse {
+            callback {activatebutton_rootdir(o->value()!=0);}
+            xywh {15 35 485 220} type Hold
+          }
+          Fl_Button {} {
+            label {Add root directory...}
+            callback {const char *dirname;
+dirname=fl_dir_chooser("Add a root directory for banks:",NULL,0);
+if (dirname==NULL) return;
+
+rootsbrowse->add(dirname);}
+            xywh {15 265 80 35} box THIN_UP_BOX align 128
+          }
+          Fl_Button removerootdirbutton {
+            label {Remove root dir...}
+            callback {if (rootsbrowse->value()!=0) {
+   rootsbrowse->remove(rootsbrowse->value());
+};
+activatebutton_rootdir(false);}
+            xywh {105 265 80 35} box THIN_UP_BOX align 128
+            code0 {o->deactivate();}
+          }
+          Fl_Button makedefaultrootdirbutton {
+            label {Make default}
+            callback {int n=rootsbrowse->value();
+
+if (n!=0) {
+   rootsbrowse->move(1,n);
+   rootsbrowse->value(1);
+   rootsbrowse->redraw();
+};
+activatebutton_rootdir(true);}
+            xywh {190 265 80 35} box THIN_UP_BOX align 128
+            code0 {o->deactivate();}
+          }
+        }
+        Fl_Group {} {
+          label {Presets dirs}
+          xywh {5 25 500 285} hide
+        } {
+          Fl_Browser presetbrowse {
+            callback {activatebutton_presetdir(o->value()!=0);}
+            xywh {15 35 485 220} type Hold
+          }
+          Fl_Button {} {
+            label {Add preset directory...}
+            callback {const char *dirname;
+dirname=fl_dir_chooser("Add a preset directory :",NULL,0);
+if (dirname==NULL) return;
+
+presetbrowse->add(dirname);}
+            xywh {15 265 80 35} box THIN_UP_BOX align 128
+          }
+          Fl_Button removepresetbutton {
+            label {Remove preset dir...}
+            callback {if (presetbrowse->value()!=0) {
+   presetbrowse->remove(presetbrowse->value());
+};
+activatebutton_presetdir(false);}
+            xywh {105 265 80 35} box THIN_UP_BOX align 128
+            code0 {o->deactivate();}
+          }
+          Fl_Button makedefaultpresetbutton {
+            label {Make default}
+            callback {int n=presetbrowse->value();
+
+if (n!=0) {
+   presetbrowse->move(1,n);
+   presetbrowse->value(1);
+   presetbrowse->redraw();
+};
+activatebutton_presetdir(true);}
+            xywh {190 265 80 35} box THIN_UP_BOX align 128
+            code0 {o->deactivate();}
+          }
+        }
+      }
+      Fl_Button {} {
+        label Close
+        callback {configwindow->hide();
+writebankcfg();
+writepresetcfg();}
+        xywh {200 315 105 20} box THIN_UP_BOX
+      }
+    }
+  }
+  Function {ConfigUI()} {} {
+    code {make_window();
+readbankcfg();
+readpresetcfg();} {}
+  }
+  Function {activatebutton_rootdir(bool active)} {} {
+    code {if (active) {
+	removerootdirbutton->activate();
+	makedefaultrootdirbutton->activate();
+}else{
+	removerootdirbutton->deactivate();
+	makedefaultrootdirbutton->deactivate();
+};} {}
+  }
+  Function {activatebutton_presetdir(bool active)} {} {
+    code {if (active) {
+	removepresetbutton->activate();
+	makedefaultpresetbutton->activate();
+}else{
+	removepresetbutton->deactivate();
+	makedefaultpresetbutton->deactivate();
+};} {}
+  }
+  Function {readbankcfg()} {} {
+    code {rootsbrowse->clear();
+
+for (int i=0;i<MAX_BANK_ROOT_DIRS;i++){
+  if (config.cfg.bankRootDirList[i]!=NULL) rootsbrowse->add(config.cfg.bankRootDirList[i]);
+};} {}
+  }
+  Function {writebankcfg()} {} {
+    code {config.clearbankrootdirlist();
+
+for (int n=0;n<rootsbrowse->size();n++){ 
+     config.cfg.bankRootDirList[n]=new char [MAX_STRING_SIZE];
+     strncpy(config.cfg.bankRootDirList[n],rootsbrowse->text(n+1),MAX_STRING_SIZE);
+};} {}
+  }
+  Function {readpresetcfg()} {} {
+    code {presetbrowse->clear();
+
+for (int i=0;i<MAX_BANK_ROOT_DIRS;i++){
+  if (config.cfg.presetsDirList[i]!=NULL) presetbrowse->add(config.cfg.presetsDirList[i]);
+};} {}
+  }
+  Function {writepresetcfg()} {} {
+    code {config.clearpresetsdirlist();
+
+for (int n=0;n<presetbrowse->size();n++){ 
+     config.cfg.presetsDirList[n]=new char [MAX_STRING_SIZE];
+     strncpy(config.cfg.presetsDirList[n],presetbrowse->text(n+1),MAX_STRING_SIZE);
+};} {}
+  }
+  Function {getsamplerateorder()} {return_type int
+  } {
+    code {int smpr=config.cfg.SampleRate;
+int order=0;
+switch(smpr){
+   case 16000:order=1;break;
+   case 22050:order=2;break;
+   case 32000:order=3;break;
+   case 44100:order=4;break;
+   case 48000:order=5;break;
+   case 88200:order=6;break;
+   case 96000:order=7;break;
+   default:order=0;break;
+};
+return(order);} {}
+  }
+  Function {setsamplerateinput()} {return_type void
+  } {
+    code {char *tmpbuf=new char[100];
+samplerateinput->cut(0,samplerateinput->maximum_size());
+snprintf(tmpbuf,100,"%d",config.cfg.SampleRate);
+samplerateinput->insert(tmpbuf);
+delete (tmpbuf);} {}
+  }
+  Function {show()} {} {
+    code {configwindow->show();} {}
+  }
+} 
diff --git a/muse_qt4_evolution/synti/zynaddsubfx/UI/EffUI.fl b/muse_qt4_evolution/synti/zynaddsubfx/UI/EffUI.fl
new file mode 100644
index 00000000..e3ad8fc9
--- /dev/null
+++ b/muse_qt4_evolution/synti/zynaddsubfx/UI/EffUI.fl
@@ -0,0 +1,2310 @@
+# data file for the Fltk User Interface Designer (fluid)
+version 1.0104 
+header_name {.h} 
+code_name {.cc}
+decl {//Copyright (c) 2002-2005 Nasca Octavian Paul} {} 
+
+decl {//License: GNU GPL version 2} {} 
+
+decl {\#include <stdlib.h>} {public
+} 
+
+decl {\#include <stdio.h>} {public
+} 
+
+decl {\#include <string.h>} {public
+} 
+
+decl {\#include "../globals.h"} {public
+} 
+
+decl {\#include "WidgetPDial.h"} {public
+} 
+
+decl {\#include "EnvelopeUI.h"} {public
+} 
+
+decl {\#include "FilterUI.h"} {public
+} 
+
+decl {\#include "../Misc/Util.h"} {public
+} 
+
+decl {\#include "../Effects/EffectMgr.h"} {public
+} 
+
+decl {\#include "PresetsUI.h"} {public
+} 
+
+class EQGraph {: {public Fl_Box}
+} {
+  Function {EQGraph(int x,int y, int w, int h, const char *label=0):Fl_Box(x,y,w,h,label)} {} {
+    code {eff=NULL;
+maxdB=30;} {}
+  }
+  Function {init(EffectMgr *eff_)} {} {
+    code {eff=eff_;
+oldx=-1;
+khzval=-1;} {}
+  }
+  Function {draw_freq_line(REALTYPE freq,int type)} {} {
+    code {fl_color(FL_GRAY);
+REALTYPE freqx=getfreqpos(freq);
+switch(type){
+  case 0:if (active_r()) fl_color(FL_WHITE);
+            else fl_color(205,205,205);
+         fl_line_style(FL_SOLID);
+         break;
+  case 1:fl_line_style(FL_DOT);break;
+  case 2:fl_line_style(FL_DASH);break;
+}; 
+
+
+if ((freqx>0.0)&&(freqx<1.0))
+   fl_line(x()+(int) (freqx*w()),y(),
+   x()+(int) (freqx*w()),y()+h());} {}
+  }
+  Function {draw()} {} {
+    code {int ox=x(),oy=y(),lx=w(),ly=h(),i,iy,oiy;
+REALTYPE freqx;
+
+if (active_r()) fl_color(0,70,150);
+       else fl_color(80,120,160);
+fl_rectf(ox,oy,lx,ly);
+
+
+//draw the lines
+fl_color(FL_GRAY);
+
+fl_line_style(FL_SOLID);
+fl_line(ox+2,oy+ly/2,ox+lx-2,oy+ly/2);
+
+freqx=getfreqpos(1000.0);
+if ((freqx>0.0)&&(freqx<1.0))
+   fl_line(ox+(int) (freqx*lx),oy,
+    ox+(int) (freqx*lx),oy+ly);
+
+for (i=1;i<10;i++){
+   if(i==1){
+     draw_freq_line(i*100.0,0);
+     draw_freq_line(i*1000.0,0);
+   }else 
+    if (i==5){
+      draw_freq_line(i*10.0,2);
+      draw_freq_line(i*100.0,2);
+      draw_freq_line(i*1000.0,2);
+    }else{
+      draw_freq_line(i*10.0,1);
+      draw_freq_line(i*100.0,1);
+      draw_freq_line(i*1000.0,1);
+    };
+};
+
+draw_freq_line(10000.0,0);
+draw_freq_line(20000.0,1);
+
+
+fl_line_style(FL_DOT);
+int GY=6;if (ly<GY*3) GY=-1;
+for (i=1;i<GY;i++){
+   int tmp=(int)(ly/(REALTYPE)GY*i);
+   fl_line(ox+2,oy+tmp,ox+lx-2,oy+tmp);
+};
+
+
+//draw the frequency response
+if (active_r()) fl_color(FL_YELLOW);
+       else fl_color(200,200,80);
+fl_line_style(FL_SOLID);
+oiy=getresponse(ly,getfreqx(0.0));
+for (i=1;i<lx;i++){
+   REALTYPE frq=getfreqx(i/(REALTYPE) lx);
+   if (frq>SAMPLE_RATE/2) break;
+   iy=getresponse(ly,frq);
+   if ((oiy>=0) && (oiy<ly) &&
+       (iy>=0) && (iy<ly) )
+        fl_line(ox+i-1,oy+ly-oiy,ox+i,oy+ly-iy);
+   oiy=iy;
+};} {}
+  }
+  Function {getresponse(int maxy,REALTYPE freq)} {return_type int
+  } {
+    code {REALTYPE dbresp=eff->getEQfreqresponse(freq);
+int idbresp=(int) ((dbresp/maxdB+1.0)*maxy/2.0);
+
+
+//fprintf(stderr,"%.5f\\n",(dbresp/maxdB+1.0)*maxy/2.0);
+
+
+return(idbresp);} {}
+  }
+  Function {getfreqx(REALTYPE x)} {return_type REALTYPE
+  } {
+    code {if (x>1.0) x=1.0;
+return(20.0*pow(1000.0,x));} {}
+  }
+  Function {getfreqpos(REALTYPE freq)} {return_type REALTYPE
+  } {
+    code {if (freq<0.00001) freq=0.00001;
+return(log(freq/20.0)/log(1000.0));} {}
+  }
+  decl {int oldx,oldy;} {}
+  decl {REALTYPE khzval;} {public
+  }
+  decl {EffectMgr *eff;} {}
+  decl {int maxdB;} {}
+} 
+
+class EffUI {: {public Fl_Group,public PresetsUI_}
+} {
+  Function {EffUI(int x,int y, int w, int h, const char *label=0):Fl_Group(x,y,w,h,label)} {} {
+    code {eff=NULL;
+filterwindow=NULL;} {}
+  }
+  Function {~EffUI()} {} {
+    code {effnullwindow->hide();//delete (effnullwindow);
+effreverbwindow->hide();//delete (effreverbwindow);
+effechowindow->hide();//delete (effechowindow);
+effchoruswindow->hide();//delete (effchoruswindow);
+effphaserwindow->hide();//delete (effphaserwindow);
+effalienwahwindow->hide();//delete (effalienwahwindow);
+effdistorsionwindow->hide();//delete (effdistorsionwindow);
+effeqwindow->hide();//delete (effeqwindow);
+effdynamicfilterwindow->hide();//delete (effdynamicfilterwindow);
+
+if (filterwindow!=NULL){
+	filterwindow->hide();
+	delete(filterwindow);
+};} {}
+  }
+  Function {make_null_window()} {} {
+    Fl_Window effnullwindow {
+      xywh {287 379 380 95} type Double box PLASTIC_UP_BOX color 221 labelfont 1 hide
+      class Fl_Group
+    } {
+      Fl_Text_Display {} {
+        label {No Effect}
+        xywh {120 35 10 20} box NO_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 26 labelcolor 43 align 8
+      }
+    }
+  }
+  Function {make_reverb_window()} {} {
+    Fl_Window effreverbwindow {
+      xywh {262 421 380 95} type Double box PLASTIC_UP_BOX color 221 labelfont 1 hide
+      class Fl_Group
+    } {
+      Fl_Text_Display {} {
+        label {Reverb }
+        xywh {275 10 10 20} box NO_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 26 align 8
+      }
+      Fl_Choice revp {
+        label Preset
+        callback {eff->changepreset((int)o->value());
+
+refresh(eff);}
+        xywh {10 15 90 15} down_box BORDER_BOX color 14 selection_color 0 labelfont 1 labelsize 10 labelcolor 0 align 5 textfont 1 textsize 10 textcolor 7
+      } {
+        menuitem {} {
+          label {Cathedral 1}
+          xywh {10 10 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Cathedral 2}
+          xywh {20 20 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Cathedral 3}
+          xywh {30 30 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Hall 1}
+          xywh {40 40 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Hall 2}
+          xywh {50 50 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Room 1}
+          xywh {60 60 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Room 2}
+          xywh {70 70 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label Basement
+          xywh {80 80 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label Tunnel
+          xywh {90 90 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Echoed 1}
+          xywh {100 100 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Echoed 2}
+          xywh {110 110 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Very Long 1}
+          xywh {120 120 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Very Long 2}
+          xywh {130 130 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+      }
+      Fl_Choice revp10 {
+        label Type
+        callback {eff->seteffectpar(10,(int) o->value());}
+        xywh {110 15 75 15} down_box BORDER_BOX color 14 labelfont 1 labelsize 10 labelcolor 0 align 5 textfont 1 textsize 10 textcolor 7
+      } {
+        menuitem {} {
+          label Random
+          xywh {20 20 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label Freeverb
+          xywh {30 30 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+      }
+      Fl_Dial revp0 {
+        label Vol
+        callback {eff->seteffectpar(0,(int) o->value());}
+        xywh {10 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial revp1 {
+        label Pan
+        callback {eff->seteffectpar(1,(int) o->value());}
+        xywh {45 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial revp2 {
+        label Time
+        callback {eff->seteffectpar(2,(int) o->value());}
+        xywh {80 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial revp3 {
+        label {I.del}
+        callback {eff->seteffectpar(3,(int) o->value());}
+        xywh {120 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 when 4 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial revp4 {
+        label {I.delfb}
+        callback {eff->seteffectpar(4,(int) o->value());}
+        xywh {155 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial revp5 {
+        label {R.delay}
+        callback {eff->seteffectpar(5,(int) o->value());}
+        xywh {200 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 when 4 maximum 127 deactivate
+        class WidgetPDial
+      }
+      Fl_Dial revp6 {
+        label {E/R}
+        callback {eff->seteffectpar(6,(int) o->value());}
+        xywh {235 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127 deactivate
+        class WidgetPDial
+      }
+      Fl_Dial revp7 {
+        label LPF
+        callback {eff->seteffectpar(7,(int) o->value());}
+        xywh {270 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial revp8 {
+        label HPF
+        callback {eff->seteffectpar(8,(int) o->value());}
+        xywh {305 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial revp9 {
+        label Damp
+        callback {eff->seteffectpar(9,(int) o->value());}
+        xywh {340 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 minimum 64 maximum 127 step 1
+        class WidgetPDial
+      }
+      Fl_Dial revp11 {
+        label {R.S.}
+        callback {int x=64;
+if (Fl::event_button1()) x=(int)o->value();
+   else o->value(x);
+eff->seteffectpar(11,x);}
+        tooltip RoomSize xywh {190 10 25 25} box ROUND_UP_BOX labelfont 1 labelsize 8 align 8 minimum 1 maximum 127 step 1
+        class WidgetPDial
+      }
+    }
+  }
+  Function {make_echo_window()} {} {
+    Fl_Window effechowindow {
+      xywh {178 394 380 95} type Double box PLASTIC_UP_BOX color 221 labelfont 1 hide
+      class Fl_Group
+    } {
+      Fl_Choice echop {
+        label Preset
+        callback {eff->changepreset((int)o->value());
+refresh(eff);}
+        xywh {11 15 95 15} down_box BORDER_BOX color 14 selection_color 0 labelfont 1 labelsize 10 labelcolor 0 align 5 textfont 1 textsize 10 textcolor 7
+      } {
+        menuitem {} {
+          label {Echo 1}
+          xywh {20 20 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Echo 2}
+          xywh {30 30 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Echo 3}
+          xywh {40 40 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Simple Echo}
+          xywh {50 50 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label Canyon
+          xywh {60 60 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Panning Echo 1}
+          xywh {70 70 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Panning Echo 2}
+          xywh {80 80 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Panning Echo 3}
+          xywh {90 90 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Feedback Echo}
+          xywh {100 100 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+      }
+      Fl_Text_Display {} {
+        label Echo
+        xywh {295 10 10 20} box NO_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 26 align 8
+      }
+      Fl_Dial echop0 {
+        label Vol
+        callback {eff->seteffectpar(0,(int) o->value());}
+        xywh {10 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial echop1 {
+        label Pan
+        callback {eff->seteffectpar(1,(int) o->value());}
+        xywh {45 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial echop2 {
+        label Delay
+        callback {eff->seteffectpar(2,(int) o->value());}
+        xywh {80 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 when 4 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial echop3 {
+        label {LRdl.}
+        callback {eff->seteffectpar(3,(int) o->value());}
+        xywh {120 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 when 4 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial echop4 {
+        label {LRc.}
+        callback {eff->seteffectpar(4,(int) o->value());}
+        xywh {155 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial echop5 {
+        label {Fb.}
+        callback {eff->seteffectpar(5,(int) o->value());}
+        xywh {195 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial echop6 {
+        label Damp
+        callback {eff->seteffectpar(6,(int) o->value());}
+        xywh {235 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+    }
+  }
+  Function {make_chorus_window()} {} {
+    Fl_Window effchoruswindow {
+      xywh {210 263 380 95} type Double box PLASTIC_UP_BOX color 221 labelfont 1 hide
+      class Fl_Group
+    } {
+      Fl_Choice chorusp {
+        label Preset
+        callback {eff->changepreset((int)o->value());
+refresh(eff);}
+        xywh {10 15 90 15} down_box BORDER_BOX color 14 selection_color 0 labelfont 1 labelsize 10 labelcolor 0 align 5 textfont 1 textsize 10 textcolor 7
+      } {
+        menuitem {} {
+          label {Chorus 1}
+          xywh {20 20 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Chorus 2}
+          xywh {30 30 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Chorus 3}
+          xywh {40 40 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Celeste 1}
+          xywh {50 50 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Celeste 2}
+          xywh {60 60 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Flange 1}
+          xywh {70 70 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Flange 2}
+          xywh {80 80 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Flange 3}
+          xywh {90 90 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Flange 4}
+          xywh {100 100 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Flange 5}
+          xywh {110 110 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+      }
+      Fl_Text_Display {} {
+        label Chorus
+        xywh {265 10 10 20} box NO_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 26 align 8
+      }
+      Fl_Dial chorusp0 {
+        label Vol
+        callback {eff->seteffectpar(0,(int) o->value());}
+        xywh {10 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial chorusp1 {
+        label Pan
+        callback {eff->seteffectpar(1,(int) o->value());}
+        xywh {45 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial chorusp2 {
+        label Freq
+        callback {eff->seteffectpar(2,(int) o->value());}
+        xywh {85 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial chorusp3 {
+        label Rnd
+        callback {eff->seteffectpar(3,(int) o->value());}
+        xywh {120 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 when 4 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial chorusp5 {
+        label {St.df}
+        callback {eff->seteffectpar(5,(int) o->value());}
+        xywh {200 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial chorusp6 {
+        label Dpth
+        callback {eff->seteffectpar(6,(int) o->value());}
+        xywh {235 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial chorusp7 {
+        label Delay
+        callback {eff->seteffectpar(7,(int) o->value());}
+        xywh {270 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial chorusp8 {
+        label Fb
+        callback {eff->seteffectpar(8,(int) o->value());}
+        xywh {305 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial chorusp9 {
+        label {L/R}
+        callback {eff->seteffectpar(9,(int) o->value());}
+        xywh {340 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Check_Button {} {
+        label Flange
+        callback {eff->seteffectpar(10,(int) o->value());}
+        xywh {120 10 55 20} box THIN_UP_BOX down_box DOWN_BOX color 230 labelfont 1 labelsize 10 hide deactivate
+        code0 {o->value(eff->geteffectpar(10));}
+      }
+      Fl_Check_Button chorusp11 {
+        label Substract
+        callback {eff->seteffectpar(11,(int) o->value());}
+        xywh {185 10 70 20} box THIN_UP_BOX down_box DOWN_BOX color 230 labelfont 1 labelsize 10
+      }
+      Fl_Choice chorusp4 {
+        label {LFO type}
+        callback {eff->seteffectpar(4,(int) o->value());}
+        tooltip {LFO function} xywh {155 50 40 15} down_box BORDER_BOX labelfont 1 labelsize 10 align 130 textsize 8
+      } {
+        menuitem {} {
+          label SINE
+          xywh {15 15 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label TRI
+          xywh {25 25 100 20} labelfont 1 labelsize 10
+        }
+      }
+    }
+  }
+  Function {make_phaser_window()} {} {
+    Fl_Window effphaserwindow {
+      xywh {197 313 380 95} type Double box PLASTIC_UP_BOX color 221 labelfont 1 hide
+      class Fl_Group
+    } {
+      Fl_Choice phaserp {
+        label Preset
+        callback {eff->changepreset((int)o->value());
+refresh(eff);}
+        xywh {10 15 90 15} down_box BORDER_BOX color 14 selection_color 0 labelfont 1 labelsize 10 labelcolor 0 align 5 textfont 1 textsize 10 textcolor 7
+      } {
+        menuitem {} {
+          label {Phaser 1}
+          xywh {30 30 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Phaser 2}
+          xywh {40 40 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Phaser 3}
+          xywh {50 50 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Phaser 4}
+          xywh {60 60 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Phaser 5}
+          xywh {70 70 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Phaser 6}
+          xywh {80 80 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+      }
+      Fl_Text_Display {} {
+        label Phaser
+        xywh {275 10 10 20} box NO_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 26 align 8
+      }
+      Fl_Dial phaserp0 {
+        label Vol
+        callback {eff->seteffectpar(0,(int) o->value());}
+        xywh {10 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial phaserp1 {
+        label Pan
+        callback {eff->seteffectpar(1,(int) o->value());}
+        xywh {45 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial phaserp2 {
+        label Freq
+        callback {eff->seteffectpar(2,(int) o->value());}
+        xywh {85 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial phaserp3 {
+        label Rnd
+        callback {eff->seteffectpar(3,(int) o->value());}
+        xywh {120 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 when 4 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial phaserp5 {
+        label {St.df}
+        callback {eff->seteffectpar(5,(int) o->value());}
+        xywh {200 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial phaserp6 {
+        label Dpth
+        callback {eff->seteffectpar(6,(int) o->value());}
+        xywh {235 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial phaserp7 {
+        label Fb
+        callback {eff->seteffectpar(7,(int) o->value());}
+        xywh {270 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial phaserp9 {
+        label {L/R}
+        callback {eff->seteffectpar(9,(int) o->value());}
+        xywh {345 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Check_Button phaserp10 {
+        label Substract
+        callback {eff->seteffectpar(10,(int) o->value());}
+        xywh {185 10 70 20} box THIN_UP_BOX down_box DOWN_BOX color 230 labelfont 1 labelsize 10
+      }
+      Fl_Choice phaserp4 {
+        label {LFO type}
+        callback {eff->seteffectpar(4,(int) o->value());}
+        tooltip {LFO function} xywh {155 50 40 15} down_box BORDER_BOX labelfont 1 labelsize 10 align 130 textsize 8
+      } {
+        menuitem {} {
+          label SINE
+          xywh {15 15 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label TRI
+          xywh {25 25 100 20} labelfont 1 labelsize 10
+        }
+      }
+      Fl_Counter phaserp8 {
+        label Stages
+        callback {eff->seteffectpar(8,(int) o->value());}
+        xywh {305 55 35 15} type Simple labelfont 1 labelsize 12 minimum 0 maximum 127 step 1
+        code0 {o->range(1,MAX_PHASER_STAGES);}
+      }
+      Fl_Dial phaserp11 {
+        label Phase
+        callback {eff->seteffectpar(11,(int) o->value());}
+        xywh {155 10 25 25} box ROUND_UP_BOX labelfont 1 labelsize 10 maximum 127
+        class WidgetPDial
+      }
+    }
+  }
+  Function {make_alienwah_window()} {} {
+    Fl_Window effalienwahwindow {
+      xywh {230 283 380 95} type Double box PLASTIC_UP_BOX color 221 labelfont 1 hide
+      class Fl_Group
+    } {
+      Fl_Choice awp {
+        label Preset
+        callback {eff->changepreset((int)o->value());
+refresh(eff);}
+        xywh {10 15 90 15} down_box BORDER_BOX color 14 selection_color 0 labelfont 1 labelsize 10 labelcolor 0 align 5 textfont 1 textsize 10 textcolor 7
+      } {
+        menuitem {} {
+          label {Alienwah 1}
+          xywh {40 40 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Alienwah 2}
+          xywh {50 50 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Alienwah 3}
+          xywh {60 60 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Alienwah 4}
+          xywh {70 70 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+      }
+      Fl_Text_Display {} {
+        label AlienWah
+        xywh {245 10 10 20} box NO_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 26 align 8
+      }
+      Fl_Dial awp0 {
+        label Vol
+        callback {eff->seteffectpar(0,(int) o->value());}
+        xywh {10 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial awp1 {
+        label Pan
+        callback {eff->seteffectpar(1,(int) o->value());}
+        xywh {45 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial awp2 {
+        label Freq
+        callback {eff->seteffectpar(2,(int) o->value());}
+        xywh {85 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial awp3 {
+        label Rnd
+        callback {eff->seteffectpar(3,(int) o->value());}
+        xywh {120 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 when 4 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial awp5 {
+        label {St.df}
+        callback {eff->seteffectpar(5,(int) o->value());}
+        xywh {200 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial awp6 {
+        label Dpth
+        callback {eff->seteffectpar(6,(int) o->value());}
+        xywh {235 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial awp7 {
+        label Fb
+        callback {eff->seteffectpar(7,(int) o->value());}
+        xywh {270 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial awp9 {
+        label {L/R}
+        callback {eff->seteffectpar(9,(int) o->value());}
+        xywh {345 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Choice awp4 {
+        label {LFO type}
+        callback {eff->seteffectpar(4,(int) o->value());}
+        tooltip {LFO function} xywh {155 50 40 15} down_box BORDER_BOX labelfont 1 labelsize 10 align 130 textsize 8
+      } {
+        menuitem {} {
+          label SINE
+          xywh {15 15 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label TRI
+          xywh {25 25 100 20} labelfont 1 labelsize 10
+        }
+      }
+      Fl_Dial awp10 {
+        label Phase
+        callback {eff->seteffectpar(10,(int) o->value());}
+        xywh {160 5 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Counter awp8 {
+        label Delay
+        callback {eff->seteffectpar(8,(int) o->value());}
+        xywh {305 55 35 15} type Simple labelfont 1 labelsize 12 minimum 0 maximum 127 step 1
+        code0 {o->range(1,MAX_ALIENWAH_DELAY);}
+      }
+    }
+  }
+  Function {make_distorsion_window()} {} {
+    Fl_Window effdistorsionwindow {
+      xywh {259 186 380 95} type Double box PLASTIC_UP_BOX color 221 labelfont 1 hide
+      class Fl_Group
+    } {
+      Fl_Choice distp {
+        label Preset
+        callback {eff->changepreset((int)o->value());
+refresh(eff);}
+        xywh {11 15 95 15} down_box BORDER_BOX color 14 selection_color 0 labelfont 1 labelsize 10 labelcolor 0 align 5 textfont 1 textsize 10 textcolor 7
+      } {
+        menuitem {} {
+          label {Overdrive 1}
+          xywh {20 20 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Overdrive 2}
+          xywh {30 30 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {A. Exciter 1}
+          xywh {40 40 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {A. Exciter 2}
+          xywh {50 50 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Guitar Amp}
+          xywh {50 50 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label Quantisize
+          xywh {60 60 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+      }
+      Fl_Text_Display {} {
+        label Distortion
+        xywh {230 10 10 20} box NO_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 26 align 8
+      }
+      Fl_Dial distp0 {
+        label Vol
+        callback {eff->seteffectpar(0,(int) o->value());}
+        xywh {10 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial distp1 {
+        label Pan
+        callback {eff->seteffectpar(1,(int) o->value());}
+        xywh {45 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial distp2 {
+        label {LRc.}
+        callback {eff->seteffectpar(2,(int) o->value());}
+        xywh {80 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 when 4 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial distp3 {
+        label Drive
+        callback {eff->seteffectpar(3,(int) o->value());}
+        xywh {120 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 when 4 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial distp4 {
+        label Level
+        callback {eff->seteffectpar(4,(int) o->value());}
+        xywh {155 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial distp7 {
+        label LPF
+        callback {eff->seteffectpar(7,(int) o->value());}
+        xywh {285 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial distp8 {
+        label HPF
+        callback {eff->seteffectpar(8,(int) o->value());}
+        xywh {320 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Choice distp5 {
+        label Type
+        callback {eff->seteffectpar(5,(int) o->value());}
+        xywh {190 50 60 20} box UP_BOX down_box BORDER_BOX labelfont 1 labelsize 12 align 2 textsize 10
+      } {
+        menuitem {} {
+          label Atan
+          xywh {55 55 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Asym1
+          xywh {65 65 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Pow
+          xywh {75 75 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Sine
+          xywh {85 85 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Qnts
+          xywh {95 95 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Zigzg
+          xywh {105 105 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Lmt
+          xywh {115 115 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label LmtU
+          xywh {125 125 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label LmtL
+          xywh {135 135 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label ILmt
+          xywh {147 147 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Clip
+          xywh {157 157 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Asym2
+          xywh {75 75 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Pow2
+          xywh {85 85 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Sgm
+          xywh {95 95 100 20} labelfont 1 labelsize 10
+        }
+      }
+      Fl_Check_Button distp6 {
+        label {Neg.}
+        callback {eff->seteffectpar(6,(int) o->value());}
+        xywh {260 55 15 15} down_box DOWN_BOX labelfont 1 labelsize 12 align 2
+      }
+      Fl_Check_Button distp9 {
+        label {St.}
+        callback {eff->seteffectpar(9,(int) o->value());}
+        tooltip Stereo xywh {355 60 15 15} down_box DOWN_BOX labelfont 1 labelsize 12 align 2
+      }
+      Fl_Check_Button distp10 {
+        label PF
+        callback {eff->seteffectpar(10,(int) o->value());}
+        tooltip {Applies the filters(before or after) the distorsion} xywh {355 44 15 15} down_box DOWN_BOX labelfont 1 labelsize 12 align 1
+      }
+    }
+  }
+  Function {make_eq_window()} {} {
+    Fl_Window effeqwindow {
+      xywh {258 307 380 95} type Double box PLASTIC_UP_BOX color 221 labelfont 1 hide
+      class Fl_Group
+    } {
+      Fl_Text_Display {} {
+        label EQ
+        xywh {320 10 15 20} box NO_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 26 align 8
+      }
+      Fl_Dial eqp0 {
+        label Gain
+        callback {eff->seteffectpar(0,(int) o->value());
+eqgraph->redraw();}
+        xywh {10 35 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Counter bandcounter {
+        label {B.}
+        callback {eqband=(int) o->value();
+int npb=eqband*5+10;
+
+int type=eff->geteffectpar(npb);
+typechoice->value(type);
+
+if (type>6) gaindial->activate();
+ else gaindial->deactivate();
+
+if (type==0) bandgroup->deactivate();
+else bandgroup->activate();
+
+int freq=eff->geteffectpar(npb+1);
+freqdial->value(freq);
+
+int gain=eff->geteffectpar(npb+2);
+gaindial->value(gain);
+
+int q=eff->geteffectpar(npb+3);
+qdial->value(q);
+
+int dbl=eff->geteffectpar(npb+4);
+stagescounter->value(dbl);}
+        tooltip {Band no.} xywh {240 20 45 15} type Simple labelfont 1 labelsize 12 align 1 minimum 0 maximum 1 step 1 textfont 1 textsize 12
+        code0 {o->bounds(0,MAX_EQ_BANDS-1);}
+      }
+      Fl_Group bandgroup {
+        xywh {245 40 130 50} box ENGRAVED_FRAME
+        code0 {if (eff->geteffectpar(10)==0) o->deactivate();}
+      } {
+        Fl_Dial freqdial {
+          label Freq
+          callback {int np=eqband*5+11;
+eff->seteffectpar(np,(int) o->value());
+eqgraph->redraw();}
+          xywh {250 50 25 25} box ROUND_UP_BOX labelfont 1 labelsize 10 when 3 maximum 127
+          class WidgetPDial
+        }
+        Fl_Dial gaindial {
+          label Gain
+          callback {int np=eqband*5+12;
+eff->seteffectpar(np,(int) o->value());
+eqgraph->redraw();}
+          xywh {280 50 25 25} box ROUND_UP_BOX labelfont 1 labelsize 10 when 3 maximum 127 step 1
+          class WidgetPDial
+        }
+        Fl_Dial qdial {
+          label Q
+          callback {int np=eqband*5+13;
+eff->seteffectpar(np,(int) o->value());
+eqgraph->redraw();}
+          xywh {310 50 25 25} box ROUND_UP_BOX labelfont 1 labelsize 10 when 3 maximum 127
+          class WidgetPDial
+        }
+        Fl_Counter stagescounter {
+          label {St.}
+          callback {int np=eqband*5+14;
+eff->seteffectpar(np,(int) o->value());
+eqgraph->redraw();}
+          tooltip {Additional filter stages} xywh {340 60 30 15} type Simple labelfont 1 labelsize 10 minimum 1 maximum 127 step 1 textfont 1 textsize 12
+          code0 {o->bounds(0,MAX_FILTER_STAGES-1);}
+        }
+      }
+      Fl_Choice typechoice {
+        label {T.}
+        callback {int np=eqband*5+10;
+eff->seteffectpar(np,(int) o->value());
+bandcounter->do_callback();
+eqgraph->redraw();}
+        tooltip Type xywh {290 20 40 15} down_box BORDER_BOX labelfont 1 labelsize 10 align 1 when 6 textsize 10
+      } {
+        menuitem {} {
+          label OFF
+          xywh {0 0 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Lp1
+          xywh {10 10 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Hp1
+          xywh {20 20 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Lp2
+          xywh {30 30 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Hp2
+          xywh {40 40 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Bp2
+          xywh {50 50 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label N2
+          xywh {60 60 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Pk
+          xywh {80 80 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label LSh
+          xywh {70 70 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label HSh
+          xywh {80 80 100 20} labelfont 1 labelsize 10
+        }
+      }
+      Fl_Box eqgraph {
+        xywh {45 10 190 75} box BORDER_BOX color 178
+        code0 {o->init(eff);}
+        class EQGraph
+      }
+    }
+  }
+  Function {make_dynamicfilter_window()} {} {
+    Fl_Window effdynamicfilterwindow {
+      xywh {104 461 380 95} type Double box PLASTIC_UP_BOX color 221 labelfont 1 hide
+      class Fl_Group
+    } {
+      Fl_Choice dfp {
+        label Preset
+        callback {eff->changepreset((int)o->value());
+refresh(eff);}
+        xywh {10 15 90 15} down_box BORDER_BOX color 14 selection_color 0 labelfont 1 labelsize 10 labelcolor 0 align 5 textfont 1 textsize 10 textcolor 7
+      } {
+        menuitem {} {
+          label WahWah
+          xywh {30 30 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label AutoWah
+          xywh {40 40 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label Sweep
+          xywh {50 50 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label VocalMorph1
+          xywh {50 50 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label VocalMorph2
+          xywh {60 60 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+      }
+      Fl_Text_Display {} {
+        label DynFilter
+        xywh {245 10 10 20} box NO_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 26 align 8
+      }
+      Fl_Dial dfp0 {
+        label Vol
+        callback {eff->seteffectpar(0,(int) o->value());}
+        xywh {10 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial dfp1 {
+        label Pan
+        callback {eff->seteffectpar(1,(int) o->value());}
+        xywh {45 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial dfp2 {
+        label Freq
+        callback {eff->seteffectpar(2,(int) o->value());}
+        xywh {85 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial dfp3 {
+        label Rnd
+        callback {eff->seteffectpar(3,(int) o->value());}
+        xywh {120 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 when 4 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial dfp5 {
+        label {St.df}
+        callback {eff->seteffectpar(5,(int) o->value());}
+        xywh {200 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial dfp6 {
+        label LfoD
+        callback {eff->seteffectpar(6,(int) o->value());}
+        xywh {235 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Choice dfp4 {
+        label {LFO type}
+        callback {eff->seteffectpar(4,(int) o->value());}
+        tooltip {LFO function} xywh {155 50 40 15} down_box BORDER_BOX labelfont 1 labelsize 10 align 130 textsize 8
+      } {
+        menuitem {} {
+          label SINE
+          xywh {15 15 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label TRI
+          xywh {25 25 100 20} labelfont 1 labelsize 10
+        }
+      }
+      Fl_Button {} {
+        label Filter
+        callback {filterwindow->show();}
+        xywh {115 10 55 25} box PLASTIC_THIN_UP_BOX
+      }
+      Fl_Group {} {open
+        xywh {270 40 105 45} box BORDER_BOX color 181
+      } {
+        Fl_Dial dfp7 {
+          label {A.S.}
+          callback {eff->seteffectpar(7,(int) o->value());}
+          xywh {275 45 25 25} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+          class WidgetPDial
+        }
+        Fl_Dial dfp9 {
+          label {A.M}
+          callback {eff->seteffectpar(9,(int) o->value());}
+          xywh {305 45 25 25} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+          class WidgetPDial
+        }
+        Fl_Check_Button dfp8 {
+          label {A.Inv.}
+          callback {eff->seteffectpar(8,(int) o->value());}
+          xywh {345 55 15 15} down_box DOWN_BOX labelfont 1 labelsize 12 align 2
+        }
+      }
+    }
+  }
+  Function {make_filter_window()} {} {
+    Fl_Window filterwindow {
+      label {Filter Parameters for DynFilter Eff.}
+      xywh {212 170 290 110} type Double hide
+    } {
+      Fl_Group {} {
+        label {DynFilter effect  - Filter} open
+        xywh {5 5 275 75} box FLAT_BOX color 50 align 144
+        code0 {o->init(eff->filterpars,NULL,NULL);}
+        code1 {o->use_for_dynamic_filter();}
+        class FilterUI
+      } {}
+      Fl_Button {} {
+        label Close
+        callback {filterwindow->hide();}
+        xywh {105 85 70 20} box THIN_UP_BOX
+      }
+    }
+  }
+  Function {init(EffectMgr *eff_)} {} {
+    code {eff=eff_;
+
+make_null_window();
+make_reverb_window();
+make_echo_window();
+make_chorus_window();
+make_phaser_window();
+make_alienwah_window();
+make_distorsion_window();
+make_eq_window();
+make_dynamicfilter_window();
+
+int px=this->parent()->x();
+int py=this->parent()->y();
+
+effnullwindow->position(px,py);
+effreverbwindow->position(px,py);
+effechowindow->position(px,py);
+effchoruswindow->position(px,py);
+effphaserwindow->position(px,py);
+effalienwahwindow->position(px,py);
+effdistorsionwindow->position(px,py);
+effeqwindow->position(px,py);
+effdynamicfilterwindow->position(px,py);
+
+refresh(eff);} {}
+  }
+  Function {refresh(EffectMgr *eff_)} {} {
+    code {eff=eff_;
+this->hide();
+
+effnullwindow->hide();
+effreverbwindow->hide();
+effechowindow->hide();
+effchoruswindow->hide();
+effphaserwindow->hide();
+effalienwahwindow->hide();
+effdistorsionwindow->hide();
+effeqwindow->hide();
+effdynamicfilterwindow->hide();
+
+eqband=0;
+
+if (filterwindow!=NULL){
+	filterwindow->hide();
+	delete(filterwindow);
+	filterwindow=NULL;
+};
+
+switch(eff->geteffect()){
+     case 1:
+	revp->value(eff->getpreset());
+	revp0->value(eff->geteffectpar(0));if (eff->insertion!=0) revp0->label("D/W");
+	revp1->value(eff->geteffectpar(1));
+	revp2->value(eff->geteffectpar(2));
+	revp3->value(eff->geteffectpar(3));
+	revp4->value(eff->geteffectpar(4));
+	revp5->value(eff->geteffectpar(5));
+	revp6->value(eff->geteffectpar(6));
+	revp7->value(eff->geteffectpar(7));
+	revp8->value(eff->geteffectpar(8));
+	revp9->value(eff->geteffectpar(9));
+	revp10->value(eff->geteffectpar(10));
+	revp11->value(eff->geteffectpar(11));
+            
+        effreverbwindow->show();
+        break; 
+     case 2:
+	echop->value(eff->getpreset());
+	echop0->value(eff->geteffectpar(0));if (eff->insertion!=0) echop0->label("D/W");
+	echop1->value(eff->geteffectpar(1));
+	echop2->value(eff->geteffectpar(2));
+	echop3->value(eff->geteffectpar(3));
+	echop4->value(eff->geteffectpar(4));
+	echop5->value(eff->geteffectpar(5));
+	echop6->value(eff->geteffectpar(6));
+	effechowindow->show();
+        break; 
+     case 3:
+	chorusp->value(eff->getpreset());
+	chorusp0->value(eff->geteffectpar(0));if (eff->insertion!=0) chorusp0->label("D/W");
+	chorusp1->value(eff->geteffectpar(1));
+	chorusp2->value(eff->geteffectpar(2));
+	chorusp3->value(eff->geteffectpar(3));
+	chorusp4->value(eff->geteffectpar(4));
+	chorusp5->value(eff->geteffectpar(5));
+	chorusp6->value(eff->geteffectpar(6));
+	chorusp7->value(eff->geteffectpar(7));
+	chorusp8->value(eff->geteffectpar(8));
+	chorusp9->value(eff->geteffectpar(9));
+	chorusp11->value(eff->geteffectpar(11));
+	effchoruswindow->show();
+        break; 
+     case 4:
+	phaserp->value(eff->getpreset());
+	phaserp0->value(eff->geteffectpar(0));if (eff->insertion!=0) phaserp0->label("D/W");
+	phaserp1->value(eff->geteffectpar(1));
+	phaserp2->value(eff->geteffectpar(2));
+	phaserp3->value(eff->geteffectpar(3));
+	phaserp4->value(eff->geteffectpar(4));
+	phaserp5->value(eff->geteffectpar(5));
+	phaserp6->value(eff->geteffectpar(6));
+	phaserp7->value(eff->geteffectpar(7));
+	phaserp8->value(eff->geteffectpar(8));
+	phaserp9->value(eff->geteffectpar(9));
+	phaserp10->value(eff->geteffectpar(10));
+	phaserp11->value(eff->geteffectpar(11));
+	effphaserwindow->show();
+        break; 
+     case 5:
+	awp->value(eff->getpreset());
+	awp0->value(eff->geteffectpar(0));if (eff->insertion!=0) awp0->label("D/W");
+	awp1->value(eff->geteffectpar(1));
+	awp2->value(eff->geteffectpar(2));
+	awp3->value(eff->geteffectpar(3));
+	awp4->value(eff->geteffectpar(4));
+	awp5->value(eff->geteffectpar(5));
+	awp6->value(eff->geteffectpar(6));
+	awp7->value(eff->geteffectpar(7));
+	awp8->value(eff->geteffectpar(8));
+	awp9->value(eff->geteffectpar(9));
+	awp10->value(eff->geteffectpar(10));
+
+	effalienwahwindow->show();
+        break; 
+     case 6:
+	distp->value(eff->getpreset());
+	distp0->value(eff->geteffectpar(0));if (eff->insertion!=0) distp0->label("D/W");
+	distp1->value(eff->geteffectpar(1));
+	distp2->value(eff->geteffectpar(2));
+	distp3->value(eff->geteffectpar(3));
+	distp4->value(eff->geteffectpar(4));
+	distp5->value(eff->geteffectpar(5));
+	distp6->value(eff->geteffectpar(6));
+	distp7->value(eff->geteffectpar(7));
+	distp8->value(eff->geteffectpar(8));
+	distp9->value(eff->geteffectpar(9));
+	distp10->value(eff->geteffectpar(10));
+	effdistorsionwindow->show();
+        break;
+     case 7:eqband=0;
+	eqp0->value(eff->geteffectpar(0));
+	bandcounter->value(eqband);
+	bandcounter->do_callback();
+	typechoice->value(eff->geteffectpar(10));
+	eqgraph->redraw();
+	freqdial->value(eff->geteffectpar(11));
+	gaindial->value(eff->geteffectpar(12));
+	if (eff->geteffectpar(10)<6) gaindial->deactivate();
+	qdial->value(eff->geteffectpar(13));
+	stagescounter->value(eff->geteffectpar(14));
+        eqgraph->init(eff);
+	effeqwindow->show();
+        break;
+     case 8:make_filter_window();
+	dfp->value(eff->getpreset());
+	dfp0->value(eff->geteffectpar(0));if (eff->insertion!=0) dfp0->label("D/W");
+	dfp1->value(eff->geteffectpar(1));
+	dfp2->value(eff->geteffectpar(2));
+	dfp3->value(eff->geteffectpar(3));
+	dfp4->value(eff->geteffectpar(4));
+	dfp5->value(eff->geteffectpar(5));
+	dfp6->value(eff->geteffectpar(6));
+	dfp7->value(eff->geteffectpar(7));
+	dfp8->value(eff->geteffectpar(8));
+	dfp9->value(eff->geteffectpar(9));
+
+            
+	effdynamicfilterwindow->show();
+	break;
+    default:effnullwindow->show();
+            break; 
+};
+
+this->show();} {}
+  }
+  Function {refresh()} {} {
+    code {refresh(eff);} {}
+  }
+  decl {EffectMgr *eff;} {}
+  decl {int eqband;} {}
+} 
+
+class SimpleEffUI {: {public Fl_Group,public PresetsUI_}
+} {
+  Function {SimpleEffUI(int x,int y, int w, int h, const char *label=0):Fl_Group(x,y,w,h,label)} {} {
+    code {eff=NULL;} {}
+  }
+  Function {~SimpleEffUI()} {} {
+    code {effnullwindow->hide();//delete (effnullwindow);
+effreverbwindow->hide();//delete (effreverbwindow);
+effechowindow->hide();//delete (effechowindow);
+effchoruswindow->hide();//delete (effchoruswindow);
+effphaserwindow->hide();//delete (effphaserwindow);
+effalienwahwindow->hide();//delete (effalienwahwindow);
+effdistorsionwindow->hide();//delete (effdistorsionwindow);
+effeqwindow->hide();//delete (effeqwindow);
+effdynamicfilterwindow->hide();//delete (effdynamicfilterwindow);} {}
+  }
+  Function {make_null_window()} {} {
+    Fl_Window effnullwindow {
+      xywh {539 150 233 95} type Double box PLASTIC_UP_BOX color 221 labelfont 1 hide
+      class Fl_Group
+    } {
+      Fl_Text_Display {} {
+        label {No Effect}
+        xywh {25 35 35 20} box NO_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 26 labelcolor 43 align 8
+      }
+    }
+  }
+  Function {make_reverb_window()} {} {
+    Fl_Window effreverbwindow {
+      xywh {151 285 233 95} type Double box PLASTIC_UP_BOX color 221 labelfont 1 hide
+      class Fl_Group
+    } {
+      Fl_Text_Display {} {
+        label {Reverb }
+        xywh {115 10 20 20} box NO_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 26 align 8
+      }
+      Fl_Choice revp {
+        label Preset
+        callback {eff->changepreset((int)o->value());
+
+refresh(eff);}
+        xywh {10 15 90 15} down_box BORDER_BOX color 14 selection_color 0 labelfont 1 labelsize 10 labelcolor 0 align 5 textfont 1 textsize 10 textcolor 7
+      } {
+        menuitem {} {
+          label {Cathedral 1}
+          xywh {10 10 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Cathedral 2}
+          xywh {20 20 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Cathedral 3}
+          xywh {30 30 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Hall 1}
+          xywh {40 40 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Hall 2}
+          xywh {50 50 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Room 1}
+          xywh {60 60 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Room 2}
+          xywh {70 70 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label Basement
+          xywh {80 80 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label Tunnel
+          xywh {90 90 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Echoed 1}
+          xywh {100 100 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Echoed 2}
+          xywh {110 110 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Very Long 1}
+          xywh {120 120 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Very Long 2}
+          xywh {130 130 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+      }
+      Fl_Dial revp0 {
+        label Vol
+        callback {eff->seteffectpar(0,(int) o->value());}
+        xywh {10 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial revp2 {
+        label Time
+        callback {eff->seteffectpar(2,(int) o->value());}
+        xywh {45 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial revp3 {
+        label {I.del}
+        callback {eff->seteffectpar(3,(int) o->value());}
+        xywh {85 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 when 4 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial revp9 {
+        label Damp
+        callback {eff->seteffectpar(9,(int) o->value());}
+        xywh {120 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 minimum 64 maximum 127 step 1
+        class WidgetPDial
+      }
+    }
+  }
+  Function {make_echo_window()} {} {
+    Fl_Window effechowindow {
+      xywh {243 350 231 95} type Double box PLASTIC_UP_BOX color 221 labelfont 1 hide
+      class Fl_Group
+    } {
+      Fl_Choice echop {
+        label Preset
+        callback {eff->changepreset((int)o->value());
+refresh(eff);}
+        xywh {11 15 95 15} down_box BORDER_BOX color 14 selection_color 0 labelfont 1 labelsize 10 labelcolor 0 align 5 textfont 1 textsize 10 textcolor 7
+      } {
+        menuitem {} {
+          label {Echo 1}
+          xywh {20 20 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Echo 2}
+          xywh {30 30 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Echo 3}
+          xywh {40 40 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Simple Echo}
+          xywh {50 50 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label Canyon
+          xywh {60 60 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Panning Echo 1}
+          xywh {70 70 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Panning Echo 2}
+          xywh {80 80 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Panning Echo 3}
+          xywh {90 90 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Feedback Echo}
+          xywh {100 100 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+      }
+      Fl_Text_Display {} {
+        label Echo
+        xywh {145 10 10 20} box NO_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 26 align 8
+      }
+      Fl_Dial echop0 {
+        label Vol
+        callback {eff->seteffectpar(0,(int) o->value());}
+        xywh {10 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial echop2 {
+        label Delay
+        callback {eff->seteffectpar(2,(int) o->value());}
+        xywh {45 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 when 4 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial echop5 {
+        label {Fb.}
+        callback {eff->seteffectpar(5,(int) o->value());}
+        xywh {80 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+    }
+  }
+  Function {make_chorus_window()} {} {
+    Fl_Window effchoruswindow {
+      xywh {234 353 233 95} type Double box PLASTIC_UP_BOX color 221 labelfont 1 hide
+      class Fl_Group
+    } {
+      Fl_Choice chorusp {
+        label Preset
+        callback {eff->changepreset((int)o->value());
+refresh(eff);}
+        xywh {10 15 90 15} down_box BORDER_BOX color 14 selection_color 0 labelfont 1 labelsize 10 labelcolor 0 align 5 textfont 1 textsize 10 textcolor 7
+      } {
+        menuitem {} {
+          label {Chorus 1}
+          xywh {20 20 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Chorus 2}
+          xywh {30 30 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Chorus 3}
+          xywh {40 40 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Celeste 1}
+          xywh {50 50 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Celeste 2}
+          xywh {60 60 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Flange 1}
+          xywh {70 70 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Flange 2}
+          xywh {80 80 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Flange 3}
+          xywh {90 90 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Flange 4}
+          xywh {100 100 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Flange 5}
+          xywh {110 110 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+      }
+      Fl_Text_Display {} {
+        label Chorus
+        xywh {120 10 10 20} box NO_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 26 align 8
+      }
+      Fl_Dial chorusp0 {
+        label Vol
+        callback {eff->seteffectpar(0,(int) o->value());}
+        xywh {10 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial chorusp2 {
+        label Freq
+        callback {eff->seteffectpar(2,(int) o->value());}
+        xywh {45 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial chorusp6 {
+        label Dpth
+        callback {eff->seteffectpar(6,(int) o->value());}
+        xywh {80 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial chorusp7 {
+        label Delay
+        callback {eff->seteffectpar(7,(int) o->value());}
+        xywh {115 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial chorusp8 {
+        label Fb
+        callback {eff->seteffectpar(8,(int) o->value());}
+        xywh {150 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Check_Button {} {
+        label Flange
+        callback {eff->seteffectpar(10,(int) o->value());}
+        xywh {120 10 55 20} box THIN_UP_BOX down_box DOWN_BOX color 230 labelfont 1 labelsize 10 hide deactivate
+        code0 {o->value(eff->geteffectpar(10));}
+      }
+    }
+  }
+  Function {make_phaser_window()} {} {
+    Fl_Window effphaserwindow {
+      xywh {171 303 232 95} type Double box PLASTIC_UP_BOX color 221 labelfont 1 hide
+      class Fl_Group
+    } {
+      Fl_Choice phaserp {
+        label Preset
+        callback {eff->changepreset((int)o->value());
+refresh(eff);}
+        xywh {10 15 90 15} down_box BORDER_BOX color 14 selection_color 0 labelfont 1 labelsize 10 labelcolor 0 align 5 textfont 1 textsize 10 textcolor 7
+      } {
+        menuitem {} {
+          label {Phaser 1}
+          xywh {30 30 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Phaser 2}
+          xywh {40 40 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Phaser 3}
+          xywh {50 50 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Phaser 4}
+          xywh {60 60 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Phaser 5}
+          xywh {70 70 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Phaser 6}
+          xywh {80 80 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+      }
+      Fl_Text_Display {} {
+        label Phaser
+        xywh {125 10 10 20} box NO_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 26 align 8
+      }
+      Fl_Dial phaserp0 {
+        label Vol
+        callback {eff->seteffectpar(0,(int) o->value());}
+        xywh {10 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial phaserp2 {
+        label Freq
+        callback {eff->seteffectpar(2,(int) o->value());}
+        xywh {45 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial phaserp5 {
+        label {St.df}
+        callback {eff->seteffectpar(5,(int) o->value());}
+        xywh {80 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial phaserp6 {
+        label Dpth
+        callback {eff->seteffectpar(6,(int) o->value());}
+        xywh {115 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial phaserp7 {
+        label Fb
+        callback {eff->seteffectpar(7,(int) o->value());}
+        xywh {150 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Counter phaserp8 {
+        label Stages
+        callback {eff->seteffectpar(8,(int) o->value());}
+        xywh {185 55 35 15} type Simple labelfont 1 labelsize 12 minimum 0 maximum 127 step 1
+        code0 {o->range(1,MAX_PHASER_STAGES);}
+      }
+    }
+  }
+  Function {make_alienwah_window()} {} {
+    Fl_Window effalienwahwindow {
+      xywh {183 344 234 95} type Double box PLASTIC_UP_BOX color 221 labelfont 1 hide
+      class Fl_Group
+    } {
+      Fl_Choice awp {
+        label Preset
+        callback {eff->changepreset((int)o->value());
+refresh(eff);}
+        xywh {10 15 90 15} down_box BORDER_BOX color 14 selection_color 0 labelfont 1 labelsize 10 labelcolor 0 align 5 textfont 1 textsize 10 textcolor 7
+      } {
+        menuitem {} {
+          label {Alienwah 1}
+          xywh {40 40 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Alienwah 2}
+          xywh {50 50 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Alienwah 3}
+          xywh {60 60 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Alienwah 4}
+          xywh {70 70 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+      }
+      Fl_Text_Display {} {
+        label AlienWah
+        xywh {100 10 10 20} box NO_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 26 align 8
+      }
+      Fl_Dial awp0 {
+        label Vol
+        callback {eff->seteffectpar(0,(int) o->value());}
+        xywh {10 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial awp2 {
+        label Freq
+        callback {eff->seteffectpar(2,(int) o->value());}
+        xywh {45 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial awp6 {
+        label Dpth
+        callback {eff->seteffectpar(6,(int) o->value());}
+        xywh {85 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Counter awp8 {
+        label Delay
+        callback {eff->seteffectpar(8,(int) o->value());}
+        xywh {125 55 35 15} type Simple labelfont 1 labelsize 12 minimum 0 maximum 127 step 1
+        code0 {o->range(1,MAX_ALIENWAH_DELAY);}
+      }
+    }
+  }
+  Function {make_distorsion_window()} {} {
+    Fl_Window effdistorsionwindow {
+      xywh {257 432 230 95} type Double box PLASTIC_UP_BOX color 221 labelfont 1 hide
+      class Fl_Group
+    } {
+      Fl_Choice distp {
+        label Preset
+        callback {eff->changepreset((int)o->value());
+refresh(eff);}
+        xywh {11 15 95 15} down_box BORDER_BOX color 14 selection_color 0 labelfont 1 labelsize 10 labelcolor 0 align 5 textfont 1 textsize 10 textcolor 7
+      } {
+        menuitem {} {
+          label {Overdrive 1}
+          xywh {20 20 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Overdrive 2}
+          xywh {30 30 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {A. Exciter 1}
+          xywh {40 40 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {A. Exciter 2}
+          xywh {50 50 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label {Guitar Amp}
+          xywh {50 50 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label Quantisize
+          xywh {60 60 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+      }
+      Fl_Text_Display {} {
+        label Distortion
+        xywh {110 10 10 20} box NO_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 20 align 8
+      }
+      Fl_Dial distp0 {
+        label Vol
+        callback {eff->seteffectpar(0,(int) o->value());}
+        xywh {10 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial distp3 {
+        label Drive
+        callback {eff->seteffectpar(3,(int) o->value());}
+        xywh {45 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 when 4 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial distp4 {
+        label Level
+        callback {eff->seteffectpar(4,(int) o->value());}
+        xywh {80 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial distp7 {
+        label LPF
+        callback {eff->seteffectpar(7,(int) o->value());}
+        xywh {190 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Choice distp5 {
+        label Type
+        callback {eff->seteffectpar(5,(int) o->value());}
+        xywh {120 50 60 20} box UP_BOX down_box BORDER_BOX labelfont 1 labelsize 12 align 2 textsize 10
+      } {
+        menuitem {} {
+          label Atan
+          xywh {55 55 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Asym1
+          xywh {65 65 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Pow
+          xywh {75 75 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Sine
+          xywh {85 85 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Qnts
+          xywh {95 95 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Zigzg
+          xywh {105 105 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Lmt
+          xywh {115 115 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label LmtU
+          xywh {125 125 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label LmtL
+          xywh {135 135 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label ILmt
+          xywh {147 147 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Clip
+          xywh {157 157 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Asym2
+          xywh {75 75 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Pow2
+          xywh {85 85 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Sgm
+          xywh {95 95 100 20} labelfont 1 labelsize 10
+        }
+      }
+    }
+  }
+  Function {make_eq_window()} {} {
+    Fl_Window effeqwindow {
+      xywh {258 307 230 95} type Double box PLASTIC_UP_BOX color 221 labelfont 1 hide
+      class Fl_Group
+    } {
+      Fl_Text_Display {} {
+        label EQ
+        xywh {170 5 15 25} box NO_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 26 align 8
+      }
+      Fl_Counter bandcounter {
+        label Band
+        callback {eqband=(int) o->value();
+int npb=eqband*5+10;
+
+int type=eff->geteffectpar(npb);
+typechoice->value(type);
+
+if (type>6) gaindial->activate();
+ else gaindial->deactivate();
+
+if (type==0) bandgroup->deactivate();
+else bandgroup->activate();
+
+int freq=eff->geteffectpar(npb+1);
+freqdial->value(freq);
+
+int gain=eff->geteffectpar(npb+2);
+gaindial->value(gain);
+
+int q=eff->geteffectpar(npb+3);
+qdial->value(q);
+
+int dbl=eff->geteffectpar(npb+4);
+stagescounter->value(dbl);}
+        tooltip {Band no.} xywh {85 15 45 15} type Simple labelfont 1 labelsize 12 align 1 minimum 0 maximum 1 step 1 textfont 1 textsize 12
+        code0 {o->bounds(0,MAX_EQ_BANDS-1);}
+      }
+      Fl_Group bandgroup {
+        xywh {5 5 75 85} box ENGRAVED_FRAME
+        code0 {if (eff->geteffectpar(10)==0) o->deactivate();}
+      } {
+        Fl_Dial freqdial {
+          label Freq
+          callback {int np=eqband*5+11;
+eff->seteffectpar(np,(int) o->value());
+eqgraph->redraw();}
+          xywh {10 10 25 25} box ROUND_UP_BOX labelfont 1 labelsize 10 when 3 maximum 127
+          class WidgetPDial
+        }
+        Fl_Dial gaindial {
+          label Gain
+          callback {int np=eqband*5+12;
+eff->seteffectpar(np,(int) o->value());
+eqgraph->redraw();}
+          xywh {45 10 25 25} box ROUND_UP_BOX labelfont 1 labelsize 10 when 3 maximum 127 step 1
+          class WidgetPDial
+        }
+        Fl_Dial qdial {
+          label Q
+          callback {int np=eqband*5+13;
+eff->seteffectpar(np,(int) o->value());
+eqgraph->redraw();}
+          xywh {10 50 25 25} box ROUND_UP_BOX labelfont 1 labelsize 10 when 3 maximum 127
+          class WidgetPDial
+        }
+        Fl_Counter stagescounter {
+          label Stages
+          callback {int np=eqband*5+14;
+eff->seteffectpar(np,(int) o->value());
+eqgraph->redraw();}
+          tooltip {Additional filter stages} xywh {40 55 30 15} type Simple labelfont 1 labelsize 10 minimum 1 maximum 127 step 1 textfont 1 textsize 12
+          code0 {o->bounds(0,MAX_FILTER_STAGES-1);}
+        }
+      }
+      Fl_Choice typechoice {
+        label Type
+        callback {int np=eqband*5+10;
+eff->seteffectpar(np,(int) o->value());
+bandcounter->do_callback();
+eqgraph->redraw();}
+        tooltip Type xywh {135 15 40 15} down_box BORDER_BOX labelfont 1 labelsize 10 align 1 when 6 textsize 10
+      } {
+        menuitem {} {
+          label OFF
+          xywh {10 10 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Lp1
+          xywh {20 20 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Hp1
+          xywh {30 30 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Lp2
+          xywh {40 40 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Hp2
+          xywh {50 50 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Bp2
+          xywh {60 60 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label N2
+          xywh {70 70 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label Pk
+          xywh {90 90 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label LSh
+          xywh {80 80 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label HSh
+          xywh {90 90 100 20} labelfont 1 labelsize 10
+        }
+      }
+      Fl_Box eqgraph {
+        xywh {85 35 140 55} box BORDER_BOX color 178
+        code0 {o->init(eff);}
+        class EQGraph
+      }
+    }
+  }
+  Function {make_dynamicfilter_window()} {} {
+    Fl_Window effdynamicfilterwindow {
+      xywh {271 375 232 95} type Double box PLASTIC_UP_BOX color 221 labelfont 1 hide
+      class Fl_Group
+    } {
+      Fl_Choice dfp {
+        label Preset
+        callback {eff->changepreset((int)o->value());
+refresh(eff);}
+        xywh {10 15 90 15} down_box BORDER_BOX color 14 selection_color 0 labelfont 1 labelsize 10 labelcolor 0 align 5 textfont 1 textsize 10 textcolor 7
+      } {
+        menuitem {} {
+          label WahWah
+          xywh {30 30 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label AutoWah
+          xywh {40 40 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label Sweep
+          xywh {50 50 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label VocalMorph1
+          xywh {50 50 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+        menuitem {} {
+          label VocalMorph2
+          xywh {60 60 100 20} labelfont 1 labelsize 10 labelcolor 7
+        }
+      }
+      Fl_Text_Display {} {
+        label DynFilter
+        xywh {100 10 10 20} box NO_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 26 align 8
+      }
+      Fl_Dial dfp0 {
+        label Vol
+        callback {eff->seteffectpar(0,(int) o->value());}
+        xywh {10 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial dfp2 {
+        label Freq
+        callback {eff->seteffectpar(2,(int) o->value());}
+        xywh {45 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Dial dfp6 {
+        label LfoD
+        callback {eff->seteffectpar(6,(int) o->value());}
+        xywh {80 40 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+        class WidgetPDial
+      }
+      Fl_Group {} {open
+        xywh {115 40 65 45} box BORDER_BOX color 181
+      } {
+        Fl_Dial dfp7 {
+          label {A.S.}
+          callback {eff->seteffectpar(7,(int) o->value());}
+          xywh {120 45 25 25} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+          class WidgetPDial
+        }
+        Fl_Dial dfp9 {
+          label {A.M}
+          callback {eff->seteffectpar(9,(int) o->value());}
+          xywh {150 45 25 25} box ROUND_UP_BOX labelfont 1 labelsize 12 maximum 127
+          class WidgetPDial
+        }
+      }
+    }
+  }
+  Function {init(EffectMgr *eff_)} {} {
+    code {eff=eff_;
+
+make_null_window();
+make_reverb_window();
+make_echo_window();
+make_chorus_window();
+make_phaser_window();
+make_alienwah_window();
+make_distorsion_window();
+make_eq_window();
+make_dynamicfilter_window();
+
+int px=this->parent()->x();
+int py=this->parent()->y();
+
+effnullwindow->position(px,py);
+effreverbwindow->position(px,py);
+effechowindow->position(px,py);
+effchoruswindow->position(px,py);
+effphaserwindow->position(px,py);
+effalienwahwindow->position(px,py);
+effdistorsionwindow->position(px,py);
+effeqwindow->position(px,py);
+effdynamicfilterwindow->position(px,py);
+
+refresh(eff);} {}
+  }
+  Function {refresh(EffectMgr *eff_)} {open
+  } {
+    code {eff=eff_;
+this->hide();
+
+effnullwindow->hide();
+effreverbwindow->hide();
+effechowindow->hide();
+effchoruswindow->hide();
+effphaserwindow->hide();
+effalienwahwindow->hide();
+effdistorsionwindow->hide();
+effeqwindow->hide();
+effdynamicfilterwindow->hide();
+
+eqband=0;
+
+
+switch(eff->geteffect()){
+     case 1:
+	revp->value(eff->getpreset());
+	revp0->value(eff->geteffectpar(0));if (eff->insertion!=0) revp0->label("D/W");
+	revp2->value(eff->geteffectpar(2));
+	revp3->value(eff->geteffectpar(3));
+	revp9->value(eff->geteffectpar(9));          
+        effreverbwindow->show();
+        break; 
+     case 2:
+	echop->value(eff->getpreset());
+	echop0->value(eff->geteffectpar(0));if (eff->insertion!=0) echop0->label("D/W");
+	echop2->value(eff->geteffectpar(2));
+	echop5->value(eff->geteffectpar(5));
+	effechowindow->show();
+        break; 
+     case 3:
+	chorusp->value(eff->getpreset());
+	chorusp0->value(eff->geteffectpar(0));if (eff->insertion!=0) chorusp0->label("D/W");
+	chorusp2->value(eff->geteffectpar(2));
+	chorusp6->value(eff->geteffectpar(6));
+	chorusp7->value(eff->geteffectpar(7));
+	chorusp8->value(eff->geteffectpar(8));
+	effchoruswindow->show();
+        break; 
+     case 4:
+	phaserp->value(eff->getpreset());
+	phaserp0->value(eff->geteffectpar(0));if (eff->insertion!=0) phaserp0->label("D/W");
+	phaserp2->value(eff->geteffectpar(2));
+	phaserp5->value(eff->geteffectpar(5));
+	phaserp6->value(eff->geteffectpar(6));
+	phaserp7->value(eff->geteffectpar(7));
+	phaserp8->value(eff->geteffectpar(8));
+	effphaserwindow->show();
+        break; 
+     case 5:
+	awp->value(eff->getpreset());
+	awp0->value(eff->geteffectpar(0));if (eff->insertion!=0) awp0->label("D/W");
+	awp2->value(eff->geteffectpar(2));
+	awp6->value(eff->geteffectpar(6));
+	awp8->value(eff->geteffectpar(8));
+	effalienwahwindow->show();
+        break; 
+     case 6:
+	distp->value(eff->getpreset());
+	distp0->value(eff->geteffectpar(0));if (eff->insertion!=0) distp0->label("D/W");
+	distp3->value(eff->geteffectpar(3));
+	distp4->value(eff->geteffectpar(4));
+	distp5->value(eff->geteffectpar(5));
+	distp7->value(eff->geteffectpar(7));
+	effdistorsionwindow->show();
+        break;
+     case 7:
+	bandcounter->value(eqband);
+	bandcounter->do_callback();
+	typechoice->value(eff->geteffectpar(10));
+	eqgraph->redraw();
+	freqdial->value(eff->geteffectpar(11));
+	gaindial->value(eff->geteffectpar(12));
+	if (eff->geteffectpar(10)<6) gaindial->deactivate();
+	qdial->value(eff->geteffectpar(13));
+	stagescounter->value(eff->geteffectpar(14));
+        eqgraph->init(eff);
+	effeqwindow->show();
+        break;
+     case 8:
+	dfp->value(eff->getpreset());
+	dfp0->value(eff->geteffectpar(0));if (eff->insertion!=0) dfp0->label("D/W");
+	dfp2->value(eff->geteffectpar(2));
+	dfp6->value(eff->geteffectpar(6));
+	dfp7->value(eff->geteffectpar(7));
+	dfp9->value(eff->geteffectpar(9));
+
+            
+	effdynamicfilterwindow->show();
+	break;
+    default:effnullwindow->show();
+            break; 
+};
+
+this->show();} {selected
+    }
+  }
+  Function {refresh()} {} {
+    code {refresh(eff);} {}
+  }
+  decl {EffectMgr *eff;} {}
+  decl {int eqband;} {}
+} 
diff --git a/muse_qt4_evolution/synti/zynaddsubfx/UI/EnvelopeUI.fl b/muse_qt4_evolution/synti/zynaddsubfx/UI/EnvelopeUI.fl
new file mode 100644
index 00000000..090a77fc
--- /dev/null
+++ b/muse_qt4_evolution/synti/zynaddsubfx/UI/EnvelopeUI.fl
@@ -0,0 +1,851 @@
+# data file for the Fltk User Interface Designer (fluid)
+version 1.0106 
+header_name {.h} 
+code_name {.cc}
+decl {//Copyright (c) 2002-2005 Nasca Octavian Paul} {} 
+
+decl {//License: GNU GPL version 2} {} 
+
+decl {\#include "WidgetPDial.h"} {public
+} 
+
+decl {\#include <stdio.h>} {public
+} 
+
+decl {\#include <stdlib.h>} {public
+} 
+
+decl {\#include "../globals.h"} {public
+} 
+
+decl {\#include <FL/Fl_Group.H>} {public
+} 
+
+decl {\#include "../Params/EnvelopeParams.h"} {public
+} 
+
+decl {\#include <FL/Fl_Box.H>} {public
+} 
+
+decl {\#include <FL/fl_draw.H>} {public
+} 
+
+decl {\#include <FL/fl_ask.H>} {public
+} 
+
+decl {\#include "PresetsUI.h"} {public
+} 
+
+class EnvelopeFreeEdit {: {public Fl_Box}
+} {
+  Function {EnvelopeFreeEdit(int x,int y, int w, int h, const char *label=0):Fl_Box(x,y,w,h,label)} {} {
+    code {env=NULL;
+pair=NULL;} {}
+  }
+  Function {init(EnvelopeParams *env_)} {} {
+    code {env=env_;
+oldx=-1;
+currentpoint=-1;
+cpx=0;
+lastpoint=-1;} {}
+  }
+  Function {setpair(Fl_Box *pair_)} {} {
+    code {pair=pair_;} {}
+  }
+  Function {getpointx(int n)} {return_type int
+  } {
+    code {int lx=w()-10;
+int npoints=env->Penvpoints;
+
+float  sum=0;
+for (int i=1;i<npoints;i++) sum+=env->getdt(i)+1;
+
+float sumbefore=0;//the sum of all points before the computed point
+for (int i=1;i<=n;i++) sumbefore+=env->getdt(i)+1;
+
+return((int) (sumbefore/(REALTYPE) sum*lx));} {}
+  }
+  Function {getpointy(int n)} {return_type int
+  } {
+    code {int ly=h()-10;
+
+return((int) ((1.0-env->Penvval[n]/127.0)*ly));} {}
+  }
+  Function {getnearest(int x,int y)} {return_type int
+  } {
+    code {x-=5;y-=5;
+
+int nearestpoint=0;
+int nearestval=1000000;//a big value
+for (int i=0;i<env->Penvpoints;i++){
+   int distance=abs(x-getpointx(i))+abs(y-getpointy(i));
+   if (distance<nearestval) {
+     nearestpoint=i;
+     nearestval=distance;  
+   };
+};
+return(nearestpoint);} {}
+  }
+  Function {draw()} {private
+  } {
+    code {int ox=x(),oy=y(),lx=w(),ly=h();
+if (env->Pfreemode==0) env->converttofree();
+int npoints=env->Penvpoints;
+
+if (active_r()) fl_color(FL_BLACK);
+    else fl_color(90,90,90);
+if (!active_r()) currentpoint=-1;
+
+fl_rectf(ox,oy,lx,ly);
+
+ox+=5;oy+=5;lx-=10;ly-=10;
+
+//draw the lines
+fl_color(FL_GRAY);
+
+fl_line_style(FL_SOLID);
+fl_line(ox+2,oy+ly/2,ox+lx-2,oy+ly/2);
+
+//draws the evelope points and lines
+Fl_Color alb=FL_WHITE;
+if (!active_r()) alb=fl_rgb_color(180,180,180);
+fl_color(alb);
+int oldxx=0,xx=0,oldyy=0,yy=getpointy(0);
+fl_rectf(ox-3,oy+yy-3,6,6);
+for (int i=1;i<npoints;i++){
+    oldxx=xx;oldyy=yy;
+    xx=getpointx(i);yy=getpointy(i);
+    if (i==currentpoint) fl_color(FL_RED);
+        else fl_color(alb);
+    fl_line(ox+oldxx,oy+oldyy,ox+xx,oy+yy);
+    fl_rectf(ox+xx-3,oy+yy-3,6,6);
+};
+
+//draw the last moved point point (if exists)
+if (lastpoint>=0){
+    fl_color(FL_CYAN);
+    fl_rectf(ox+getpointx(lastpoint)-5,oy+getpointy(lastpoint)-5,10,10);
+};
+
+//draw the sustain position
+if (env->Penvsustain>0){
+    fl_color(FL_YELLOW);
+    xx=getpointx(env->Penvsustain);
+    fl_line(ox+xx,oy+0,ox+xx,oy+ly);
+};
+
+//Show the envelope duration and the current line duration
+fl_font(FL_HELVETICA|FL_BOLD,10);
+float time=0.0;
+if (currentpoint<=0){
+   fl_color(alb);
+   for (int i=1;i<npoints;i++) time+=env->getdt(i);
+} else {
+   fl_color(255,0,0);
+   time=env->getdt(currentpoint);
+};
+char tmpstr[20];
+if (time<1000.0) snprintf((char *)&tmpstr,20,"%.1fms",time);
+     else snprintf((char *)&tmpstr,20,"%.2fs",time/1000.0);
+fl_draw(tmpstr,ox+lx-20,oy+ly-10,20,10,FL_ALIGN_RIGHT,NULL,0);} {}
+  }
+  Function {handle(int event)} {return_type int
+  } {
+    code {int x_=Fl::event_x()-x();
+int y_=Fl::event_y()-y();
+
+if (event==FL_PUSH) {
+  currentpoint=getnearest(x_,y_);
+  cpx=x_;
+  cpdt=env->Penvdt[currentpoint];
+  lastpoint=currentpoint;
+  redraw();
+  if (pair!=NULL) pair->redraw();
+};
+
+if (event==FL_RELEASE){
+  currentpoint=-1;
+  redraw();
+  if (pair!=NULL) pair->redraw();
+};
+
+if ((event==FL_DRAG)&&(currentpoint>=0)){
+  int ny=127-(int) (y_*127.0/h());
+  if (ny<0) ny=0;if (ny>127) ny=127;
+  env->Penvval[currentpoint]=ny;
+
+  int dx=(int)((x_-cpx)*0.1);
+  int newdt=cpdt+dx;
+  if (newdt<0) newdt=0;if (newdt>127) newdt=127;
+  if (currentpoint!=0) env->Penvdt[currentpoint]=newdt;
+     else env->Penvdt[currentpoint]=0;
+
+  redraw();
+  if (pair!=NULL) pair->redraw();
+};
+
+
+return(1);} {}
+  }
+  decl {Fl_Box *pair;} {}
+  decl {EnvelopeParams *env;} {}
+  decl {int oldx,oldy;} {}
+  decl {int currentpoint,cpx,cpdt;} {}
+  decl {int lastpoint;} {public
+  }
+} 
+
+class EnvelopeUI {: {public Fl_Group,PresetsUI_}
+} {
+  Function {EnvelopeUI(int x,int y, int w, int h, const char *label=0):Fl_Group(x,y,w,h,label)} {} {
+    code {env=NULL;
+freemodeeditwindow=NULL;
+envADSR=NULL;
+envASR=NULL;
+envADSRfilter=NULL;
+envASRbw=NULL;
+envfree=NULL;} {}
+  }
+  Function {~EnvelopeUI()} {} {
+    code {envwindow->hide();
+hide();
+freemodeeditwindow->hide();
+delete (freemodeeditwindow);} {}
+  }
+  Function {make_freemode_edit_window()} {} {
+    Fl_Window freemodeeditwindow {
+      label Envelope
+      xywh {60 308 575 180} type Double hide
+    } {
+      Fl_Box freeedit {
+        label Envelope
+        xywh {5 5 565 145} box FLAT_BOX color 0
+        code0 {o->init(env);}
+        class EnvelopeFreeEdit
+      }
+      Fl_Button addpoint {
+        label {Add point}
+        callback {int curpoint=freeedit->lastpoint;
+if (curpoint<0) return;
+//if (curpoint>=env->Penvpoints-1) return;
+if (env->Penvpoints>=MAX_ENVELOPE_POINTS) return;
+
+for (int i=env->Penvpoints;i>=curpoint+1;i--){
+   env->Penvdt[i]=env->Penvdt[i-1];
+   env->Penvval[i]=env->Penvval[i-1];
+};
+
+if (curpoint==0) {
+  env->Penvdt[1]=64;
+};
+
+env->Penvpoints++;
+if (curpoint<=env->Penvsustain) env->Penvsustain++;
+
+freeedit->lastpoint+=1;
+freeedit->redraw();
+envfree->redraw();
+
+sustaincounter->value(env->Penvsustain);
+sustaincounter->maximum(env->Penvpoints-2);}
+        xywh {115 155 80 20} box THIN_UP_BOX
+        code0 {if (env->Pfreemode==0) o->hide();}
+      }
+      Fl_Button deletepoint {
+        label {Delete point}
+        callback {int curpoint=freeedit->lastpoint;
+if (curpoint<1) return;
+if (curpoint>=env->Penvpoints-1) return;
+if (env->Penvpoints<=3) return;
+
+for (int i=curpoint+1;i<env->Penvpoints;i++){
+   env->Penvdt[i-1]=env->Penvdt[i];
+   env->Penvval[i-1]=env->Penvval[i];
+};
+
+env->Penvpoints--;
+
+if (curpoint<=env->Penvsustain) env->Penvsustain--;
+
+
+freeedit->lastpoint-=1;
+freeedit->redraw();
+envfree->redraw();
+
+sustaincounter->value(env->Penvsustain);
+sustaincounter->maximum(env->Penvpoints-2);}
+        xywh {200 155 80 20} box THIN_UP_BOX
+        code0 {if (env->Pfreemode==0) o->hide();}
+      }
+      Fl_Light_Button freemodebutton {
+        label FreeMode
+        callback {reinit();
+
+freeedit->lastpoint=-1;
+freeedit->redraw();}
+        tooltip {Enable or disable the freemode} xywh {10 155 95 25} box PLASTIC_UP_BOX
+      }
+      Fl_Check_Button forcedreleasecheck {
+        label frcR
+        callback {env->Pforcedrelease=(int)o->value();}
+        tooltip {Forced Relase} xywh {410 165 40 15} down_box DOWN_BOX labelsize 11
+        code0 {o->value(env->Pforcedrelease);}
+        code1 {if (env->Pfreemode==0) o->hide();}
+      }
+      Fl_Dial envstretchdial {
+        label {Str.}
+        callback {env->Penvstretch=(int)o->value();}
+        tooltip {Envelope stretch (on lower notes make the envelope longer)} xywh {380 155 25 25} box ROUND_UP_BOX labelsize 11 align 4 maximum 127 step 1
+        code0 {o->value(env->Penvstretch);}
+        code1 {if (env->Pfreemode==0) o->hide();}
+        class WidgetPDial
+      }
+      Fl_Button {} {
+        label Close
+        callback {freemodeeditwindow->hide();}
+        xywh {510 155 60 25} box THIN_UP_BOX
+      }
+      Fl_Check_Button linearenvelopecheck {
+        label L
+        callback {env->Plinearenvelope=(int)o->value();}
+        tooltip {Linear Envelope} xywh {410 151 30 15} down_box DOWN_BOX labelsize 11
+        code0 {o->value(env->Plinearenvelope);}
+        code1 {if ((env->Pfreemode==0)||(env->Envmode>2)) o->hide();}
+      }
+      Fl_Counter sustaincounter {
+        label Sust
+        callback {env->Penvsustain=(int) o->value();
+freeedit->redraw();
+envfree->redraw();}
+        tooltip {Sustain (0 is disabled)} xywh {315 155 40 15} type Simple labelsize 12 align 4 minimum 0 maximum 127 step 1
+        code0 {o->value(env->Penvsustain);}
+        code1 {if (env->Pfreemode==0) o->hide();}
+        code2 {o->maximum(env->Penvpoints-2);}
+      }
+      Fl_Button {} {
+        label C
+        callback {presetsui->copy(env);}
+        xywh {465 160 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7
+      }
+      Fl_Button {} {
+        label P
+        callback {presetsui->paste(env,this);}
+        xywh {482 160 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7
+      }
+    }
+  }
+  Function {make_ADSR_window()} {} {
+    Fl_Window envADSR {
+      xywh {108 336 205 70} type Double color 50 labelfont 1 hide
+      class Fl_Group
+    } {
+      Fl_Group {} {
+        label {Amplitude Envelope}
+        xywh {0 0 205 70} box PLASTIC_UP_BOX color 223 labeltype ENGRAVED_LABEL labelsize 11 align 17
+      } {
+        Fl_Dial e1adt {
+          label {A.dt}
+          callback {env->PA_dt=(int)o->value();
+freeedit->redraw();}
+          tooltip {Attack time} xywh {5 20 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(env->PA_dt);}
+          class WidgetPDial
+        }
+        Fl_Dial e1ddt {
+          label {D.dt}
+          callback {env->PD_dt=(int)o->value();
+freeedit->redraw();}
+          tooltip {Decay time} xywh {40 20 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(env->PD_dt);}
+          class WidgetPDial
+        }
+        Fl_Dial e1rdt {
+          label {R.dt}
+          callback {env->PR_dt=(int)o->value();
+freeedit->redraw();}
+          tooltip {Release time} xywh {110 20 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(env->PR_dt);}
+          class WidgetPDial
+        }
+        Fl_Dial e1sval {
+          label {S.val}
+          callback {env->PS_val=(int)o->value();
+freeedit->redraw();}
+          tooltip {Sustain value} xywh {75 20 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(env->PS_val);}
+          class WidgetPDial
+        }
+        Fl_Check_Button e1forcedrelease {
+          label frcR
+          callback {env->Pforcedrelease=(int)o->value();}
+          tooltip {Forced Relase} xywh {180 35 20 15} down_box DOWN_BOX labelsize 11 align 6
+          code0 {o->value(env->Pforcedrelease);}
+        }
+        Fl_Dial e1envstretch {
+          label Stretch
+          callback {env->Penvstretch=(int)o->value();}
+          tooltip {Envelope stretch (on lower notes makes the envelope longer)} xywh {145 25 25 25} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(env->Penvstretch);}
+          class WidgetPDial
+        }
+        Fl_Button {} {
+          label E
+          callback {freemodeeditwindow->show();}
+          tooltip {Envelope window} xywh {185 5 15 15} box PLASTIC_UP_BOX labelfont 1 labelsize 10
+        }
+        Fl_Check_Button e1linearenvelope {
+          label L
+          callback {env->Plinearenvelope=(int)o->value();}
+          tooltip {The evelope is linear} xywh {180 20 15 15} down_box DOWN_BOX labelsize 11 align 4
+          code0 {o->value(env->Plinearenvelope);}
+        }
+        Fl_Button {} {
+          label C
+          callback {presetsui->copy(env);}
+          xywh {150 5 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7
+        }
+        Fl_Button {} {
+          label P
+          callback {presetsui->paste(env,this);}
+          xywh {167 5 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7
+        }
+      }
+    }
+  }
+  Function {make_ASR_window()} {} {
+    Fl_Window envASR {
+      xywh {71 320 210 70} type Double hide
+      class Fl_Group
+    } {
+      Fl_Group {} {
+        label {Frequency Envelope}
+        xywh {0 0 210 70} box PLASTIC_UP_BOX color 223 labeltype ENGRAVED_LABEL labelsize 11 align 17
+      } {
+        Fl_Dial e2aval {
+          label {A.val}
+          callback {env->PA_val=(int)o->value();
+freeedit->redraw();}
+          tooltip {Starting value} xywh {5 20 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(env->PA_val);}
+          class WidgetPDial
+        }
+        Fl_Dial e2adt {
+          label {A.dt}
+          callback {env->PA_dt=(int)o->value();
+freeedit->redraw();}
+          tooltip {Attack time} xywh {40 20 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(env->PA_dt);}
+          class WidgetPDial
+        }
+        Fl_Dial e2rval {
+          label {R.val}
+          callback {env->PR_val=(int)o->value();
+freeedit->redraw();}
+          tooltip {Release value} xywh {110 20 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(env->PR_val);}
+          class WidgetPDial
+        }
+        Fl_Dial e2rdt {
+          label {R.dt}
+          callback {env->PR_dt=(int)o->value();
+freeedit->redraw();}
+          tooltip {Release time} xywh {75 20 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(env->PR_dt);}
+          class WidgetPDial
+        }
+        Fl_Dial e2envstretch {
+          label Stretch
+          callback {env->Penvstretch=(int)o->value();}
+          tooltip {Envelope stretch (on lower notes makes the envelope longer)} xywh {145 25 25 25} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(env->Penvstretch);}
+          class WidgetPDial
+        }
+        Fl_Check_Button e2forcedrelease {
+          label frcR
+          callback {env->Pforcedrelease=(int)o->value();}
+          tooltip {Forced release} xywh {180 25 15 25} down_box DOWN_BOX labelsize 11 align 6
+          code0 {o->value(env->Pforcedrelease);}
+        }
+        Fl_Button {} {
+          label C
+          callback {presetsui->copy(env);}
+          xywh {155 5 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7
+        }
+        Fl_Button {} {
+          label P
+          callback {presetsui->paste(env,this);}
+          xywh {172 5 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7
+        }
+      }
+      Fl_Button {} {
+        label E
+        callback {freemodeeditwindow->show();}
+        tooltip {Envelope window} xywh {190 5 15 15} box PLASTIC_UP_BOX labelfont 1 labelsize 10
+      }
+    }
+  }
+  Function {make_ADSRfilter_window()} {} {
+    Fl_Window envADSRfilter {
+      xywh {87 143 275 70} type Double color 50 labelfont 1 hide
+      class Fl_Group
+    } {
+      Fl_Group {} {
+        label {Filter Envelope}
+        xywh {0 0 275 70} box PLASTIC_UP_BOX color 223 labeltype ENGRAVED_LABEL labelsize 11 align 17
+      } {
+        Fl_Dial e3aval {
+          label {A.val}
+          callback {env->PA_val=(int)o->value();
+freeedit->redraw();}
+          tooltip {Starting value} xywh {5 20 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(env->PA_val);}
+          class WidgetPDial
+        }
+        Fl_Dial e3adt {
+          label {A.dt}
+          callback {env->PA_dt=(int)o->value();
+freeedit->redraw();}
+          tooltip {Attack time} xywh {40 20 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(env->PA_dt);}
+          class WidgetPDial
+        }
+        Fl_Dial e3dval {
+          label {D.val}
+          callback {env->PD_val=(int)o->value();
+freeedit->redraw();}
+          tooltip {decay value} xywh {75 20 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(env->PD_val);}
+          class WidgetPDial
+        }
+        Fl_Dial e3ddt {
+          label {D.dt}
+          callback {env->PD_dt=(int)o->value();
+freeedit->redraw();}
+          tooltip {decay time} xywh {110 20 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(env->PD_dt);}
+          class WidgetPDial
+        }
+        Fl_Dial e3rdt {
+          label {R.dt}
+          callback {env->PR_dt=(int)o->value();
+freeedit->redraw();}
+          tooltip {Release time} xywh {145 20 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(env->PR_dt);}
+          class WidgetPDial
+        }
+        Fl_Dial e3rval {
+          label {R.val}
+          callback {env->PR_val=(int)o->value();
+freeedit->redraw();}
+          tooltip {Release value} xywh {180 20 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(env->PR_val);}
+          class WidgetPDial
+        }
+        Fl_Dial e3envstretch {
+          label Stretch
+          callback {env->Penvstretch=(int)o->value();}
+          tooltip {Envelope stretch (on lower notes makes the envelope longer)} xywh {215 25 25 25} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(env->Penvstretch);}
+          class WidgetPDial
+        }
+        Fl_Check_Button e3forcedrelease {
+          label frcR
+          callback {env->Pforcedrelease=(int)o->value();}
+          tooltip {Forced Relase} xywh {250 30 15 20} down_box DOWN_BOX labelsize 11 align 6
+          code0 {o->value(env->Pforcedrelease);}
+        }
+        Fl_Button {} {
+          label E
+          callback {freemodeeditwindow->show();}
+          xywh {255 5 15 15} box PLASTIC_UP_BOX labelfont 1 labelsize 10
+        }
+        Fl_Button {} {
+          label C
+          callback {presetsui->copy(env);}
+          xywh {220 5 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7
+        }
+        Fl_Button {} {
+          label P
+          callback {presetsui->paste(env,this);}
+          xywh {237 5 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7
+        }
+      }
+    }
+  }
+  Function {make_ASRbw_window()} {} {
+    Fl_Window envASRbw {
+      xywh {224 539 210 70} type Double hide
+      class Fl_Group
+    } {
+      Fl_Group {} {
+        label {BandWidth Envelope}
+        xywh {0 0 210 70} box PLASTIC_UP_BOX color 223 labeltype ENGRAVED_LABEL labelsize 11 align 17
+      } {
+        Fl_Dial e4aval {
+          label {A.val}
+          callback {env->PA_val=(int)o->value();
+freeedit->redraw();}
+          tooltip {Starting value} xywh {5 20 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(env->PA_val);}
+          class WidgetPDial
+        }
+        Fl_Dial e4adt {
+          label {A.dt}
+          callback {env->PA_dt=(int)o->value();
+freeedit->redraw();}
+          tooltip {Attack time} xywh {40 20 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(env->PA_dt);}
+          class WidgetPDial
+        }
+        Fl_Dial e4rval {
+          label {R.val}
+          callback {env->PR_val=(int)o->value();
+freeedit->redraw();}
+          tooltip {Release value} xywh {110 20 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(env->PR_val);}
+          class WidgetPDial
+        }
+        Fl_Dial e4rdt {
+          label {R.dt}
+          callback {env->PR_dt=(int)o->value();
+freeedit->redraw();}
+          tooltip {Release time} xywh {75 20 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(env->PR_dt);}
+          class WidgetPDial
+        }
+        Fl_Dial e4envstretch {
+          label Stretch
+          callback {env->Penvstretch=(int)o->value();}
+          tooltip {Envelope stretch (on lower notes makes the envelope longer)} xywh {145 25 25 25} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(env->Penvstretch);}
+          class WidgetPDial
+        }
+        Fl_Check_Button e4forcedrelease {
+          label frcR
+          callback {env->Pforcedrelease=(int)o->value();}
+          tooltip {Forced release} xywh {180 25 15 25} down_box DOWN_BOX labelsize 11 align 6
+          code0 {o->value(env->Pforcedrelease);}
+        }
+        Fl_Button {} {
+          label C
+          callback {presetsui->copy(env);}
+          xywh {155 5 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7
+        }
+        Fl_Button {} {
+          label P
+          callback {presetsui->paste(env,this);}
+          xywh {172 5 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7
+        }
+      }
+      Fl_Button {} {
+        label E
+        callback {freemodeeditwindow->show();}
+        xywh {190 5 15 15} box PLASTIC_UP_BOX labelfont 1 labelsize 10
+      }
+    }
+  }
+  Function {make_free_window()} {} {
+    Fl_Window envfree {
+      xywh {373 413 205 70} type Double color 50 labelfont 1 hide resizable
+      class Fl_Group
+    } {
+      Fl_Group envfreegroup {
+        label {Amplitude Envelope}
+        xywh {0 0 205 70} box PLASTIC_UP_BOX color 223 labeltype ENGRAVED_LABEL labelsize 11 align 17 resizable
+      } {
+        Fl_Box freeeditsmall {
+          label Envelope
+          callback {envfree->redraw();}
+          xywh {5 20 195 45} box FLAT_BOX color 0 resizable
+          code0 {o->init(env);}
+          class EnvelopeFreeEdit
+        }
+        Fl_Button {} {
+          label E
+          callback {freemodeeditwindow->show();}
+          xywh {185 5 15 15} box PLASTIC_UP_BOX labelfont 1 labelsize 10
+        }
+        Fl_Button {} {
+          label C
+          callback {presetsui->copy(env);}
+          xywh {150 5 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7
+        }
+        Fl_Button {} {
+          label P
+          callback {presetsui->paste(env,this);}
+          xywh {167 5 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7
+        }
+      }
+    }
+  }
+  Function {init(EnvelopeParams *env_)} {} {
+    code {env=env_;
+make_ADSR_window();
+make_ASR_window();
+make_ADSRfilter_window();
+make_ASRbw_window();
+make_free_window();
+
+make_freemode_edit_window();
+
+envwindow=NULL;
+if (env->Envmode==3) envfreegroup->label("Frequency Envelope");
+if (env->Envmode==4) envfreegroup->label("Filter Envelope");
+if (env->Envmode==5) envfreegroup->label("Bandwidth Envelope");
+
+freemodeeditwindow->label(this->label());
+
+
+freeeditsmall->setpair(freeedit);
+freeedit->setpair(freeeditsmall);
+
+
+refresh();} {}
+  }
+  Function {reinit()} {} {
+    code {if (env->Pfreemode!=0){
+  int answer=fl_ask("Disable the free mode of the Envelope?");
+  if (env->Pfreemode!=0) freemodebutton->value(1);
+          else freemodebutton->value(0);
+  if (answer==0) return;
+};
+
+if (env->Pfreemode==0) env->Pfreemode=1;
+     else env->Pfreemode=0;
+
+hide();
+int winx=freemodeeditwindow->x();
+int winy=freemodeeditwindow->y();
+
+freemodeeditwindow->hide();
+
+envwindow->hide();
+Fl_Group *par=envwindow->parent();
+par->hide();
+
+
+refresh();
+envwindow->show();
+par->redraw();
+
+par->show();
+show();
+freemodeeditwindow->position(winx,winy);
+freemodeeditwindow->show();
+
+if (env->Pfreemode!=0) {
+	freemodebutton->value(1);
+	addpoint->show();
+	deletepoint->show();
+	forcedreleasecheck->show();
+}else{
+	freemodebutton->value(0);
+	addpoint->hide();
+	deletepoint->hide();
+	forcedreleasecheck->hide();
+};} {selected
+    }
+  }
+  Function {refresh()} {} {
+    code {freemodebutton->value(env->Pfreemode);
+
+sustaincounter->value(env->Penvsustain);
+if (env->Pfreemode==0) sustaincounter->hide();
+	else sustaincounter->show();
+sustaincounter->maximum(env->Penvpoints-2);
+
+envstretchdial->value(env->Penvstretch);
+if (env->Pfreemode==0) envstretchdial->hide();
+	else envstretchdial->show();
+
+linearenvelopecheck->value(env->Plinearenvelope);
+if ((env->Pfreemode==0)||(env->Envmode>2)) linearenvelopecheck->hide();
+	else linearenvelopecheck->show();
+
+forcedreleasecheck->value(env->Pforcedrelease);
+if (env->Pfreemode==0) forcedreleasecheck->hide();
+
+freeedit->redraw();
+
+
+if (env->Pfreemode==0){
+   switch(env->Envmode){
+         case(1):
+         case(2):
+		e1adt->value(env->PA_dt);
+		e1ddt->value(env->PD_dt);
+		e1sval->value(env->PS_val);
+		e1rdt->value(env->PR_dt);
+		e1envstretch->value(env->Penvstretch);
+		e1linearenvelope->value(env->Plinearenvelope);
+		e1forcedrelease->value(env->Pforcedrelease);
+         break;
+         case(3):
+		e2aval->value(env->PA_val);
+		e2adt->value(env->PA_dt);
+		e2rdt->value(env->PR_dt);
+		e2rval->value(env->PR_val);
+		e2envstretch->value(env->Penvstretch);
+		e2forcedrelease->value(env->Pforcedrelease);
+         break; 
+         case(4):
+		e3aval->value(env->PA_val);
+		e3adt->value(env->PA_dt);
+		e3dval->value(env->PD_val);
+		e3ddt->value(env->PD_dt);
+		e3rdt->value(env->PR_dt);
+		e3rval->value(env->PR_val);
+		e3envstretch->value(env->Penvstretch);
+		e3forcedrelease->value(env->Pforcedrelease);
+         break; 
+         case(5):
+		e4aval->value(env->PA_val);
+		e4adt->value(env->PA_dt);
+		e4rdt->value(env->PR_dt);
+		e4rval->value(env->PR_val);
+		e4envstretch->value(env->Penvstretch);
+		e4forcedrelease->value(env->Pforcedrelease);
+         break;
+         default:
+         break; 
+   };
+}else{
+       envfree->redraw();
+};
+
+
+envADSR->hide();
+envASR->hide();
+envADSRfilter->hide();
+envASRbw->hide();
+envfree->hide();
+
+if (env->Pfreemode==0){
+   switch(env->Envmode){
+         case(1):
+         case(2):
+           envwindow=envADSR;
+         break;
+         case(3):
+           envwindow=envASR;
+         break; 
+         case(4):
+           envwindow=envADSRfilter;
+         break; 
+         case(5):
+          envwindow=envASRbw;
+         break;
+         default:
+         break; 
+   };
+}else{
+   envwindow=envfree;
+};
+
+envwindow->resize(this->x(),this->y(),this->w(),this->h());
+
+envwindow->show();} {}
+  }
+  decl {EnvelopeParams *env;} {}
+  decl {Fl_Group *envwindow;} {}
+} 
diff --git a/muse_qt4_evolution/synti/zynaddsubfx/UI/FilterUI.fl b/muse_qt4_evolution/synti/zynaddsubfx/UI/FilterUI.fl
new file mode 100644
index 00000000..44b50b94
--- /dev/null
+++ b/muse_qt4_evolution/synti/zynaddsubfx/UI/FilterUI.fl
@@ -0,0 +1,624 @@
+# data file for the Fltk User Interface Designer (fluid)
+version 1.0106 
+header_name {.h} 
+code_name {.cc}
+decl {//Copyright (c) 2002-2005 Nasca Octavian Paul} {} 
+
+decl {//License: GNU GPL version 2} {} 
+
+decl {\#include "WidgetPDial.h"} {public
+} 
+
+decl {\#include <stdio.h>} {public
+} 
+
+decl {\#include <stdlib.h>} {public
+} 
+
+decl {\#include "../globals.h"} {public
+} 
+
+decl {\#include <FL/Fl_Group.H>} {public
+} 
+
+decl {\#include "../Params/FilterParams.h"} {public
+} 
+
+decl {\#include <FL/Fl_Box.H>} {public
+} 
+
+decl {\#include <FL/fl_draw.H>} {public
+} 
+
+decl {\#include <FL/fl_ask.H>} {public
+} 
+
+decl {\#include "PresetsUI.h"} {public
+} 
+
+class FormantFilterGraph {: {public Fl_Box}
+} {
+  Function {FormantFilterGraph(int x,int y, int w, int h, const char *label=0):Fl_Box(x,y,w,h,label)} {} {
+    code {pars=NULL;
+nvowel=NULL;
+nformant=NULL;
+graphpoints=NULL;} {}
+  }
+  Function {init(FilterParams *pars_,int *nvowel_,int *nformant_)} {} {
+    code {pars=pars_;
+nvowel=nvowel_;
+nformant=nformant_;
+oldx=-1;
+graphpoints=new REALTYPE [w()];} {}
+  }
+  Function {draw_freq_line(REALTYPE freq,int type)} {} {
+    code {REALTYPE freqx=pars->getfreqpos(freq);
+switch(type){
+  case 0:fl_line_style(FL_SOLID);break;
+  case 1:fl_line_style(FL_DOT);break;
+  case 2:fl_line_style(FL_DASH);break;
+}; 
+
+
+if ((freqx>0.0)&&(freqx<1.0))
+   fl_line(x()+(int) (freqx*w()),y(),
+   x()+(int) (freqx*w()),y()+h());} {}
+  }
+  Function {draw()} {open
+  } {
+    code {int maxdB=30;
+int ox=x(),oy=y(),lx=w(),ly=h(),i,oiy;
+REALTYPE freqx;
+
+fl_color(FL_BLACK);
+fl_rectf(ox,oy,lx,ly);
+
+
+//draw the lines
+fl_color(FL_GRAY);
+
+fl_line_style(FL_SOLID);
+//fl_line(ox+2,oy+ly/2,ox+lx-2,oy+ly/2);
+
+freqx=pars->getfreqpos(1000.0);
+if ((freqx>0.0)&&(freqx<1.0))
+   fl_line(ox+(int) (freqx*lx),oy,
+    ox+(int) (freqx*lx),oy+ly);
+
+for (i=1;i<10;i++){
+   if(i==1){
+     draw_freq_line(i*100.0,0);
+     draw_freq_line(i*1000.0,0);
+   }else 
+    if (i==5){
+      draw_freq_line(i*100.0,2);
+      draw_freq_line(i*1000.0,2);
+    }else{
+      draw_freq_line(i*100.0,1);
+      draw_freq_line(i*1000.0,1);
+    };
+};
+
+draw_freq_line(10000.0,0);
+draw_freq_line(20000.0,1);
+
+fl_line_style(FL_DOT);
+int GY=10;if (ly<GY*3) GY=-1;
+for (i=1;i<GY;i++){
+   int tmp=(int)(ly/(REALTYPE)GY*i);
+   fl_line(ox+2,oy+tmp,ox+lx-2,oy+tmp);
+};
+
+fl_color(FL_YELLOW);
+fl_font(FL_HELVETICA,10);
+if (*nformant<pars->Pnumformants){
+   draw_freq_line(pars->getformantfreq(pars->Pvowels[*nvowel].formants[*nformant].freq),2);
+
+//show some information (like current formant frequency,amplitude)
+   char tmpstr[20];
+
+   snprintf(tmpstr,20,"%.2f kHz",pars->getformantfreq(pars->Pvowels[*nvowel].formants[*nformant].freq)*0.001);
+   fl_draw(tmpstr,ox+1,oy+1,40,12,FL_ALIGN_LEFT,NULL,0);
+
+   snprintf(tmpstr,20,"%d dB",(int)( rap2dB(1e-9 + pars->getformantamp(pars->Pvowels[*nvowel].formants[*nformant].amp)) + pars->getgain() ));
+   fl_draw(tmpstr,ox+1,oy+15,40,12,FL_ALIGN_LEFT,NULL,0);
+
+};
+
+//draw the data
+
+fl_color(FL_RED);
+fl_line_style(FL_SOLID);
+
+pars->formantfilterH(*nvowel,lx,graphpoints);
+
+oiy=(int) ((graphpoints[0]/maxdB+1.0)*ly/2.0);
+for (i=1;i<lx;i++){
+   int iy=(int) ((graphpoints[i]/maxdB+1.0)*ly/2.0);
+   if ((iy>=0)&&(oiy>=0)&&(iy<ly)&&(oiy<lx))
+      fl_line(ox+i-1,oy+ly-oiy,ox+i,oy+ly-iy);
+   oiy=iy;
+};} {}
+  }
+  Function {~FormantFilterGraph()} {} {
+    code {delete(graphpoints);} {}
+  }
+  decl {FilterParams *pars;} {}
+  decl {int oldx,oldy;} {}
+  decl {int *nvowel,*nformant;} {}
+  decl {REALTYPE *graphpoints;} {}
+} 
+
+class FilterUI {: {public Fl_Group,PresetsUI_}
+} {
+  Function {FilterUI(int x,int y, int w, int h, const char *label=0):Fl_Group(x,y,w,h,label)} {} {
+    code {pars=NULL;
+velsnsamp=NULL;
+velsns=NULL;
+nvowel=0;nformant=0;nseqpos=0;} {}
+  }
+  Function {~FilterUI()} {} {
+    code {filterui->hide();
+formantparswindow->hide();
+hide();
+//delete (filterui);
+delete (formantparswindow);} {}
+  }
+  Function {make_window()} {} {
+    Fl_Window filterui {
+      xywh {211 312 275 75} type Double color 50 labelfont 1 hide
+      class Fl_Group
+    } {
+      Fl_Group filterparamswindow {
+        label {Filter Parameters}
+        xywh {0 0 275 75} box PLASTIC_UP_BOX color 183 labeltype ENGRAVED_LABEL labelsize 11 align 17
+      } {
+        Fl_Choice analogfiltertypechoice {
+          label FilterType
+          callback {pars->Ptype=(int)o->value();
+pars->changed=true;}
+          tooltip {The Filter type} xywh {10 50 50 15} down_box BORDER_BOX labelsize 10 align 5 textsize 10
+          code1 {o->value(pars->Ptype);}
+        } {
+          menuitem {} {
+            label LPF1
+            xywh {40 40 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label HPF1
+            xywh {50 50 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label LPF2
+            xywh {60 60 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label HPF2
+            xywh {70 70 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label BPF2
+            xywh {82 82 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label NF2
+            xywh {94 94 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label PkF2
+            xywh {104 104 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label LSh2
+            xywh {114 114 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label HSh2
+            xywh {124 124 100 20} labelfont 1 labelsize 10
+          }
+        }
+        Fl_Choice svfiltertypechoice {
+          label FilterType
+          callback {pars->Ptype=(int)o->value();
+pars->changed=true;}
+          tooltip {The Filter type} xywh {10 50 50 15} down_box BORDER_BOX labelsize 10 align 5 textsize 10
+          code1 {o->value(pars->Ptype);}
+        } {
+          menuitem {} {
+            label 1LPF
+            xywh {134 134 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label 1HPF
+            xywh {144 144 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label 1BPF
+            xywh {154 154 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label 1NF
+            xywh {164 164 100 20} labelfont 1 labelsize 10
+          }
+        }
+        Fl_Choice filtertype {
+          label Category
+          callback {switchcategory((int)o->value());
+pars->changed=true;}
+          tooltip {The Category of the Filter (Analog/Formantic/etc.)} xywh {10 20 60 15} down_box BORDER_BOX labelsize 10 align 5 textsize 10
+          code0 {o->value(pars->Pcategory);}
+        } {
+          menuitem {} {
+            label Analog
+            xywh {50 50 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label Formant
+            xywh {60 60 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label StVarF
+            xywh {70 70 100 20} labelfont 1 labelsize 10
+          }
+        }
+        Fl_Dial cfreqdial {
+          label {C.Freq}
+          callback {pars->Pfreq=(int)o->value();}
+          tooltip {Center Frequency of the Filter or the base position in the vowel's sequence} xywh {75 25 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(pars->Pfreq);}
+          class WidgetPDial
+        }
+        Fl_Dial qdial {
+          label Q
+          callback {pars->Pq=(int)o->value();
+formantfiltergraph->redraw();}
+          tooltip {Filter resonance or bandwidth} xywh {110 25 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(pars->Pq);}
+          class WidgetPDial
+        }
+        Fl_Dial freqtrdial {
+          label {freq.tr.}
+          callback {pars->Pfreqtrack=(int) o->value();}
+          tooltip {Filter frequency tracking (left is negative, middle is 0, and right is positive)} xywh {215 25 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(pars->Pfreqtrack);}
+          class WidgetPDial
+        }
+        Fl_Dial vsnsadial {
+          label {V.SnsA.}
+          callback {if (velsnsamp!=NULL) *velsnsamp=(int)o->value();}
+          tooltip {Velocity sensing amount of the Filter} xywh {145 25 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          class WidgetPDial
+        }
+        Fl_Dial vsnsdial {
+          label {V.Sns.}
+          callback {if (velsns!=NULL) *velsns=(int)o->value();}
+          tooltip {Velocity Sensing Function of the Filter} xywh {180 25 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          class WidgetPDial
+        }
+        Fl_Dial gaindial {
+          label gain
+          callback {pars->Pgain=(int)o->value();
+formantfiltergraph->redraw();
+pars->changed=true;}
+          tooltip {Filter output gain/damp} xywh {250 35 20 20} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(pars->Pgain);}
+          class WidgetPDial
+        }
+        Fl_Choice stcounter {
+          label St
+          callback {pars->Pstages=(int)o->value();
+formantfiltergraph->redraw();
+pars->changed=true;} open
+          tooltip {Filter stages (in order to increase dB/oct. value and the order of the filter)} xywh {235 5 35 15} down_box BORDER_BOX labelsize 10 textfont 1 textsize 10
+          code1 {for (int i=0;i<MAX_FILTER_STAGES;i++) {char tmp[10];snprintf(tmp,10,"%dx",i+1);o->add(tmp);};}
+          code2 {o->value(pars->Pstages);}
+        } {}
+      }
+      Fl_Button editbutton {
+        label Edit
+        callback {formantparswindow->show();}
+        xywh {15 40 50 25} box PLASTIC_UP_BOX labelfont 1 labelsize 12
+      }
+      Fl_Button {} {
+        label C
+        callback {presetsui->copy(pars);}
+        xywh {186 5 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7
+      }
+      Fl_Button {} {
+        label P
+        callback {presetsui->paste(pars,this);}
+        xywh {203 5 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7
+      }
+    }
+  }
+  Function {make_formant_window()} {} {
+    Fl_Window formantparswindow {
+      label {Formant Filter Parameters}
+      xywh {47 301 700 205} type Double hide
+    } {
+      Fl_Group {} {
+        xywh {485 47 105 113} box THIN_UP_BOX
+      } {
+        Fl_Counter {} {
+          label {Formant }
+          callback {nformant=(int) o->value();
+update_formant_window();
+formantfiltergraph->redraw();}
+          xywh {545 80 40 15} type Simple labelfont 1 labelsize 10 align 4 minimum 0 maximum 127 step 1 textsize 10
+          code0 {o->bounds(0,FF_MAX_FORMANTS-1);}
+          code1 {o->value(nformant);}
+        }
+        Fl_Counter {} {
+          label {Vowel no.}
+          callback {nvowel=(int) o->value();
+update_formant_window();
+formantfiltergraph->redraw();}
+          xywh {545 55 40 20} type Simple labelfont 1 labelsize 10 align 4 minimum 0 maximum 127 step 1 textfont 1 textsize 12
+          code0 {o->bounds(0,FF_MAX_VOWELS-1);}
+          code1 {o->value(nvowel);}
+        }
+        Fl_Group formantparsgroup {
+          xywh {490 105 95 50} box ENGRAVED_FRAME
+        } {
+          Fl_Dial formant_freq_dial {
+            label freq
+            callback {pars->Pvowels[nvowel].formants[nformant].freq=(int) o->value();
+formantfiltergraph->redraw();
+pars->changed=true;}
+            tooltip {Formant frequency} xywh {495 115 25 25} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+            class WidgetPDial
+          }
+          Fl_Dial formant_q_dial {
+            label Q
+            callback {pars->Pvowels[nvowel].formants[nformant].q=(int) o->value();
+formantfiltergraph->redraw();
+pars->changed=true;}
+            tooltip {Formant's Q} xywh {525 115 24 25} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+            class WidgetPDial
+          }
+          Fl_Dial formant_amp_dial {
+            label amp
+            callback {pars->Pvowels[nvowel].formants[nformant].amp=(int) o->value();
+formantfiltergraph->redraw();
+pars->changed=true;}
+            tooltip {Formant amplitude} xywh {555 115 24 25} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+            class WidgetPDial
+          }
+        }
+      }
+      Fl_Group {} {
+        xywh {590 47 100 113} box THIN_UP_BOX
+      } {
+        Fl_Counter {} {
+          label {Seq.Size}
+          callback {pars->Psequencesize=(int) o->value();
+update_formant_window();
+pars->changed=true;}
+          xywh {595 62 55 20} type Simple labelfont 1 labelsize 10 align 5 minimum 0 maximum 127 step 1 textfont 1 textsize 12
+          code0 {o->bounds(1,FF_MAX_SEQUENCE-1);}
+          code1 {o->value(pars->Psequencesize);}
+        }
+        Fl_Counter {} {
+          label {S.Pos.}
+          callback {nseqpos=(int) o->value();
+update_formant_window();
+pars->changed=true;}
+          tooltip {Current position from the sequence} xywh {595 97 40 15} type Simple labelfont 1 labelsize 10 align 9 minimum 0 maximum 127 step 1 textsize 10
+          code0 {o->bounds(0,FF_MAX_SEQUENCE-2);}
+          code1 {o->value(nseqpos);}
+        }
+        Fl_Counter vowel_counter {
+          label Vowel
+          callback {pars->Psequence[nseqpos].nvowel=(int) o->value();
+pars->changed=true;}
+          xywh {640 97 40 15} type Simple labelsize 10 align 1 minimum 0 maximum 127 step 1 textsize 11
+          code0 {o->bounds(0,FF_MAX_VOWELS-1);}
+        }
+        Fl_Check_Button {} {
+          label {Neg.Input}
+          callback {pars->Psequencereversed=(int) o->value();
+pars->changed=true;}
+          tooltip {Negate the input from LFO/envelopes/etc.} xywh {625 132 60 20} down_box DOWN_BOX labelsize 10
+          code0 {o->value(pars->Psequencereversed);}
+        }
+        Fl_Dial strchdial {
+          label Strch
+          callback {pars->Psequencestretch=(int) o->value();
+pars->changed=true;}
+          tooltip {Sequence Stretch} xywh {595 130 25 25} box ROUND_UP_BOX labelsize 11 align 1 maximum 127 step 1
+          code0 {o->value(pars->Psequencestretch);}
+          class WidgetPDial
+        }
+      }
+      Fl_Counter {} {
+        label {Num.Formants}
+        callback {pars->Pnumformants=(int) o->value();
+update_formant_window();
+pars->changed=true;
+formantfiltergraph->redraw();}
+        xywh {485 15 65 20} type Simple labelfont 1 labelsize 11 align 5 minimum 0 maximum 127 step 1
+        code0 {o->bounds(1,FF_MAX_FORMANTS);}
+        code1 {o->value(pars->Pnumformants);}
+      }
+      Fl_Dial frsldial {
+        label {Fr.Sl.}
+        callback {pars->Pformantslowness=(int) o->value();
+pars->changed=true;}
+        tooltip {Formant's Slowness (Morphing)} xywh {565 15 25 25} box ROUND_UP_BOX labelfont 1 labelsize 11 align 1 maximum 127 step 1
+        code0 {o->value(pars->Pformantslowness);}
+        class WidgetPDial
+      }
+      Fl_Value_Output centerfreqvo {
+        label {C.f.}
+        callback {o->value(pars->getcenterfreq()/1000.0);}
+        tooltip {Center Frequency (kHz)} xywh {515 164 33 18} when 3 minimum 1 maximum 10 step 0.01 value 1 textfont 1
+        code0 {o->value(pars->getcenterfreq()/1000.0);}
+      }
+      Fl_Value_Output octavesfreqvo {
+        label {Oct.}
+        callback {o->value(pars->getoctavesfreq());}
+        tooltip {No. of octaves} xywh {515 182 33 18} when 3 minimum 1 maximum 127 step 1 value 5 textfont 1
+        code0 {o->value(pars->getoctavesfreq());}
+      }
+      Fl_Slider cfknob {
+        callback {pars->Pcenterfreq=(int)o->value();
+centerfreqvo->do_callback();
+formantfiltergraph->redraw();
+pars->changed=true;}
+        xywh {551 167 84 15} type {Horz Knob} box FLAT_BOX maximum 127
+        code0 {o->value(pars->Pcenterfreq);}
+      }
+      Fl_Slider octknob {
+        callback {pars->Poctavesfreq=(int)o->value();
+octavesfreqvo->do_callback();
+formantfiltergraph->redraw();}
+        xywh {551 185 84 15} type {Horz Knob} box FLAT_BOX maximum 127
+        code0 {o->value(pars->Poctavesfreq);}
+      }
+      Fl_Box formantfiltergraph {
+        xywh {5 5 475 195} box BORDER_BOX
+        code0 {o->init(pars,&nvowel,&nformant);}
+        class FormantFilterGraph
+      }
+      Fl_Dial wvknob {
+        label {Vw.Cl.}
+        callback {pars->Pvowelclearness=(int) o->value();
+pars->changed=true;}
+        tooltip {Vowel "clearness" (how the mixed vowels are avoided)} xywh {600 15 25 25} box ROUND_UP_BOX labelfont 1 labelsize 11 align 1 maximum 127 step 1
+        code0 {o->value(pars->Pvowelclearness);}
+        class WidgetPDial
+      }
+      Fl_Button {} {
+        label Close
+        callback {formantparswindow->hide();}
+        xywh {645 180 50 25} box THIN_UP_BOX
+      }
+      Fl_Button {} {
+        label C
+        callback {presetsui->copy(pars,nvowel);}
+        xywh {635 25 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
+      }
+      Fl_Button {} {
+        label P
+        callback {presetsui->paste(pars,this,nvowel);}
+        xywh {665 25 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
+      }
+      Fl_Box {} {
+        label Vowel
+        xywh {635 10 55 15}
+      }
+    }
+  }
+  Function {update_formant_window()} {} {
+    code {formant_freq_dial->value(pars->Pvowels[nvowel].formants[nformant].freq);
+formant_q_dial->value(pars->Pvowels[nvowel].formants[nformant].q);
+formant_amp_dial->value(pars->Pvowels[nvowel].formants[nformant].amp);
+if (nformant<pars->Pnumformants) formantparsgroup->activate();
+	else formantparsgroup->deactivate();
+
+if (nseqpos<pars->Psequencesize) vowel_counter->activate();
+	else vowel_counter->deactivate();
+
+
+vowel_counter->value(pars->Psequence[nseqpos].nvowel);} {}
+  }
+  Function {refresh()} {} {
+    code {update_formant_window();
+formantfiltergraph->redraw();
+
+if (pars->Pcategory==0) svfiltertypechoice->value(pars->Ptype);
+if (pars->Pcategory==2) analogfiltertypechoice->value(pars->Ptype);
+
+filtertype->value(pars->Pcategory);
+
+cfreqdial->value(pars->Pfreq);
+qdial->value(pars->Pq);
+
+freqtrdial->value(pars->Pfreqtrack);
+gaindial->value(pars->Pgain);
+
+stcounter->value(pars->Pstages);
+
+int categ=pars->Pcategory;
+if ((categ==0)||(categ==2)) {
+	if (categ==0) {
+           analogfiltertypechoice->show();
+           svfiltertypechoice->hide();
+        } else {
+           svfiltertypechoice->show();
+           analogfiltertypechoice->hide();
+        };
+	editbutton->hide();
+        formantparswindow->hide();
+        cfreqdial->label("C.freq");
+} else {
+	analogfiltertypechoice->hide();
+	svfiltertypechoice->hide();
+	editbutton->show();
+        cfreqdial->label("BS.pos");
+};
+
+filterparamswindow->redraw();} {selected
+    }
+  }
+  Function {init(FilterParams *filterpars_,unsigned char *velsnsamp_,unsigned char *velsns_)} {} {
+    code {pars=filterpars_;
+velsnsamp=velsnsamp_;
+velsns=velsns_;
+
+make_window();
+end();
+make_formant_window();
+
+
+filterui->resize(this->x(),this->y(),this->w(),this->h());
+
+
+if (velsnsamp==NULL){
+	vsnsadial->deactivate();
+	vsnsadial->value(127);
+   } else vsnsadial->value(*velsnsamp);
+
+if (velsns==NULL){
+	vsnsdial->deactivate();
+	vsnsdial->value(127);
+   } else vsnsdial->value(*velsns);
+
+switchcategory(pars->Pcategory);
+
+
+formantparswindow->label(this->label());
+
+update_formant_window();} {}
+  }
+  Function {switchcategory(int newcat)} {} {
+    code {if (pars->Pcategory!=newcat){
+    pars->Pgain=64;
+    gaindial->value(64);
+    analogfiltertypechoice->value(0);
+    analogfiltertypechoice->do_callback();
+    svfiltertypechoice->value(0);
+    svfiltertypechoice->do_callback();
+};
+pars->Pcategory=newcat;
+
+refresh();} {}
+  }
+  Function {use_for_dynamic_filter()} {} {
+    code {freqtrdial->deactivate();
+gaindial->when(0);
+
+cfknob->when(FL_WHEN_RELEASE);
+octknob->when(FL_WHEN_RELEASE);
+
+frsldial->when(0);
+wvknob->when(0);
+formant_freq_dial->when(0);
+formant_q_dial->when(0);
+formant_amp_dial->when(0);
+strchdial->when(0);} {}
+  }
+  decl {FilterParams *pars;} {}
+  decl {unsigned char *velsnsamp,*velsns;} {}
+  decl {int nvowel,nformant,nseqpos;} {}
+} 
diff --git a/muse_qt4_evolution/synti/zynaddsubfx/UI/LFOUI.fl b/muse_qt4_evolution/synti/zynaddsubfx/UI/LFOUI.fl
new file mode 100644
index 00000000..373afc44
--- /dev/null
+++ b/muse_qt4_evolution/synti/zynaddsubfx/UI/LFOUI.fl
@@ -0,0 +1,176 @@
+# data file for the Fltk User Interface Designer (fluid)
+version 1.0105 
+header_name {.h} 
+code_name {.cc}
+decl {//Copyright (c) 2002-2005 Nasca Octavian Paul} {} 
+
+decl {//License: GNU GPL version 2} {} 
+
+decl {\#include "WidgetPDial.h"} {public
+} 
+
+decl {\#include <stdio.h>} {public
+} 
+
+decl {\#include <stdlib.h>} {public
+} 
+
+decl {\#include "../globals.h"} {public
+} 
+
+decl {\#include <FL/Fl_Group.H>} {public
+} 
+
+decl {\#include "../Params/LFOParams.h"} {public
+} 
+
+decl {\#include <FL/Fl_Box.H>} {public
+} 
+
+decl {\#include <FL/fl_draw.H>} {public
+} 
+
+decl {\#include <FL/fl_ask.H>} {public
+} 
+
+decl {\#include "PresetsUI.h"} {public
+} 
+
+class LFOUI {: {public Fl_Group, PresetsUI_}
+} {
+  Function {LFOUI(int x,int y, int w, int h, const char *label=0):Fl_Group(x,y,w,h,label)} {} {
+    code {pars=NULL;} {}
+  }
+  Function {~LFOUI()} {} {
+    code {lfoui->hide();
+hide();
+//delete (lfoui);} {}
+  }
+  Function {make_window()} {} {
+    Fl_Window lfoui {
+      xywh {66 328 230 70} type Double color 50 labelfont 1 hide
+      class Fl_Group
+    } {
+      Fl_Group lfoparamswindow {
+        label LFO
+        xywh {0 0 230 70} box PLASTIC_UP_BOX color 223 labeltype ENGRAVED_LABEL labelsize 11 align 17
+      } {
+        Fl_Dial freq {
+          label {Freq.}
+          callback {pars->Pfreq=o->value();}
+          tooltip {LFO Frequency} xywh {5 20 30 30} box ROUND_UP_BOX labelsize 11 step 1e-05
+          class WidgetPDial
+        }
+        Fl_Dial intensity {
+          label Depth
+          callback {pars->Pintensity=(int)o->value();}
+          tooltip {LFO Amount} xywh {40 20 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          class WidgetPDial
+        }
+        Fl_Dial delay {
+          label Delay
+          callback {pars->Pdelay=(int)o->value();}
+          tooltip {LFO delay} xywh {110 20 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          class WidgetPDial
+        }
+        Fl_Dial startphase {
+          label Start
+          callback {pars->Pstartphase=(int)o->value();}
+          tooltip {LFO Startphase (leftmost is Random)} xywh {75 20 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          class WidgetPDial
+        }
+        Fl_Dial randomness {
+          label {A.R.}
+          callback {pars->Prandomness=(int)o->value();}
+          tooltip {LFO Amplitude Randomness} xywh {180 7 20 20} box ROUND_UP_BOX labelsize 10 maximum 127 step 1
+          class WidgetPDial
+        }
+        Fl_Choice LFOtype {
+          label Type
+          callback {pars->PLFOtype=(int)o->value();}
+          tooltip {LFO function} xywh {180 40 45 15} down_box BORDER_BOX labelsize 10 align 2 textsize 8
+        } {
+          menuitem {} {
+            label SINE
+            xywh {20 20 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label TRI
+            xywh {30 30 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label SQR
+            xywh {30 30 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label {R.up}
+            xywh {40 40 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label {R.dn}
+            xywh {50 50 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label E1dn
+            xywh {60 60 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label E2dn
+            xywh {70 70 100 20} labelfont 1 labelsize 10
+          }
+        }
+        Fl_Check_Button continous {
+          label {C.}
+          callback {pars->Pcontinous=(int)o->value();}
+          tooltip {Continous LFO} xywh {165 35 15 15} down_box DOWN_BOX labelsize 11 align 2
+        }
+        Fl_Dial freqrand {
+          label {F.R.}
+          callback {pars->Pfreqrand=(int)o->value();}
+          tooltip {LFO Frequency Randomness} xywh {205 7 20 20} box ROUND_UP_BOX labelsize 10 maximum 127 step 1
+          class WidgetPDial
+        }
+        Fl_Dial stretch {
+          label {Str.}
+          callback {pars->Pstretch=(int)o->value();}
+          tooltip {LFO stretch} xywh {144 30 20 20} box ROUND_UP_BOX labelsize 10 maximum 127 step 1
+          class WidgetPDial
+        }
+        Fl_Button {} {
+          label C
+          callback {presetsui->copy(pars);} selected
+          xywh {145 10 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7
+        }
+        Fl_Button {} {
+          label P
+          callback {presetsui->paste(pars,this);} selected
+          xywh {162 10 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7
+        }
+      }
+    }
+  }
+  Function {refresh()} {} {
+    code {freq->value(pars->Pfreq);
+intensity->value(pars->Pintensity);
+startphase->value(pars->Pstartphase);
+delay->value(pars->Pdelay);
+continous->value(pars->Pcontinous);
+stretch->value(pars->Pstretch);
+randomness->value(pars->Prandomness);
+freqrand->value(pars->Pfreqrand);
+LFOtype->value(pars->PLFOtype);} {}
+  }
+  Function {init(LFOParams *lfopars_)} {} {
+    code {pars=lfopars_;
+
+make_window();
+end();
+
+refresh();
+
+lfoui->resize(this->x(),this->y(),this->w(),this->h());
+
+lfoparamswindow->label(this->label());} {}
+  }
+  decl {LFOParams *pars;} {}
+} 
diff --git a/muse_qt4_evolution/synti/zynaddsubfx/UI/MasterUI.fl b/muse_qt4_evolution/synti/zynaddsubfx/UI/MasterUI.fl
new file mode 100644
index 00000000..15a6fcc1
--- /dev/null
+++ b/muse_qt4_evolution/synti/zynaddsubfx/UI/MasterUI.fl
@@ -0,0 +1,1798 @@
+# data file for the Fltk User Interface Designer (fluid)
+version 1.0106 
+header_name {.h} 
+code_name {.cc}
+decl {//Copyright (c) 2002-2005 Nasca Octavian Paul} {} 
+
+decl {//License: GNU GPL version 2} {} 
+
+decl {\#include <stdlib.h>} {public
+} 
+
+decl {\#include <stdio.h>} {public
+} 
+
+decl {\#include <string.h>} {public
+} 
+
+decl {\#include "WidgetPDial.h"} {public
+} 
+
+decl {\#include "ADnoteUI.h"} {public
+} 
+
+decl {\#include "SUBnoteUI.h"} {public
+} 
+
+decl {\#include "EffUI.h"} {public
+} 
+
+decl {\#include "VirKeyboard.h"} {public
+} 
+
+decl {\#include "ConfigUI.h"} {public
+} 
+
+decl {\#include "BankUI.h"} {public
+} 
+
+decl {\#include "PartUI.h"} {public
+} 
+
+decl {\#include "MicrotonalUI.h"} {public
+} 
+
+decl {\#include "SeqUI.h"} {public
+} 
+
+decl {\#include "PresetsUI.h"} {public
+} 
+
+decl {\#include "../Misc/Master.h"} {public
+} 
+
+decl {\#include "../Misc/Part.h"} {public
+} 
+
+decl {\#include "../Misc/Util.h"} {public
+} 
+
+decl {\#include "../globals.h"} {public
+} 
+
+class VUMeter {: {public Fl_Box}
+} {
+  Function {VUMeter(int x,int y, int w, int h, const char *label=0):Fl_Box(x,y,w,h,label)} {} {
+    code {master=NULL;
+npart=-1;} {}
+  }
+  Function {init(Master *master_,int part_)} {} {
+    code {//the "part_" parameters sets the part (if it is >=0), else it sets the master
+master=master_;
+label(NULL);
+npart=part_;
+olddbl=0.0;
+olddbr=0.0;
+oldrmsdbl=0.0;
+oldrmsdbr=0.0;} {}
+  }
+  Function {draw_master()} {} {
+    code {\#define MIN_DB (-48)
+
+int ox=x(); int oy=y(); int lx=w(); int ly=h();
+
+master->lock();
+REALTYPE dbl=rap2dB(master->vuoutpeakl);
+REALTYPE dbr=rap2dB(master->vuoutpeakr);
+REALTYPE rmsdbl=rap2dB(master->vurmspeakl);
+REALTYPE rmsdbr=rap2dB(master->vurmspeakr);
+REALTYPE maxdbl=rap2dB(master->vumaxoutpeakl);
+REALTYPE maxdbr=rap2dB(master->vumaxoutpeakr);
+int clipped=master->vuclipped;
+master->unlock();
+
+dbl=(MIN_DB-dbl)/MIN_DB; 
+if (dbl<0.0) dbl=0.0;
+  else if (dbl>1.0)dbl=1.0;
+
+dbr=(MIN_DB-dbr)/MIN_DB; 
+if (dbr<0.0) dbr=0.0;
+  else if (dbr>1.0) dbr=1.0; 
+
+dbl=dbl*0.4+olddbl*0.6;
+dbr=dbr*0.4+olddbr*0.6;
+
+olddbl=dbl;
+olddbr=dbr;
+
+\#define VULENX (lx-35)
+\#define VULENY (ly/2-3)
+
+dbl*=VULENX;dbr*=VULENX;
+
+int idbl=(int) dbl;
+int idbr=(int) dbr;
+
+//compute RMS - start
+rmsdbl=(MIN_DB-rmsdbl)/MIN_DB; 
+if (rmsdbl<0.0) rmsdbl=0.0;
+  else if (rmsdbl>1.0) rmsdbl=1.0;
+
+rmsdbr=(MIN_DB-rmsdbr)/MIN_DB; 
+if (rmsdbr<0.0) rmsdbr=0.0;
+  else if (rmsdbr>1.0) rmsdbr=1.0; 
+
+rmsdbl=rmsdbl*0.4+oldrmsdbl*0.6;
+rmsdbr=rmsdbr*0.4+oldrmsdbr*0.6;
+
+oldrmsdbl=rmsdbl;
+oldrmsdbr=rmsdbr;
+
+
+rmsdbl*=VULENX;rmsdbr*=VULENX;
+
+int irmsdbl=(int) rmsdbl;
+int irmsdbr=(int) rmsdbr;
+//compute RMS - end
+
+
+
+//draw the vu-meter lines
+//db
+fl_rectf(ox,oy,idbr,VULENY,0,200,255);
+fl_rectf(ox,oy+ly/2,idbl,VULENY,0,200,255);
+//black
+fl_rectf(ox+idbr,oy,VULENX-idbr,VULENY,0,0,0);
+fl_rectf(ox+idbl,oy+ly/2,VULENX-idbl,VULENY,0,0,0);
+
+//draw the scales
+REALTYPE  tmp=VULENX*1.0/MIN_DB;
+for (int i=1;i<1-MIN_DB;i++){
+   int tx=VULENX+(int) (tmp*i);
+   fl_rectf(ox+tx,oy,1,VULENY+ly/2,0,160,200);
+   if (i%5==0) fl_rectf(ox+tx,oy,1,VULENY+ly/2,0,230,240);
+   if (i%10==0) fl_rectf(ox+tx-1,oy,2,VULENY+ly/2,0,225,255);
+};
+
+//rms
+if (irmsdbr>2) fl_rectf(ox+irmsdbr-1,oy,3,VULENY,255,255,0);
+if (irmsdbl>2) fl_rectf(ox+irmsdbl-1,oy+ly/2,3,VULENY,255,255,0);
+
+
+//draw the red box if clipping has occured
+if (clipped==0) fl_rectf(ox+VULENX+2,oy+1,lx-VULENX-3,ly-4,0,0,10);
+           else fl_rectf(ox+VULENX+2,oy+1,lx-VULENX-3,ly-4,250,10,10);
+
+//draw the maxdB 
+fl_font(FL_HELVETICA|FL_BOLD,10);
+fl_color(255,255,255);
+char tmpstr[10];
+if ((maxdbl>MIN_DB-20)){
+  snprintf((char *)&tmpstr,10,"%ddB",(int)maxdbr);
+  fl_draw(tmpstr,ox+VULENX+1,oy+1,lx-VULENX-1,VULENY,FL_ALIGN_RIGHT,NULL,0);
+};
+if ((maxdbr>MIN_DB-20)){
+  snprintf((char *)&tmpstr,10,"%ddB",(int)maxdbl);
+  fl_draw(tmpstr,ox+VULENX+1,oy+ly/2+1,lx-VULENX-1,VULENY,FL_ALIGN_RIGHT,NULL,0);
+};} {}
+  }
+  Function {draw_part()} {} {
+    code {\#define MIN_DB (-48)
+int ox=x(); int oy=y(); int lx=w(); int ly=h();
+
+if (!active_r()){
+  master->lock();
+   int fakedb=master->fakepeakpart[npart];
+  master->unlock();
+  fl_rectf(ox,oy,lx,ly,140,140,140);
+  if (fakedb>0){
+    fakedb=(int)(fakedb/255.0*ly)+4;
+    fl_rectf(ox+2,oy+ly-fakedb,lx-4,fakedb,0,0,0);
+  };
+  
+  return;
+};
+
+//draw the vu lines
+master->lock();
+ REALTYPE db=rap2dB(master->vuoutpeakpart[npart]);
+master->unlock();
+
+db=(MIN_DB-db)/MIN_DB; 
+if (db<0.0) db=0.0;
+  else if (db>1.0) db=1.0;
+
+db*=ly-2;
+
+int idb=(int) db;
+
+fl_rectf(ox,oy+ly-idb,lx,idb,0,200,255);
+fl_rectf(ox,oy,lx,ly-idb,0,0,0);
+
+
+//draw the scales
+REALTYPE  tmp=ly*1.0/MIN_DB;
+ for (int i=1;i<1-MIN_DB;i++){
+    int ty=ly+(int) (tmp*i);
+    if (i%5==0) fl_rectf(ox,oy+ly-ty,lx,1,0,160,200);
+    if (i%10==0) fl_rectf(ox,oy+ly-ty,lx,1,0,230,240);
+};} {}
+  }
+  Function {draw()} {} {
+    code {if (npart>=0) draw_part();
+   else draw_master();} {}
+  }
+  Function {tickdraw(VUMeter *o)} {return_type {static void}
+  } {
+    code {o->redraw();} {}
+  }
+  Function {tick(void *v)} {return_type {static void}
+  } {
+    code {tickdraw((VUMeter *) v);
+Fl::add_timeout(1.0/25.0,tick,v);//25 fps} {}
+  }
+  Function {handle(int event)} {return_type int
+  } {
+    code {switch(event){
+   case FL_SHOW:
+             tick(this);
+             break;
+   case FL_HIDE:
+             Fl::remove_timeout(tick,this);
+             break;
+   case FL_PUSH:
+             if (npart>=0) break;
+             master->lock();
+             master->vuresetpeaks();
+             master->unlock();
+             break;
+};
+return(1);} {}
+  }
+  decl {Master *master;} {}
+  decl {int npart;} {}
+  decl {float olddbl,olddbr;} {}
+  decl {float oldrmsdbl,oldrmsdbr;} {}
+} 
+
+class SysEffSend {: {public WidgetPDial}
+} {
+  Function {SysEffSend(int x,int y, int w, int h, const char *label=0):WidgetPDial(x,y,w,h,label)} {} {
+    code {master=NULL;
+neff1=0;
+neff2=0;} {}
+  }
+  Function {init(Master *master_,int neff1_,int neff2_)} {} {
+    code {neff1=neff1_;
+neff2=neff2_;
+master=master_;
+minimum(0);
+maximum(127);
+step(1);
+labelfont(1);
+labelsize(10);
+align(FL_ALIGN_TOP);
+
+value(master->Psysefxsend[neff1][neff2]);
+char tmp[20];snprintf(tmp,20,"%d->%d",neff1+1,neff2+1);this->label(strdup(tmp));} {}
+  }
+  Function {~SysEffSend()} {} {
+    code {hide();} {}
+  }
+  Function {handle(int event)} {return_type int
+  } {
+    code {if ((event==FL_PUSH) || (event==FL_DRAG)){
+   master->setPsysefxsend(neff1,neff2,(int) value());
+};
+
+return(WidgetPDial::handle(event));} {}
+  }
+  decl {Master *master;} {}
+  decl {int neff1;} {}
+  decl {int neff2;} {}
+} 
+
+class Panellistitem {: {public Fl_Group}
+} {
+  Function {make_window()} {private
+  } {
+    Fl_Window panellistitem {
+      private xywh {315 213 70 260} type Double hide
+      class Fl_Group
+    } {
+      Fl_Group panellistitemgroup {
+        private xywh {0 20 70 240} box PLASTIC_THIN_UP_BOX
+        code0 {if (master->part[npart]->Penabled==0) o->deactivate();}
+      } {
+        Fl_Group {} {
+          xywh {45 65 15 110} box ENGRAVED_FRAME
+        } {
+          Fl_Box {} {
+            label {V U}
+            xywh {45 65 15 110} box FLAT_BOX color 0 selection_color 75 labelcolor 55 align 128
+            code0 {o->init(master,npart);}
+            class VUMeter
+          }
+        }
+        Fl_Button partname {
+          label {  }
+          callback {if ((int)bankui->cbwig->value()!=(npart+1)){
+   bankui->cbwig->value(npart+1);
+   bankui->cbwig->do_callback();
+};
+bankui->show();}
+          xywh {5 27 60 30} box THIN_DOWN_BOX down_box FLAT_BOX labelfont 1 labelsize 10 align 208
+        }
+        Fl_Slider partvolume {
+          callback {master->part[npart]->setPvolume((int) o->value());}
+          xywh {10 65 30 110} type {Vert Knob} box FLAT_BOX minimum 127 maximum 0 step 1 value 127
+          code0 {o->value(master->part[npart]->Pvolume);}
+        }
+        Fl_Dial partpanning {
+          callback {master->part[npart]->setPpanning((int) o->value());}
+          xywh {20 180 30 30} maximum 127 step 1
+          code0 {o->value(master->part[npart]->Ppanning);}
+          class WidgetPDial
+        }
+        Fl_Button {} {
+          label edit
+          callback {if ((int)bankui->cbwig->value()!=(npart+1)){
+   bankui->cbwig->value(npart+1);
+   bankui->cbwig->do_callback();
+};}
+          xywh {15 235 40 20} box PLASTIC_UP_BOX labelsize 10
+        }
+        Fl_Choice partrcv {
+          callback {master->part[npart]->Prcvchn=(int) o->value();} open
+          tooltip {receive from Midi channel} xywh {10 213 50 15} down_box BORDER_BOX labelsize 10 align 5 textfont 1 textsize 10
+          code0 {char nrstr[10]; for(int i=0;i<NUM_MIDI_CHANNELS;i++){sprintf(nrstr,"Ch%d",i+1);if (i!=9) o->add(nrstr); else o->add("Dr10");};}
+          code1 {o->value(master->part[npart]->Prcvchn);}
+        } {}
+      }
+      Fl_Check_Button partenabled {
+        label 01
+        callback {master->lock();
+ master->partonoff(npart,(int) o->value());
+master->unlock();
+
+if ((int) o->value()==0) panellistitemgroup->deactivate();
+  else {
+    panellistitemgroup->activate();
+    if ((int)bankui->cbwig->value()!=(npart+1)){
+       bankui->cbwig->value(npart+1);
+       bankui->cbwig->do_callback();
+    };
+};
+
+o->redraw();}
+        private xywh {5 0 45 20} down_box DOWN_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 16 align 24
+        code0 {char tmp[10];snprintf(tmp,10,"%d",npart+1);o->label(strdup(tmp));}
+        code1 {o->value(master->part[npart]->Penabled);}
+      }
+    }
+  }
+  Function {Panellistitem(int x,int y, int w, int h, const char *label=0):Fl_Group(x,y,w,h,label)} {} {
+    code {npart=0;
+master=NULL;
+bankui=NULL;} {}
+  }
+  Function {init(Master *master_, int npart_,BankUI *bankui_)} {} {
+    code {npart=npart_;
+master=master_;
+bankui=bankui_;
+
+make_window();
+panellistitem->show();
+end();} {}
+  }
+  Function {refresh()} {open
+  } {
+    code {partenabled->value(master->part[npart]->Penabled);
+if (master->part[npart]->Penabled!=0) panellistitemgroup->activate();
+     else panellistitemgroup->deactivate();
+
+partvolume->value(master->part[npart]->Pvolume);
+partpanning->value(master->part[npart]->Ppanning);
+partrcv->value(master->part[npart]->Prcvchn);
+
+partname->label((char *)master->part[npart]->Pname);
+
+if ((int)bankui->cbwig->value()!=(npart+1))
+   panellistitemgroup->color(fl_rgb_color(160,160,160));
+else 
+   panellistitemgroup->color(fl_rgb_color(50,190,240));
+
+panellistitemgroup->redraw();} {}
+  }
+  Function {~Panellistitem()} {} {
+    code {panellistitem->hide();
+//delete(panellistitem);} {}
+  }
+  decl {int npart;} {}
+  decl {Master *master;} {}
+  decl {BankUI *bankui;} {}
+} 
+
+class MasterUI {} {
+  Function {make_window()} {} {
+    Fl_Window masterwindow {
+      label zynaddsubfx
+      callback {\#ifdef VSTAUDIOOUT
+fl_alert("ZynAddSubFX could not be closed this way, because it's a VST plugin. Please use the host aplication to close it.");
+\#else
+if (fl_ask("Exit and leave the unsaved data?")) {
+    config.save();
+    *exitprogram=1;
+};
+\#endif} selected
+      xywh {353 127 390 465} type Double hide
+    } {
+      Fl_Menu_Bar mastermenu {
+        xywh {-5 0 690 25}
+      } {
+        submenu {} {
+          label {&File}
+          xywh {0 0 100 20}
+        } {
+          menuitem {} {
+            label {&New (erase all)...}
+            callback {do_new_master();}
+            xywh {20 20 100 20}
+          }
+          menuitem {} {
+            label {&Open Parameters...}
+            callback {do_load_master();}
+            xywh {20 20 100 20}
+          }
+          menuitem {} {
+            label {&Save All Parameters...}
+            callback {do_save_master();}
+            xywh {10 10 100 20} divider
+          }
+          menuitem {} {
+            label {&Load Scale Settings...}
+            callback {char *filename;
+filename=fl_file_chooser("Open:","({*.xsz})",NULL,0);
+if (filename==NULL) return;
+
+master->lock();
+  //clear all parameters
+  master->microtonal.defaults();
+
+  //load the data
+  int result=master->microtonal.loadXML(filename);
+master->unlock();
+
+
+ delete microtonalui;  
+ microtonalui=new MicrotonalUI(&master->microtonal);
+
+if (result==-10) fl_alert("Error: Could not load the file\\nbecause it is not a scale file.");
+      else if (result<0) fl_alert("Error: Could not load the file.");}
+            xywh {35 35 100 20}
+          }
+          menuitem {} {
+            label {Save Sc&ale Settings ..}
+            callback {char *filename;
+int result=0;
+
+filename=fl_file_chooser("Save:","({*.xsz})",NULL,0);
+if (filename==NULL) return;
+filename=fl_filename_setext(filename,".xsz");
+
+result=fileexists(filename);
+if (result) {
+    result=0;
+   if (!fl_ask("The file exists. \\nOverwrite it?")) return;
+       
+};
+
+
+master->lock();
+result=master->microtonal.saveXML(filename);
+master->unlock();
+
+if (result<0) fl_alert("Error: Could not save the file.");
+
+
+updatepanel();}
+            xywh {25 25 100 20}
+          }
+          menuitem {} {
+            label {Show Scale Settings...}
+            callback {microtonalui->show();}
+            xywh {0 0 100 20} divider
+          }
+          menuitem {} {
+            label {&Settings...}
+            callback {configui->show();}
+            xywh {25 25 100 20} divider
+          }
+          menuitem {} {
+            label {&Copyright...}
+            callback {aboutwindow->show();}
+            xywh {15 15 100 20} divider
+          }
+          menuitem {} {
+            label {E&xit}
+            callback {masterwindow->do_callback();}
+            xywh {10 10 100 20}
+          }
+        }
+        submenu {} {
+          label {&Instrument}
+          xywh {10 10 100 20}
+        } {
+          menuitem {} {
+            label {&Clear Instrument...}
+            callback {if (fl_ask("Clear instrument's parameters ?")){
+//       int npart=(int)npartcounter->value()-1;
+       master->lock();
+       master->part[npart]->defaultsinstrument();
+       master->unlock();
+
+       npartcounter->do_callback();
+};
+
+updatepanel();}
+            xywh {35 35 100 20}
+          }
+          menuitem {} {
+            label {&Open Instrument...}
+            callback {const char *filename;
+filename=fl_file_chooser("Load:","({*.xiz})",NULL,0);
+if (filename==NULL) return;
+
+
+master->lock();
+//  int npart=(int)npartcounter->value()-1;
+
+  //clear all instrument parameters, first
+  master->part[npart]->defaultsinstrument();
+
+  //load the instr. parameters
+  int result=master->part[npart]->loadXMLinstrument(filename);
+
+master->unlock();
+master->part[npart]->applyparameters();
+
+npartcounter->do_callback();
+updatepanel();
+
+if (result==-10) fl_alert("Error: Could not load the file\\nbecause it is not an instrument file.");
+      else if (result<0) fl_alert("Error: Could not load the file.");}
+            xywh {30 30 100 20}
+          }
+          menuitem {} {
+            label {&Save Instrument ...}
+            callback {char *filename;
+
+filename=fl_file_chooser("Save:","({*.xiz})",NULL,0);
+if (filename==NULL) return;
+filename=fl_filename_setext(filename,".xiz");
+
+int result=fileexists(filename);
+if (result) {
+    result=0;
+   if (!fl_ask("The file exists. \\nOverwrite it?")) return;
+       
+};
+
+
+master->lock();
+result=master->part[npart]->saveXML(filename);
+master->unlock();
+
+if (result<0) fl_alert("Error: Could not save the file.");
+
+updatepanel();}
+            xywh {20 20 100 20} divider
+          }
+          menuitem {} {
+            label {Show Instrument &Bank...}
+            callback {bankui->show();}
+            xywh {0 0 100 20} divider
+          }
+          menuitem {} {
+            label {&Virtual Keyboard...}
+            callback {virkeyboard->show();}
+            xywh {10 10 100 20}
+          }
+        }
+        submenu recordmenu {
+          label {&Record}
+          xywh {0 0 100 20}
+        } {
+          menuitem {} {
+            label {&Choose WAV file...}
+            callback {char *filename;
+recordbutton->deactivate();
+pausebutton->deactivate();
+pauselabel->deactivate();
+stopbutton->deactivate();
+filename=fl_file_chooser("Record to audio file:","(*.wav)",NULL,0);
+if (filename==NULL) return;
+fl_filename_setext(filename,".wav");
+
+int result=master->HDDRecorder.preparefile(filename,0);
+if (result==1) {
+    result=0;
+   if (fl_ask("The file exists. \\nOverwrite it?"))
+       master->HDDRecorder.preparefile(filename,1);
+};
+if (result==0) recordbutton->activate();
+
+if (result!=0) fl_alert("Error: Could not save the file.");}
+            xywh {0 0 100 20}
+          }
+        }
+        submenu {} {
+          label {&Sequencer}
+          xywh {0 0 100 20} hide
+        } {
+          menuitem {} {
+            label {Show &Sequencer...}
+            callback {sequi->show();}
+            xywh {0 0 100 20}
+          }
+        }
+        submenu {} {
+          label Misc
+          xywh {10 10 100 20}
+        } {
+          menuitem {} {
+            label {Switch User Interface Mode}
+            callback {if (fl_ask("Switch the User Interface to Beginner mode ?")){
+	masterwindow->hide();
+	refresh_master_ui();
+	simplemasterwindow->show();
+	config.cfg.UserInterfaceMode=2;
+};}
+            xywh {10 10 100 20}
+          }
+        }
+      }
+      Fl_Dial mastervolumedial {
+        label {M.Vol}
+        callback {master->setPvolume((int) o->value());}
+        tooltip {Master Volume} xywh {5 30 30 30} box ROUND_UP_BOX labelfont 1 labelsize 12 align 130 maximum 127 step 1
+        code0 {o->value(master->Pvolume);}
+        class WidgetPDial
+      }
+      Fl_Counter masterkeyshiftcounter {
+        label {Master KeyShift}
+        callback {master->setPkeyshift((int) o->value()+64);}
+        xywh {45 31 90 20} labelsize 12 minimum -64 maximum 64 step 1
+        code0 {o->lstep(12);}
+        code1 {o->value(master->Pkeyshift-64);}
+      }
+      Fl_Button {} {
+        label {Panic!}
+        callback {virkeyboard->relaseallkeys();
+master->lock();
+master->shutup=1;
+master->unlock();}
+        xywh {293 29 92 31} box PLASTIC_UP_BOX color 231 labelfont 1
+      }
+      Fl_Group partuigroup {
+        xywh {0 242 390 183} box ENGRAVED_FRAME
+      } {
+        Fl_Group partui {
+          xywh {4 245 383 175} box FLAT_BOX
+          code0 {o->init(master->part[0],master,0,bankui);}
+          code1 {o->show();}
+          class PartUI
+        } {}
+      }
+      Fl_Tabs {} {
+        xywh {0 80 390 160}
+      } {
+        Fl_Group {} {
+          label {System Effects} open
+          xywh {0 100 390 140} box ENGRAVED_FRAME labeltype EMBOSSED_LABEL labelsize 18 align 25
+        } {
+          Fl_Counter syseffnocounter {
+            label {Sys.Effect No.}
+            callback {nsyseff=(int) o->value()-1;
+sysefftype->value(master->sysefx[nsyseff]->geteffect());
+syseffectui->refresh(master->sysefx[nsyseff]);}
+            xywh {5 120 80 20} type Simple labelfont 1 labelsize 11 align 1 minimum 0 maximum 127 step 1 value 1 textfont 1
+            code0 {o->bounds(1,NUM_SYS_EFX);}
+            code1 {o->value(nsyseff+1);}
+          }
+          Fl_Choice sysefftype {
+            label EffType
+            callback {master->lock();
+master->sysefx[nsyseff]->changeeffect((int) o->value());
+master->unlock();
+syseffectui->refresh(master->sysefx[nsyseff]);}
+            xywh {315 125 70 15} down_box BORDER_BOX labelsize 11
+            code0 {o->value(master->sysefx[nsyseff]->geteffect());}
+          } {
+            menuitem {} {
+              label {No Effect}
+              xywh {10 10 100 20} labelfont 1 labelsize 11
+            }
+            menuitem {} {
+              label Reverb
+              xywh {20 20 100 20} labelfont 1 labelsize 11
+            }
+            menuitem {} {
+              label Echo
+              xywh {30 30 100 20} labelfont 1 labelsize 11
+            }
+            menuitem {} {
+              label Chorus
+              xywh {40 40 100 20} labelfont 1 labelsize 11
+            }
+            menuitem {} {
+              label Phaser
+              xywh {50 50 100 20} labelfont 1 labelsize 11
+            }
+            menuitem {} {
+              label AlienWah
+              xywh {60 60 100 20} labelfont 1 labelsize 11
+            }
+            menuitem {} {
+              label Distortion
+              xywh {70 70 100 20} labelfont 1 labelsize 11
+            }
+            menuitem {} {
+              label EQ
+              xywh {80 80 100 20} labelfont 1 labelsize 11
+            }
+            menuitem {} {
+              label DynFilter
+              xywh {90 90 100 20} labelfont 1 labelsize 11
+            }
+          }
+          Fl_Group syseffectuigroup {
+            xywh {5 140 380 95} box FLAT_BOX color 48
+          } {
+            Fl_Group syseffectui {
+              xywh {5 140 380 95}
+              code0 {o->init(master->sysefx[nsyseff]);}
+              class EffUI
+            } {}
+          }
+          Fl_Button {} {
+            label {Send to...}
+            callback {syseffsendwindow->show();}
+            xywh {95 120 75 20} box THIN_UP_BOX labelfont 1 labelsize 12
+          }
+          Fl_Button {} {
+            label C
+            callback {presetsui->copy(master->sysefx[nsyseff]);}
+            xywh {215 124 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
+          }
+          Fl_Button {} {
+            label P
+            callback {master->lock();
+presetsui->paste(master->sysefx[nsyseff],syseffectui);
+master->unlock();}
+            xywh {245 124 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
+          }
+        }
+        Fl_Group {} {
+          label {Insertion Effects}
+          xywh {0 100 390 140} box ENGRAVED_FRAME labeltype EMBOSSED_LABEL labelsize 18 align 25 hide
+        } {
+          Fl_Counter inseffnocounter {
+            label {Ins.Effect No.}
+            callback {ninseff=(int) o->value()-1;
+insefftype->value(master->insefx[ninseff]->geteffect());
+inseffpart->value(master->Pinsparts[ninseff]+2);
+inseffectui->refresh(master->insefx[ninseff]);
+
+if (master->Pinsparts[ninseff]!=-1) {
+        insefftype->activate();
+	inseffectui->activate();
+        inseffectuigroup->activate();
+} else {
+	insefftype->deactivate();
+ 	inseffectui->deactivate();
+        inseffectuigroup->deactivate();
+};}
+            xywh {5 120 80 20} type Simple labelfont 1 labelsize 11 align 1 minimum 0 maximum 127 step 1 value 1 textfont 1
+            code0 {o->bounds(1,NUM_INS_EFX);}
+            code1 {o->value(ninseff+1);}
+          }
+          Fl_Choice insefftype {
+            label EffType
+            callback {master->lock();
+master->insefx[ninseff]->changeeffect((int) o->value());
+master->unlock();
+inseffectui->refresh(master->insefx[ninseff]);
+inseffectui->show();}
+            xywh {315 125 70 15} down_box BORDER_BOX labelsize 11
+            code0 {o->value(master->insefx[ninseff]->geteffect());}
+            code1 {if (master->Pinsparts[ninseff]== -1) o->deactivate();}
+          } {
+            menuitem {} {
+              label {No Effect}
+              xywh {25 25 100 20} labelfont 1 labelsize 11
+            }
+            menuitem {} {
+              label Reverb
+              xywh {35 35 100 20} labelfont 1 labelsize 11
+            }
+            menuitem {} {
+              label Echo
+              xywh {45 45 100 20} labelfont 1 labelsize 11
+            }
+            menuitem {} {
+              label Chorus
+              xywh {55 55 100 20} labelfont 1 labelsize 11
+            }
+            menuitem {} {
+              label Phaser
+              xywh {60 60 100 20} labelfont 1 labelsize 11
+            }
+            menuitem {} {
+              label AlienWah
+              xywh {70 70 100 20} labelfont 1 labelsize 11
+            }
+            menuitem {} {
+              label Distortion
+              xywh {80 80 100 20} labelfont 1 labelsize 11
+            }
+            menuitem {} {
+              label EQ
+              xywh {90 90 100 20} labelfont 1 labelsize 11
+            }
+            menuitem {} {
+              label DynFilter
+              xywh {100 100 100 20} labelfont 1 labelsize 11
+            }
+          }
+          Fl_Group inseffectuigroup {
+            xywh {5 140 380 95} box FLAT_BOX color 48
+          } {
+            Fl_Group inseffectui {
+              xywh {5 140 380 95}
+              code0 {o->init(master->insefx[ninseff]);}
+              code1 {if (master->Pinsparts[ninseff]== -1) o->deactivate();}
+              class EffUI
+            } {}
+          }
+          Fl_Choice inseffpart {
+            label {Insert To.}
+            callback {master->Pinsparts[ninseff]=(int) o->value()-2;
+if ((int) o->value()==1){
+    inseffectuigroup->deactivate();
+    insefftype->deactivate();
+    inseffectui->deactivate();
+} else {
+    inseffectuigroup->activate();
+    insefftype->activate();
+    inseffectui->activate();
+};
+master->insefx[ninseff]->cleanup();} open
+            xywh {95 120 80 20} down_box BORDER_BOX labelfont 1 labelsize 10 align 5 textsize 10
+            code0 {o->add("Master Out");o->add("Off");}
+            code1 {char tmp[50]; for (int i=0;i<NUM_MIDI_PARTS;i++) {sprintf(tmp,"Part %2d",i+1);o->add(tmp);};}
+            code3 {o->value(master->Pinsparts[ninseff]+2);}
+          } {}
+          Fl_Button {} {
+            label C
+            callback {presetsui->copy(master->insefx[ninseff]);}
+            xywh {215 124 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
+          }
+          Fl_Button {} {
+            label P
+            callback {master->lock();
+presetsui->paste(master->insefx[ninseff],inseffectui);
+master->unlock();}
+            xywh {245 124 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
+          }
+        }
+      }
+      Fl_Button {} {
+        label Scales
+        callback {microtonalui->show();}
+        xywh {330 80 56 19} box PLASTIC_UP_BOX color 231 labeltype ENGRAVED_LABEL labelfont 1
+      }
+      Fl_Group {} {
+        xywh {172 30 117 45} box ENGRAVED_BOX
+      } {
+        Fl_Button recordbutton {
+          label {Rec.}
+          callback {o->deactivate();
+recordmenu->deactivate();
+recordmenu->label("&Record(*)");
+stopbutton->activate();
+pausebutton->activate();
+pauselabel->activate();
+master->HDDRecorder.start();
+master->vuresetpeaks();
+mastermenu->redraw();}
+          tooltip {Start Recording} xywh {181 36 21 21} box ROUND_UP_BOX color 88 labelfont 1 labelsize 10 align 2 deactivate
+        }
+        Fl_Button stopbutton {
+          label Stop
+          callback {o->deactivate();
+master->HDDRecorder.stop();
+recordbutton->deactivate();
+pausebutton->deactivate();
+pauselabel->deactivate();
+recordmenu->activate();
+recordmenu->label("&Record");
+mastermenu->redraw();}
+          tooltip {Stop Recording and close the audio file} xywh {259 36 21 21} box THIN_UP_BOX color 4 labelfont 1 labelsize 10 align 2 deactivate
+        }
+        Fl_Button pausebutton {
+          label {@||}
+          callback {o->deactivate();
+master->HDDRecorder.pause();
+recordbutton->activate();
+mastermenu->redraw();}
+          tooltip {Pause Recording} xywh {220 36 21 21} box THIN_UP_BOX color 4 selection_color 4 labelfont 1 labelcolor 3 align 16 deactivate
+        }
+        Fl_Box pauselabel {
+          label Pause
+          xywh {214 56 30 15} labelfont 1 labelsize 10 deactivate
+        }
+      }
+      Fl_Group {} {
+        xywh {1 427 389 33} box ENGRAVED_FRAME
+      } {
+        Fl_Box {} {
+          label {VU-Meter}
+          xywh {4 430 384 30} box FLAT_BOX color 48 selection_color 75
+          code0 {o->init(master,-1);}
+          class VUMeter
+        }
+      }
+      Fl_Check_Button nrpnbutton {
+        label NRPN
+        callback {master->ctl.NRPN.receive=(int) o->value();}
+        tooltip {Receive NRPNs} xywh {45 65 47 10} down_box DOWN_BOX labelsize 10
+        code0 {o->value(master->ctl.NRPN.receive);}
+      }
+      Fl_Counter npartcounter {
+        callback {int nval=(int) o->value()-1;
+partuigroup->remove(partui);
+delete partui;
+partui=new PartUI(0,0,765,525);
+partuigroup->add(partui);
+partui->init(master->part[nval],master,nval,bankui);
+partui->redraw();
+o->redraw();
+npart=nval;
+
+updatepanel();
+simplenpartcounter->value(nval+1);
+simplenpartcounter->do_callback();}
+        tooltip {The part number} xywh {5 247 70 23} type Simple labelfont 1 minimum 0 maximum 127 step 1 value 1 textfont 1
+        code0 {o->bounds(1,NUM_MIDI_PARTS);}
+        code1 {bankui->init(o);}
+      }
+      Fl_Button {} {
+        label vK
+        callback {virkeyboard->show();}
+        tooltip {Virtual Keyboard} xywh {292 80 35 19} box PLASTIC_UP_BOX color 231 labeltype ENGRAVED_LABEL labelfont 1
+      }
+      Fl_Button {} {
+        label {R.D.}
+        callback {globalfinedetuneslider->value(64.0);
+globalfinedetuneslider->do_callback();}
+        tooltip {Master fine detune reset} xywh {140 65 30 10} box THIN_UP_BOX labelfont 1 labelsize 10
+      }
+      Fl_Dial globalfinedetuneslider {
+        label {F.Det.}
+        callback {master->microtonal.Pglobalfinedetune=(int) o->value();}
+        tooltip {global fine detune} xywh {143 30 20 20} box ROUND_UP_BOX labelsize 10 align 130 maximum 127 step 1 value 64
+        code0 {o->value(master->microtonal.Pglobalfinedetune);}
+        class WidgetPDial
+      }
+      Fl_Button {} {
+        label {Panel Window}
+        callback {updatepanel();
+panelwindow->show();}
+        tooltip {Panel Window} xywh {293 62 92 16} box PLASTIC_UP_BOX color 183 labelfont 1 labelsize 10
+      }
+    }
+    Fl_Window aboutwindow {
+      label {Copyright...}
+      xywh {629 278 330 210} type Double hide
+    } {
+      Fl_Box {} {
+        label {Copyright (c) 2002-2005 Nasca O. Paul}
+        xywh {5 35 320 25} labeltype EMBOSSED_LABEL labelsize 18 align 16
+      }
+      Fl_Box {} {
+        label {This is free software; you may redistribute it and/or modify it under the terms of the 
+version 2 of the GNU General Public License as published by the Free Software Fundation.
+  This program comes with
+ ABSOLUTELY NO WARRANTY. 
+ See the version 2 of the 
+GNU General Public License for details.}
+        xywh {0 60 325 115} labelfont 1 labelsize 12 align 144
+      }
+      Fl_Button {} {
+        label {Close this window}
+        callback {aboutwindow->hide();}
+        xywh {80 180 180 25} box THIN_UP_BOX labelsize 12
+      }
+      Fl_Box {} {
+        label ZynAddSubFX
+        xywh {5 5 325 30} labeltype EMBOSSED_LABEL labelfont 1 labelsize 24 labelcolor 0 align 16
+      }
+    }
+    Fl_Window syseffsendwindow {
+      label {System Effects Send}
+      xywh {171 234 120 250} type Double hide resizable
+    } {
+      Fl_Scroll {} {open
+        xywh {0 45 120 170} box FLAT_BOX resizable
+        code0 {for (int neff1=0;neff1<NUM_SYS_EFX;neff1++) for (int neff2=neff1+1;neff2<NUM_SYS_EFX;neff2++)}
+        code1 {{syseffsend[neff1][neff2]=new SysEffSend(o->x()+(neff2-1)*35,o->y()+15+neff1*50,30,30);syseffsend[neff1][neff2]->label("aaa");syseffsend[neff1][neff2]->init(master,neff1,neff2);};}
+      } {}
+      Fl_Button {} {
+        label Close
+        callback {syseffsendwindow->hide();}
+        xywh {25 220 80 25} box THIN_UP_BOX
+      }
+      Fl_Box {} {
+        label {Send system effect's output to other system effects}
+        xywh {5 5 110 35} labelsize 10 align 192
+      }
+    }
+    Fl_Window panelwindow {
+      label {ZynAddSubFX Panel}
+      xywh {72 60 630 635} type Double hide
+    } {
+      Fl_Scroll {} {open
+        xywh {0 5 570 310} type HORIZONTAL box THIN_UP_BOX
+      } {
+        Fl_Pack {} {open
+          xywh {5 10 560 285} type HORIZONTAL
+          code0 {for (int i=0;i<NUM_MIDI_PARTS/2;i++){panellistitem[i]=new Panellistitem(0,0,70,260,"");panellistitem[i]->init(master,i,bankui);}}
+        } {}
+      }
+      Fl_Scroll {} {open
+        xywh {0 320 570 310} type HORIZONTAL box THIN_UP_BOX
+      } {
+        Fl_Pack {} {open
+          xywh {5 325 560 285} type HORIZONTAL
+          code0 {for (int i=NUM_MIDI_PARTS/2;i<NUM_MIDI_PARTS;i++){panellistitem[i]=new Panellistitem(0,0,70,260,"");panellistitem[i]->init(master,i,bankui);}}
+        } {}
+      }
+      Fl_Button {} {
+        label Close
+        callback {panelwindow->hide();
+updatepanel();}
+        xywh {575 605 50 25} box THIN_UP_BOX
+      }
+      Fl_Button {} {
+        label Refresh
+        callback {updatepanel();}
+        xywh {575 570 55 25} box THIN_UP_BOX
+      }
+    }
+    Fl_Window simplemasterwindow {
+      label ZynAddSubFX
+      callback {\#ifdef VSTAUDIOOUT
+fl_alert("ZynAddSubFX could not be closed this way, because it's a VST plugin. Please use the host aplication to close it.");
+\#else
+if (fl_ask("Exit and leave the unsaved data?")) {
+	config.save();
+	*exitprogram=1;
+};
+\#endif}
+      xywh {135 383 600 335} type Double hide
+    } {
+      Fl_Menu_Bar {} {
+        xywh {0 0 690 25}
+      } {
+        submenu {} {
+          label {&File}
+          xywh {10 10 100 20}
+        } {
+          menuitem {} {
+            label {&New (erase all)...}
+            callback {do_new_master();}
+            xywh {30 30 100 20}
+          }
+          menuitem {} {
+            label {&Open Parameters...}
+            callback {do_load_master();}
+            xywh {30 30 100 20}
+          }
+          menuitem {} {
+            label {&Save All Parameters...}
+            callback {do_save_master();}
+            xywh {20 20 100 20} divider
+          }
+          menuitem {} {
+            label {&Settings...}
+            callback {configui->show();}
+            xywh {35 35 100 20} divider
+          }
+          menuitem {} {
+            label {&Copyright...}
+            callback {aboutwindow->show();}
+            xywh {25 25 100 20} divider
+          }
+          menuitem {} {
+            label {E&xit}
+            callback {masterwindow->do_callback();}
+            xywh {20 20 100 20}
+          }
+        }
+        submenu {} {
+          label {&Instrument}
+          xywh {20 20 100 20}
+        } {
+          menuitem {} {
+            label {&Open Instrument...}
+            callback {const char *filename;
+filename=fl_file_chooser("Load:","({*.xiz})",NULL,0);
+if (filename==NULL) return;
+
+
+master->lock();
+//  int npart=(int)npartcounter->value()-1;
+
+  //clear all instrument parameters, first
+  master->part[npart]->defaultsinstrument();
+
+  //load the instr. parameters
+  int result=master->part[npart]->loadXMLinstrument(filename);
+
+master->unlock();
+master->part[npart]->applyparameters();
+
+simplenpartcounter->do_callback();
+
+if (result==-10) fl_alert("Error: Could not load the file\\nbecause it is not an instrument file.");
+      else if (result<0) fl_alert("Error: Could not load the file.");}
+            xywh {40 40 100 20}
+          }
+          menuitem {} {
+            label {Show Instrument &Bank...}
+            callback {bankui->show();}
+            xywh {10 10 100 20} divider
+          }
+        }
+        submenu {} {
+          label Misc
+          xywh {0 0 100 20}
+        } {
+          menuitem {} {
+            label {Switch User Interface Mode}
+            callback {if (fl_ask("Switch the User Interface to Advanced mode ?")){
+	simplemasterwindow->hide();
+	refresh_master_ui();
+	masterwindow->show();
+	config.cfg.UserInterfaceMode=1;
+};}
+            xywh {0 0 100 20}
+          }
+        }
+      }
+      Fl_Group simplelistitemgroup {
+        private xywh {125 65 215 150} box ENGRAVED_BOX
+        code0 {if (master->part[npart]->Penabled==0) o->deactivate();}
+      } {
+        Fl_Button partname {
+          callback {if ((int)bankui->cbwig->value()!=(npart+1)){
+   bankui->cbwig->value(npart+1);
+   bankui->cbwig->do_callback();
+};
+bankui->show();}
+          xywh {130 72 205 18} box PLASTIC_THIN_DOWN_BOX down_box FLAT_BOX color 247 labelfont 1 labelsize 12 align 208
+        }
+        Fl_Slider partpanning {
+          label Pan
+          callback {master->part[npart]->setPpanning((int) o->value());}
+          xywh {185 95 70 15} type {Horz Knob} box FLAT_BOX maximum 127 step 1 value 64
+          code0 {o->value(master->part[npart]->Ppanning);}
+        }
+        Fl_Choice partrcv {
+          label {Midi Channel Receive}
+          callback {virkeys->relaseallkeys(0);
+master->part[npart]->Prcvchn=(int) o->value();
+virkeys->midich=(int) o->value();} open
+          tooltip {receive from Midi channel} xywh {140 157 65 18} down_box BORDER_BOX labelsize 11 align 130 textfont 1
+          code0 {char nrstr[10]; for(int i=0;i<NUM_MIDI_CHANNELS;i++){sprintf(nrstr,"Ch%d",i+1);if (i!=9) o->add(nrstr); else o->add("Dr10");};}
+          code1 {o->value(master->part[npart]->Prcvchn);}
+        } {}
+        Fl_Dial partvolume {
+          callback {master->part[npart]->setPvolume((int) o->value());}
+          xywh {145 95 30 30} maximum 127 step 1
+          code0 {o->value(master->part[npart]->Pvolume);}
+          class WidgetPDial
+        }
+        Fl_Box {} {
+          label Volume
+          xywh {130 125 60 15}
+        }
+        Fl_Check_Button simplepartportamento {
+          label Portamento
+          callback {master->part[npart]->ctl.portamento.portamento=(int) o->value();}
+          tooltip {Enable/Disable the portamento} xywh {260 95 75 20} down_box DOWN_BOX labelfont 1 labelsize 10
+          code0 {o->value(master->part[npart]->ctl.portamento.portamento);}
+        }
+        Fl_Counter simpleminkcounter {
+          label {Min.key}
+          callback {master->part[npart]->Pminkey=(int) o->value();
+if (master->part[npart]->Pminkey>master->part[npart]->Pmaxkey) o->textcolor(FL_RED);
+ else o->textcolor(FL_BLACK);}
+          tooltip {Minimum key (that the part receives NoteOn messages)} xywh {210 158 40 15} type Simple labelfont 1 labelsize 10 minimum 0 maximum 127 step 1 textsize 10
+          code0 {o->value(master->part[npart]->Pminkey);}
+        }
+        Fl_Counter simplemaxkcounter {
+          label {Max.key}
+          callback {master->part[npart]->Pmaxkey=(int) o->value();
+
+if (master->part[npart]->Pminkey>master->part[npart]->Pmaxkey) o->textcolor(FL_RED);
+ else o->textcolor(FL_BLACK);}
+          tooltip {Maximum key (that the part receives NoteOn messages)} xywh {255 158 40 15} type Simple labelfont 1 labelsize 10 minimum 0 maximum 127 step 1 textsize 10
+          code0 {o->value(master->part[npart]->Pmaxkey);}
+        }
+        Fl_Button {} {
+          label m
+          callback {if (master->part[npart]->lastnote>=0) simpleminkcounter->value(master->part[npart]->lastnote);
+simpleminkcounter->do_callback();
+simplemaxkcounter->do_callback();}
+          tooltip {set the minimum key to the last pressed key} xywh {230 188 15 12} box THIN_UP_BOX labelsize 10
+        }
+        Fl_Button {} {
+          label M
+          callback {if (master->part[npart]->lastnote>=0) simplemaxkcounter->value(master->part[npart]->lastnote);
+simplemaxkcounter->do_callback();
+simpleminkcounter->do_callback();}
+          tooltip {set the maximum key to the last pressed key} xywh {260 188 15 12} box THIN_UP_BOX labelsize 10
+        }
+        Fl_Button {} {
+          label R
+          callback {simpleminkcounter->value(0);
+simpleminkcounter->do_callback();
+simplemaxkcounter->value(127);
+simplemaxkcounter->do_callback();}
+          tooltip {reset the minimum key to 0 and maximum key to 127} xywh {245 188 15 12} box THIN_UP_BOX labelfont 1 labelsize 10
+        }
+        Fl_Counter simplepartkeyshiftcounter {
+          label KeyShift
+          callback {master->part[npart]->Pkeyshift=(int) o->value()+64;}
+          xywh {240 120 90 20} labelsize 12 minimum -64 maximum 64 step 1
+          code0 {o->lstep(12);}
+          code1 {o->value(master->part[npart]->Pkeyshift-64);}
+        }
+        Fl_Dial simplesyseffsend {
+          callback {master->setPsysefxvol(npart,nsyseff,(int) o->value());}
+          xywh {300 160 30 30} maximum 127 step 1
+          class WidgetPDial
+        }
+        Fl_Box {} {
+          label Effect
+          xywh {295 190 40 15}
+        }
+      }
+      Fl_Check_Button partenabled {
+        label Enabled
+        callback {master->lock();
+ master->partonoff(npart,(int) o->value());
+master->unlock();
+
+if ((int) o->value()==0) simplelistitemgroup->deactivate();
+  else {
+    simplelistitemgroup->activate();
+    if ((int)bankui->cbwig->value()!=(npart+1)){
+       bankui->cbwig->value(npart+1);
+       bankui->cbwig->do_callback();
+    };
+};
+
+o->redraw();}
+        private xywh {250 40 85 20} down_box DOWN_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 16 align 24
+        code0 {//char tmp[10];snprintf(tmp,10,"%d",npart+1);o->label(strdup(tmp));}
+        code1 {o->value(master->part[npart]->Penabled);}
+      }
+      Fl_Box virkeys {
+        label Keyboard
+        xywh {5 215 590 80} box BORDER_BOX color 17
+        code0 {o->init(master);}
+        class VirKeys
+      }
+      Fl_Group {} {
+        xywh {340 30 255 185} box ENGRAVED_BOX
+      } {
+        Fl_Tabs {} {
+          xywh {345 35 245 175} align 18
+        } {
+          Fl_Group {} {
+            label {System Effects}
+            xywh {345 55 245 155} box ENGRAVED_FRAME labelfont 1 align 18
+          } {
+            Fl_Counter simplesyseffnocounter {
+              label {Sys.Effect No.}
+              callback {nsyseff=(int) o->value()-1;
+simplesysefftype->value(master->sysefx[nsyseff]->geteffect());
+simplesyseffectui->refresh(master->sysefx[nsyseff]);
+simplerefresh();}
+              xywh {350 75 80 20} type Simple labelfont 1 labelsize 11 align 1 minimum 0 maximum 127 step 1 value 1 textfont 1
+              code0 {o->bounds(1,NUM_SYS_EFX);}
+              code1 {o->value(nsyseff+1);}
+            }
+            Fl_Choice simplesysefftype {
+              label EffType
+              callback {master->lock();
+master->sysefx[nsyseff]->changeeffect((int) o->value());
+master->unlock();
+simplesyseffectui->refresh(master->sysefx[nsyseff]);}
+              xywh {515 80 70 15} down_box BORDER_BOX labelsize 11 align 5
+              code0 {o->value(master->sysefx[nsyseff]->geteffect());}
+            } {
+              menuitem {} {
+                label {No Effect}
+                xywh {20 20 100 20} labelfont 1 labelsize 11
+              }
+              menuitem {} {
+                label Reverb
+                xywh {30 30 100 20} labelfont 1 labelsize 11
+              }
+              menuitem {} {
+                label Echo
+                xywh {40 40 100 20} labelfont 1 labelsize 11
+              }
+              menuitem {} {
+                label Chorus
+                xywh {50 50 100 20} labelfont 1 labelsize 11
+              }
+              menuitem {} {
+                label Phaser
+                xywh {60 60 100 20} labelfont 1 labelsize 11
+              }
+              menuitem {} {
+                label AlienWah
+                xywh {70 70 100 20} labelfont 1 labelsize 11
+              }
+              menuitem {} {
+                label Distortion
+                xywh {80 80 100 20} labelfont 1 labelsize 11
+              }
+              menuitem {} {
+                label EQ
+                xywh {90 90 100 20} labelfont 1 labelsize 11
+              }
+              menuitem {} {
+                label DynFilter
+                xywh {100 100 100 20} labelfont 1 labelsize 11
+              }
+            }
+            Fl_Group simplesyseffectuigroup {
+              xywh {350 95 235 95} box FLAT_BOX color 48
+            } {
+              Fl_Group simplesyseffectui {
+                xywh {350 95 234 95}
+                code0 {o->init(master->sysefx[nsyseff]);}
+                class SimpleEffUI
+              } {}
+            }
+            Fl_Button {} {
+              label {Send to...}
+              callback {syseffsendwindow->show();}
+              xywh {435 75 75 20} box THIN_UP_BOX labelfont 1 labelsize 12
+            }
+            Fl_Button {} {
+              label P
+              callback {master->lock();
+presetsui->paste(master->sysefx[nsyseff],simplesyseffectui);
+master->unlock();}
+              xywh {560 65 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
+            }
+          }
+          Fl_Group {} {
+            label {Insertion Effects}
+            xywh {345 55 245 155} box ENGRAVED_FRAME labelfont 1 align 18 hide
+          } {
+            Fl_Counter simpleinseffnocounter {
+              label {Ins.Effect No.}
+              callback {ninseff=(int) o->value()-1;
+simpleinsefftype->value(master->insefx[ninseff]->geteffect());
+simpleinseffpart->value(master->Pinsparts[ninseff]+2);
+simpleinseffectui->refresh(master->insefx[ninseff]);
+
+if (master->Pinsparts[ninseff]!=-1) {
+        simpleinsefftype->activate();
+	simpleinseffectui->activate();
+        simpleinseffectuigroup->activate();
+} else {
+	simpleinsefftype->deactivate();
+ 	simpleinseffectui->deactivate();
+        simpleinseffectuigroup->deactivate();
+};}
+              xywh {350 75 80 20} type Simple labelfont 1 labelsize 11 align 1 minimum 0 maximum 127 step 1 value 1 textfont 1
+              code0 {o->bounds(1,NUM_INS_EFX);}
+              code1 {o->value(ninseff+1);}
+            }
+            Fl_Choice simpleinsefftype {
+              label EffType
+              callback {master->lock();
+master->insefx[ninseff]->changeeffect((int) o->value());
+master->unlock();
+simpleinseffectui->refresh(master->insefx[ninseff]);
+simpleinseffectui->show();}
+              xywh {515 80 70 15} down_box BORDER_BOX labelsize 11 align 5
+              code0 {o->value(master->insefx[ninseff]->geteffect());}
+              code1 {if (master->Pinsparts[ninseff]== -1) o->deactivate();}
+            } {
+              menuitem {} {
+                label {No Effect}
+                xywh {35 35 100 20} labelfont 1 labelsize 11
+              }
+              menuitem {} {
+                label Reverb
+                xywh {45 45 100 20} labelfont 1 labelsize 11
+              }
+              menuitem {} {
+                label Echo
+                xywh {55 55 100 20} labelfont 1 labelsize 11
+              }
+              menuitem {} {
+                label Chorus
+                xywh {65 65 100 20} labelfont 1 labelsize 11
+              }
+              menuitem {} {
+                label Phaser
+                xywh {70 70 100 20} labelfont 1 labelsize 11
+              }
+              menuitem {} {
+                label AlienWah
+                xywh {80 80 100 20} labelfont 1 labelsize 11
+              }
+              menuitem {} {
+                label Distortion
+                xywh {90 90 100 20} labelfont 1 labelsize 11
+              }
+              menuitem {} {
+                label EQ
+                xywh {100 100 100 20} labelfont 1 labelsize 11
+              }
+              menuitem {} {
+                label DynFilter
+                xywh {110 110 100 20} labelfont 1 labelsize 11
+              }
+            }
+            Fl_Group simpleinseffectuigroup {
+              xywh {350 95 234 95} box FLAT_BOX color 48
+            } {
+              Fl_Group simpleinseffectui {
+                xywh {350 95 234 95}
+                code0 {o->init(master->insefx[ninseff]);}
+                code1 {if (master->Pinsparts[ninseff]== -1) o->deactivate();}
+                class SimpleEffUI
+              } {}
+            }
+            Fl_Choice simpleinseffpart {
+              label {Insert To.}
+              callback {master->Pinsparts[ninseff]=(int) o->value()-2;
+if ((int) o->value()==1){
+    simpleinseffectuigroup->deactivate();
+    simpleinsefftype->deactivate();
+    simpleinseffectui->deactivate();
+} else {
+    simpleinseffectuigroup->activate();
+    simpleinsefftype->activate();
+    simpleinseffectui->activate();
+};
+master->insefx[ninseff]->cleanup();} open
+              xywh {435 75 80 20} down_box BORDER_BOX labelfont 1 labelsize 10 align 5 textsize 10
+              code0 {o->add("Master Out");o->add("Off");}
+              code1 {char tmp[50]; for (int i=0;i<NUM_MIDI_PARTS;i++) {sprintf(tmp,"Part %2d",i+1);o->add(tmp);};}
+              code3 {o->value(master->Pinsparts[ninseff]+2);}
+            } {}
+            Fl_Button {} {
+              label P
+              callback {master->lock();
+presetsui->paste(master->insefx[ninseff],simpleinseffectui);
+master->unlock();}
+              xywh {560 65 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
+            }
+          }
+        }
+      }
+      Fl_Group {} {
+        xywh {5 300 590 30} box ENGRAVED_FRAME
+      } {
+        Fl_Box {} {
+          label {VU-Meter}
+          xywh {5 300 590 30} box FLAT_BOX color 41 selection_color 75
+          code0 {o->init(master,-1);}
+          class VUMeter
+        }
+      }
+      Fl_Dial simplemastervolumedial {
+        label {Master Volume}
+        callback {master->setPvolume((int) o->value());}
+        tooltip {Master Volume} xywh {10 35 40 40} box ROUND_UP_BOX labelfont 1 labelsize 12 align 130 maximum 127 step 1
+        code0 {o->value(master->Pvolume);}
+        class WidgetPDial
+      }
+      Fl_Counter simplemasterkeyshiftcounter {
+        label {Master KeyShift}
+        callback {master->setPkeyshift((int) o->value()+64);}
+        xywh {25 110 90 20} labelsize 12 minimum -64 maximum 64 step 1
+        code0 {o->lstep(12);}
+        code1 {o->value(master->Pkeyshift-64);}
+      }
+      Fl_Button {} {
+        label {Stop ALL sounds!}
+        callback {virkeyboard->relaseallkeys();
+master->lock();
+master->shutup=1;
+master->unlock();}
+        xywh {5 149 115 31} box PLASTIC_UP_BOX color 231 labelfont 1 labelsize 12
+      }
+      Fl_Button {} {
+        label Reset
+        callback {simpleglobalfinedetuneslider->value(64.0);
+simpleglobalfinedetuneslider->do_callback();}
+        tooltip {Master fine detune reset} xywh {70 32 50 10} box THIN_UP_BOX labelfont 1 labelsize 12 align 128
+      }
+      Fl_Dial simpleglobalfinedetuneslider {
+        label {Fine Detune}
+        callback {master->microtonal.Pglobalfinedetune=(int) o->value();}
+        tooltip {global fine detune} xywh {80 45 30 30} box ROUND_UP_BOX labelsize 12 align 130 maximum 127 step 1 value 64
+        code0 {o->value(master->microtonal.Pglobalfinedetune);}
+        class WidgetPDial
+      }
+      Fl_Counter simplenpartcounter {
+        label Part
+        callback {virkeys->relaseallkeys(0);
+npartcounter->value(o->value());
+npart=(int) o->value()-1;
+
+simplerefresh();
+virkeys->midich=master->part[npart]->Prcvchn;}
+        tooltip {The part number} xywh {170 40 70 20} type Simple labelfont 1 align 4 minimum 0 maximum 127 step 1 value 1 textfont 1
+        code0 {o->bounds(1,NUM_MIDI_PARTS);}
+      }
+      Fl_Counter {} {
+        label {Keyb.Oct.}
+        callback {virkeys->relaseallkeys(0);
+virkeys->midioct=(int) o->value();
+virkeys->take_focus();}
+        tooltip {Midi Octave} xywh {5 195 55 20} type Simple labelsize 12 align 8 when 6 minimum 0 maximum 5 step 1 textfont 1 textsize 12
+        code0 {o->value(virkeys->midioct);}
+      }
+    }
+    Fl_Window selectuiwindow {
+      label {User Interface mode}
+      callback {*exitprogram=1;}
+      xywh {342 246 430 250} type Double hide non_modal
+    } {
+      Fl_Box {} {
+        label {Welcome to ZynAddSubFX}
+        xywh {5 5 425 40} labeltype SHADOW_LABEL labelfont 1 labelsize 33
+      }
+      Fl_Box {} {
+        label {Please choose the interface mode:}
+        xywh {10 50 265 25} labelfont 1 labelsize 16
+      }
+      Fl_Button {} {
+        label Advanced
+        callback {config.cfg.UserInterfaceMode=1;
+masterwindow->show();
+selectuiwindow->hide();}
+        xywh {10 165 100 35} box PLASTIC_UP_BOX color 229 labelfont 1 labelsize 20
+      }
+      Fl_Box {} {
+        label {.. if you have used ZynAddSubFX before, or you like to have full controll to all parameters.}
+        xywh {110 165 310 35} labelfont 1 labelsize 13 align 144
+      }
+      Fl_Button {} {
+        label Beginner
+        callback {simplemasterwindow->show();
+selectuiwindow->hide();
+config.cfg.UserInterfaceMode=2;}
+        xywh {10 80 100 65} box PLASTIC_UP_BOX color 238 labelfont 1 labelsize 20
+      }
+      Fl_Box {} {
+        label {..if you are a beginner, you prefer using presets or you prefer to use simpler user interfaces. Most functionality of ZynAddSubFX will be hidden in this mode to make simple the learning/using it.}
+        xywh {110 75 320 75} labelfont 1 labelsize 13 align 144
+      }
+      Fl_Box {} {
+        label {You can switch the interface modes anytime you want.}
+        xywh {30 215 360 25} box BORDER_BOX color 51 labelfont 1 labelsize 13 align 144
+      }
+    }
+  }
+  Function {updatesendwindow()} {} {
+    code {for (int neff1=0;neff1<NUM_SYS_EFX;neff1++) 
+  for (int neff2=neff1+1;neff2<NUM_SYS_EFX;neff2++)
+    syseffsend[neff1][neff2]->value(master->Psysefxsend[neff1][neff2]);} {}
+  }
+  Function {updatepanel()} {} {
+    code {for (int npart=0;npart<NUM_MIDI_PARTS;npart++){
+  panellistitem[npart]->refresh();
+};} {}
+  }
+  Function {setfilelabel(const char *filename)} {} {
+    code {if (filename!=NULL) snprintf(&masterwindowlabel[0],100,"%s - ZynAddSubFX",fl_filename_name(filename));
+  else snprintf(&masterwindowlabel[0],100,"%s","ZynAddSubFX (c)2002-2005 Nasca O. Paul");
+masterwindowlabel[99]='\\0';
+masterwindow->label(&masterwindowlabel[0]);
+simplemasterwindow->label(&masterwindowlabel[0]);} {}
+  }
+  Function {MasterUI(Master *master_,int *exitprogram_)} {} {
+    code {master=master_;
+exitprogram=exitprogram_;
+ninseff=0;
+nsyseff=0;
+npart=0;
+
+for (int i=0;i<NUM_SYS_EFX;i++)
+   for (int j=0;j<NUM_SYS_EFX;j++)
+     syseffsend[i][j]=NULL;
+
+microtonalui=new MicrotonalUI(&master->microtonal);
+virkeyboard=new VirKeyboard(master);
+bankui=new BankUI(master,&npart);
+configui=new ConfigUI();
+sequi=new SeqUI(master);
+
+make_window();
+presetsui=new PresetsUI();
+setfilelabel(NULL);
+swapefftype=0;
+simplerefresh();} {}
+  }
+  Function {~MasterUI()} {} {
+    code {masterwindow->hide();
+delete (masterwindow);
+aboutwindow->hide();
+delete (aboutwindow);
+syseffsendwindow->hide();
+delete(syseffsendwindow);
+
+delete (virkeyboard);
+delete (microtonalui);
+delete (bankui);
+delete (configui);
+delete (sequi);
+
+delete(presetsui);} {}
+  }
+  Function {showUI()} {} {
+    code {switch (config.cfg.UserInterfaceMode){
+	case 0:selectuiwindow->show();
+	break;
+	case 1:masterwindow->show();
+	break;
+	case 2:simplemasterwindow->show();
+	break;
+};} {}
+  }
+  Function {simplerefresh()} {} {
+    code {partenabled->value(master->part[npart]->Penabled);
+if (master->part[npart]->Penabled!=0) simplelistitemgroup->activate();
+     else simplelistitemgroup->deactivate();
+
+partvolume->value(master->part[npart]->Pvolume);
+partpanning->value(master->part[npart]->Ppanning);
+partrcv->value(master->part[npart]->Prcvchn);
+
+if (master->part[npart]->Pname[0]!=0) partname->label((char *)master->part[npart]->Pname);
+	else partname->label("Click here to load a instrument");
+
+simplelistitemgroup->redraw();
+simplepartportamento->value(master->part[npart]->ctl.portamento.portamento);
+simpleminkcounter->value(master->part[npart]->Pminkey);
+simplemaxkcounter->value(master->part[npart]->Pmaxkey);
+
+simplepartkeyshiftcounter->value(master->part[npart]->Pkeyshift-64);
+simplesyseffsend->value(master->Psysefxvol[nsyseff][npart]);} {}
+  }
+  Function {do_new_master()} {} {
+    code {if (fl_ask("Clear *ALL* the parameters ?")){
+       delete microtonalui;
+
+       master->lock();
+	master->defaults();
+       master->unlock();
+	
+       npartcounter->value(1);
+       refresh_master_ui();
+
+};
+
+updatepanel();} {}
+  }
+  Function {do_load_master()} {} {
+    code {char *filename;
+filename=fl_file_chooser("Open:","({*.xmz})",NULL,0);
+if (filename==NULL) return;
+
+
+master->lock();
+  //clear all parameters
+  master->defaults();
+
+  //load the data
+  int result=master->loadXML(filename);
+master->unlock();
+master->applyparameters();
+
+npartcounter->value(1);
+refresh_master_ui();
+updatepanel();
+if (result>=0) setfilelabel(filename);
+
+
+if (result==-10) fl_alert("Error: Could not load the file\\nbecause it is not a zynaddsubfx parameters file.");
+      else if (result<0) fl_alert("Error: Could not load the file.");} {}
+  }
+  Function {do_save_master()} {} {
+    code {char *filename;
+int result=0;
+
+filename=fl_file_chooser("Save:","({*.xmz})",NULL,0);
+if (filename==NULL) return;
+filename=fl_filename_setext(filename,".xmz");
+
+result=fileexists(filename);
+if (result) {
+    result=0;
+   if (!fl_ask("The file exists. \\nOverwrite it?")) return;
+       
+};
+
+
+master->lock();
+result=master->saveXML(filename);
+master->unlock();
+
+if (result<0) fl_alert("Error: Could not save the file.");
+	else setfilelabel(filename);
+
+updatepanel();} {}
+  }
+  Function {refresh_master_ui()} {} {
+    code {ninseff=0;
+nsyseff=0;
+npart=0;
+
+//the Master UI
+npartcounter->do_callback();
+syseffnocounter->do_callback();
+inseffnocounter->do_callback();
+masterkeyshiftcounter->value(master->Pkeyshift-64);
+mastervolumedial->value(master->Pvolume);    
+globalfinedetuneslider->value(master->microtonal.Pglobalfinedetune);   
+microtonalui=new MicrotonalUI(&master->microtonal);
+nrpnbutton->value(master->ctl.NRPN.receive);
+updatesendwindow();
+updatepanel();
+
+//the simle MasterUI
+simplenpartcounter->value(1);
+simplesyseffnocounter->value(1);
+simpleinseffnocounter->value(1);
+simplenpartcounter->do_callback();
+simplesyseffnocounter->do_callback();
+simpleinseffnocounter->do_callback();
+simplemasterkeyshiftcounter->value(master->Pkeyshift-64);
+simplemastervolumedial->value(master->Pvolume);    
+simpleglobalfinedetuneslider->value(master->microtonal.Pglobalfinedetune);
+virkeys->midich=master->part[npart]->Prcvchn;
+
+simplerefresh();
+bankui->hide();} {}
+  }
+  decl {Master *master;} {}
+  decl {MicrotonalUI *microtonalui;} {}
+  decl {SeqUI *sequi;} {}
+  decl {BankUI *bankui;} {}
+  decl {int ninseff,npart;} {}
+  decl {int nsyseff;} {}
+  decl {int *exitprogram;} {}
+  decl {SysEffSend *syseffsend[NUM_SYS_EFX][NUM_SYS_EFX];} {}
+  decl {VirKeyboard *virkeyboard;} {}
+  decl {ConfigUI *configui;} {}
+  decl {int swapefftype;} {}
+  decl {char masterwindowlabel[100];} {}
+  decl {Panellistitem *panellistitem[NUM_MIDI_PARTS];} {}
+} 
diff --git a/muse_qt4_evolution/synti/zynaddsubfx/UI/MicrotonalUI.fl b/muse_qt4_evolution/synti/zynaddsubfx/UI/MicrotonalUI.fl
new file mode 100644
index 00000000..750e7b51
--- /dev/null
+++ b/muse_qt4_evolution/synti/zynaddsubfx/UI/MicrotonalUI.fl
@@ -0,0 +1,270 @@
+# data file for the Fltk User Interface Designer (fluid)
+version 1.0106 
+header_name {.h} 
+code_name {.cc}
+decl {//Copyright (c) 2002-2005 Nasca Octavian Paul} {} 
+
+decl {//License: GNU GPL version 2} {} 
+
+decl {\#include <stdlib.h>} {public
+} 
+
+decl {\#include <stdio.h>} {public
+} 
+
+decl {\#include <string.h>} {public
+} 
+
+decl {\#include <FL/Fl_File_Chooser.H>} {public
+} 
+
+decl {\#include <FL/fl_ask.H>} {public
+} 
+
+decl {\#include "../Misc/Microtonal.h"} {public
+} 
+
+class MicrotonalUI {} {
+  Function {make_window()} {} {
+    Fl_Window microtonaluiwindow {
+      label Scales
+      xywh {99 164 405 450} type Double hide
+    } {
+      Fl_Group {} {
+        tooltip {Center where the note's freqs. are turned upside-down} xywh {249 2 155 45} box ENGRAVED_FRAME
+      } {
+        Fl_Check_Button {} {
+          label {Invert keys}
+          callback {microtonal->Pinvertupdown=(int) o->value();
+if (microtonal->Pinvertupdown==0) centerinvertcounter->deactivate();
+   else centerinvertcounter->activate();}
+          tooltip {Turn upside-down the note frequencies} xywh {254 13 55 30} down_box DOWN_BOX labelfont 1 labelsize 12 align 148
+          code0 {o->value(microtonal->Pinvertupdown);}
+        }
+        Fl_Counter centerinvertcounter {
+          label Center
+          callback {microtonal->Pinvertupdowncenter=(int) o->value();}
+          xywh {319 13 80 20} labelfont 1 labelsize 12 align 130 minimum 0 maximum 127 step 1 textfont 1
+          code0 {o->lstep(microtonal->getoctavesize());}
+          code1 {o->value(microtonal->Pinvertupdowncenter);}
+          code2 {if (microtonal->Pinvertupdown==0) o->deactivate();}
+        }
+      }
+      Fl_Group microtonalgroup {selected
+        xywh {3 49 402 398} box ENGRAVED_FRAME
+        code0 {if (microtonal->Penabled==0) o->deactivate();}
+      } {
+        Fl_Button applybutton {
+          label Retune
+          callback {apply();}
+          tooltip {Retune the synth accorging to the inputs from "Tunnings" and "Keyboard Mappings"} xywh {8 413 107 28} box THIN_UP_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 18
+        }
+        Fl_Value_Output octavesizeoutput {
+          label {nts./oct.}
+          callback {o->value(microtonal->getoctavesize());}
+          tooltip {Notes/Octave} xywh {150 423 35 17} labelsize 10 align 5 maximum 500 step 1 value 12 textfont 1
+          code0 {o->value(microtonal->getoctavesize());}
+        }
+        Fl_Input nameinput {
+          label {Name:}
+          callback {snprintf((char *)microtonal->Pname,MICROTONAL_MAX_NAME_LEN,"%s",o->value());}
+          xywh {8 64 285 25} labelfont 1 labelsize 12 align 5
+          code0 {o->insert((char *)microtonal->Pname);}
+        }
+        Fl_Input tuningsinput {
+          label {Tunings:}
+          xywh {8 144 182 264} type Multiline labelfont 1 labelsize 12 align 5 when 2
+          code0 {updateTuningsInput();}
+        }
+        Fl_Input commentinput {
+          label {Comment:}
+          callback {snprintf((char *)microtonal->Pcomment,MICROTONAL_MAX_NAME_LEN,"%s",o->value());}
+          xywh {8 104 391 25} labelfont 1 labelsize 12 align 5
+          code0 {o->insert((char *)microtonal->Pcomment);}
+        }
+        Fl_Counter {} {
+          label Shift
+          callback {microtonal->Pscaleshift=(int) o->value()+64;}
+          xywh {313 69 70 20} type Simple labelsize 12 align 1 minimum -63 maximum 64 step 1 textfont 1
+          code0 {o->value(microtonal->Pscaleshift-64);}
+        }
+        Fl_Button {} {
+          label {Import .SCL file}
+          callback {const char *filename;
+filename=fl_file_chooser("Open:","(*.scl)",NULL,0);
+if (filename==NULL) return;
+int result=microtonal->loadscl(filename);
+if (result==0) {
+       updateTuningsInput();
+       nameinput->cut(0,nameinput->maximum_size());
+       nameinput->insert((char *)microtonal->Pname);
+       nameinput->position(0);
+       commentinput->cut(0,commentinput->maximum_size());
+       commentinput->insert((char *)microtonal->Pname);
+       commentinput->position(0);
+       tuningsinput->position(0);
+       octavesizeoutput->do_callback();
+     } else {
+	fl_alert("Error: Could not load the file.");   
+     };}
+          tooltip {Inport Scala .scl file (tunnings)} xywh {243 411 84 15} box THIN_UP_BOX labelfont 1 labelsize 10
+        }
+        Fl_Group keymappinggroup {
+          label {Keyboard Mapping} open
+          xywh {193 144 206 264} box ENGRAVED_BOX labelfont 1 labelsize 12
+        } {
+          Fl_Input mappinginput {
+            xywh {250 147 146 258} type Multiline labelfont 1 labelsize 12 align 5 when 2
+            code0 {updateMappingInput();}
+          }
+          Fl_Counter firstnotecounter {
+            label {First note}
+            callback {microtonal->Pfirstkey=(int) o->value();}
+            tooltip {First MIDI note number} xywh {199 195 42 18} type Simple labelsize 10 align 5 minimum 0 maximum 127 step 1 textfont 1 textsize 12
+            code0 {o->value(microtonal->Pfirstkey);}
+          }
+          Fl_Counter lastnotecounter {
+            label {Last note}
+            callback {microtonal->Plastkey=(int) o->value();}
+            tooltip {Last MIDI note number} xywh {199 225 42 18} type Simple labelsize 10 align 5 minimum 0 maximum 127 step 1 value 127 textfont 1 textsize 12
+            code0 {o->value(microtonal->Plastkey);}
+          }
+          Fl_Counter middlenotecounter {
+            label {Midle note}
+            callback {microtonal->Pmiddlenote=(int) o->value();}
+            tooltip {Midle note (where scale degree 0 is mapped to)} xywh {199 267 42 18} type Simple labelsize 10 align 5 minimum 0 maximum 127 step 1 value 60 textfont 1 textsize 12
+            code0 {o->value(microtonal->Pmiddlenote);}
+          }
+          Fl_Value_Output mapsizeoutput {
+            label {Map Size}
+            callback {o->value(microtonal->Pmapsize);}
+            xywh {201 382 44 20} labelsize 10 align 5 maximum 500 step 1 value 12 textfont 1
+            code0 {o->value(microtonal->Pmapsize);}
+          }
+        }
+        Fl_Check_Button mappingenabledbutton {
+          label ON
+          callback {int x=(int) o->value();
+microtonal->Pmappingenabled=x;
+if (x==0) keymappinggroup->deactivate();
+ else keymappinggroup->activate();
+o->show();}
+          tooltip {Enable the Mapping (otherwise the mapping is linear)} xywh {198 150 48 21} box FLAT_BOX down_box DOWN_BOX labelfont 1
+          code0 {o->value(microtonal->Pmappingenabled);}
+          code1 {if (microtonal->Pmappingenabled==0) keymappinggroup->deactivate();}
+        }
+        Fl_Button {} {
+          label {Import .kbm file}
+          callback {const char *filename;
+filename=fl_file_chooser("Open:","(*.kbm)",NULL,0);
+if (filename==NULL) return;
+int result=microtonal->loadkbm(filename);
+if (result==0) {
+       updateMappingInput();
+       mappinginput->position(0);
+       mapsizeoutput->do_callback();
+       firstnotecounter->value(microtonal->Pfirstkey);
+       lastnotecounter->value(microtonal->Plastkey);
+       middlenotecounter->value(microtonal->Pmiddlenote);
+       mapsizeoutput->do_callback();
+       mappingenabledbutton->value(microtonal->Pmappingenabled);
+       mappingenabledbutton->do_callback();
+       afreqinput->value(microtonal->PAfreq);
+       anotecounter->value(microtonal->PAnote);
+       anotecounter->do_callback();
+     } else {
+	fl_alert("Error: Could not load the file.");   
+     };}
+          tooltip {Inport Scala .kbm file (keyboard mapping)} xywh {243 428 84 16} box THIN_UP_BOX labelfont 1 labelsize 10
+        }
+      }
+      Fl_Group {} {
+        xywh {108 2 140 45} box ENGRAVED_FRAME
+      } {
+        Fl_Counter anotecounter {
+          label {"A" Note}
+          callback {microtonal->PAnote=(int) o->value();
+if (microtonal->getnotefreq(microtonal->PAnote,0)<0.0) o->textcolor(FL_RED);
+ else o->textcolor(FL_BLACK);
+
+o->redraw();}
+          tooltip {The "A" note (the reference note for which freq. ("A" freq) is given)} xywh {173 17 65 20} labelfont 1 labelsize 10 align 129 minimum 0 maximum 127 step 1 value 69 textfont 1 textsize 11
+          code0 {o->lstep(12);}
+          code1 {o->value(microtonal->PAnote);}
+        }
+        Fl_Value_Input afreqinput {
+          label {"A" Freq.}
+          callback {microtonal->PAfreq=o->value();}
+          tooltip {The freq. of "A" note (default=440.0)} xywh {118 17 45 20} labelfont 1 labelsize 10 align 1 minimum 1 maximum 20000 step 0.001 value 440 textfont 1 textsize 11
+          code0 {o->value(microtonal->PAfreq);}
+        }
+      }
+      Fl_Button {} {
+        label Close
+        callback {microtonaluiwindow->hide();}
+        xywh {333 413 67 28} box THIN_UP_BOX
+      }
+      Fl_Check_Button {} {
+        label {Enable Microtonal}
+        callback {microtonal->Penabled=(int) o->value();
+if (microtonal->Penabled==0) microtonalgroup->deactivate();
+   else microtonalgroup->activate();}
+        xywh {3 3 102 45} box PLASTIC_UP_BOX down_box DOWN_BOX labelfont 1 labelsize 12 align 148
+        code0 {o->value(microtonal->Penabled);}
+      }
+    }
+  }
+  Function {updateTuningsInput()} {} {
+    code {char *tmpbuf=new char[100];
+
+tuningsinput->cut(0,tuningsinput->maximum_size());
+
+for (int i=0;i<microtonal->getoctavesize();i++){
+   if (i!=0) tuningsinput->insert("\\n");
+   microtonal->tuningtoline(i,tmpbuf,100);
+   tuningsinput->insert(tmpbuf);
+};
+
+delete(tmpbuf);} {}
+  }
+  Function {updateMappingInput()} {} {
+    code {char *tmpbuf=new char[100];
+
+mappinginput->cut(0,tuningsinput->maximum_size());
+
+for (int i=0;i<microtonal->Pmapsize;i++){
+   if (i!=0) mappinginput->insert("\\n");
+   if ((microtonal->Pmapping[i])==-1)
+        snprintf(tmpbuf,100,"x");
+   else snprintf(tmpbuf,100,"%d",microtonal->Pmapping[i]);
+   mappinginput->insert(tmpbuf);
+};
+
+delete(tmpbuf);} {}
+  }
+  Function {MicrotonalUI(Microtonal *microtonal_)} {} {
+    code {microtonal=microtonal_;
+
+make_window();} {}
+  }
+  Function {~MicrotonalUI()} {} {
+    code {microtonaluiwindow->hide();
+delete(microtonaluiwindow);} {}
+  }
+  Function {show()} {} {
+    code {microtonaluiwindow->show();} {}
+  }
+  Function {apply()} {} {
+    code {int err=microtonal->texttotunings(tuningsinput->value());
+if (err>=0) fl_alert("Parse Error: The input may contain only numbers (like 232.59)\\n or divisions (like 121/64).");
+if (err==-2) fl_alert("Parse Error: The input is empty.");
+octavesizeoutput->do_callback();
+
+microtonal->texttomapping(mappinginput->value());
+mapsizeoutput->do_callback();
+anotecounter->do_callback();
+
+//applybutton->color(FL_GRAY);} {}
+  }
+  decl {Microtonal *microtonal;} {}
+} 
diff --git a/muse_qt4_evolution/synti/zynaddsubfx/UI/OscilGenUI.fl b/muse_qt4_evolution/synti/zynaddsubfx/UI/OscilGenUI.fl
new file mode 100644
index 00000000..0bd394ec
--- /dev/null
+++ b/muse_qt4_evolution/synti/zynaddsubfx/UI/OscilGenUI.fl
@@ -0,0 +1,1131 @@
+# data file for the Fltk User Interface Designer (fluid)
+version 1.0106 
+header_name {.h} 
+code_name {.cc}
+decl {//Copyright (c) 2002-2005 Nasca Octavian Paul} {} 
+
+decl {//License: GNU GPL version 2} {} 
+
+decl {\#include "../Synth/OscilGen.h"} {public
+} 
+
+decl {\#include "../Misc/Util.h"} {public
+} 
+
+decl {\#include "../Misc/Master.h"} {public
+} 
+
+decl {\#include "ResonanceUI.h"} {public
+} 
+
+decl {\#include <FL/Fl_Box.H>} {public
+} 
+
+decl {\#include <FL/Fl_Group.H>} {public
+} 
+
+decl {\#include <FL/Fl_Slider.H>} {public
+} 
+
+decl {\#include <math.h>} {} 
+
+decl {\#include <stdio.h>} {} 
+
+decl {\#include <stdlib.h>} {} 
+
+decl {\#include <string.h>} {} 
+
+decl {\#include "WidgetPDial.h"} {public
+} 
+
+decl {\#include "EnvelopeUI.h"} {public
+} 
+
+decl {\#include "LFOUI.h"} {public
+} 
+
+decl {\#include "FilterUI.h"} {public
+} 
+
+decl {\#include "PresetsUI.h"} {public
+} 
+
+class OscilSpectrum {: {public Fl_Box}
+} {
+  Function {OscilSpectrum(int x,int y, int w, int h, const char *label=0):Fl_Box(x,y,w,h,label)} {} {
+    code {oscil=NULL;} {}
+  }
+  Function {init(OscilGen *oscil_,int oscbase_,Master *master_)} {} {
+    code {oscil=oscil_;
+oscbase=oscbase_;
+master=master_;} {}
+  }
+  Function {draw()} {} {
+    code {int ox=x(),oy=y(),lx=w(),ly=h(),i;
+const int maxdb=60;//must be multiple of 10
+int GX=2;
+int n=lx/GX-1;
+if (n>OSCIL_SIZE/2) n=OSCIL_SIZE/2;
+
+REALTYPE x;
+REALTYPE spc[n];
+for (i=0;i<n;i++) spc[i]=0.0;
+
+master->lock();
+if (oscbase==0) oscil->getspectrum(n,spc,0);
+    else oscil->getspectrum(n,spc,1);
+master->unlock();
+
+//normalize
+REALTYPE max=0;
+for (i=0;i<n;i++){
+   x=fabs(spc[i]);
+   if (max<x) max=x;
+}
+if (max<0.000001) max=1.0;
+max=max*1.05;
+
+//draw
+
+if (this->active_r()) fl_color(this->parent()->selection_color());
+    else fl_color(this->parent()->color());
+fl_line_style(FL_DOT);
+
+for (i=1;i<maxdb/10;i++){
+  int ky=(int)((REALTYPE)i*ly*10.0/maxdb)/2;
+  ky*=2;
+  fl_line(ox,oy+ky-1,ox+lx-2,oy+ky-1);
+};
+
+for (i=2;i<n;i++){
+    int tmp=i*GX-2;
+    if (i%10==1) fl_line_style(0);
+       else fl_line_style(FL_DOT);
+    fl_line(ox+tmp,oy+2,ox+tmp,oy+ly-2);
+}
+
+if (this->active_r()) fl_color(this->parent()->labelcolor());
+    else fl_color(this->parent()->color());
+fl_line_style(0);
+
+//draws the spectrum
+for (i=0;i<n;i++){
+   int tmp=i*GX+2;
+   x=spc[i]/max;
+   
+   if (x>dB2rap(-maxdb)) x=rap2dB(x)/maxdb+1;
+       else x=0;
+
+   int val=(int) ((ly-2)*x);
+   if (val>0) fl_line(ox+tmp,oy+ly-2-val,ox+tmp,oy+ly-2);
+};} {}
+  }
+  decl {OscilGen *oscil;} {}
+  decl {int oscbase;} {}
+  decl {Master *master;} {}
+} 
+
+class PSlider {: {public Fl_Slider}
+} {
+  Function {PSlider(int x,int y, int w, int h, const char *label=0):Fl_Slider(x,y,w,h,label)} {} {}
+  Function {handle(int event)} {return_type int
+  } {
+    code {int X=x(),Y=y(),W=w(),H=h();
+
+if ((!Fl::event_buttons())|| (event==0)||(Fl::event_shift()==0)) return(Fl_Slider::handle(event));
+
+if (!Fl::event_inside(X,Y,W,H)) {
+	if (event==FL_DRAG){
+		Fl_Slider::handle(FL_RELEASE);
+		Fl_Slider::handle(FL_LEAVE);
+		deactivate();
+		activate();
+		return(1);	
+	}else{
+		return(Fl_Slider::handle(event));
+	};
+} else {
+	//Fl_Slider::handle(FL_FOCUS);
+	Fl_Slider::handle(FL_PUSH);
+};
+
+return(1);} {}
+  }
+} 
+
+class Oscilloscope {: {public Fl_Box}
+} {
+  Function {Oscilloscope(int x,int y, int w, int h, const char *label=0):Fl_Box(x,y,w,h,label)} {} {
+    code {oscil=NULL;
+phase=64;
+oscbase=0;} {}
+  }
+  Function {init(OscilGen *oscil_,Master *master_)} {} {
+    code {oscil=oscil_;
+master=master_;} {}
+  }
+  Function {init(OscilGen *oscil_,int oscbase_,Master *master_)} {} {
+    code {oscil=oscil_;
+oscbase=oscbase_;
+master=master_;} {}
+  }
+  Function {init(OscilGen *oscil_,int oscbase_,int phase_,Master *master_)} {} {
+    code {oscil=oscil_;
+oscbase=oscbase_;
+phase=phase_;
+master=master_;} {}
+  }
+  Function {draw()} {} {
+    code {int ox=x(),oy=y(),lx=w(),ly=h()-1,i;
+REALTYPE smps[OSCIL_SIZE];
+master->lock();
+if (oscbase==0) oscil->get(smps,-1.0);
+    else oscil->getcurrentbasefunction(smps);
+master->unlock();
+
+if (damage()!=1){
+ fl_color(0,0,0);
+ fl_rectf(ox,oy,lx,ly);
+};
+
+//normalize
+REALTYPE max=0;
+for (i=0;i<OSCIL_SIZE;i++)
+   if (max<fabs(smps[i])) max=fabs(smps[i]);
+//fprintf(stderr,"%.4f\\n",max);
+if (max<0.00001) max=1.0;
+max=-max*1.05;
+
+//draw
+fl_line_style(FL_DASH);
+if (this->active_r()) fl_color(this->parent()->labelcolor());
+    else fl_color(this->parent()->color());
+int GX=16;if (lx<GX*3) GX=-1;
+for (i=1;i<GX;i++){
+   int tmp=(int)(lx/(REALTYPE)GX*i);
+   fl_line(ox+tmp,oy+2,ox+tmp,oy+ly-2);
+};
+int GY=8;if (ly<GY*3) GY=-1;
+for (i=1;i<GY;i++){
+   int tmp=(int)(ly/(REALTYPE)GY*i);
+   fl_line(ox+2,oy+tmp,ox+lx-2,oy+tmp);
+};
+
+//draw the function
+fl_line_style(0,1);
+fl_line(ox+2,oy+ly/2,ox+lx-2,oy+ly/2);
+if (this->active_r()) fl_color(this->parent()->selection_color());
+    else fl_color(this->parent()->labelcolor());
+int lw=1;
+//if ((lx<135)||(ly<135)) lw=1;
+fl_line_style(0,lw);
+int ph=(int)((phase-64.0)/128.0*OSCIL_SIZE+OSCIL_SIZE);
+for (i=1;i<lx;i++){
+   int k1=(int)((REALTYPE)OSCIL_SIZE*(i-1)/lx)+ph;
+   int k2=(int)((REALTYPE)OSCIL_SIZE*i/lx)+ph;
+   REALTYPE y1=smps[k1%OSCIL_SIZE]/max;
+   REALTYPE y2=smps[k2%OSCIL_SIZE]/max;
+   fl_line(i-1+ox,(int)(y1*ly/2.0)+oy+ly/2,i+ox,(int)(y2*ly/2.0)+oy+ly/2);
+};} {}
+  }
+  decl {OscilGen *oscil;} {}
+  decl {int oscbase;} {}
+  decl {int phase;} {public
+  }
+  decl {Master *master;} {}
+} 
+
+class Oscilharmonic {: {public Fl_Group}
+} {
+  Function {make_window()} {private
+  } {
+    Fl_Window harmonic {
+      private xywh {328 166 90 225} type Double hide
+      class Fl_Group
+    } {
+      Fl_Slider mag {
+        callback {int x=64;
+if (Fl::event_button3()) o->value(x);
+   else x=127-(int)o->value();
+if (x==64) o->selection_color(0);
+    else o->selection_color(222);
+
+master->lock();
+ oscil->Phmag[n]=x;
+ if (x==64) {
+    oscil->Phphase[n]=64;
+    phase->value(64);
+ };
+ oscil->prepare();
+master->unlock();
+
+display->redraw();
+oldosc->redraw();
+if (cbwidget!=NULL) {
+	cbwidget->do_callback();
+	applybutton->color(FL_RED);
+	applybutton->redraw();
+};}
+        xywh {0 15 15 115} type {Vert Knob} box FLAT_BOX selection_color 222 labelcolor 0 maximum 127 step 1 value 64
+        code0 {o->value(127-oscil->Phmag[n]);}
+        code1 {if (oscil->Phmag[n]==64) o->selection_color(0);}
+        class PSlider
+      }
+      Fl_Slider phase {
+        callback {int x=64;
+if (Fl::event_button3()) o->value(x);
+   else x=(int)o->value();
+
+master->lock();
+ oscil->Phphase[n]=x;
+ oscil->prepare();
+master->unlock();
+
+display->redraw();
+oldosc->redraw();
+if (cbwidget!=NULL) {
+	cbwidget->do_callback();
+	applybutton->color(FL_RED);
+	applybutton->redraw();
+};}
+        xywh {0 135 15 75} type {Vert Knob} box FLAT_BOX selection_color 222 maximum 127 step 1 value 64
+        code0 {o->value(oscil->Phphase[n]);}
+        class PSlider
+      }
+      Fl_Box {} {
+        xywh {15 70 5 5} box FLAT_BOX color 45
+      }
+      Fl_Box {} {
+        xywh {15 170 5 5} box FLAT_BOX color 45
+      }
+      Fl_Box {} {
+        label 01
+        xywh {0 210 20 15} labelfont 1 labelsize 9 align 20
+        code0 {char tmp[10];snprintf(tmp,10,"%d",n+1);o->label(strdup(tmp));}
+      }
+      Fl_Box {} {
+        label 01
+        xywh {0 0 20 15} labelfont 1 labelsize 9 align 20
+        code0 {char tmp[10];snprintf(tmp,10,"%d",n+1);o->label(strdup(tmp));}
+      }
+    }
+  }
+  Function {Oscilharmonic(int x,int y, int w, int h, const char *label=0):Fl_Group(x,y,w,h,label)} {} {
+    code {n=0;
+oscil=NULL;
+display=NULL;
+applybutton=NULL;
+cbwidget=NULL;} {}
+  }
+  Function {init(OscilGen *oscil_,int n_,Fl_Group *display_,Fl_Widget *oldosc_,Fl_Widget *cbwidget_,Fl_Widget *applybutton_, Master *master_)} {} {
+    code {oscil=oscil_;
+n=n_;
+display=display_;
+master=master_;
+oldosc=oldosc_;
+cbwidget=cbwidget_;
+applybutton=applybutton_;
+make_window();
+end();
+harmonic->show();} {}
+  }
+  Function {refresh()} {} {
+    code {mag->value(127-oscil->Phmag[n]);
+phase->value(oscil->Phphase[n]);
+
+if (oscil->Phmag[n]==64) mag->selection_color(0);
+    else mag->selection_color(222);} {}
+  }
+  Function {~Oscilharmonic()} {} {
+    code {harmonic->hide();
+//delete(harmonic);} {}
+  }
+  decl {OscilGen *oscil;} {}
+  decl {Fl_Group *display;} {}
+  decl {int n;} {}
+  decl {Fl_Widget *oldosc,*cbwidget,*applybutton;} {}
+  decl {Master *master;} {}
+} 
+
+class OscilEditor {: {public PresetsUI_}
+} {
+  Function {make_window()} {} {
+    Fl_Window osceditUI {
+      label {ADsynth Oscillator Editor}
+      xywh {131 90 735 595} type Double hide
+      code0 {if (oscil->ADvsPAD) o->label("PADsynth Harmonic Content Editor");}
+    } {
+      Fl_Button applybutton {
+        label Apply
+        callback {applybutton->color(FL_GRAY);
+applybutton->redraw();
+if (cbapplywidget!=NULL) {
+	cbapplywidget->do_callback();
+	cbapplywidget->color(FL_GRAY);
+	cbapplywidget->redraw();
+};} selected
+        xywh {300 280 60 20} box THIN_UP_BOX labelfont 1
+        code0 {if (!oscil->ADvsPAD) o->hide();}
+      }
+      Fl_Group oscildisplaygroup {
+        xywh {5 5 360 300} box ENGRAVED_FRAME
+      } {
+        Fl_Group {} {open
+          xywh {10 85 350 190} box THIN_DOWN_BOX color 32 selection_color 71 labelcolor 179
+          code0 {Oscilloscope *osc=new Oscilloscope(o->x(),o->y(),o->w(),o->h(),"");}
+          code1 {osc->init(oscil,master);}
+        } {}
+        Fl_Box {} {
+          label Oscillator
+          xywh {120 10 110 20} box FLAT_BOX labelfont 1
+        }
+        Fl_Value_Slider rndslider {
+          label rnd
+          callback {oscil->Prand=(int)o->value()+64;
+oscildisplaygroup->redraw();
+oldosc->redraw();}
+          tooltip {Oscilator Phase Randomness: smaller than 0 is "group", larger than 0 is for each harmonic} xywh {140 285 100 10} type {Horz Knob} box FLAT_BOX labelsize 10 align 5 minimum -64 maximum 63 step 1
+          code0 {if (oscil->ADvsPAD) o->hide();}
+        }
+        Fl_Group {} {open
+          xywh {10 30 350 50} box THIN_DOWN_BOX color 32 selection_color 218 labelcolor 63
+          code0 {OscilSpectrum *spc=new OscilSpectrum(o->x(),o->y(),o->w(),o->h(),"");}
+          code1 {spc->init(oscil,0,master);}
+        } {}
+        Fl_Group {} {
+          xywh {246 277 115 25} box ENGRAVED_BOX
+          code0 {if (oscil->ADvsPAD) o->hide();}
+        } {
+          Fl_Choice hrndtype {
+            label {H.rnd}
+            callback {oscil->Pamprandtype=(int) o->value();}
+            tooltip {Harmonic Amplitude Randomness} xywh {281 282 50 15} down_box BORDER_BOX labelsize 10 textsize 10
+          } {
+            menuitem {} {
+              label None
+              xywh {60 60 100 20} labelfont 1 labelsize 10
+            }
+            menuitem {} {
+              label Pow
+              xywh {70 70 100 20} labelfont 1 labelsize 10
+            }
+            menuitem {} {
+              label Sin
+              xywh {80 80 100 20} labelfont 1 labelsize 10
+            }
+          }
+          Fl_Dial hrnddial {
+            callback {oscil->Pamprandpower=(int) o->value();}
+            tooltip {Oscillator's spectrum adjust parameter} xywh {338 280 18 18} maximum 127 step 1
+            class WidgetPDial
+          }
+        }
+      }
+      Fl_Box {} {
+        label {Base Func.}
+        xywh {495 15 110 20} box FLAT_BOX labelfont 1
+      }
+      Fl_Group basefuncdisplaygroup {
+        xywh {365 5 360 300} box ENGRAVED_FRAME
+      } {
+        Fl_Group {} {
+          xywh {370 85 350 190} box THIN_DOWN_BOX color 32 selection_color 71 labelcolor 179
+          code0 {Oscilloscope *osc=new Oscilloscope(o->x(),o->y(),o->w(),o->h(),"");}
+          code1 {osc->init(oscil,1,master);}
+        } {}
+        Fl_Dial bfslider {
+          callback {oscil->Pbasefuncpar=(int)o->value()+64;
+basefuncdisplaygroup->redraw();
+bfparval->value(oscil->Pbasefuncpar-64);
+
+redrawoscil();}
+          tooltip {Base Function Parameter} xywh {520 280 20 20} minimum -64 maximum 63 step 1
+          class WidgetPDial
+        }
+        Fl_Choice bftype {
+          label {Base.F..}
+          callback {oscil->Pcurrentbasefunc=(int) o->value();
+
+basefuncdisplaygroup->redraw();
+redrawoscil();
+
+if ((oscil->Pcurrentbasefunc==0)||(oscil->Pcurrentbasefunc==127)) basefuncmodulation->deactivate();
+      else basefuncmodulation->activate();}
+          xywh {370 285 90 15} down_box BORDER_BOX labelsize 10 align 5 textsize 12
+        } {
+          menuitem {} {
+            label Sine
+            xywh {10 10 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label Triangle
+            xywh {20 20 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label Pulse
+            xywh {30 30 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label Saw
+            xywh {40 40 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label Power
+            xywh {50 50 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label Gauss
+            xywh {50 50 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label Diode
+            xywh {60 60 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label AbsSine
+            xywh {70 70 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label PulseSine
+            xywh {80 80 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label StrchSine
+            xywh {90 90 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label Chirp
+            xywh {100 100 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label AbsStrSine
+            xywh {102 102 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label Chebyshev
+            xywh {112 112 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label Sqr
+            xywh {122 122 100 20} labelfont 1 labelsize 12
+          }
+        }
+        Fl_Box {} {
+          label {Base Func.}
+          xywh {480 10 110 20} box FLAT_BOX labelfont 1
+        }
+        Fl_Group {} {open
+          xywh {370 30 350 50} box THIN_DOWN_BOX color 32 selection_color 218 labelcolor 63
+          code0 {OscilSpectrum *spc=new OscilSpectrum (o->x(),o->y(),o->w(),o->h(),"");}
+          code1 {spc->init(oscil,1,master);}
+        } {}
+        Fl_Value_Output bfparval {
+          label {Par.}
+          xywh {490 285 25 15} labelsize 13 minimum -63 maximum 63 step 1
+        }
+        Fl_Group basefuncmodulation {
+          xywh {550 276 169 25} box ENGRAVED_BOX
+          code0 {if ((oscil->Pcurrentbasefunc==0)||(oscil->Pcurrentbasefunc==127)) basefuncmodulation->deactivate();}
+        } {
+          Fl_Choice bfmodtype {
+            label {B.F.Mod.}
+            callback {oscil->Pbasefuncmodulation=(int) o->value();
+basefuncdisplaygroup->redraw();
+redrawoscil();}
+            tooltip {Base function modulation} xywh {599 281 50 15} down_box BORDER_BOX labelsize 10 textsize 10
+          } {
+            menuitem {} {
+              label None
+              xywh {50 50 100 20} labelfont 1 labelsize 10
+            }
+            menuitem {} {
+              label Rev
+              xywh {60 60 100 20} labelfont 1 labelsize 10
+            }
+            menuitem {} {
+              label Sine
+              xywh {70 70 100 20} labelfont 1 labelsize 10
+            }
+            menuitem {} {
+              label Pow
+              xywh {80 80 100 20} labelfont 1 labelsize 10
+            }
+          }
+          Fl_Dial bfmodpar1 {
+            callback {oscil->Pbasefuncmodulationpar1=(int)o->value();
+basefuncdisplaygroup->redraw();
+redrawoscil();}
+            tooltip {Oscillator's modulation parameter 1} xywh {659 281 15 15} maximum 127 step 1
+            class WidgetPDial
+          }
+          Fl_Dial bfmodpar2 {
+            callback {oscil->Pbasefuncmodulationpar2=(int)o->value();
+basefuncdisplaygroup->redraw();
+redrawoscil();}
+            tooltip {Oscillator's modulation parameter 2} xywh {679 281 15 15} maximum 127 step 1
+            class WidgetPDial
+          }
+          Fl_Dial bfmodpar3 {
+            callback {oscil->Pbasefuncmodulationpar3=(int)o->value();
+basefuncdisplaygroup->redraw();
+redrawoscil();}
+            tooltip {Oscillator's modulation parameter 3} xywh {699 281 15 15} maximum 127 step 1
+            class WidgetPDial
+          }
+        }
+      }
+      Fl_Choice magtype {
+        label {Mag.Type}
+        callback {oscil->Phmagtype=(int) o->value();
+basefuncdisplaygroup->redraw();
+
+redrawoscil();}
+        xywh {70 280 65 20} down_box BORDER_BOX labelsize 12 textsize 12
+      } {
+        menuitem {} {
+          label Linear
+          xywh {0 0 100 20} labelfont 1 labelsize 12
+        }
+        menuitem {} {
+          label {-40dB}
+          xywh {10 10 100 20} labelfont 1 labelsize 12
+        }
+        menuitem {} {
+          label {-60dB}
+          xywh {20 20 100 20} labelfont 1 labelsize 12
+        }
+        menuitem {} {
+          label {-80dB}
+          xywh {30 30 100 20} labelfont 1 labelsize 12
+        }
+        menuitem {} {
+          label {-100dB}
+          xywh {40 40 100 20} labelfont 1 labelsize 12
+        }
+      }
+      Fl_Button {} {
+        label {Use as base}
+        callback {oscil->useasbase();
+if (autoclearbutton->value()){
+   for (int i=0;i<MAX_AD_HARMONICS;i++){
+      h[i]->mag->value(64);
+      oscil->Phmag[i]=64;
+      h[i]->phase->value(64);
+      oscil->Phphase[i]=64;
+   };
+   oscil->Phmag[0]=127;
+
+   oscil->Pharmonicshift=0;
+   harmonicshiftcounter->value(0);
+
+   h[0]->mag->value(0);
+   wshbutton->value(0);
+   wshbutton->do_callback();
+   fltbutton->value(0);
+   fltbutton->do_callback();
+   sabutton->value(0);
+   sabutton->do_callback();
+};
+
+master->lock();
+ for (int i=0;i<MAX_AD_HARMONICS;i++){
+   if (oscil->Phmag[i]==64) h[i]->mag->selection_color(0);
+      else h[i]->mag->selection_color(222);
+ };
+ oscil->prepare();
+master->unlock();
+
+basefuncdisplaygroup->redraw();
+redrawoscil();}
+        tooltip {Use this Oscillator as base function} xywh {5 313 85 20} box THIN_UP_BOX labelfont 1 labelsize 12
+      }
+      Fl_Button {} {
+        label Close
+        callback {osceditUI->hide();}
+        xywh {668 565 62 25} box THIN_UP_BOX
+      }
+      Fl_Button {} {
+        label Clear
+        callback {if (!fl_ask("Clear the harmonics settings?")) return;
+
+for (int i=0;i<MAX_AD_HARMONICS;i++){
+    h[i]->mag->value(64);
+    oscil->Phmag[i]=64;
+    h[i]->phase->value(64);
+    oscil->Phphase[i]=64;
+};
+oscil->Phmag[0]=127;
+h[0]->mag->value(0);
+
+for (int i=0;i<MAX_AD_HARMONICS;i++){
+  if (oscil->Phmag[i]==64) h[i]->mag->selection_color(0);
+     else h[i]->mag->selection_color(222);
+};
+
+//harmonics->redraw();
+
+master->lock();
+ oscil->prepare();
+master->unlock();
+
+redrawoscil();}
+        xywh {670 505 55 15} box THIN_UP_BOX labelfont 1 labelsize 12
+      }
+      Fl_Group {} {
+        xywh {135 308 150 30} box ENGRAVED_BOX
+      } {
+        Fl_Choice wshbutton {
+          label {Wsh.}
+          callback {oscil->Pwaveshapingfunction=(int) o->value();
+basefuncdisplaygroup->redraw();
+redrawoscil();} open
+          tooltip {Waveshaping function} xywh {165 313 55 20} down_box BORDER_BOX labelsize 10 textsize 10
+        } {
+          menuitem {} {
+            label None
+            xywh {25 25 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label Atan
+            xywh {35 35 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label Asym1
+            xywh {45 45 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label Pow
+            xywh {55 55 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label Sine
+            xywh {65 65 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label Qnts
+            xywh {75 75 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label Zigzg
+            xywh {85 85 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label Lmt
+            xywh {95 95 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label LmtU
+            xywh {105 105 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label LmtL
+            xywh {115 115 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label ILmt
+            xywh {127 127 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label Clip
+            xywh {137 137 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label Asym2
+            xywh {85 85 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label Pow2
+            xywh {95 95 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label Sgm
+            xywh {90 90 100 20} labelfont 1 labelsize 10
+          }
+        }
+        Fl_Dial wshpar {
+          callback {oscil->Pwaveshaping=(int)o->value()+64;
+wsparval->value(oscil->Pwaveshaping-64);
+redrawoscil();}
+          tooltip {Waveshaping Parameter} xywh {260 313 20 20} minimum -64 maximum 63 step 1
+          class WidgetPDial
+        }
+        Fl_Value_Output wsparval {
+          xywh {228 316 25 15} labelsize 13 minimum -63 maximum 63 step 1
+        }
+      }
+      Fl_Light_Button autoclearbutton {
+        label {Clr.}
+        tooltip {Auto clear when using the oscillator as base function} xywh {95 313 35 20} box THIN_UP_BOX value 1 labelfont 1 labelsize 10
+      }
+      Fl_Group {} {
+        xywh {285 308 155 30} box ENGRAVED_BOX
+      } {
+        Fl_Choice fltbutton {
+          label Filter
+          callback {oscil->Pfiltertype=(int) o->value();
+
+redrawoscil();}
+          tooltip {Oscillator's filter type} xywh {315 313 50 20} down_box BORDER_BOX labelsize 10 textsize 10
+        } {
+          menuitem {} {
+            label None
+            xywh {35 35 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label LP1
+            xywh {45 45 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label HP1a
+            xywh {55 55 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label HP1b
+            xywh {65 65 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label BP1
+            xywh {75 75 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label BS1
+            xywh {85 85 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label LP2
+            xywh {55 55 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label HP2
+            xywh {65 65 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label BP2
+            xywh {65 65 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label BS2
+            xywh {75 75 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label Cos
+            xywh {75 75 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label Sin
+            xywh {85 85 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label LSh
+            xywh {95 95 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label S
+            xywh {105 105 100 20} labelfont 1 labelsize 10
+          }
+        }
+        Fl_Dial filtervalue1 {
+          callback {oscil->Pfilterpar1=(int)o->value();
+
+redrawoscil();}
+          tooltip {Oscillator's filter parameter1} xywh {367 313 20 20} maximum 127 step 1
+          class WidgetPDial
+        }
+        Fl_Check_Button filterpref {
+          label p
+          callback {oscil->Pfilterbeforews=(int)o->value();
+
+redrawoscil();}
+          tooltip {Apply the filter before the waveshaping} xywh {415 313 20 20} down_box DOWN_BOX labelsize 10 align 24
+        }
+        Fl_Dial filtervalue2 {
+          callback {oscil->Pfilterpar2=(int)o->value();
+
+redrawoscil();}
+          tooltip {Oscillator's filter parameter2} xywh {392 313 20 20} maximum 127 step 1
+          class WidgetPDial
+        }
+      }
+      Fl_Group {} {
+        xywh {590 308 135 30} box ENGRAVED_BOX
+      } {
+        Fl_Choice sabutton {
+          label {Sp.adj.}
+          callback {oscil->Psatype=(int) o->value();
+redrawoscil();}
+          tooltip {Oscillator's spectrum adjust} xywh {630 313 60 20} down_box BORDER_BOX labelsize 10 textsize 10
+        } {
+          menuitem {} {
+            label None
+            xywh {55 55 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label Pow
+            xywh {65 65 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label ThrsD
+            xywh {75 75 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label ThrsU
+            xywh {85 85 100 20} labelfont 1 labelsize 10
+          }
+        }
+        Fl_Dial sadjpar {
+          callback {oscil->Psapar=(int)o->value();
+redrawoscil();}
+          tooltip {Oscillator's spectrum adjust parameter} xywh {695 313 20 20} maximum 127 step 1
+          class WidgetPDial
+        }
+      }
+      Fl_Group {} {
+        xywh {665 340 65 65} box ENGRAVED_BOX
+      } {
+        Fl_Counter harmonicshiftcounter {
+          label {Harmonic Shift}
+          callback {oscil->Pharmonicshift=(int)o->value();
+redrawoscil();}
+          xywh {670 365 55 15} type Simple labelsize 10 align 129 minimum -64 maximum 64 step 1 textfont 1 textsize 10
+        }
+        Fl_Check_Button harmonicshiftpre {
+          label preH
+          callback {oscil->Pharmonicshiftfirst=(int)o->value();
+redrawoscil();}
+          tooltip {Apply the harmonic shift before the waveshaping and filtering} xywh {690 385 34 15} down_box DOWN_BOX labelsize 10 align 24
+        }
+        Fl_Button {} {
+          label R
+          callback {oscil->Pharmonicshift=0;
+harmonicshiftcounter->value(0);
+redrawoscil();}
+          xywh {670 385 20 15} box THIN_UP_BOX labelfont 1 labelsize 10
+        }
+      }
+      Fl_Group {} {
+        xywh {665 410 65 90} box ENGRAVED_FRAME
+      } {
+        Fl_Choice adhrtype {
+          label {Adpt.Harm.}
+          callback {oscil->Padaptiveharmonics=(int) o->value();
+redrawoscil();}
+          tooltip {The type of the addaptive harmonics} xywh {670 425 55 15} down_box BORDER_BOX labelsize 10 align 129 when 6 textsize 10
+        } {
+          menuitem {} {
+            label OFF
+            xywh {80 80 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label ON
+            xywh {90 90 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label Square
+            xywh {100 100 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label 2xSub
+            xywh {110 110 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label 2xAdd
+            xywh {120 120 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label 3xSub
+            xywh {120 120 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label 3xAdd
+            xywh {130 130 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label 4xSub
+            xywh {130 130 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label 4xAdd
+            xywh {140 140 100 20} labelfont 1 labelsize 10
+          }
+        }
+        Fl_Dial adhrpow {
+          label pow
+          callback {oscil->Padaptiveharmonicspower=(int)o->value();
+redrawoscil();}
+          tooltip {Adaptive harmonics power} xywh {700 460 25 25} labelsize 10 maximum 200 step 1
+          class WidgetPDial
+        }
+        Fl_Dial adhrbf {
+          label baseF
+          callback {oscil->Padaptiveharmonicsbasefreq=(int)o->value();
+redrawoscil();}
+          tooltip {Adaptive harmonics base frequency} xywh {670 460 25 25} labelsize 10 maximum 255 step 1
+          class WidgetPDial
+        }
+        Fl_Slider adhrpar {
+          callback {oscil->Padaptiveharmonicspar=(int)o->value();
+redrawoscil();}
+          xywh {670 445 55 10} type {Horz Knob} box FLAT_BOX maximum 100 step 1 value 50
+        }
+      }
+      Fl_Group {} {
+        xywh {440 308 150 30} box ENGRAVED_BOX
+      } {
+        Fl_Choice modtype {
+          label {Mod.}
+          callback {oscil->Pmodulation=(int) o->value();
+
+redrawoscil();}
+          tooltip modulation xywh {470 315 50 15} down_box BORDER_BOX labelsize 10 textsize 10
+        } {
+          menuitem {} {
+            label None
+            xywh {60 60 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label Rev
+            xywh {70 70 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label Sine
+            xywh {80 80 100 20} labelfont 1 labelsize 10
+          }
+          menuitem {} {
+            label Pow
+            xywh {90 90 100 20} labelfont 1 labelsize 10
+          }
+        }
+        Fl_Dial modpar1 {
+          callback {oscil->Pmodulationpar1=(int)o->value();
+
+redrawoscil();}
+          tooltip {Oscillator's modulation parameter 1} xywh {530 315 15 15} maximum 127 step 1
+          class WidgetPDial
+        }
+        Fl_Dial modpar2 {
+          callback {oscil->Pmodulationpar2=(int)o->value();
+
+redrawoscil();}
+          tooltip {Oscillator's modulation parameter 2} xywh {550 315 15 15} maximum 127 step 1
+          class WidgetPDial
+        }
+        Fl_Dial modpar3 {
+          callback {oscil->Pmodulationpar3=(int)o->value();
+redrawoscil();}
+          tooltip {Oscillator's modulation parameter 3} xywh {570 315 15 15} maximum 127 step 1
+          class WidgetPDial
+        }
+      }
+      Fl_Button {} {
+        label Sine
+        callback {if (!fl_ask("Convert to SINE?")) return;
+
+master->lock();
+ oscil->convert2sine(0);
+master->unlock();
+
+redrawoscil();
+refresh();}
+        xywh {670 525 55 15} box THIN_UP_BOX labelfont 1 labelsize 12
+      }
+      Fl_Button {} {
+        label C
+        callback {presetsui->copy(oscil);}
+        xywh {670 545 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
+      }
+      Fl_Button {} {
+        label P
+        callback {presetsui->paste(oscil,this);}
+        xywh {700 545 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
+      }
+      Fl_Scroll _this_has_to_be_the_last {
+        xywh {5 340 660 250} type HORIZONTAL box ENGRAVED_BOX
+      } {
+        Fl_Pack harmonics {open
+          xywh {10 345 650 225} type HORIZONTAL
+          code0 {for (int i=0;i<MAX_AD_HARMONICS;i++){h[i]=new Oscilharmonic(0,0,20,o->h(),"");h[i]->init(oscil,i,oscildisplaygroup,oldosc,cbwidget,applybutton,master);}}
+        } {}
+      }
+    }
+  }
+  Function {OscilEditor(OscilGen *oscil_,Fl_Widget *oldosc_,Fl_Widget *cbwidget_,Fl_Widget *cbapplywidget_,Master *master_)} {} {
+    code {oscil=oscil_;
+oldosc=oldosc_;
+cbwidget=cbwidget_;
+cbapplywidget=cbapplywidget_;
+master=master_;
+
+make_window();
+
+refresh();
+osceditUI->show();} {}
+  }
+  Function {~OscilEditor()} {} {
+    code {osceditUI->hide();
+//for (int i=0;i<MAX_AD_HARMONICS;i++) delete (h[i]);
+delete (osceditUI);} {}
+  }
+  Function {refresh()} {} {
+    code {magtype->value(oscil->Phmagtype);
+rndslider->value(oscil->Prand-64);
+
+hrndtype->value(oscil->Pamprandtype);
+hrnddial->value(oscil->Pamprandpower);
+
+bftype->value(oscil->Pcurrentbasefunc);
+bfparval->value(oscil->Pbasefuncpar-64);
+bfslider->value(oscil->Pbasefuncpar-64);
+
+bfmodtype->value(oscil->Pbasefuncmodulation);
+bfmodpar1->value(oscil->Pbasefuncmodulationpar1);
+bfmodpar2->value(oscil->Pbasefuncmodulationpar2);
+bfmodpar3->value(oscil->Pbasefuncmodulationpar3);
+
+wshbutton->value(oscil->Pwaveshapingfunction);
+wsparval->value(oscil->Pwaveshaping-64);
+wshpar->value(oscil->Pwaveshaping-64);
+
+fltbutton->value(oscil->Pfiltertype);
+filtervalue1->value(oscil->Pfilterpar1);
+filtervalue2->value(oscil->Pfilterpar2);
+filterpref->value(oscil->Pfilterbeforews);
+
+modtype->value(oscil->Pmodulation);
+modpar1->value(oscil->Pmodulationpar1);
+modpar2->value(oscil->Pmodulationpar2);
+modpar3->value(oscil->Pmodulationpar3);
+
+sabutton->value(oscil->Psatype);
+sadjpar->value(oscil->Psapar);
+
+harmonicshiftcounter->value(oscil->Pharmonicshift);
+harmonicshiftpre->value(oscil->Pharmonicshiftfirst);
+
+adhrtype->value(oscil->Padaptiveharmonics);
+adhrbf->value(oscil->Padaptiveharmonicsbasefreq);
+adhrpow->value(oscil->Padaptiveharmonicspower);
+adhrtype->value(oscil->Padaptiveharmonicspar);
+
+for (int i=0;i<MAX_AD_HARMONICS;i++) h[i]->refresh();
+
+master->lock();
+ oscil->prepare();
+master->unlock();
+
+basefuncdisplaygroup->redraw();
+redrawoscil();} {}
+  }
+  Function {redrawoscil()} {} {
+    code {oscildisplaygroup->redraw();
+oldosc->redraw();
+if (cbwidget!=NULL) {
+      cbwidget->do_callback();
+      applybutton->color(FL_RED);
+      applybutton->redraw();
+};} {}
+  }
+  decl {OscilGen *oscil;} {}
+  decl {Fl_Widget *oldosc,*cbwidget,*cbapplywidget;} {}
+  decl {Oscilharmonic *h[MAX_AD_HARMONICS];} {}
+  decl {Master *master;} {}
+} 
diff --git a/muse_qt4_evolution/synti/zynaddsubfx/UI/PADnoteUI.fl b/muse_qt4_evolution/synti/zynaddsubfx/UI/PADnoteUI.fl
new file mode 100644
index 00000000..45c1f9a8
--- /dev/null
+++ b/muse_qt4_evolution/synti/zynaddsubfx/UI/PADnoteUI.fl
@@ -0,0 +1,1086 @@
+# data file for the Fltk User Interface Designer (fluid)
+version 1.0106 
+header_name {.h} 
+code_name {.cc}
+decl {\#include "../Params/PADnoteParameters.h"} {public
+} 
+
+decl {\#include "../Misc/Util.h"} {public
+} 
+
+decl {\#include "../Misc/Master.h"} {public
+} 
+
+decl {\#include "ResonanceUI.h"} {public
+} 
+
+decl {\#include <FL/Fl_Box.H>} {public
+} 
+
+decl {\#include <FL/Fl_Group.H>} {public
+} 
+
+decl {\#include <math.h>} {} 
+
+decl {\#include <stdio.h>} {} 
+
+decl {\#include <stdlib.h>} {} 
+
+decl {\#include <string.h>} {} 
+
+decl {\#include "WidgetPDial.h"} {public
+} 
+
+decl {\#include "EnvelopeUI.h"} {public
+} 
+
+decl {\#include "LFOUI.h"} {public
+} 
+
+decl {\#include "FilterUI.h"} {public
+} 
+
+decl {\#include "OscilGenUI.h"} {public
+} 
+
+decl {\#include "PresetsUI.h"} {public
+} 
+
+class PADnoteHarmonicProfile {: {public Fl_Box}
+} {
+  Function {PADnoteHarmonicProfile(int x,int y, int w, int h, const char *label=0):Fl_Box(x,y,w,h,label)} {} {
+    code {pars=NULL;} {}
+  }
+  Function {init(PADnoteParameters *pars,Master *master_)} {} {
+    code {master=master_;
+this->pars=pars;} {}
+  }
+  Function {draw()} {} {
+    code {int ox=x(),oy=y(),lx=w(),ly=h();
+if (!visible()) return;
+REALTYPE smps[lx];
+
+REALTYPE realbw=pars->getprofile(smps,lx);
+bool active=active_r();
+
+//draw the equivalent bandwidth
+if (active) fl_color(220,220,220);
+ else fl_color(160,165,165);
+fl_line_style(0);
+int rbw=(int)(realbw*(lx-1.0)/2.0);
+for (int i=lx/2-rbw;i<(lx/2+rbw);i++) fl_line(ox+i,oy,ox+i,oy+ly-1);
+
+fl_line_style(0);
+if (active) fl_color(200,200,200);
+ else  fl_color(160,160,160);
+for (int i=1;i<10;i++){
+	int kx=(int)(lx/10.0*i);
+	fl_line(ox+kx,oy,ox+kx,oy+ly-1);
+};
+for (int i=1;i<5;i++){
+	int ky=(int)(ly/5.0*i);
+	fl_line(ox,oy+ly-ky,ox+lx,oy+ly-ky-1);
+};
+
+
+fl_color(120,120,120);
+fl_line_style(FL_DOT);
+fl_line(ox+lx/2,oy,ox+lx/2,oy+ly);
+
+//draw the graph
+fl_line_style(0);
+int old=0;
+for (int i=0;i<lx;i++){
+   int val=(int) ((ly-2)*smps[i]);
+   if (active) fl_color(180,210,240);
+      else fl_color(150,150,155);
+   fl_line(ox+i,oy+ly-1,ox+i,oy+ly-1-val);
+   if (active) fl_color(0,0,100);
+       else fl_color(150,150,150);
+   if (i>0) fl_line(ox+i-1,oy+ly-2-old,ox+i,oy+ly-2-val);
+   old=val;   
+};
+
+
+fl_line_style(FL_DASH);
+if (active) fl_color(0,100,220);
+    else fl_color(150,160,170);
+fl_line(ox+lx/2-rbw,oy,ox+lx/2-rbw,oy+ly-1);
+fl_line(ox+lx/2+rbw,oy,ox+lx/2+rbw,oy+ly-1);
+
+fl_line_style(0);} {}
+  }
+  decl {Master *master;} {}
+  decl {PADnoteParameters *pars;} {public
+  }
+} 
+
+class PADnoteOvertonePosition {: {public Fl_Box}
+} {
+  Function {PADnoteOvertonePosition(int x,int y, int w, int h, const char *label=0):Fl_Box(x,y,w,h,label)} {} {
+    code {pars=NULL;} {}
+  }
+  Function {init(PADnoteParameters *pars,Master *master_)} {} {
+    code {master=master_;
+this->pars=pars;} {}
+  }
+  Function {draw()} {} {
+    code {if (!visible()) return;
+const int maxdb=60;
+
+int ox=x(),oy=y(),lx=w(),ly=h();
+const int maxharmonic=64;
+
+
+for (int i=1;i<maxharmonic;i++){
+	fl_color(200,200,200);
+	fl_line_style(FL_DOT);
+	if (i%5==0) fl_line_style(0);
+	if (i%10==0) fl_color(160,160,160);
+	int kx=(int)(lx/(REALTYPE)maxharmonic*i);
+	fl_line(ox+kx,oy,ox+kx,oy+ly);
+};
+
+
+
+int n=OSCIL_SIZE/2;
+REALTYPE spc[n];
+for (int i=0;i<n;i++) spc[i]=0.0;
+
+master->busy=true;
+pars->oscilgen->getspectrum(n,spc,0);
+master->busy=false;
+
+
+//normalize
+REALTYPE max=0;
+for (int i=0;i<n;i++){
+   REALTYPE x=fabs(spc[i]);
+   if (max<x) max=x;
+}
+if (max<0.000001) max=1.0;
+max=max*1.05;
+
+REALTYPE spectrum[lx];
+for (int i=0;i<lx;i++) spectrum[i]=0;
+
+
+for (int i=1;i<n;i++){
+	REALTYPE nhr=pars->getNhr(i);
+	int kx=(int)(lx/(REALTYPE)maxharmonic*nhr);
+	if ((kx<0)||(kx>lx)) continue;
+
+        spectrum[kx]=spc[i-1]/max+1e-9;
+
+};
+
+fl_color(180,0,0);
+fl_line_style(0);
+
+if (pars->Pmode==2){
+   int old=0;
+   for (int i=1;i<lx;i++){
+	if ((spectrum[i]>1e-10)||(i==(lx-1))){
+		int delta=i-old;
+		REALTYPE val1=spectrum[old];
+		REALTYPE val2=spectrum[i];
+
+		REALTYPE idelta=1.0/delta;
+		for (int j=0;j<delta;j++){
+			REALTYPE x=idelta*j;
+			spectrum[old+j]=val1*(1.0-x)+val2*x;
+		};
+		old=i;
+	};
+      
+   };
+};
+
+for (int i=0;i<lx;i++){
+	REALTYPE x=spectrum[i];
+        if (x>dB2rap(-maxdb)) x=rap2dB(x)/maxdb+1;
+             else continue;
+       	int yy=(int)(x*ly);
+	fl_line(ox+i,oy+ly-1-yy,ox+i,oy+ly-1);
+      
+};} {}
+  }
+  decl {Master *master;} {}
+  decl {PADnoteParameters *pars;} {public
+  }
+} 
+
+class PADnoteUI {open : {public PresetsUI_}
+} {
+  Function {PADnoteUI(PADnoteParameters *parameters,Master *master_)} {open
+  } {
+    code {pars=parameters;
+master=master_;
+oscui=NULL;
+resui=new ResonanceUI(pars->resonance);
+make_window();} {}
+  }
+  Function {make_window()} {open
+  } {
+    Fl_Window padnotewindow {
+      label {PAD synth Parameters} selected
+      xywh {76 165 535 450} type Double hide
+    } {
+      Fl_Tabs {} {
+        callback {if (o->value()!=harmonicstructuregroup) applybutton->hide();
+	else applybutton->show();}
+        xywh {0 0 535 395}
+      } {
+        Fl_Group harmonicstructuregroup {
+          label {Harmonic Structure}
+          xywh {0 20 535 375} box ENGRAVED_BOX
+        } {
+          Fl_Group bwprofilegroup {
+            xywh {5 30 90 260} box ENGRAVED_BOX
+            code0 {if (pars->Pmode!=0) o->deactivate();}
+          } {
+            Fl_Dial hpbasepar1 {
+              label Width
+              callback {pars->Php.base.par1=(int) o->value();
+hprofile->redraw();
+cbwidget->do_callback();}
+              xywh {20 75 25 25} box ROUND_UP_BOX labelsize 11 align 1 maximum 127 step 1
+              code0 {o->value(pars->Php.base.par1);}
+              class WidgetPDial
+            }
+            Fl_Choice hpbasetype {
+              label {Base Type}
+              callback {pars->Php.base.type=o->value();
+hprofile->redraw();
+cbwidget->do_callback();}
+              xywh {15 45 75 15} down_box BORDER_BOX labelsize 10 align 5 textsize 10
+              code0 {o->value(pars->Php.base.type);}
+            } {
+              menuitem {} {
+                label Gauss
+                xywh {15 15 100 20} labelfont 1 labelsize 10
+              }
+              menuitem {} {
+                label Square
+                xywh {25 25 100 20} labelfont 1 labelsize 10
+              }
+              menuitem {} {
+                label DoubleExp
+                xywh {35 35 100 20} labelfont 1 labelsize 10
+              }
+            }
+            Fl_Dial hpfreqmult {
+              label FreqMlt
+              callback {pars->Php.freqmult=(int) o->value();
+hprofile->redraw();
+cbwidget->do_callback();}
+              xywh {55 75 25 25} box ROUND_UP_BOX labelsize 11 align 1 maximum 127 step 1
+              code0 {o->value(pars->Php.freqmult);}
+              class WidgetPDial
+            }
+            Fl_Dial hpmpar1 {
+              label Str
+              callback {pars->Php.modulator.par1=(int) o->value();
+hprofile->redraw();
+cbwidget->do_callback();}
+              xywh {15 115 20 20} box ROUND_UP_BOX labelsize 11 align 1 maximum 127 step 1
+              code0 {o->value(pars->Php.modulator.par1);}
+              class WidgetPDial
+            }
+            Fl_Dial hpmfreq {
+              label SFreq
+              callback {pars->Php.modulator.freq=(int) o->value();
+hprofile->redraw();
+cbwidget->do_callback();}
+              xywh {40 115 20 20} box ROUND_UP_BOX labelsize 11 align 1 maximum 127 step 1
+              code0 {o->value(pars->Php.modulator.freq);}
+              class WidgetPDial
+            }
+            Fl_Group {} {
+              xywh {10 160 80 105} box BORDER_BOX
+            } {
+              Fl_Choice hpamptype {
+                label AmpMultiplier
+                callback {pars->Php.amp.type=o->value();
+hprofile->redraw();
+cbwidget->do_callback();}
+                xywh {15 175 70 15} down_box BORDER_BOX labelsize 10 align 5 textsize 10
+                code0 {o->value(pars->Php.amp.type);}
+              } {
+                menuitem {} {
+                  label OFF
+                  xywh {45 45 100 20} labelfont 1 labelsize 10
+                }
+                menuitem {} {
+                  label Gauss
+                  xywh {55 55 100 20} labelfont 1 labelsize 10
+                }
+                menuitem {} {
+                  label Sine
+                  xywh {65 65 100 20} labelfont 1 labelsize 10
+                }
+                menuitem {} {
+                  label Flat
+                  xywh {75 75 100 20} labelfont 1 labelsize 10
+                }
+              }
+              Fl_Choice hpampmode {
+                label AmpMode
+                callback {pars->Php.amp.mode=o->value();
+hprofile->redraw();
+cbwidget->do_callback();}
+                xywh {15 205 70 15} down_box BORDER_BOX labelsize 10 align 5 textsize 10
+                code0 {o->value(pars->Php.amp.mode);}
+              } {
+                menuitem {} {
+                  label Sum
+                  xywh {60 60 100 20} labelfont 1 labelsize 10
+                }
+                menuitem {} {
+                  label Mult
+                  xywh {70 70 100 20} labelfont 1 labelsize 10
+                }
+                menuitem {} {
+                  label Div1
+                  xywh {80 80 100 20} labelfont 1 labelsize 10
+                }
+                menuitem {} {
+                  label Div2
+                  xywh {90 90 100 20} labelfont 1 labelsize 10
+                }
+              }
+              Fl_Dial hpamppar1 {
+                label Par1
+                callback {pars->Php.amp.par1=(int) o->value();
+hprofile->redraw();
+cbwidget->do_callback();}
+                xywh {15 235 25 25} box ROUND_UP_BOX labelsize 11 align 1 maximum 127 step 1
+                code0 {o->value(pars->Php.amp.par1);}
+                class WidgetPDial
+              }
+              Fl_Dial hpamppar2 {
+                label Par2
+                callback {pars->Php.amp.par2=(int) o->value();
+hprofile->redraw();
+cbwidget->do_callback();}
+                xywh {55 235 25 25} box ROUND_UP_BOX labelsize 11 align 1 maximum 127 step 1
+                code0 {o->value(pars->Php.amp.par2);}
+                class WidgetPDial
+              }
+            }
+            Fl_Check_Button hpautoscale {
+              label autoscale
+              callback {pars->Php.autoscale=(int) o->value();
+hprofile->redraw();
+cbwidget->do_callback();}
+              xywh {10 270 60 15} down_box DOWN_BOX labelsize 10
+              code0 {o->value(pars->Php.autoscale);}
+            }
+            Fl_Choice hponehalf {
+              callback {pars->Php.onehalf=o->value();
+hprofile->redraw();
+cbwidget->do_callback();}
+              xywh {10 143 80 15} down_box BORDER_BOX labelsize 10 align 5 textsize 10
+              code0 {o->value(pars->Php.onehalf);}
+            } {
+              menuitem {} {
+                label Full
+                xywh {25 25 100 20} labelfont 1 labelsize 10
+              }
+              menuitem {} {
+                label {Upper Half}
+                xywh {45 45 100 20} labelfont 1 labelsize 10
+              }
+              menuitem {} {
+                label {Lower Half}
+                xywh {35 35 100 20} labelfont 1 labelsize 10
+              }
+            }
+            Fl_Dial hpwidth {
+              label Size
+              callback {pars->Php.width=(int) o->value();
+hprofile->redraw();
+cbwidget->do_callback();}
+              xywh {65 115 20 20} box ROUND_UP_BOX labelsize 11 align 1 maximum 127 step 1
+              code0 {o->value(pars->Php.width);}
+              class WidgetPDial
+            }
+          }
+          Fl_Group {} {
+            xywh {100 155 270 135} box THIN_DOWN_BOX color 32 selection_color 71 labelcolor 179 align 6
+            code0 {osc=new Oscilloscope(o->x(),o->y(),o->w(),o->h(),"");}
+            code1 {osc->init(pars->oscilgen,master);}
+          } {}
+          Fl_Button {} {
+            label Change
+            callback {if (oscui!=NULL) delete (oscui);
+oscui=new OscilEditor(pars->oscilgen,osc,cbwidget,applybutton,master);}
+            xywh {375 270 60 20} box THIN_UP_BOX labelfont 1 labelsize 12
+          }
+          Fl_Box cbwidget {
+            label {Harmonic Content}
+            callback {overtonepos->redraw();
+applybutton->color(FL_RED);
+applybutton->redraw();}
+            xywh {125 135 205 20} align 16
+          }
+          Fl_Button {} {
+            label Resonance
+            callback {resui->resonancewindow->redraw();
+resui->resonancewindow->show();
+resui->setcbwidget(cbwidget,applybutton);}
+            xywh {375 225 80 20} box THIN_UP_BOX
+          }
+          Fl_Dial bwdial {
+            label BandWidth
+            callback {bwcents->value(pars->setPbandwidth((int) o->value()));
+cbwidget->do_callback();}
+            xywh {15 295 35 35} box ROUND_UP_BOX labelsize 11 maximum 1000 step 1
+            code0 {o->value(pars->Pbandwidth);}
+            code1 {if (pars->Pmode!=0) o->deactivate();}
+            class WidgetPDial
+          }
+          Fl_Value_Output bwcents {
+            label cents
+            xywh {55 305 55 15} labelsize 10 align 6 maximum 10000 step 0.1
+            code0 {o->value(pars->setPbandwidth(pars->Pbandwidth));}
+            code1 {if (pars->Pmode!=0) o->deactivate();}
+          }
+          Fl_Group {} {
+            xywh {315 295 215 45} box ENGRAVED_BOX
+          } {
+            Fl_Choice hrpostype {
+              label OvertonesPosition
+              callback {pars->Phrpos.type=o->value();
+overtonepos->redraw();
+cbwidget->do_callback();}
+              xywh {325 310 80 20} down_box BORDER_BOX labelsize 10 align 5 textsize 12
+              code0 {o->value(pars->Phrpos.type);}
+            } {
+              menuitem {} {
+                label Harmonic
+                xywh {70 70 100 20} labelfont 1 labelsize 12
+              }
+              menuitem {} {
+                label ShiftU
+                xywh {80 80 100 20} labelfont 1 labelsize 12
+              }
+              menuitem {} {
+                label ShiftL
+                xywh {90 90 100 20} labelfont 1 labelsize 12
+              }
+              menuitem {} {
+                label PowerU
+                xywh {90 90 100 20} labelfont 1 labelsize 12
+              }
+              menuitem {} {
+                label PowerL
+                xywh {100 100 100 20} labelfont 1 labelsize 12
+              }
+              menuitem {} {
+                label Sine
+                xywh {110 110 100 20} labelfont 1 labelsize 12
+              }
+              menuitem {} {
+                label Power
+                xywh {120 120 100 20} labelfont 1 labelsize 12
+              }
+            }
+            Fl_Dial hrpospar1 {
+              label Par1
+              callback {pars->Phrpos.par1=(int) o->value();
+overtonepos->redraw();
+cbwidget->do_callback();}
+              xywh {425 310 25 25} box ROUND_UP_BOX labelsize 11 align 1 maximum 255 step 1
+              code0 {o->value(pars->Phrpos.par1);}
+              class WidgetPDial
+            }
+            Fl_Dial hrpospar2 {
+              label Par2
+              callback {pars->Phrpos.par2=(int) o->value();
+overtonepos->redraw();
+cbwidget->do_callback();}
+              xywh {460 310 25 25} box ROUND_UP_BOX labelsize 11 align 1 maximum 255 step 1
+              code0 {o->value(pars->Phrpos.par2);}
+              class WidgetPDial
+            }
+            Fl_Dial hrpospar3 {
+              label ForceH
+              callback {pars->Phrpos.par3=(int) o->value();
+overtonepos->redraw();
+cbwidget->do_callback();}
+              xywh {495 310 25 25} box ROUND_UP_BOX labelsize 11 align 1 maximum 255 step 1
+              code0 {o->value(pars->Phrpos.par3);}
+              class WidgetPDial
+            }
+          }
+          Fl_Choice bwscale {
+            label {Bandwidth Scale}
+            callback {pars->Pbwscale=(int) o->value();
+cbwidget->do_callback();}
+            xywh {120 305 80 20} down_box BORDER_BOX labelsize 10 align 5 textsize 12
+            code0 {o->value(pars->Pbwscale);}
+            code1 {if (pars->Pmode!=0) o->deactivate();}
+          } {
+            menuitem {} {
+              label Normal
+              xywh {95 95 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label EqualHz
+              xywh {105 105 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label Quater
+              xywh {115 115 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label Half
+              xywh {125 125 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label {75%}
+              xywh {135 135 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label {150%}
+              xywh {145 145 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label Double
+              xywh {145 145 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label {Inv.Half}
+              xywh {155 155 100 20} labelfont 1 labelsize 12
+            }
+          }
+          Fl_Group overtonepos {
+            xywh {5 345 525 45} box FLAT_BOX color 54 selection_color 218 labelcolor 63
+            code0 {PADnoteOvertonePosition *opui=new PADnoteOvertonePosition(o->x(),o->y(),o->w(),o->h(),"");}
+            code1 {opui->init(pars,master);}
+          } {}
+          Fl_Choice qsamplesize {
+            label {Sample Size}
+            callback {pars->Pquality.samplesize=(int) o->value();
+cbwidget->do_callback();}
+            xywh {375 190 115 20} down_box BORDER_BOX labelsize 10 align 5 textsize 12
+            code0 {o->value(pars->Pquality.samplesize);}
+          } {
+            menuitem {} {
+              label {16k (Tiny)}
+              xywh {155 155 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label 32k
+              xywh {165 165 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label {64k (Small)}
+              xywh {175 175 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label 128k
+              xywh {185 185 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label {256k (Normal)}
+              xywh {205 205 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label 512k
+              xywh {200 200 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label {1M (Big)}
+              xywh {205 205 100 20} labelfont 1 labelsize 12
+            }
+          }
+          Fl_Choice qsmpoct {
+            label {smp/oct}
+            callback {pars->Pquality.smpoct=(int) o->value();
+cbwidget->do_callback();}
+            xywh {430 155 45 20} down_box BORDER_BOX labelsize 12 align 5 textsize 12
+            code0 {o->value(pars->Pquality.smpoct);}
+          } {
+            menuitem {} {
+              label {0.5}
+              xywh {10 10 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label 1
+              xywh {0 0 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label 2
+              xywh {10 10 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label 3
+              xywh {20 20 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label 4
+              xywh {30 30 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label 6
+              xywh {40 40 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label 12
+              xywh {50 50 100 20} labelfont 1 labelsize 12
+            }
+          }
+          Fl_Choice qoct {
+            label {no.oct}
+            callback {pars->Pquality.oct=(int) o->value();
+cbwidget->do_callback();}
+            xywh {480 155 45 20} down_box BORDER_BOX labelsize 12 align 5 textsize 12
+            code0 {o->value(pars->Pquality.oct);}
+          } {
+            menuitem {} {
+              label 1
+              xywh {10 10 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label 2
+              xywh {20 20 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label 3
+              xywh {30 30 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label 4
+              xywh {40 40 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label 5
+              xywh {50 50 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label 6
+              xywh {60 60 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label 7
+              xywh {70 70 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label 8
+              xywh {80 80 100 20} labelfont 1 labelsize 12
+            }
+          }
+          Fl_Choice qbasenote {
+            label base
+            callback {pars->Pquality.basenote=(int) o->value();
+cbwidget->do_callback();}
+            xywh {375 155 50 20} down_box BORDER_BOX labelsize 12 align 5 textsize 12
+            code0 {o->value(pars->Pquality.basenote);}
+          } {
+            menuitem {} {
+              label {C-2}
+              xywh {10 10 100 20} labelfont 1
+            }
+            menuitem {} {
+              label {G-2}
+              xywh {20 20 100 20} labelfont 1
+            }
+            menuitem {} {
+              label {C-3}
+              xywh {20 20 100 20} labelfont 1
+            }
+            menuitem {} {
+              label {G-3}
+              xywh {30 30 100 20} labelfont 1
+            }
+            menuitem {} {
+              label {C-4}
+              xywh {30 30 100 20} labelfont 1
+            }
+            menuitem {} {
+              label {G-4}
+              xywh {40 40 100 20} labelfont 1
+            }
+            menuitem {} {
+              label {C-5}
+              xywh {40 40 100 20} labelfont 1
+            }
+            menuitem {} {
+              label {G-5}
+              xywh {50 50 100 20} labelfont 1
+            }
+            menuitem {} {
+              label {G-6}
+              xywh {60 60 100 20} labelfont 1
+            }
+          }
+          Fl_Group hprofile {
+            xywh {100 45 430 90} box FLAT_BOX color 54 selection_color 218 labelcolor 63
+            code0 {PADnoteHarmonicProfile *hpui=new PADnoteHarmonicProfile(o->x(),o->y(),o->w(),o->h(),"");}
+            code1 {hpui->init(pars,master);}
+            code2 {if (pars->Pmode!=0) { o->deactivate(); o->color(48);};}
+          } {}
+          Fl_Box {} {
+            label {Profile of One Harmonic (Frequency Distribution)}
+            xywh {160 25 315 20}
+          }
+          Fl_Choice spectrummode {
+            label {Spectrum Mode}
+            callback {pars->Pmode=(int) o->value();
+
+if (pars->Pmode==0){
+   bwprofilegroup->activate();
+   bwdial->activate();
+   bwcents->activate();
+   hprofile->activate();
+   hprofile->color(54);
+   bwscale->activate();
+} else {
+   bwprofilegroup->deactivate();
+   bwdial->deactivate();
+   bwcents->deactivate();
+   hprofile->deactivate();
+   hprofile->color(48);
+   bwscale->deactivate();
+};
+
+cbwidget->do_callback();}
+            xywh {220 305 90 20} down_box BORDER_BOX labelfont 1 labelsize 10 labelcolor 0 align 5 textsize 12
+            code0 {o->value(pars->Pmode);}
+          } {
+            menuitem {} {
+              label Bandwidth
+              xywh {105 105 100 20} labelfont 1 labelsize 12
+            }
+            menuitem {} {
+              label Discrete
+              xywh {125 125 100 20} labelfont 1 labelsize 12 labelcolor 0
+            }
+            menuitem {} {
+              label Continous
+              xywh {115 115 100 20} labelfont 1 labelsize 12 labelcolor 0
+            }
+          }
+        }
+        Fl_Group {} {
+          label {Envelopes&LFOs}
+          xywh {0 20 535 375} box ENGRAVED_BOX hide
+        } {
+          Fl_Group {} {
+            label FREQUENCY
+            xywh {5 275 525 115} box THIN_UP_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 16 align 17
+          } {
+            Fl_Group freqenv {
+              label {PADSynth - Frequency Envelope} open
+              xywh {10 315 205 70} box FLAT_BOX color 51 align 144
+              code0 {o->init(pars->FreqEnvelope);}
+              class EnvelopeUI
+            } {}
+            Fl_Counter octave {
+              label Octave
+              callback {int k=(int) o->value();
+if (k<0) k+=16;
+pars->PCoarseDetune = k*1024+
+   pars->PCoarseDetune%1024;}
+              tooltip Octave xywh {470 295 45 15} type Simple labelsize 10 align 1 minimum -8 maximum 7 step 1 textfont 1 textsize 12
+              code0 {int k=pars->PCoarseDetune/1024;}
+              code1 {if (k>=8) k-=16;}
+              code2 {o->value(k);}
+            }
+            Fl_Counter coarsedet {
+              label {Coarse det.}
+              callback {int k=(int) o->value();
+if (k<0) k+=1024;
+pars->PCoarseDetune = k+
+   (pars->PCoarseDetune/1024)*1024;}
+              tooltip {Coarse Detune} xywh {455 365 60 20} labelsize 10 align 5 minimum -64 maximum 63 step 1 textfont 1 textsize 12
+              code0 {int k=pars->PCoarseDetune%1024;}
+              code1 {if (k>=512) k-=1024;}
+              code2 {o->value(k);}
+              code3 {o->lstep(10);}
+            }
+            Fl_Group freqlfo {
+              label {Frequency LFO     } open
+              xywh {215 315 230 70} box FLAT_BOX color 47 align 144
+              code0 {o->init(pars->FreqLfo);}
+              class LFOUI
+            } {}
+            Fl_Slider detune {
+              callback {pars->PDetune=(int)o->value()+8192;
+detunevalueoutput->do_callback();}
+              tooltip {Fine Detune (cents)} xywh {60 295 295 15} type {Horz Knob} box FLAT_BOX minimum -8192 maximum 8191 step 1
+              code0 {o->value(pars->PDetune-8192);}
+            }
+            Fl_Value_Output detunevalueoutput {
+              label Detune
+              callback {o->value(getdetune(pars->PDetuneType,0,pars->PDetune));}
+              xywh {12 295 45 15} labelsize 10 align 5 minimum -5000 maximum 5000 step 0.01 textfont 1 textsize 10
+              code0 {o->value(getdetune(pars->PDetuneType,0,pars->PDetune));}
+            }
+            Fl_Choice detunetype {
+              label {Detune Type}
+              callback {pars->PDetuneType=(int) o->value()+1;
+detunevalueoutput->do_callback();} open
+              xywh {450 335 75 15} down_box BORDER_BOX labelsize 10 align 5 textfont 1 textsize 10
+              code0 {o->add("L35cents");o->add("L10cents");o->add("E100cents");o->add("E1200cents");}
+              code1 {o->value(pars->PDetuneType-1);}
+            } {}
+            Fl_Check_Button hz440 {
+              label 440Hz
+              callback {int x=(int) o->value();
+pars->Pfixedfreq=x;
+if (x==0) fixedfreqetdial->deactivate();
+   else fixedfreqetdial->activate();}
+              tooltip {set the base frequency to 440Hz} xywh {365 295 50 15} down_box DOWN_BOX labelfont 1 labelsize 11
+              code0 {o->value(pars->Pfixedfreq);}
+            }
+            Fl_Dial fixedfreqetdial {
+              label {Eq.T.}
+              callback {pars->PfixedfreqET=(int) o->value();}
+              tooltip {How the frequency varies acording to the keyboard (leftmost for fixed frequency)} xywh {420 295 15 15} box ROUND_UP_BOX labelsize 10 align 8 maximum 127 step 1
+              code0 {o->value(pars->PfixedfreqET);}
+              code1 {if (pars->Pfixedfreq==0) o->deactivate();}
+              class WidgetPDial
+            }
+          }
+          Fl_Group {} {
+            label AMPLITUDE
+            xywh {5 25 240 250} box THIN_UP_FRAME labeltype EMBOSSED_LABEL labelfont 1 labelsize 16 align 17
+          } {
+            Fl_Value_Slider volume {
+              label Vol
+              callback {pars->PVolume=(int)o->value();}
+              tooltip Volume xywh {10 50 160 15} type {Horz Knob} box FLAT_BOX labelsize 12 align 8 maximum 127 step 1
+              code0 {o->value(pars->PVolume);}
+            }
+            Fl_Value_Slider vsns {
+              label {V.Sns}
+              callback {pars->PAmpVelocityScaleFunction=(int) o->value();}
+              tooltip {Velocity Sensing Function (rightmost to disable)} xywh {10 70 160 15} type {Horz Knob} box FLAT_BOX labelsize 12 align 8 maximum 127 step 1
+              code0 {o->value(pars->PAmpVelocityScaleFunction);}
+            }
+            Fl_Dial pan {
+              label Pan
+              callback {pars->PPanning=(int) o->value();}
+              tooltip {Panning (leftmost is Random)} xywh {210 45 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+              code0 {o->value(pars->PPanning);}
+              class WidgetPDial
+            }
+            Fl_Dial pstr {
+              label {P.Str.}
+              callback {pars->PPunchStrength=(int) o->value();}
+              tooltip {Punch Strength} xywh {125 247 25 25} box ROUND_UP_BOX labelsize 11 align 1 maximum 127 step 1
+              code0 {o->value(pars->PPunchStrength);}
+              class WidgetPDial
+            }
+            Fl_Dial pt {
+              label {P.t.}
+              callback {pars->PPunchTime=(int) o->value();}
+              tooltip {Punch Time (duration)} xywh {155 247 25 25} box ROUND_UP_BOX labelsize 11 align 1 maximum 127 step 1
+              code0 {o->value(pars->PPunchTime);}
+              class WidgetPDial
+            }
+            Fl_Dial pstc {
+              label {P.Stc.}
+              callback {pars->PPunchStretch=(int) o->value();}
+              tooltip {Punch Stretch} xywh {185 247 25 25} box ROUND_UP_BOX labelsize 11 align 1 maximum 127 step 1
+              code0 {o->value(pars->PPunchStretch);}
+              class WidgetPDial
+            }
+            Fl_Dial pvel {
+              label {P.Vel.}
+              callback {pars->PPunchVelocitySensing=(int) o->value();}
+              tooltip {Punch Velocity Sensing} xywh {215 247 25 25} box ROUND_UP_BOX labelsize 11 align 1 maximum 127 step 1
+              code0 {o->value(pars->PPunchVelocitySensing);}
+              class WidgetPDial
+            }
+            Fl_Group ampenv {
+              label {PADSynth - Amplitude Envelope} open
+              xywh {10 95 205 70} box FLAT_BOX color 51 align 144
+              code0 {o->init(pars->AmpEnvelope);}
+              class EnvelopeUI
+            } {}
+            Fl_Group amplfo {
+              label {Amplitude LFO     } open
+              xywh {10 165 230 70} box FLAT_BOX color 47 align 144
+              code0 {o->init(pars->AmpLfo);}
+              class LFOUI
+            } {}
+            Fl_Check_Button stereo {
+              label Stereo
+              callback {pars->PStereo=(int) o->value();
+hprofile->redraw();}
+              xywh {15 245 70 25} down_box DOWN_BOX
+              code0 {o->value(pars->PStereo);}
+            }
+          }
+          Fl_Group {} {
+            label FILTER
+            xywh {245 25 285 250} box THIN_UP_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 16 align 17
+          } {
+            Fl_Group filterenv {
+              label {PADSynth - Filter Envelope} open
+              xywh {250 130 275 70} box FLAT_BOX color 51 align 144
+              code0 {o->init(pars->FilterEnvelope);}
+              class EnvelopeUI
+            } {}
+            Fl_Group filterlfo {
+              label {Filter LFO     } open
+              xywh {250 200 230 70} box FLAT_BOX color 47 align 144
+              code0 {o->init(pars->FilterLfo);}
+              class LFOUI
+            } {}
+            Fl_Group filterui {
+              label {PADsynth - Filter} open
+              xywh {250 55 275 75} box FLAT_BOX color 50 align 144
+              code0 {o->init(pars->GlobalFilter,&pars->PFilterVelocityScale,&pars->PFilterVelocityScaleFunction);}
+              class FilterUI
+            } {}
+          }
+        }
+      }
+      Fl_Button applybutton {
+        label {Apply Changes}
+        callback {pars->applyparameters(true);
+o->color(FL_GRAY);
+if (oscui!=NULL) {
+	oscui->applybutton->color(FL_GRAY);
+	oscui->applybutton->redraw();
+};
+if (resui!=NULL) {
+	resui->applybutton->color(FL_GRAY);
+	resui->applybutton->redraw();
+};}
+        xywh {45 405 185 40} box THIN_UP_BOX labelfont 1 labelsize 23
+        code0 {o->color(FL_RED);}
+      }
+      Fl_Button {} {
+        label Close
+        callback {padnotewindow->hide();}
+        xywh {320 405 175 40} box THIN_UP_BOX labelsize 20
+      }
+      Fl_Button {} {
+        label C
+        callback {presetsui->copy(pars);}
+        xywh {240 430 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
+      }
+      Fl_Button {} {
+        label P
+        callback {presetsui->paste(pars,this);}
+        xywh {270 430 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
+      }
+    }
+  }
+  Function {refresh()} {} {
+    code {volume->value(pars->PVolume);
+vsns->value(pars->PAmpVelocityScaleFunction);
+pan->value(pars->PPanning);
+
+stereo->value(pars->PStereo);
+
+
+pstr->value(pars->PPunchStrength);
+pt->value(pars->PPunchTime);
+pstc->value(pars->PPunchStretch);
+pvel->value(pars->PPunchVelocitySensing);
+
+detunevalueoutput->value(getdetune(pars->PDetuneType,0,pars->PDetune));
+detune->value(pars->PDetune-8192);
+
+int k=pars->PCoarseDetune/1024;if (k>=8) k-=16;
+octave->value(k);
+
+detunetype->value(pars->PDetuneType-1);
+k=pars->PCoarseDetune%1024;if (k>=512) k-=1024;
+coarsedet->value(k);
+
+hz440->value(pars->Pfixedfreq);
+fixedfreqetdial->value(pars->PfixedfreqET);
+
+amplfo->refresh();
+freqlfo->refresh();
+filterlfo->refresh();
+
+ampenv->refresh();
+freqenv->refresh();
+filterenv->refresh();
+filterui->refresh();
+
+
+/* harmonic structure parametrs */
+
+resui->refresh();
+if (oscui!=NULL) oscui->refresh();
+
+hpbasetype->value(pars->Php.base.type);
+hpbasepar1->value(pars->Php.base.par1);
+hpfreqmult->value(pars->Php.freqmult);
+
+hpmpar1->value(pars->Php.modulator.par1);
+hpmfreq->value(pars->Php.modulator.freq);
+hpwidth->value(pars->Php.width);
+
+hponehalf->value(pars->Php.onehalf);
+hpamptype->value(pars->Php.amp.type);
+hpampmode->value(pars->Php.amp.mode);
+hpamppar1->value(pars->Php.amp.par1);
+hpamppar2->value(pars->Php.amp.par2);
+hpautoscale->value(pars->Php.autoscale);
+
+bwdial->value(pars->Pbandwidth);
+if (pars->Pmode==0){
+   bwprofilegroup->activate();
+   bwdial->activate();
+   bwcents->activate();
+   hprofile->activate();
+   hprofile->color(54);
+   bwscale->activate();
+} else {
+   bwprofilegroup->deactivate();
+   bwdial->deactivate();
+   bwcents->deactivate();
+   hprofile->deactivate();
+   hprofile->color(48);
+   bwscale->activate();
+};
+
+spectrummode->value(pars->Pmode);
+
+qbasenote->value(pars->Pquality.basenote);
+qsmpoct->value(pars->Pquality.smpoct);
+qoct->value(pars->Pquality.oct);
+qsamplesize->value(pars->Pquality.samplesize);
+
+hrpostype->value(pars->Phrpos.type);
+hrpospar1->value(pars->Phrpos.par1);
+hrpospar2->value(pars->Phrpos.par2);
+hrpospar3->value(pars->Phrpos.par3);
+
+hprofile->redraw();
+overtonepos->redraw();
+
+osc->redraw();
+pars->applyparameters(true);
+applybutton->color(FL_GRAY);
+applybutton->parent()->redraw();} {}
+  }
+  Function {~PADnoteUI()} {} {
+    code {delete(oscui);
+delete(resui);
+
+padnotewindow->hide();
+delete(padnotewindow);} {}
+  }
+  decl {PADnoteParameters *pars;} {public
+  }
+  decl {Master *master;} {public
+  }
+  decl {OscilEditor *oscui;} {public
+  }
+  decl {Oscilloscope *osc;} {public
+  }
+  decl {ResonanceUI *resui;} {public
+  }
+} 
diff --git a/muse_qt4_evolution/synti/zynaddsubfx/UI/PartUI.fl b/muse_qt4_evolution/synti/zynaddsubfx/UI/PartUI.fl
new file mode 100644
index 00000000..a3a91782
--- /dev/null
+++ b/muse_qt4_evolution/synti/zynaddsubfx/UI/PartUI.fl
@@ -0,0 +1,1086 @@
+# data file for the Fltk User Interface Designer (fluid)
+version 1.0104 
+header_name {.h} 
+code_name {.cc}
+decl {//Copyright (c) 2002-2005 Nasca Octavian Paul} {} 
+
+decl {//License: GNU GPL version 2} {} 
+
+decl {\#include <stdlib.h>} {public
+} 
+
+decl {\#include <stdio.h>} {public
+} 
+
+decl {\#include <string.h>} {public
+} 
+
+decl {\#include "WidgetPDial.h"} {public
+} 
+
+decl {\#include "EffUI.h"} {public
+} 
+
+decl {\#include "BankUI.h"} {public
+} 
+
+decl {\#include "ADnoteUI.h"} {public
+} 
+
+decl {\#include "SUBnoteUI.h"} {public
+} 
+
+decl {\#include "PADnoteUI.h"} {public
+} 
+
+decl {\#include "../Misc/Config.h"} {public
+} 
+
+decl {\#include "../Misc/Master.h"} {public
+} 
+
+decl {\#include "../Misc/Part.h"} {public
+} 
+
+class PartSysEffSend {: {public Fl_Group}
+} {
+  Function {make_window()} {private
+  } {
+    Fl_Window syseffsend {
+      private xywh {584 83 90 35} type Double hide
+      class Fl_Group
+    } {
+      Fl_Dial {} {
+        label 01
+        callback {master->setPsysefxvol(npart,neff,(int) o->value());}
+        xywh {0 0 25 25} box ROUND_UP_BOX labelfont 1 labelsize 10 align 130 maximum 127 step 1
+        code0 {o->size(25,25);}
+        code1 {o->value(master->Psysefxvol[neff][npart]);}
+        code2 {char tmp[10];snprintf(tmp,10,"%d",neff);o->label(strdup(tmp));}
+        class WidgetPDial
+      }
+    }
+  }
+  Function {PartSysEffSend(int x,int y, int w, int h, const char *label=0):Fl_Group(x,y,w,h,label)} {} {
+    code {master=NULL;
+neff=0;
+npart=0;} {}
+  }
+  Function {init(Master *master_,int npart_,int neff_)} {} {
+    code {npart=npart_;
+neff=neff_;
+master=master_;
+make_window();
+syseffsend->show();
+end();} {}
+  }
+  Function {~PartSysEffSend()} {} {
+    code {syseffsend->hide();
+//delete(syseffsend);} {}
+  }
+  decl {Master *master;} {}
+  decl {int neff;} {}
+  decl {int npart;} {}
+} 
+
+class PartUI_ {} {
+  Function {showparameters(int kititem,int engine)} {return_type virtual
+  } {}
+} 
+
+class PartKitItem {: {public Fl_Group}
+} {
+  Function {make_window()} {private
+  } {
+    Fl_Window partkititem {
+      private xywh {113 271 670 30} type Double hide
+      class Fl_Group
+    } {
+      Fl_Group partkititemgroup {
+        private xywh {55 0 605 20} box FLAT_BOX
+        code0 {if (part->kit[n].Penabled==0) o->deactivate();}
+      } {
+        Fl_Counter minkcounter {
+          callback {part->kit[n].Pminkey=(int)o->value();}
+          xywh {225 0 55 15} type Simple minimum 0 maximum 128 step 1
+          code0 {o->value(part->kit[n].Pminkey);}
+        }
+        Fl_Button {} {
+          label m
+          callback {if (part->lastnote>=0) minkcounter->value(part->lastnote);
+minkcounter->do_callback();
+maxkcounter->do_callback();}
+          tooltip {set the minimum key to the last pressed key} xywh {285 3 15 12} box THIN_UP_BOX labelsize 10
+        }
+        Fl_Button {} {
+          label M
+          callback {if (part->lastnote>=0) maxkcounter->value(part->lastnote);
+maxkcounter->do_callback();
+minkcounter->do_callback();}
+          tooltip {set the maximum key to the last pressed key} xywh {315 3 15 12} box THIN_UP_BOX labelsize 10
+        }
+        Fl_Button {} {
+          label R
+          callback {minkcounter->value(0);
+minkcounter->do_callback();
+maxkcounter->value(127);
+maxkcounter->do_callback();}
+          tooltip {reset the minimum key to 0 and maximum key to 127} xywh {300 3 15 12} box THIN_UP_BOX labelfont 1 labelsize 10
+        }
+        Fl_Button adeditbutton {
+          label edit
+          callback {partui->showparameters(n,0);}
+          xywh {420 0 40 15} box THIN_UP_BOX labelsize 12
+          code0 {if (part->kit[n].Padenabled==0) o->deactivate();}
+          code1 {if (n==0) o->hide();}
+        }
+        Fl_Button subeditbutton {
+          label edit
+          callback {partui->showparameters(n,1);}
+          xywh {490 0 40 15} box THIN_UP_BOX labelsize 12
+          code0 {if (part->kit[n].Psubenabled==0) o->deactivate();}
+          code1 {if (n==0) o->hide();}
+        }
+        Fl_Check_Button mutedcheck {
+          callback {part->kit[n].Pmuted=(int)o->value();}
+          private xywh {60 0 20 15} down_box DOWN_BOX labelfont 1 labelsize 12 align 4
+          code0 {o->value(part->kit[n].Pmuted);}
+        }
+        Fl_Counter maxkcounter {
+          callback {part->kit[n].Pmaxkey=(int)o->value();}
+          xywh {335 0 55 15} type Simple minimum 0 maximum 128 step 1
+          code0 {o->value(part->kit[n].Pmaxkey);}
+        }
+        Fl_Button labelbutton {
+          label {Bass Drum}
+          callback {const char *tmp=fl_input("Kit item name:",(const char *)part->kit[n].Pname);
+if (tmp!=NULL) snprintf((char *)part->kit[n].Pname,PART_MAX_NAME_LEN,"%s",tmp);}
+          xywh {90 0 130 15} box THIN_DOWN_BOX down_box FLAT_BOX labelfont 1 labelsize 11 align 20
+          code0 {o->label((char *)part->kit[n].Pname);}
+        }
+        Fl_Check_Button adcheck {
+          callback {part->kit[n].Padenabled=(int)o->value();
+if (part->kit[n].Padenabled!=0) adeditbutton->activate();
+       else  adeditbutton->deactivate();}
+          private xywh {400 0 20 15} down_box DOWN_BOX labelfont 1 labelsize 12 align 4
+          code0 {o->value(part->kit[n].Padenabled);}
+          code1 {if (n==0) o->hide();}
+        }
+        Fl_Check_Button subcheck {
+          callback {part->kit[n].Psubenabled=(int)o->value();
+if (part->kit[n].Psubenabled!=0) subeditbutton->activate();
+       else  subeditbutton->deactivate();}
+          private xywh {470 0 20 15} down_box DOWN_BOX labelfont 1 labelsize 12 align 4
+          code0 {o->value(part->kit[n].Psubenabled);}
+          code1 {if (n==0) o->hide();}
+        }
+        Fl_Choice sendtoeffect {
+          callback {if (o->value()!=0) part->kit[n].Psendtoparteffect=(int)o->value()-1;
+    else part->kit[n].Psendtoparteffect=127;} open
+          xywh {615 0 45 15} down_box BORDER_BOX labelsize 10 align 5 textfont 1 textsize 10
+          code0 {o->add("OFF");char nrstr[10]; for(int i=0;i<NUM_PART_EFX;i++){sprintf(nrstr,"FX%d",i+1);o->add(nrstr);};}
+          code1 {o->value(part->kit[n].Psendtoparteffect+1);if (part->kit[n].Psendtoparteffect==127) o->value(0);}
+        } {}
+        Fl_Button padeditbutton {
+          label edit
+          callback {partui->showparameters(n,2);}
+          xywh {560 0 40 15} box THIN_UP_BOX labelsize 12
+          code0 {if (part->kit[n].Ppadenabled==0) o->deactivate();}
+          code1 {if (n==0) o->hide();}
+        }
+        Fl_Check_Button padcheck {
+          callback {part->kit[n].Ppadenabled=(int)o->value();
+if (part->kit[n].Ppadenabled!=0) padeditbutton->activate();
+       else padeditbutton->deactivate();}
+          private xywh {540 0 20 15} down_box DOWN_BOX labelfont 1 labelsize 12 align 4
+          code0 {o->value(part->kit[n].Ppadenabled);}
+          code1 {if (n==0) o->hide();}
+        }
+      }
+      Fl_Check_Button enabledcheck {
+        label 01
+        callback {int answer=1;
+if (o->value()==0) answer=fl_ask("Delete the item?");
+if (answer!=0){
+master->busy=true;
+ part->setkititemstatus(n,(int) o->value());
+master->busy=false;
+
+if (o->value()==0) partkititemgroup->deactivate();
+else partkititemgroup->activate();
+o->redraw();
+partui->showparameters(n,-1);//use to delete the ui, if it is not to item 0
+} else o->value(1);}
+        private xywh {30 0 20 15} down_box DOWN_BOX labeltype EMBOSSED_LABEL labelfont 1 labelsize 16 align 4
+        code0 {snprintf(label,10,"%d",n+1);o->label(strdup(label));}
+        code1 {o->value(part->kit[n].Penabled);}
+        code2 {if (n==0) o->deactivate();}
+      }
+    }
+  }
+  Function {PartKitItem(int x,int y, int w, int h, const char *label=0):Fl_Group(x,y,w,h,label)} {} {
+    code {n=0;
+part=NULL;} {}
+  }
+  Function {refresh()} {} {
+    code {enabledcheck->value(part->kit[n].Penabled);
+if (part->kit[n].Penabled==0) partkititemgroup->deactivate();
+else partkititemgroup->activate();
+
+mutedcheck->value(part->kit[n].Pmuted);
+labelbutton->label((char *)part->kit[n].Pname);
+minkcounter->value(part->kit[n].Pminkey);
+maxkcounter->value(part->kit[n].Pmaxkey);
+adcheck->value(part->kit[n].Padenabled);
+adcheck->do_callback();
+subcheck->value(part->kit[n].Psubenabled);
+subcheck->do_callback();
+
+sendtoeffect->value(part->kit[n].Psendtoparteffect+1);
+if (part->kit[n].Psendtoparteffect==127) sendtoeffect->value(0);
+
+this->redraw();} {
+      callback {int answer=1;
+if (o->value()==0) answer=fl_ask("Delete the item?");
+if (answer!=0){
+master->busy=true;
+ part->setkititemstatus(n,(int) o->value());
+master->busy=false;
+
+if (o->value()==0) partkititemgroup->deactivate();
+else partkititemgroup->activate();
+o->redraw();
+partui->showparameters(n,-1);//use to delete the ui, if it is not to item 0
+} else o->value(1);}
+    }
+  }
+  Function {init(Part *part_,int n_,Master *master_,PartUI_ *partui_)} {} {
+    code {part=part_;
+n=n_;
+partui=partui_;
+master=master_;
+make_window();
+//partkititem->show();
+end();} {}
+  }
+  Function {~PartKitItem()} {} {
+    code {partkititem->hide();
+//delete(partkititem);} {}
+  }
+  decl {Part *part;} {}
+  decl {int n;} {}
+  decl {Master *master;} {}
+  decl {char label[10];} {}
+  decl {PartUI_ *partui;} {}
+} 
+
+class PartUI {: {public Fl_Group,PartUI_}
+} {
+  Function {make_window()} {private
+  } {
+    Fl_Window partgroup {
+      private xywh {107 533 385 180} type Double hide
+      class Fl_Group
+    } {
+      Fl_Group partgroupui {
+        xywh {0 0 385 180}
+        code0 {if (part->Penabled==0) o->deactivate();}
+      } {
+        Fl_Dial {} {
+          label Pan
+          callback {part->setPpanning((int) o->value());}
+          xywh {50 40 25 25} box ROUND_UP_BOX labelsize 12 maximum 127 step 1
+          code0 {o->value(part->Ppanning);}
+          class WidgetPDial
+        }
+        Fl_Counter {} {
+          label KeyShift
+          callback {part->Pkeyshift=(int) o->value()+64;}
+          xywh {195 45 90 20} labelsize 12 align 1 minimum -64 maximum 64 step 1
+          code0 {o->lstep(12);}
+          code1 {o->value(part->Pkeyshift-64);}
+        }
+        Fl_Scroll {} {open
+          xywh {166 91 125 60} box ENGRAVED_FRAME labelfont 1 labelsize 10 align 21
+        } {
+          Fl_Pack {} {open
+            xywh {171 96 115 35} type HORIZONTAL
+            code0 {o->spacing(5);}
+            code1 {for (int i=0;i<NUM_SYS_EFX;i++){psyef[i]=new PartSysEffSend(0,0,25,35,"");psyef[i]->init(master,npart,i);}}
+          } {}
+        }
+        Fl_Button {} {
+          label {Grand Piano}
+          callback {int event=Fl::event_button();
+if (event==FL_RIGHT_MOUSE){
+   const char *tmp=fl_input("Instrument name:",(const char *)part->Pname);
+   if (tmp!=NULL) snprintf((char *)part->Pname,PART_MAX_NAME_LEN,"%s",tmp);
+} else {
+  if (event==FL_LEFT_MOUSE) bankui->show();
+       else instrumenteditwindow->show();
+};} selected
+          tooltip {left mousebutton - to choose/save/.. from/to bank or right mousebutton to change the name or middle button to change the instrument information} xywh {195 5 185 20} box THIN_DOWN_BOX down_box FLAT_BOX labelfont 1 labelsize 12 align 84
+          code0 {o->label((char *)part->Pname);}
+        }
+        Fl_Box {} {
+          label {To Sys.Efx.}
+          xywh {166 81 95 10} labelfont 1 labelsize 10
+        }
+        Fl_Check_Button {} {
+          label NoteOn
+          callback {part->Pnoteon=(int) o->value();}
+          tooltip {set if the part receives NoteOn messages} xywh {0 155 65 20} down_box DOWN_BOX labelfont 1 labelsize 12
+          code0 {o->value(part->Pnoteon);}
+        }
+        Fl_Counter minkcounter {
+          label {Min.k}
+          callback {part->Pminkey=(int) o->value();
+if (part->Pminkey>part->Pmaxkey) o->textcolor(FL_RED);
+ else o->textcolor(FL_BLACK);}
+          tooltip {Minimum key (that the part receives NoteOn messages)} xywh {295 125 40 15} type Simple labelfont 1 labelsize 10 minimum 0 maximum 127 step 1 textsize 10
+          code0 {o->value(part->Pminkey);}
+        }
+        Fl_Counter maxkcounter {
+          label {Max.k}
+          callback {part->Pmaxkey=(int) o->value();
+
+if (part->Pminkey>part->Pmaxkey) o->textcolor(FL_RED);
+ else o->textcolor(FL_BLACK);}
+          tooltip {Maximum key (that the part receives NoteOn messages)} xywh {340 125 40 15} type Simple labelfont 1 labelsize 10 minimum 0 maximum 127 step 1 textsize 10
+          code0 {o->value(part->Pmaxkey);}
+        }
+        Fl_Dial {} {
+          label Volume
+          callback {part->setPvolume((int) o->value());}
+          tooltip {Part Volume} xywh {10 35 30 30} box ROUND_UP_BOX labelsize 12 maximum 127 step 1
+          code0 {o->value(part->Pvolume);}
+          class WidgetPDial
+        }
+        Fl_Dial {} {
+          label {Vel.Ofs.}
+          callback {part->Pveloffs=(int) o->value();}
+          tooltip {Velocity Offset} xywh {135 40 25 25} box ROUND_UP_BOX labelsize 10 maximum 127 step 1
+          code0 {o->value(part->Pveloffs);}
+          class WidgetPDial
+        }
+        Fl_Dial {} {
+          label {Vel.Sns.}
+          callback {part->Pvelsns=(int) o->value();}
+          tooltip {Velocity Sensing Function} xywh {95 40 25 25} box ROUND_UP_BOX labelsize 10 maximum 127 step 1
+          code0 {o->value(part->Pvelsns);}
+          class WidgetPDial
+        }
+        Fl_Button {} {
+          label Controllers
+          callback {ctlwindow->show();}
+          xywh {295 90 85 30} box PLASTIC_UP_BOX labelfont 1 labelsize 12
+        }
+        Fl_Check_Button {} {
+          label Poly
+          callback {part->Ppolymode=(int) o->value();}
+          tooltip {Part mode (mono/poly)} xywh {65 155 45 20} down_box DOWN_BOX labelfont 1 labelsize 12
+          code0 {o->value(part->Ppolymode);}
+        }
+        Fl_Check_Button {} {
+          label Portamento
+          callback {part->ctl.portamento.portamento=(int) o->value();}
+          tooltip {Enable/Disable the portamento} xywh {115 155 85 20} down_box DOWN_BOX labelfont 1 labelsize 12
+          code0 {o->value(part->ctl.portamento.portamento);}
+        }
+        Fl_Button {} {
+          label {Edit instrument}
+          callback {instrumenteditwindow->show();}
+          xywh {15 105 130 30} box PLASTIC_UP_BOX color 230 labelfont 1 labelsize 17
+        }
+        Fl_Button {} {
+          label m
+          callback {if (part->lastnote>=0) minkcounter->value(part->lastnote);
+minkcounter->do_callback();
+maxkcounter->do_callback();}
+          tooltip {set the minimum key to the last pressed key} xywh {315 155 15 12} box THIN_UP_BOX labelsize 10
+        }
+        Fl_Button {} {
+          label M
+          callback {if (part->lastnote>=0) maxkcounter->value(part->lastnote);
+maxkcounter->do_callback();
+minkcounter->do_callback();}
+          tooltip {set the maximum key to the last pressed key} xywh {345 155 15 12} box THIN_UP_BOX labelsize 10
+        }
+        Fl_Button {} {
+          label R
+          callback {minkcounter->value(0);
+minkcounter->do_callback();
+maxkcounter->value(127);
+maxkcounter->do_callback();}
+          tooltip {reset the minimum key to 0 and maximum key to 127} xywh {330 155 15 12} box THIN_UP_BOX labelfont 1 labelsize 10
+        }
+        Fl_Choice {} {
+          label {MIDI Chn.Rcv.}
+          callback {part->Prcvchn=(int) o->value();} open
+          tooltip {receive from Midi channel} xywh {310 45 70 20} down_box BORDER_BOX labelsize 10 align 5 textfont 1 textsize 10
+          code0 {char nrstr[10]; for(int i=0;i<NUM_MIDI_CHANNELS;i++){sprintf(nrstr,"Chn%d",i+1);if (i!=9) o->add(nrstr); else o->add("Drms10");};}
+          code1 {o->value(part->Prcvchn);}
+        } {}
+        Fl_Choice keylimitlist {
+          label KLmt
+          callback {int val=0;
+val=atoi(o->text());
+part->setkeylimit(val);} open
+          tooltip {Key Limit} xywh {210 155 50 20} down_box BORDER_BOX labelsize 10 align 8 textfont 1 textsize 10
+        } {}
+      }
+      Fl_Check_Button {} {
+        label Enabled
+        callback {master->busy=true;
+master->partonoff(npart,(int) o->value());
+master->busy=false;
+if (part->Penabled==0) partgroupui->deactivate();
+    else partgroupui->activate();}
+        xywh {90 5 75 20} down_box DOWN_BOX labelfont 1 labelsize 12
+        code0 {o->value(part->Penabled);}
+      }
+    }
+    Fl_Window ctlwindow {
+      label Controllers
+      private xywh {198 472 460 130} type Double hide
+    } {
+      Fl_Check_Button {} {
+        label Expr
+        callback {part->ctl.expression.receive=(int) o->value();}
+        tooltip {Expression enable} xywh {155 55 45 20} box THIN_UP_BOX down_box DOWN_BOX labelsize 10
+        code0 {o->value(part->ctl.expression.receive);}
+      }
+      Fl_Dial {} {
+        label PanDpth
+        callback {part->ctl.panning.depth=(int) o->value();}
+        tooltip {Panning Depth} xywh {10 55 30 30} labelsize 10 maximum 127 step 1
+        code0 {o->value(part->ctl.panning.depth);}
+        class WidgetPDial
+      }
+      Fl_Dial {} {
+        label FltCut
+        callback {part->ctl.filtercutoff.depth=(int) o->value();}
+        tooltip {Filter Cutoff depth} xywh {90 55 30 30} labelsize 10 maximum 127 step 1
+        code0 {o->value(part->ctl.filtercutoff.depth);}
+        class WidgetPDial
+      }
+      Fl_Dial {} {
+        label FltQ
+        callback {part->ctl.filterq.depth=(int) o->value();}
+        tooltip {Filter Q depth} xywh {50 55 30 30} labelsize 10 maximum 127 step 1
+        code0 {o->value(part->ctl.filterq.depth);}
+        class WidgetPDial
+      }
+      Fl_Dial {} {
+        label BwDpth
+        callback {part->ctl.bandwidth.depth=(int) o->value();}
+        tooltip {BandWidth depth} xywh {125 10 30 30} labelsize 10 maximum 127 step 1
+        code0 {o->value(part->ctl.bandwidth.depth);}
+        class WidgetPDial
+      }
+      Fl_Dial {} {
+        label ModWh
+        callback {part->ctl.modwheel.depth=(int) o->value();}
+        tooltip {Modulation Wheel depth} xywh {50 10 30 30} labelsize 10 maximum 127 step 1
+        code0 {o->value(part->ctl.modwheel.depth);}
+        class WidgetPDial
+      }
+      Fl_Counter {} {
+        label {PWheelB.Rng (cents)}
+        callback {part->ctl.pitchwheel.bendrange=(int) o->value();}
+        tooltip {Pitch Wheel Bend Range (cents)} xywh {165 15 110 20} labelsize 10 align 1 minimum -6400 maximum 6400 step 1
+        code0 {o->value(part->ctl.pitchwheel.bendrange);}
+        code1 {o->lstep(100);}
+      }
+      Fl_Check_Button {} {
+        label FMamp
+        callback {part->ctl.fmamp.receive=(int) o->value();}
+        tooltip {FM amplitude enable} xywh {205 55 60 20} box THIN_UP_BOX down_box DOWN_BOX labelsize 10
+        code0 {o->value(part->ctl.fmamp.receive);}
+      }
+      Fl_Check_Button {} {
+        label Vol
+        callback {part->ctl.volume.receive=(int) o->value();}
+        tooltip {Volume enable} xywh {155 80 45 20} box THIN_UP_BOX down_box DOWN_BOX labelsize 10
+        code0 {o->value(part->ctl.volume.receive);}
+      }
+      Fl_Check_Button {} {
+        label Sustain
+        callback {part->ctl.sustain.receive=(int) o->value();
+if (part->ctl.sustain.receive==0) {
+  part->RelaseSustainedKeys();
+  part->ctl.setsustain(0);
+};}
+        tooltip {Sustain pedal enable} xywh {205 80 60 20} box THIN_UP_BOX down_box DOWN_BOX labelsize 10
+        code0 {o->value(part->ctl.sustain.receive);}
+      }
+      Fl_Button {} {
+        label Close
+        callback {ctlwindow->hide();}
+        xywh {330 105 95 20} box THIN_UP_BOX
+      }
+      Fl_Button {} {
+        label {Reset all controllers}
+        callback {part->SetController(C_resetallcontrollers,0);}
+        xywh {5 105 210 20} box THIN_UP_BOX
+      }
+      Fl_Group {} {
+        label Portamento open
+        xywh {280 15 120 85} box ENGRAVED_FRAME labelfont 1 labelsize 10
+      } {
+        Fl_Check_Button {} {
+          label Rcv
+          callback {part->ctl.portamento.receive=(int) o->value();}
+          tooltip {Receive Portamento Controllers} xywh {285 20 40 20} box THIN_UP_BOX down_box DOWN_BOX labelsize 10
+          code0 {o->value(part->ctl.portamento.receive);}
+        }
+        Fl_Dial {} {
+          label time
+          callback {part->ctl.portamento.time=(int) o->value();}
+          tooltip {Portamento time} xywh {285 60 25 25} labelsize 10 maximum 127 step 1
+          code0 {o->value(part->ctl.portamento.time);}
+          class WidgetPDial
+        }
+        Fl_Counter {} {
+          label thresh
+          callback {part->ctl.portamento.pitchthresh=(int) o->value();}
+          tooltip {Minimum or max. difference of the notes in order to do the portamento (x 100 cents)} xywh {340 20 50 20} type Simple labelsize 10 minimum 0 maximum 127 step 1
+          code0 {o->value(part->ctl.portamento.pitchthresh);}
+        }
+        Fl_Check_Button {} {
+          label {th.type}
+          callback {part->ctl.portamento.pitchthreshtype=(int) o->value();}
+          tooltip {Threshold type (min/max)} xywh {370 70 15 15} down_box DOWN_BOX labelsize 10 align 2
+          code0 {o->value(part->ctl.portamento.pitchthreshtype);}
+        }
+        Fl_Box {} {
+          label {x100 cnt.}
+          xywh {340 50 55 15} labelsize 10 align 16
+        }
+        Fl_Dial {} {
+          label {t.dn/up}
+          callback {int x=(int) o->value();
+
+part->ctl.portamento.updowntimestretch=x;}
+          tooltip {Portamento time stretch (up/down)} xywh {315 60 25 25} labelsize 10 maximum 127 step 1
+          code0 {o->value(part->ctl.portamento.updowntimestretch);}
+          class WidgetPDial
+        }
+      }
+      Fl_Group {} {
+        label Resonance open
+        xywh {400 15 45 85} box ENGRAVED_BOX labelfont 1 labelsize 10
+      } {
+        Fl_Dial {} {
+          label BWdpth
+          callback {part->ctl.resonancebandwidth.depth=(int) o->value();}
+          tooltip {BandWidth controller depth} xywh {410 60 25 25} labelsize 10 maximum 127 step 1
+          code0 {o->value(part->ctl.resonancebandwidth.depth);}
+          class WidgetPDial
+        }
+        Fl_Dial {} {
+          label CFdpth
+          callback {part->ctl.resonancecenter.depth=(int) o->value();}
+          tooltip {Center Frequency controller Depth} xywh {410 20 25 25} labelsize 10 maximum 127 step 1
+          code0 {o->value(part->ctl.resonancecenter.depth);}
+          class WidgetPDial
+        }
+      }
+      Fl_Check_Button {} {
+        label {Exp MWh}
+        callback {part->ctl.modwheel.exponential=(int) o->value();}
+        tooltip {Exponential modulation wheel} xywh {10 15 40 25} down_box DOWN_BOX labelsize 10 align 148
+        code0 {o->value(part->ctl.modwheel.exponential);}
+      }
+      Fl_Check_Button {} {
+        label {Exp BW}
+        callback {part->ctl.bandwidth.exponential=(int) o->value();}
+        tooltip {Exponential BandWidth Controller} xywh {85 15 35 25} down_box DOWN_BOX labelsize 10 align 148
+        code0 {o->value(part->ctl.bandwidth.exponential);}
+      }
+    }
+    Fl_Window partfx {
+      label {Part's Insert Effects}
+      private xywh {121 424 390 145} type Double hide
+    } {
+      Fl_Counter inseffnocounter {
+        label {FX No.}
+        callback {ninseff=(int) o->value()-1;
+insefftype->value(part->partefx[ninseff]->geteffect());
+//insefftype->do_callback();
+inseffectui->refresh(part->partefx[ninseff]);
+int x=part->Pefxroute[ninseff];
+if (x==127) x=1;
+bypasseff->value(part->Pefxbypass[ninseff]);
+
+sendtochoice->value(x);}
+        xywh {5 110 80 20} type Simple labelfont 1 align 6 minimum 1 maximum 127 step 1 textfont 1
+        code0 {o->bounds(1,NUM_PART_EFX);}
+        code1 {o->value(ninseff+1);}
+      }
+      Fl_Choice insefftype {
+        label EffType
+        callback {master->busy=true;
+part->partefx[ninseff]->changeeffect((int) o->value());
+master->busy=false;
+inseffectui->refresh(part->partefx[ninseff]);}
+        xywh {155 110 70 15} down_box BORDER_BOX labelsize 11 align 6
+        code0 {o->value(part->partefx[ninseff]->geteffect());}
+      } {
+        menuitem {} {
+          label {No Effect}
+          xywh {35 35 100 20} labelfont 1 labelsize 11
+        }
+        menuitem {} {
+          label Reverb
+          xywh {45 45 100 20} labelfont 1 labelsize 11
+        }
+        menuitem {} {
+          label Echo
+          xywh {55 55 100 20} labelfont 1 labelsize 11
+        }
+        menuitem {} {
+          label Chorus
+          xywh {65 65 100 20} labelfont 1 labelsize 11
+        }
+        menuitem {} {
+          label Phaser
+          xywh {70 70 100 20} labelfont 1 labelsize 11
+        }
+        menuitem {} {
+          label AlienWah
+          xywh {80 80 100 20} labelfont 1 labelsize 11
+        }
+        menuitem {} {
+          label Distortion
+          xywh {90 90 100 20} labelfont 1 labelsize 11
+        }
+        menuitem {} {
+          label EQ
+          xywh {100 100 100 20} labelfont 1 labelsize 11
+        }
+        menuitem {} {
+          label DynFilter
+          xywh {110 110 100 20} labelfont 1 labelsize 11
+        }
+      }
+      Fl_Group inseffectuigroup {
+        xywh {5 5 380 100} box FLAT_BOX color 48
+      } {
+        Fl_Group inseffectui {
+          xywh {5 5 380 95}
+          code0 {o->init(part->partefx[ninseff]);}
+          class EffUI
+        } {}
+      }
+      Fl_Button {} {
+        label Close
+        callback {partfx->hide();}
+        xywh {325 115 60 20} box THIN_UP_BOX
+      }
+      Fl_Choice sendtochoice {
+        label {Send To.}
+        callback {int x=(int) o->value();
+part->Pefxroute[ninseff]=x;
+if (x==2) part->partefx[ninseff]->setdryonly(true);
+	else part->partefx[ninseff]->setdryonly(false);}
+        xywh {235 110 80 15} down_box BORDER_BOX labelsize 11 align 6
+        code0 {int x=part->Pefxroute[ninseff]; if (x==127) x=1;}
+        code1 {o->value(x);}
+      } {
+        menuitem {} {
+          label {Next Effect}
+          xywh {45 45 100 20} labelfont 1 labelsize 11
+        }
+        menuitem {} {
+          label {Part Out}
+          xywh {55 55 100 20} labelfont 1 labelsize 11
+        }
+        menuitem {} {
+          label {Dry Out}
+          xywh {65 65 100 20} labelfont 1 labelsize 11
+        }
+      }
+      Fl_Check_Button bypasseff {
+        label bypass
+        callback {part->Pefxbypass[ninseff]=(((int)o->value())!=0);}
+        tooltip {if the effect is not used (is bypassed)} xywh {90 110 60 15} down_box DOWN_BOX labelsize 12
+        code0 {int x=part->Pefxbypass[ninseff];o->value(x);}
+      }
+      Fl_Button {} {
+        label C
+        callback {presetsui->copy(part->partefx[ninseff]);}
+        xywh {90 127 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
+      }
+      Fl_Button {} {
+        label P
+        callback {master->busy=true;
+presetsui->paste(part->partefx[ninseff],inseffectui);
+master->busy=false;}
+        xywh {120 127 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
+      }
+    }
+    Fl_Window instrumentkitlist {
+      label {Instrument Kit}
+      xywh {113 324 670 370} type Double hide
+    } {
+      Fl_Button {} {
+        label {Close Window}
+        callback {instrumentkitlist->hide();}
+        xywh {375 350 160 20} box THIN_UP_BOX
+      }
+      Fl_Scroll kitlist {
+        xywh {0 15 670 330} type VERTICAL box THIN_UP_BOX
+        code0 {if (part->Pkitmode==0) o->deactivate();}
+      } {
+        Fl_Pack {} {
+          xywh {0 20 670 320}
+          code0 {for (int i=0;i<NUM_KIT_ITEMS;i++){partkititem[i]=new PartKitItem(0,0,670,20,"");partkititem[i]->init(part,i,master,this);}}
+        } {}
+      }
+      Fl_Box {} {
+        label {No.}
+        xywh {5 0 25 15} labelfont 1 labelsize 12 align 18
+      }
+      Fl_Box {} {
+        label {M.}
+        xywh {55 0 25 15} labelfont 1 labelsize 12 align 18
+      }
+      Fl_Box {} {
+        label {Min.k}
+        xywh {235 0 40 15} labelfont 1 labelsize 12 align 18
+      }
+      Fl_Box {} {
+        label {Max.k}
+        xywh {345 0 40 15} labelfont 1 labelsize 12 align 18
+      }
+      Fl_Box {} {
+        label ADsynth
+        xywh {405 0 50 15} labelfont 1 labelsize 12 align 18
+      }
+      Fl_Box {} {
+        label SUBsynth
+        xywh {470 0 60 15} labelfont 1 labelsize 12 align 18
+      }
+      Fl_Choice {} {
+        label Mode
+        callback {part->Pkitmode=(int) o->value();
+if (part->Pkitmode==0) {
+     kitlist->deactivate();
+ } else {
+ kitlist->activate();
+};}
+        xywh {35 350 70 15} down_box BORDER_BOX labelsize 12 textfont 1 textsize 12
+        code0 {o->value(part->Pkitmode);}
+      } {
+        menuitem {} {
+          label OFF
+          xywh {0 0 100 20} labelfont 1 labelsize 12
+        }
+        menuitem {} {
+          label MULTI
+          xywh {10 10 100 20} labelfont 1 labelsize 12
+        }
+        menuitem {} {
+          label SINGLE
+          xywh {20 20 100 20} labelfont 1 labelsize 12
+        }
+      }
+      Fl_Check_Button {} {
+        label {Drum mode}
+        callback {part->Pdrummode=(int) o->value();}
+        xywh {285 350 70 15} down_box DOWN_BOX labelsize 11
+        code0 {o->value(part->Pdrummode);}
+      }
+      Fl_Box {} {
+        label {FX.r.}
+        xywh {620 0 30 15} labelfont 1 labelsize 12 align 18
+      }
+      Fl_Box {} {
+        label PADsynth
+        xywh {540 0 60 15} labelfont 1 labelsize 12 align 18
+      }
+    }
+    Fl_Window instrumenteditwindow {
+      label {Instrument Edit}
+      xywh {182 214 395 360} type Double hide
+    } {
+      Fl_Group {} {
+        xywh {0 220 395 110} box ENGRAVED_FRAME
+      } {
+        Fl_Group {} {
+          label PADsynth
+          xywh {205 245 100 80} box ENGRAVED_FRAME labelfont 1
+        } {
+          Fl_Button padeditbutton {
+            label Edit
+            callback {showparameters(0,2);}
+            xywh {215 280 80 35} box PLASTIC_UP_BOX color 222 selection_color 220 labelfont 1 labelsize 18 align 128
+            code0 {if (part->kit[0].Ppadenabled==0) o->deactivate();}
+          }
+          Fl_Check_Button padsynenabledcheck {
+            label Enabled
+            callback {int x=(int) o->value();
+part->kit[0].Ppadenabled=x;
+if (x==0) padeditbutton->deactivate();
+     else padeditbutton->activate();}
+            tooltip {enable/disable PADsynth} xywh {215 255 80 20} box PLASTIC_UP_BOX down_box DOWN_BOX color 222 selection_color 218 labelfont 1 labelsize 12
+            code1 {o->value(part->kit[0].Ppadenabled);}
+          }
+        }
+        Fl_Group {} {
+          label ADDsynth
+          xywh {5 245 100 80} box ENGRAVED_FRAME labelfont 1
+        } {
+          Fl_Check_Button adsynenabledcheck {
+            label Enabled
+            callback {int x=(int) o->value();
+part->kit[0].Padenabled=x;
+if (x==0) adeditbutton->deactivate();
+     else adeditbutton->activate();}
+            tooltip {enable/disable ADsynth} xywh {15 255 80 20} box PLASTIC_UP_BOX down_box DOWN_BOX color 222 selection_color 218 labelfont 1 labelsize 12
+            code1 {o->value(part->kit[0].Padenabled);}
+          }
+          Fl_Button adeditbutton {
+            label Edit
+            callback {showparameters(0,0);}
+            xywh {15 281 80 34} box PLASTIC_UP_BOX color 222 selection_color 220 labelfont 1 labelsize 18 align 128
+            code0 {if (part->kit[0].Padenabled==0) o->deactivate();}
+          }
+        }
+        Fl_Group {} {
+          label SUBsynth
+          xywh {105 245 100 80} box ENGRAVED_FRAME labelfont 1
+        } {
+          Fl_Check_Button subsynenabledcheck {
+            label Enabled
+            callback {int x=(int) o->value();
+part->kit[0].Psubenabled=x;
+if (x==0) subeditbutton->deactivate();
+     else subeditbutton->activate();}
+            tooltip {enable/disable SUBsynth} xywh {115 255 80 20} box PLASTIC_UP_BOX down_box DOWN_BOX color 222 selection_color 218 labelfont 1 labelsize 12
+            code1 {o->value(part->kit[0].Psubenabled);}
+          }
+          Fl_Button subeditbutton {
+            label Edit
+            callback {showparameters(0,1);}
+            xywh {115 280 80 35} box PLASTIC_UP_BOX color 222 selection_color 220 labelfont 1 labelsize 18 align 128
+            code0 {if (part->kit[0].Psubenabled==0) o->deactivate();}
+          }
+        }
+        Fl_Button {} {
+          label {Kit Edit}
+          callback {instrumentkitlist->show();}
+          xywh {310 245 80 35} box PLASTIC_UP_BOX color 238 selection_color 220 labelfont 1 align 128
+        }
+        Fl_Button {} {
+          label Effects
+          callback {partfx->show();}
+          xywh {310 290 80 35} box PLASTIC_UP_BOX color 230 labelfont 1 labelsize 16
+        }
+      }
+      Fl_Group {} {
+        xywh {0 5 395 215} box ENGRAVED_FRAME
+      } {
+        Fl_Input {} {
+          label {Author and Copyright}
+          callback {snprintf((char *)part->info.Pauthor,MAX_INFO_TEXT_SIZE,"%s",o->value());}
+          xywh {5 60 385 50} type Multiline color 26 labelsize 10 align 5
+          code0 {o->maximum_size(MAX_INFO_TEXT_SIZE);}
+          code1 {o->value((char *) &part->info.Pauthor);}
+        }
+        Fl_Input {} {
+          label Comments
+          callback {snprintf((char *)part->info.Pcomments,MAX_INFO_TEXT_SIZE,"%s",o->value());}
+          xywh {5 125 385 90} type Multiline color 26 labelsize 12 align 5
+          code0 {o->maximum_size(MAX_INFO_TEXT_SIZE);}
+          code1 {o->value((char *) &part->info.Pcomments);}
+        }
+        Fl_Choice {} {
+          label {Type:}
+          callback {part->info.Ptype=o->value();}
+          xywh {5 25 155 20} down_box BORDER_BOX labelfont 1 labelsize 12 align 5 textsize 11
+          code0 {o->value(part->info.Ptype);}
+        } {
+          menuitem {} {
+            label {--------------------------}
+            xywh {20 20 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label Piano
+            xywh {10 10 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label {Chromatic Percussion}
+            xywh {20 20 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label Organ
+            xywh {30 30 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label Guitar
+            xywh {40 40 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label Bass
+            xywh {50 50 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label {Solo Strings}
+            xywh {60 60 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label Ensemble
+            xywh {70 70 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label Brass
+            xywh {80 80 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label Reed
+            xywh {90 90 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label Pipe
+            xywh {100 100 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label {Synth Lead}
+            xywh {110 110 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label {Synth Pad}
+            xywh {120 120 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label {Synth Effects}
+            xywh {130 130 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label Ethnic
+            xywh {140 140 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label Percussive
+            xywh {150 150 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label {Sound Effects}
+            xywh {160 160 100 20} labelfont 1 labelsize 12
+          }
+        }
+      }
+      Fl_Button {} {
+        label Close
+        callback {instrumenteditwindow->hide();}
+        xywh {150 335 95 25} box THIN_UP_BOX
+      }
+    }
+  }
+  Function {PartUI(int x,int y, int w, int h, const char *label=0):Fl_Group(x,y,w,h,label)} {} {
+    code {part=NULL;
+adnoteui=NULL;
+subnoteui=NULL;
+padnoteui=NULL;
+lastkititem=-1;} {}
+  }
+  Function {init(Part *part_,Master *master_,int npart_,BankUI *bankui_)} {} {
+    code {bankui=bankui_;
+part=part_;
+npart=npart_;
+master=master_;
+ninseff=0;
+
+make_window();
+partgroup->position(this->parent()->x()+2,this->parent()->y()+2);
+partgroup->show();
+end();
+
+
+//if (config.ui.showinstrumentinfo!=0) instrumenteditwindow->show();
+
+int klimits[]={1,2,3,4,5,6,7,8,9,10,15,20,30,50,100,0};
+
+keylimitlist->add("OFF");
+int k=0;
+int val=-1;
+char tmp[10];
+while (klimits[k]!=0){
+	sprintf(tmp,"%d",klimits[k]);
+	keylimitlist->add(tmp);
+	if ((val==-1)){
+		if (klimits[k]>part->Pkeylimit) val=k;
+	};
+	k++;
+};
+
+if (val==-1) val=k;
+keylimitlist->value(val);} {}
+  }
+  Function {showparameters(int kititem,int engine)} {} {
+    code {if (engine==-1){//this is used if I want to clear the engine from the part
+   if (kititem==lastkititem) kititem=-1;
+         else kititem=lastkititem;
+};
+
+if (kititem!=lastkititem){
+    if (adnoteui!=NULL) delete (adnoteui);
+    if (subnoteui!=NULL) delete (subnoteui);   
+    if (padnoteui!=NULL) delete (padnoteui);
+    adnoteui=NULL;subnoteui=NULL;padnoteui=NULL;
+    lastkititem=kititem;
+
+    if (kititem>=NUM_KIT_ITEMS) return;//bad kit item
+    if (kititem<0) return;
+
+    if (part->kit[kititem].adpars!=NULL) 
+      adnoteui=new ADnoteUI(part->kit[kititem].adpars,master);
+
+    if (part->kit[kititem].subpars!=NULL) 
+       subnoteui=new SUBnoteUI(part->kit[kititem].subpars);
+
+    if (part->kit[kititem].padpars!=NULL) 
+      padnoteui=new PADnoteUI(part->kit[kititem].padpars,master);
+
+};
+
+
+
+if ((engine==0)&&(adnoteui!=NULL)) adnoteui->ADnoteGlobalParameters->show();
+if ((engine==1)&&(subnoteui!=NULL)) subnoteui->SUBparameters->show();
+if ((engine==2)&&(adnoteui!=NULL)) padnoteui->padnotewindow->show();} {}
+  }
+  Function {~PartUI()} {} {
+    code {if (adnoteui!=NULL) delete (adnoteui);
+if (subnoteui!=NULL) delete (subnoteui);
+if (padnoteui!=NULL) delete (padnoteui);
+
+partgroup->hide();
+//delete(partgroup);
+
+ctlwindow->hide();
+delete(ctlwindow);
+
+partfx->hide();
+delete(partfx);
+
+instrumentkitlist->hide();
+delete(instrumentkitlist);
+
+instrumenteditwindow->hide();
+delete(instrumenteditwindow);} {}
+  }
+  decl {Part *part;} {}
+  decl {Master *master;} {}
+  decl {BankUI *bankui;} {}
+  decl {ADnoteUI *adnoteui;} {}
+  decl {SUBnoteUI *subnoteui;} {}
+  decl {PADnoteUI *padnoteui;} {}
+  decl {PartSysEffSend *psyef[NUM_SYS_EFX];} {}
+  decl {int npart;} {}
+  decl {int ninseff;} {}
+  decl {int lastkititem;} {}
+  decl {PartKitItem *partkititem[NUM_KIT_ITEMS];} {}
+} 
diff --git a/muse_qt4_evolution/synti/zynaddsubfx/UI/PresetsUI.fl b/muse_qt4_evolution/synti/zynaddsubfx/UI/PresetsUI.fl
new file mode 100644
index 00000000..b527b9c4
--- /dev/null
+++ b/muse_qt4_evolution/synti/zynaddsubfx/UI/PresetsUI.fl
@@ -0,0 +1,200 @@
+# data file for the Fltk User Interface Designer (fluid)
+version 1.0105 
+header_name {.h} 
+code_name {.cc}
+decl {\#include <FL/fl_ask.H>} {public
+} 
+
+decl {\#include <stdio.h>} {public
+} 
+
+decl {\#include <stdlib.h>} {public
+} 
+
+decl {\#include "../Params/Presets.h"} {public
+} 
+
+class PresetsUI_ {} {
+  Function {refresh()} {open return_type {virtual void}
+  } {}
+  Function {~PresetsUI_()} {open return_type virtual
+  } {}
+} 
+
+class PresetsUI {} {
+  Function {PresetsUI()} {} {
+    code {p=NULL;
+make_window();} {}
+  }
+  Function {~PresetsUI()} {} {
+    code {copywin->hide();delete(copywin);
+pastewin->hide();delete(pastewin);} {}
+  }
+  Function {make_window()} {} {
+    Fl_Window copywin {
+      label {Copy to Clipboard/Preset}
+      xywh {190 173 265 430} type Double box PLASTIC_THIN_UP_BOX color 238 hide modal
+    } {
+      Fl_Browser copybrowse {
+        callback {int val=o->value();
+if (val!=0){
+   presetname->cut(0,presetname->maximum_size());
+   presetname->insert(o->text(val));
+};}
+        xywh {10 25 245 320} type Select
+      }
+      Fl_Button copypbutton {
+        label {Copy to Preset}
+        callback {const char *tmp=presetname->value();
+if (tmp!=NULL) {
+        if (strlen(tmp)>0){
+           p->copy(tmp);
+	   copywin->hide();
+        };
+};}
+        xywh {145 355 110 20} box THIN_UP_BOX
+      }
+      Fl_Button copybutton {
+        label {Copy to Clipboard}
+        callback {p->copy(NULL);
+copywin->hide();}
+        xywh {25 385 90 35} box THIN_UP_BOX align 192
+      }
+      Fl_Button {} {
+        label Cancel
+        callback {copywin->hide();}
+        xywh {160 385 80 35} box THIN_UP_BOX align 192
+      }
+      Fl_Box {} {
+        label {Type:}
+        xywh {10 5 40 15} labelsize 12 align 20
+      }
+      Fl_Box copytypetext {
+        xywh {50 5 205 15} box FLAT_BOX color 238 labelfont 1 labelsize 12 align 20
+      }
+      Fl_Input presetname {
+        callback {const char *tmp=o->value();
+if (tmp==NULL) tmp="";
+if (strlen(tmp)>0) {
+	copybutton->deactivate();
+	copypbutton->activate();
+} else {
+	copybutton->activate();
+	copypbutton->deactivate();
+};}
+        xywh {10 355 130 20} when 1
+      }
+    }
+    Fl_Window pastewin {
+      label {Paste from Clipboard/Preset}
+      xywh {463 173 265 430} type Double box PLASTIC_THIN_UP_BOX color 238 hide modal
+    } {
+      Fl_Browser pastebrowse {
+        callback {if (o->value()==0) {
+	pastepbutton->deactivate();
+	deletepbutton->deactivate();
+}else{
+	pastepbutton->activate();
+	deletepbutton->activate();
+};} selected
+        xywh {10 25 245 320} type Hold
+      }
+      Fl_Button pastepbutton {
+        label {Paste from Preset}
+        callback {int n=pastebrowse->value();
+if (n!=0) p->paste(n);
+pastewin->hide();
+pui->refresh();}
+        xywh {10 355 160 20} box THIN_UP_BOX
+      }
+      Fl_Button pastebutton {
+        label {Paste from Clipboard}
+        callback {p->paste(0);
+pastewin->hide();
+pui->refresh();}
+        xywh {25 385 90 35} box THIN_UP_BOX align 192
+      }
+      Fl_Button {} {
+        label Cancel
+        callback {pastewin->hide();}
+        xywh {160 385 80 35} box THIN_UP_BOX align 192
+      }
+      Fl_Box pastetypetext {
+        xywh {55 5 200 15} box FLAT_BOX color 238 labelfont 1 labelsize 12 align 20
+      }
+      Fl_Box {} {
+        label {Type:}
+        xywh {15 5 40 15} labelsize 12 align 20
+      }
+      Fl_Button deletepbutton {
+        label Delete
+        callback {int n=pastebrowse->value();
+if (n!=0) p->deletepreset(n);
+rescan();}
+        xywh {180 355 75 20} box THIN_UP_BOX
+      }
+    }
+  }
+  Function {copy(Presets *p)} {} {
+    code {copybutton->activate();
+copypbutton->deactivate();
+
+
+this->p=p;
+this->pui=NULL;
+bool but=(Fl::event_button()!=FL_LEFT_MOUSE);
+presetname->cut(0,presetname->maximum_size());
+
+if (but) p->copy(NULL);
+   else {
+        rescan();
+	copytypetext->label(&p->type[1]);
+	copywin->show();
+   };} {}
+  }
+  Function {paste(Presets *p,PresetsUI_ *pui)} {} {
+    code {this->p=p;
+this->pui=pui;
+bool but=(Fl::event_button()!=FL_LEFT_MOUSE);
+pastepbutton->deactivate();
+deletepbutton->deactivate();
+
+if (but) {
+	p->paste(0);
+	pui->refresh();
+} else {
+        rescan();
+	pastetypetext->label(&p->type[1]);
+	if (p->checkclipboardtype()) pastebutton->activate();
+		else pastebutton->deactivate();
+	pastewin->show();
+   };} {}
+  }
+  Function {copy(Presets *p,int n)} {} {
+    code {p->setelement(n);
+copy(p);} {}
+  }
+  Function {paste(Presets *p,PresetsUI_ *pui,int n)} {} {
+    code {p->setelement(n);
+paste(p,pui);} {}
+  }
+  Function {rescan()} {} {
+    code {copybrowse->clear();
+pastebrowse->clear();
+p->rescanforpresets();
+
+for (int i=0;i<MAX_PRESETS;i++){
+   char *name=presetsstore.presets[i].name;
+   if (name==NULL) break;
+   copybrowse->add(name);
+   pastebrowse->add(name);
+};} {}
+  }
+  decl {Presets *p;} {public
+  }
+  decl {PresetsUI_ *pui;} {public
+  }
+} 
+
+decl {PresetsUI *presetsui;} {public
+} 
diff --git a/muse_qt4_evolution/synti/zynaddsubfx/UI/ResonanceUI.fl b/muse_qt4_evolution/synti/zynaddsubfx/UI/ResonanceUI.fl
new file mode 100644
index 00000000..b9171a49
--- /dev/null
+++ b/muse_qt4_evolution/synti/zynaddsubfx/UI/ResonanceUI.fl
@@ -0,0 +1,392 @@
+# data file for the Fltk User Interface Designer (fluid)
+version 1.0106 
+header_name {.h} 
+code_name {.cc}
+decl {//Copyright (c) 2002-2005 Nasca Octavian Paul} {} 
+
+decl {//License: GNU GPL version 2} {} 
+
+decl {\#include <FL/Fl_Box.H>} {public
+} 
+
+decl {\#include <FL/fl_draw.H>} {public
+} 
+
+decl {\#include <FL/Fl_Value_Output.H>} {public
+} 
+
+decl {\#include <math.h>} {} 
+
+decl {\#include <stdio.h>} {} 
+
+decl {\#include <stdlib.h>} {} 
+
+decl {\#include <string.h>} {} 
+
+decl {\#include "../Synth/Resonance.h"} {public
+} 
+
+decl {\#include "WidgetPDial.h"} {public
+} 
+
+decl {\#include "PresetsUI.h"} {public
+} 
+
+class ResonanceGraph {: {public Fl_Box}
+} {
+  Function {ResonanceGraph(int x,int y, int w, int h, const char *label=0):Fl_Box(x,y,w,h,label)} {} {
+    code {respar=NULL;
+cbwidget=NULL;
+applybutton=NULL;} {}
+  }
+  Function {init(Resonance *respar_,Fl_Value_Output *khzvalue_,Fl_Value_Output *dbvalue_)} {} {
+    code {respar=respar_;
+khzvalue=khzvalue_;
+dbvalue=dbvalue_;
+oldx=-1;
+khzval=-1;} {}
+  }
+  Function {draw_freq_line(REALTYPE freq,int type)} {} {
+    code {REALTYPE freqx=respar->getfreqpos(freq);
+switch(type){
+  case 0:fl_line_style(FL_SOLID);break;
+  case 1:fl_line_style(FL_DOT);break;
+  case 2:fl_line_style(FL_DASH);break;
+}; 
+
+
+if ((freqx>0.0)&&(freqx<1.0))
+   fl_line(x()+(int) (freqx*w()),y(),
+   x()+(int) (freqx*w()),y()+h());} {}
+  }
+  Function {draw()} {} {
+    code {int ox=x(),oy=y(),lx=w(),ly=h(),i,ix,iy,oiy;
+REALTYPE freqx;
+
+fl_color(FL_BLACK);
+fl_rectf(ox,oy,lx,ly);
+
+
+//draw the lines
+fl_color(FL_GRAY);
+
+fl_line_style(FL_SOLID);
+fl_line(ox+2,oy+ly/2,ox+lx-2,oy+ly/2);
+
+freqx=respar->getfreqpos(1000.0);
+if ((freqx>0.0)&&(freqx<1.0))
+   fl_line(ox+(int) (freqx*lx),oy,
+    ox+(int) (freqx*lx),oy+ly);
+
+for (i=1;i<10;i++){
+   if(i==1){
+     draw_freq_line(i*100.0,0);
+     draw_freq_line(i*1000.0,0);
+   }else 
+    if (i==5){
+      draw_freq_line(i*100.0,2);
+      draw_freq_line(i*1000.0,2);
+    }else{
+      draw_freq_line(i*100.0,1);
+      draw_freq_line(i*1000.0,1);
+    };
+};
+
+draw_freq_line(10000.0,0);
+draw_freq_line(20000.0,1);
+
+fl_line_style(FL_DOT);
+int GY=10;if (ly<GY*3) GY=-1;
+for (i=1;i<GY;i++){
+   int tmp=(int)(ly/(REALTYPE)GY*i);
+   fl_line(ox+2,oy+tmp,ox+lx-2,oy+tmp);
+};
+
+
+
+//draw the data
+fl_color(FL_RED);
+fl_line_style(FL_SOLID);
+oiy=(int)(respar->Prespoints[0]/128.0*ly);
+for (i=1;i<N_RES_POINTS;i++){
+   ix=(int)(i*1.0/N_RES_POINTS*lx);
+   iy=(int)(respar->Prespoints[i]/128.0*ly);
+   fl_line(ox+ix-1,oy+ly-oiy,ox+ix,oy+ly-iy);
+   oiy=iy;
+};} {}
+  }
+  Function {handle(int event)} {return_type int
+  } {
+    code {int x_=Fl::event_x()-x();
+int y_=Fl::event_y()-y();
+if ( (x_>=0)&&(x_<w()) && (y_>=0)&&(y_<h())){
+   khzvalue->value(respar->getfreqx(x_*1.0/w())/1000.0);
+   dbvalue->value((1.0-y_*2.0/h())*respar->PmaxdB);
+};
+
+if ((event==FL_PUSH)||(event==FL_DRAG)){
+  int leftbutton=1;
+  if (Fl::event_button()==FL_RIGHT_MOUSE) leftbutton=0;
+  if (x_<0) x_=0;if (y_<0) y_=0;
+  if (x_>=w()) x_=w();if (y_>=h()-1) y_=h()-1;
+
+  if ((oldx<0)||(oldx==x_)){
+    int sn=(int)(x_*1.0/w()*N_RES_POINTS);
+    int sp=127-(int)(y_*1.0/h()*127);
+    if (leftbutton!=0) respar->setpoint(sn,sp);
+        else respar->setpoint(sn,64);
+  } else {
+    int x1=oldx;
+    int x2=x_;
+    int y1=oldy;
+    int y2=y_;
+    if (oldx>x_){
+      x1=x_;y1=y_;
+      x2=oldx;y2=oldy;
+    };
+   for (int i=0;i<x2-x1;i++){
+      int sn=(int)((i+x1)*1.0/w()*N_RES_POINTS);
+      REALTYPE yy=(y2-y1)*1.0/(x2-x1)*i;
+      int sp=127-(int)((y1+yy)/h()*127);
+      if (leftbutton!=0) respar->setpoint(sn,sp);
+         else respar->setpoint(sn,64);
+    };
+  };
+
+  oldx=x_;oldy=y_;
+  redraw();
+};
+
+if (event==FL_RELEASE) {
+	oldx=-1;
+	if (cbwidget!=NULL) {
+		cbwidget->do_callback();
+		if (applybutton!=NULL) {
+			applybutton->color(FL_RED);
+			applybutton->redraw();
+
+		};
+	};
+};
+
+return(1);} {selected
+    }
+  }
+  Function {setcbwidget(Fl_Widget *cbwidget,Fl_Widget *applybutton)} {} {
+    code {this->cbwidget=cbwidget;
+this->applybutton=applybutton;} {}
+  }
+  decl {Fl_Value_Output *khzvalue;} {}
+  decl {Fl_Value_Output *dbvalue;} {}
+  decl {Resonance *respar;} {}
+  decl {int oldx,oldy;} {}
+  decl {REALTYPE khzval;} {public
+  }
+  decl {Fl_Widget *cbwidget,*applybutton;} {}
+} 
+
+class ResonanceUI {: PresetsUI_
+} {
+  Function {make_window()} {} {
+    Fl_Window resonancewindow {
+      label Resonance
+      xywh {45 259 780 305} type Double visible
+    } {
+      Fl_Value_Output khzvalue {
+        label kHz
+        xywh {415 264 45 18} align 8 minimum 0.001 maximum 48 step 0.01 textfont 1
+        code0 {//this widget must be before the calling widgets}
+      }
+      Fl_Value_Output dbvalue {
+        label dB
+        xywh {415 282 45 18} align 8 minimum -150 maximum 150 step 0.1 textfont 1
+        code0 {//this widget must be before the calling widgets}
+      }
+      Fl_Group {} {
+        xywh {6 5 768 256} box BORDER_BOX
+        code0 {rg=new ResonanceGraph(o->x(),o->y(),o->w(),o->h(),"");}
+        code1 {rg->init(respar,khzvalue,dbvalue);}
+        code2 {rg->show();}
+      } {}
+      Fl_Button {} {
+        label Close
+        callback {resonancewindow->hide();}
+        xywh {690 283 84 17} box THIN_UP_BOX
+      }
+      Fl_Button {} {
+        label Zero
+        callback {for (int i=0;i<N_RES_POINTS;i++) 
+   respar->setpoint(i,64);
+resonancewindow->redraw();
+redrawPADnoteApply();}
+        tooltip {Clear the resonance function} xywh {491 264 66 15} box THIN_UP_BOX labelfont 1
+      }
+      Fl_Button {} {
+        label Smooth
+        callback {respar->smooth();
+resonancewindow->redraw();
+redrawPADnoteApply();}
+        tooltip {Smooth the resonance function} xywh {491 282 66 18} box THIN_UP_BOX labelfont 1
+      }
+      Fl_Check_Button enabled {
+        label Enable
+        callback {respar->Penabled=(int) o->value();
+redrawPADnoteApply();}
+        xywh {6 270 78 27} box THIN_UP_BOX down_box DOWN_BOX
+        code0 {o->value(respar->Penabled);}
+      }
+      Fl_Roller maxdb {
+        callback {maxdbvo->value(o->value());
+respar->PmaxdB=(int) o->value();
+redrawPADnoteApply();}
+        xywh {90 282 84 15} type Horizontal minimum 1 maximum 90 step 1 value 30
+      }
+      Fl_Value_Output maxdbvo {
+        label {Max.}
+        callback {o->value(respar->PmaxdB);}
+        tooltip {The Maximum amplitude (dB)} xywh {126 264 24 18} minimum 1 maximum 127 step 1 value 30 textfont 1
+        code0 {o->value(respar->PmaxdB);}
+      }
+      Fl_Box {} {
+        label dB
+        xywh {150 264 24 18}
+      }
+      Fl_Value_Output centerfreqvo {
+        label {C.f.}
+        callback {o->value(respar->getcenterfreq()/1000.0);}
+        tooltip {Center Frequency (kHz)} xywh {210 264 33 18} when 3 minimum 1 maximum 10 step 0.01 value 1 textfont 1
+        code0 {o->value(respar->getcenterfreq()/1000.0);}
+      }
+      Fl_Value_Output octavesfreqvo {
+        label {Oct.}
+        callback {o->value(respar->getoctavesfreq());}
+        tooltip {No. of octaves} xywh {210 282 33 18} when 3 minimum 1 maximum 127 step 1 value 30 textfont 1
+        code0 {o->value(respar->getoctavesfreq());}
+      }
+      Fl_Button {} {
+        label RND2
+        callback {respar->randomize(1);
+resonancewindow->redraw();
+redrawPADnoteApply();}
+        tooltip {Randomize the resonance function} xywh {566 276 42 12} box THIN_UP_BOX labelfont 1 labelsize 10
+      }
+      Fl_Button {} {
+        label RND1
+        callback {respar->randomize(0);
+resonancewindow->redraw();
+redrawPADnoteApply();}
+        tooltip {Randomize the resonance function} xywh {566 264 42 12} box THIN_UP_BOX labelfont 1 labelsize 10
+      }
+      Fl_Button {} {
+        label RND3
+        callback {respar->randomize(2);
+resonancewindow->redraw();
+redrawPADnoteApply();}
+        tooltip {Randomize the resonance function} xywh {566 288 42 12} box THIN_UP_BOX labelfont 1 labelsize 10
+      }
+      Fl_Check_Button p1st {
+        label {P.1st}
+        callback {respar->Pprotectthefundamental=(int) o->value();
+redrawPADnoteApply();}
+        tooltip {Protect the fundamental frequency (do not damp the first harmonic)} xywh {365 285 45 15} down_box DOWN_BOX labelsize 10
+        code0 {o->value(respar->Pprotectthefundamental);}
+      }
+      Fl_Button {} {
+        label InterpP
+        callback {int type;
+if (Fl::event_button()==FL_LEFT_MOUSE) type=0;
+       else type=1;
+respar->interpolatepeaks(type);
+resonancewindow->redraw();
+redrawPADnoteApply();}
+        tooltip {Interpolate the peaks} xywh {365 265 46 15} box THIN_UP_BOX labelfont 1 labelsize 10
+      }
+      Fl_Dial centerfreq {
+        label {C.f.}
+        callback {respar->Pcenterfreq=(int)o->value();
+centerfreqvo->do_callback();
+rg->redraw();
+redrawPADnoteApply();}
+        xywh {245 265 30 30} box ROUND_UP_BOX labelsize 10 maximum 127 step 1
+        code0 {o->value(respar->Pcenterfreq);}
+        class WidgetPDial
+      }
+      Fl_Dial octavesfreq {
+        label {Oct.}
+        callback {respar->Poctavesfreq=(int)o->value();
+octavesfreqvo->do_callback();
+rg->redraw();
+redrawPADnoteApply();}
+        xywh {280 265 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+        code0 {o->value(respar->Poctavesfreq);}
+        class WidgetPDial
+      }
+      Fl_Button {} {
+        label C
+        callback {presetsui->copy(respar);}
+        xywh {625 275 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
+      }
+      Fl_Button {} {
+        label P
+        callback {presetsui->paste(respar,this);}
+        xywh {655 275 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
+      }
+      Fl_Button applybutton {
+        label Apply
+        callback {applybutton->color(FL_GRAY);
+applybutton->redraw();
+if (cbapplywidget!=NULL) {
+	cbapplywidget->do_callback();
+	cbapplywidget->color(FL_GRAY);
+	cbapplywidget->redraw();
+};}
+        xywh {690 265 85 15} box THIN_UP_BOX labelfont 1 labelsize 12
+      }
+    }
+  }
+  Function {ResonanceUI(Resonance *respar_)} {} {
+    code {respar=respar_;
+cbwidget=NULL;
+cbapplywidget=NULL;
+make_window();
+applybutton->hide();} {}
+  }
+  Function {~ResonanceUI()} {} {
+    code {resonancewindow->hide();} {}
+  }
+  Function {redrawPADnoteApply()} {} {
+    code {if (cbwidget!=NULL) {
+	cbwidget->do_callback();
+	applybutton->color(FL_RED);
+	applybutton->redraw();
+};} {}
+  }
+  Function {setcbwidget(Fl_Widget *cbwidget,Fl_Widget *cbapplywidget)} {} {
+    code {this->cbwidget=cbwidget;
+this->cbapplywidget=cbapplywidget;
+rg->setcbwidget(cbwidget,applybutton);
+applybutton->show();} {}
+  }
+  Function {refresh()} {} {
+    code {redrawPADnoteApply();
+
+enabled->value(respar->Penabled);
+
+maxdb->value(respar->PmaxdB);
+maxdbvo->value(respar->PmaxdB);
+
+centerfreqvo->value(respar->getcenterfreq()/1000.0);
+octavesfreqvo->value(respar->getoctavesfreq());
+
+centerfreq->value(respar->Pcenterfreq);
+octavesfreq->value(respar->Poctavesfreq);
+
+p1st->value(respar->Pprotectthefundamental);
+
+rg->redraw();} {}
+  }
+  decl {Resonance *respar;} {public
+  }
+  decl {ResonanceGraph *rg;} {}
+  decl {Fl_Widget *cbwidget,*cbapplywidget;} {}
+} 
diff --git a/muse_qt4_evolution/synti/zynaddsubfx/UI/SUBnoteUI.fl b/muse_qt4_evolution/synti/zynaddsubfx/UI/SUBnoteUI.fl
new file mode 100644
index 00000000..fc915ae3
--- /dev/null
+++ b/muse_qt4_evolution/synti/zynaddsubfx/UI/SUBnoteUI.fl
@@ -0,0 +1,449 @@
+# data file for the Fltk User Interface Designer (fluid)
+version 1.0105 
+header_name {.h} 
+code_name {.cc}
+decl {//Copyright (c) 2002-2005 Nasca Octavian Paul} {} 
+
+decl {//License: GNU GPL version 2} {} 
+
+decl {\#include <stdlib.h>} {public
+} 
+
+decl {\#include <stdio.h>} {public
+} 
+
+decl {\#include <string.h>} {public
+} 
+
+decl {\#include "../globals.h"} {public
+} 
+
+decl {\#include "WidgetPDial.h"} {public
+} 
+
+decl {\#include "EnvelopeUI.h"} {public
+} 
+
+decl {\#include "FilterUI.h"} {public
+} 
+
+decl {\#include "../Misc/Util.h"} {public
+} 
+
+decl {\#include "../Params/SUBnoteParameters.h"} {public
+} 
+
+decl {\#include "PresetsUI.h"} {public
+} 
+
+class SUBnoteharmonic {: {public Fl_Group}
+} {
+  Function {make_window()} {private
+  } {
+    Fl_Window harmonic {
+      xywh {329 403 90 225} type Double hide
+      class Fl_Group
+    } {
+      Fl_Slider mag {
+        callback {int x=0;
+if (Fl::event_button1()) x=127-(int)o->value();
+   else o->value(127-x);
+pars->Phmag[n]=x;
+if (pars->Phmag[n]==0) o->selection_color(0);
+    else o->selection_color(222);}
+        tooltip {harmonic's magnitude} xywh {0 15 10 115} type {Vert Knob} box FLAT_BOX selection_color 222 labelcolor 0 maximum 127 step 1 value 127
+        code0 {o->value(127-pars->Phmag[n]);}
+        code1 {if (pars->Phmag[n]==0) o->selection_color(0);}
+      }
+      Fl_Slider bw {
+        callback {int x=64;
+if (Fl::event_button1()) x=127-(int)o->value();
+   else o->value(x);
+pars->Phrelbw[n]=x;}
+        tooltip {harmonic's bandwidth} xywh {0 135 10 75} type {Vert Knob} box FLAT_BOX selection_color 222 maximum 127 step 1 value 64
+        code0 {o->value(127-pars->Phrelbw[n]);}
+      }
+      Fl_Box {} {
+        xywh {10 170 5 5} box FLAT_BOX color 45
+        code0 {if (n+1==MAX_SUB_HARMONICS) o->hide();}
+      }
+      Fl_Box {} {
+        label 01
+        xywh {0 210 10 15} labelfont 1 labelsize 9 align 20
+        code0 {char tmp[10];snprintf(tmp,10,"%d",n+1);o->label(strdup(tmp));}
+      }
+      Fl_Box {} {
+        label 01
+        xywh {0 0 10 15} labelfont 1 labelsize 9 align 20
+        code0 {char tmp[10];snprintf(tmp,10,"%d",n+1);o->label(strdup(tmp));}
+      }
+    }
+  }
+  Function {SUBnoteharmonic(int x,int y, int w, int h, const char *label=0):Fl_Group(x,y,w,h,label)} {} {
+    code {n=0;} {}
+  }
+  Function {init(SUBnoteParameters *pars_,int n_)} {} {
+    code {pars=pars_;
+n=n_;
+make_window();
+harmonic->show();
+end();} {}
+  }
+  Function {refresh()} {} {
+    code {mag->value(127-pars->Phmag[n]);
+if (pars->Phmag[n]==0) mag->selection_color(0);
+bw->value(127-pars->Phrelbw[n]);} {selected
+    }
+  }
+  Function {~SUBnoteharmonic()} {} {
+    code {harmonic->hide();
+hide();
+//delete(harmonic);} {}
+  }
+  decl {SUBnoteParameters *pars;} {}
+  decl {int n;} {}
+} 
+
+class SUBnoteUI {: {public PresetsUI_}
+} {
+  Function {make_window()} {} {
+    Fl_Window SUBparameters {
+      label {SUBsynth Parameters}
+      xywh {26 214 735 390} type Double hide
+    } {
+      Fl_Scroll {} {
+        xywh {5 140 435 245} type HORIZONTAL box THIN_UP_BOX
+      } {
+        Fl_Pack harmonics {open
+          xywh {10 145 425 235} type HORIZONTAL
+          code0 {for (int i=0;i<MAX_SUB_HARMONICS;i++){h[i]=new SUBnoteharmonic(0,0,15,o->h(),"");h[i]->init(pars,i);}}
+        } {}
+      }
+      Fl_Button {} {
+        label Close
+        callback {SUBparameters->hide();}
+        xywh {625 365 105 20} box THIN_UP_BOX labelfont 1 labelsize 12
+      }
+      Fl_Group {} {
+        label AMPLITUDE
+        xywh {5 5 215 135} box THIN_UP_FRAME labeltype EMBOSSED_LABEL labelfont 1 align 17
+      } {
+        Fl_Value_Slider vol {
+          label Vol
+          callback {pars->PVolume=(int)o->value();}
+          tooltip Volume xywh {10 25 140 15} type {Horz Knob} box FLAT_BOX labelsize 12 align 8 maximum 127 step 1
+          code0 {o->value(pars->PVolume);}
+        }
+        Fl_Value_Slider vsns {
+          label {V.Sns}
+          callback {pars->PAmpVelocityScaleFunction=(int) o->value();}
+          tooltip {Velocity Sensing Function (rightmost to disable)} xywh {10 45 140 15} type {Horz Knob} box FLAT_BOX labelsize 12 align 8 maximum 127 step 1
+          code0 {o->value(pars->PAmpVelocityScaleFunction);}
+        }
+        Fl_Dial pan {
+          label Pan
+          callback {pars->PPanning=(int) o->value();}
+          tooltip {Panning (leftmost is Random)} xywh {185 20 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
+          code0 {o->value(pars->PPanning);}
+          class WidgetPDial
+        }
+        Fl_Group ampenv {
+          label {SUBsynth - Amplitude Envelope} open
+          xywh {10 65 205 70} box FLAT_BOX color 51 align 144
+          code0 {o->init(pars->AmpEnvelope);}
+          class EnvelopeUI
+        } {}
+      }
+      Fl_Group {} {
+        xywh {495 325 235 35} box THIN_UP_FRAME
+      } {
+        Fl_Counter filterstages {
+          label {Filter Stages}
+          callback {pars->Pnumstages=(int) o->value();}
+          tooltip {How many times the noise is filtered} xywh {515 340 45 15} type Simple labelfont 1 labelsize 10 align 1 minimum 1 maximum 5 step 1 textsize 10
+          code0 {o->value(pars->Pnumstages);}
+        }
+        Fl_Choice magtype {
+          label {Mag.Type}
+          callback {pars->Phmagtype=(int) o->value();}
+          xywh {585 340 65 15} down_box BORDER_BOX labelfont 1 labelsize 10 align 1 textsize 12
+          code0 {o->value(pars->Phmagtype);}
+        } {
+          menuitem {} {
+            label Linear
+            xywh {20 20 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label {-40dB}
+            xywh {30 30 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label {-60dB}
+            xywh {40 40 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label {-80dB}
+            xywh {50 50 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label {-100dB}
+            xywh {60 60 100 20} labelfont 1 labelsize 12
+          }
+        }
+        Fl_Choice start {
+          label Start
+          callback {pars->Pstart=(int) o->value();} open
+          xywh {670 340 50 15} down_box BORDER_BOX labelfont 1 labelsize 10 align 1 textsize 12
+          code0 {o->value(pars->Pstart);}
+        } {
+          menuitem {} {
+            label Zero
+            xywh {30 30 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label RND
+            xywh {40 40 100 20} labelfont 1 labelsize 12
+          }
+          menuitem {} {
+            label {Max.}
+            xywh {50 50 100 20} labelfont 1 labelsize 12
+          }
+        }
+      }
+      Fl_Group freqsettingsui {
+        label FREQUENCY
+        xywh {440 5 290 135} box THIN_UP_FRAME labeltype EMBOSSED_LABEL labelfont 1 align 17
+      } {
+        Fl_Group freqenvelopegroup {
+          label {SUBsynth - Frequency Envelope} open
+          xywh {445 65 205 70} box FLAT_BOX color 51 align 144
+          code0 {o->init(pars->FreqEnvelope);}
+          code1 {if (pars->PFreqEnvelopeEnabled==0) o->deactivate();}
+          class EnvelopeUI
+        } {}
+        Fl_Check_Button freqee {
+          label Enabled
+          callback {pars->PFreqEnvelopeEnabled=o->value();
+if (o->value()==0) freqenvelopegroup->deactivate();
+    else freqenvelopegroup->activate();
+o->show();
+freqsettingsui->redraw();}
+          xywh {445 68 55 15} down_box DOWN_BOX labelfont 1 labelsize 10
+          code0 {o->value(pars->PFreqEnvelopeEnabled);}
+        }
+        Fl_Counter octave {
+          label Octave
+          callback {int k=(int) o->value();
+if (k<0) k+=16;
+pars->PCoarseDetune = k*1024+
+   pars->PCoarseDetune%1024;}
+          tooltip Octave xywh {670 50 45 15} type Simple labelsize 10 align 1 minimum -8 maximum 7 step 1 textfont 1 textsize 12
+          code0 {int k=pars->PCoarseDetune/1024;if (k>=8) k-=16;}
+          code2 {o->value(k);}
+        }
+        Fl_Counter coarsedet {
+          label {Coarse Det.}
+          callback {int k=(int) o->value();
+if (k<0) k+=1024;
+pars->PCoarseDetune = k+
+   (pars->PCoarseDetune/1024)*1024;}
+          tooltip {Coarse Detune} xywh {655 115 60 20} labelsize 11 align 1 minimum -64 maximum 63 step 1 textfont 1 textsize 12
+          code0 {int k=pars->PCoarseDetune%1024;if (k>=512) k-=1024;}
+          code2 {o->value(k);}
+          code3 {o->lstep(10);}
+        }
+        Fl_Slider detune {
+          callback {pars->PDetune=(int)o->value()+8192;
+detunevalueoutput->do_callback();}
+          tooltip {Fine Detune (cents)} xywh {495 25 230 15} type {Horz Knob} box FLAT_BOX minimum -8192 maximum 8191 step 1
+          code0 {o->value(pars->PDetune-8192);}
+        }
+        Fl_Value_Output detunevalueoutput {
+          label Detune
+          callback {o->value(getdetune(pars->PDetuneType,0,pars->PDetune));}
+          xywh {448 25 45 15} labelsize 10 align 5 minimum -5000 maximum 5000 step 0.01 textfont 1 textsize 10
+          code0 {o->value(getdetune(pars->PDetuneType,0,pars->PDetune));}
+        }
+        Fl_Check_Button hz440 {
+          label 440Hz
+          callback {int x=(int) o->value();
+pars->Pfixedfreq=x;
+if (x==0) fixedfreqetdial->deactivate();
+   else fixedfreqetdial->activate();}
+          tooltip {set the base frequency to 440Hz} xywh {555 45 50 15} down_box DOWN_BOX labelfont 1 labelsize 11
+          code0 {o->value(pars->Pfixedfreq);}
+        }
+        Fl_Dial fixedfreqetdial {
+          label {Eq.T.}
+          callback {pars->PfixedfreqET=(int) o->value();}
+          tooltip {How the frequency varies acording to the keyboard (leftmost for fixed frequency)} xywh {610 45 15 15} box ROUND_UP_BOX labelsize 10 align 8 maximum 127 step 1
+          code0 {o->value(pars->PfixedfreqET);}
+          code1 {if (pars->Pfixedfreq==0) o->deactivate();}
+          class WidgetPDial
+        }
+        Fl_Choice detunetype {
+          label {Detune Type}
+          callback {pars->PDetuneType=(int) o->value()+1;
+detunevalueoutput->do_callback();} open
+          xywh {655 85 70 15} down_box BORDER_BOX labelsize 10 align 5 textfont 1 textsize 10
+          code0 {o->add("L35cents");o->add("L10cents");o->add("E100cents");o->add("E1200cents");}
+          code1 {o->value(pars->PDetuneType-1);}
+        } {}
+      }
+      Fl_Check_Button stereo {
+        label Stereo
+        callback {pars->Pstereo=(int) o->value();}
+        xywh {440 325 55 35} box THIN_UP_BOX down_box DOWN_BOX labelfont 1 labelsize 10
+        code0 {o->value(pars->Pstereo);}
+      }
+      Fl_Button {} {
+        label Clear
+        callback {for (int i=0;i<MAX_SUB_HARMONICS;i++){
+    h[i]->mag->value(127);
+    pars->Phmag[i]=0;
+    h[i]->bw->value(64);
+    pars->Phrelbw[i]=64;
+};
+pars->Phmag[0]=127;
+h[0]->mag->value(0);
+SUBparameters->redraw();}
+        tooltip {Clear the harmonics} xywh {445 365 70 20} box THIN_UP_BOX labelfont 1 labelsize 12
+      }
+      Fl_Group bandwidthsettingsui {
+        label BANDWIDTH
+        xywh {220 5 220 135} box THIN_UP_FRAME labeltype EMBOSSED_LABEL labelfont 1 align 17
+      } {
+        Fl_Group bandwidthenvelopegroup {
+          label {SUBsynth - BandWidth Envelope} open
+          xywh {225 65 205 70} box FLAT_BOX color 51 align 144
+          code0 {o->init(pars->BandWidthEnvelope);}
+          code1 {if (pars->PBandWidthEnvelopeEnabled==0) o->deactivate();}
+          class EnvelopeUI
+        } {}
+        Fl_Check_Button bwee {
+          label Enabled
+          callback {pars->PBandWidthEnvelopeEnabled=o->value();
+if (o->value()==0) bandwidthenvelopegroup->deactivate();
+    else bandwidthenvelopegroup->activate();
+o->show();
+bandwidthsettingsui->redraw();}
+          xywh {225 67 55 15} down_box DOWN_BOX labelfont 1 labelsize 10
+          code0 {o->value(pars->PBandWidthEnvelopeEnabled);}
+        }
+        Fl_Value_Slider bandwidth {
+          label {Band Width}
+          callback {pars->Pbandwidth=(int) o->value();}
+          xywh {225 40 115 15} type {Horz Knob} box FLAT_BOX labelsize 10 align 1 maximum 127 step 1
+          code0 {o->value(pars->Pbandwidth);}
+        }
+        Fl_Value_Slider bwidthscale {
+          label {B.Width Scale}
+          callback {pars->Pbwscale=(int) o->value()+64;}
+          tooltip {How much I increase the BandWidth according to lower/higher harmonics} xywh {345 40 90 15} type {Horz Knob} box FLAT_BOX labelsize 10 align 1 minimum -64 maximum 63 step 1
+          code0 {o->value(pars->Pbwscale-64);}
+        }
+      }
+      Fl_Group globalfiltergroup {
+        label FILTER
+        xywh {440 140 290 185} box THIN_UP_FRAME labeltype EMBOSSED_LABEL labelfont 1 labelsize 16 align 17
+        code0 {if (pars->PGlobalFilterEnabled==0) o->deactivate();}
+      } {
+        Fl_Group filterenv {
+          label {SUBsynth - Filter Envelope} open
+          xywh {445 250 275 70} box FLAT_BOX color 51 align 144
+          code0 {o->init(pars->GlobalFilterEnvelope);}
+          class EnvelopeUI
+        } {}
+        Fl_Group filterui {
+          label {SUBsynthl - Filter} open
+          xywh {445 170 275 75} box FLAT_BOX color 50 align 144
+          code0 {o->init(pars->GlobalFilter,&pars->PGlobalFilterVelocityScale,&pars->PGlobalFilterVelocityScaleFunction);}
+          class FilterUI
+        } {}
+      }
+      Fl_Check_Button filtere {
+        label Enabled
+        callback {pars->PGlobalFilterEnabled=o->value();
+if (o->value()==0) globalfiltergroup->deactivate();
+    else globalfiltergroup->activate();
+o->show();
+globalfiltergroup->redraw();}
+        xywh {445 145 85 20} down_box DOWN_BOX labelfont 1 labelsize 12
+        code0 {o->value(pars->PGlobalFilterEnabled);}
+      }
+      Fl_Button {} {
+        label C
+        callback {presetsui->copy(pars);}
+        xywh {540 370 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
+      }
+      Fl_Button {} {
+        label P
+        callback {presetsui->paste(pars,this);}
+        xywh {570 370 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
+      }
+    }
+  }
+  Function {refresh()} {} {
+    code {for (int i=0;i<MAX_SUB_HARMONICS;i++) h[i]->refresh();
+vol->value(pars->PVolume);
+vsns->value(pars->PAmpVelocityScaleFunction);
+pan->value(pars->PPanning);
+
+
+bandwidth->value(pars->Pbandwidth);
+bwidthscale->value(pars->Pbwscale-64);
+bwee->value(pars->PBandWidthEnvelopeEnabled);
+if (pars->PBandWidthEnvelopeEnabled==0) bandwidthenvelopegroup->deactivate();
+    else bandwidthenvelopegroup->activate();
+bwee->show();
+bandwidthsettingsui->redraw();
+
+detunevalueoutput->value(getdetune(pars->PDetuneType,0,pars->PDetune));
+freqee->value(pars->PFreqEnvelopeEnabled);
+if (pars->PFreqEnvelopeEnabled==0) freqenvelopegroup->deactivate();
+    else freqenvelopegroup->activate();
+freqee->show();
+freqsettingsui->redraw();
+
+detune->value(pars->PDetune-8192);
+hz440->value(pars->Pfixedfreq);
+
+fixedfreqetdial->value(pars->PfixedfreqET);
+
+int k=pars->PCoarseDetune/1024;if (k>=8) k-=16;
+octave->value(k);
+
+detunetype->value(pars->PDetuneType-1);
+
+k=pars->PCoarseDetune%1024;if (k>=512) k-=1024;
+coarsedet->value(k);
+
+filtere->value(pars->PGlobalFilterEnabled);
+if (pars->PGlobalFilterEnabled==0) globalfiltergroup->deactivate();
+    else globalfiltergroup->activate();
+filtere->show();
+globalfiltergroup->redraw();
+
+stereo->value(pars->Pstereo);
+filterstages->value(pars->Pnumstages);
+magtype->value(pars->Phmagtype);
+start->value(pars->Pstart);
+
+ampenv->refresh();
+bandwidthenvelopegroup->refresh();
+freqenvelopegroup->refresh();
+filterui->refresh();
+filterenv->refresh();} {}
+  }
+  Function {SUBnoteUI(SUBnoteParameters *parameters)} {} {
+    code {pars=parameters;
+make_window();} {}
+  }
+  Function {~SUBnoteUI()} {} {
+    code {//for (int i=0;i<MAX_SUB_HARMONICS;i++) delete (h[i]);
+SUBparameters->hide();
+delete(SUBparameters);} {}
+  }
+  decl {SUBnoteParameters *pars;} {}
+  decl {SUBnoteharmonic *h[MAX_SUB_HARMONICS];} {}
+} 
diff --git a/muse_qt4_evolution/synti/zynaddsubfx/UI/SeqUI.fl b/muse_qt4_evolution/synti/zynaddsubfx/UI/SeqUI.fl
new file mode 100644
index 00000000..d30c6433
--- /dev/null
+++ b/muse_qt4_evolution/synti/zynaddsubfx/UI/SeqUI.fl
@@ -0,0 +1,73 @@
+# data file for the Fltk User Interface Designer (fluid)
+version 1.0105 
+header_name {.h} 
+code_name {.cc}
+decl {//Copyright (c) 2002-2005 Nasca Octavian Paul} {} 
+
+decl {//License: GNU GPL version 2} {} 
+
+decl {\#include "../globals.h"} {public
+} 
+
+decl {\#include "../Misc/Master.h"} {public
+} 
+
+decl {\#include "WidgetPDial.h"} {public
+} 
+
+class SeqUI {} {
+  Function {make_window()} {} {
+    Fl_Window seqwin {
+      label {Sequencer - ZynAddSubFX}
+      xywh {104 235 280 265} type Double hide
+    } {
+      Fl_Group {} {
+        label Player
+        xywh {120 20 100 65} box ENGRAVED_BOX labelfont 1
+      } {
+        Fl_Button playbutton {
+          label Play
+          callback {o->deactivate();
+stopbutton_play->activate();
+
+master->seq.startplay();}
+          tooltip {Start Playing} xywh {130 30 30 30} box DIAMOND_UP_BOX color 79 labelfont 1 labelsize 16 align 2
+        }
+        Fl_Button stopbutton_play {
+          label Stop
+          callback {o->deactivate();
+playbutton->activate();
+
+master->seq.stopplay();}
+          tooltip {Stop Playing} xywh {175 29 30 31} box THIN_UP_BOX color 4 labelfont 1 labelsize 16 align 2 deactivate
+        }
+      }
+      Fl_Button {} {
+        label {Open test.mid}
+        callback {master->seq.importmidifile("test.mid");}
+        xywh {20 25 75 55} align 128
+      }
+      Fl_Value_Slider {} {
+        label {Play speed}
+        callback {master->seq.setplayspeed((int) o->value());}
+        xywh {15 105 190 20} type {Horz Knob} minimum -128 maximum 128 step 1
+        code0 {o->value(master->seq.playspeed);}
+      }
+      Fl_Box {} {
+        label {This is not finished} selected
+        xywh {25 155 225 90} labelfont 1 labelsize 30 align 128
+      }
+    }
+  }
+  Function {SeqUI(Master *master_)} {open
+  } {
+    code {master=master_;
+
+make_window();} {}
+  }
+  decl {Master *master} {}
+  Function {show()} {open
+  } {
+    code {seqwin->show();} {}
+  }
+} 
diff --git a/muse_qt4_evolution/synti/zynaddsubfx/UI/VirKeyboard.fl b/muse_qt4_evolution/synti/zynaddsubfx/UI/VirKeyboard.fl
new file mode 100644
index 00000000..aed2c930
--- /dev/null
+++ b/muse_qt4_evolution/synti/zynaddsubfx/UI/VirKeyboard.fl
@@ -0,0 +1,400 @@
+# data file for the Fltk User Interface Designer (fluid)
+version 1.0106 
+header_name {.h} 
+code_name {.cc}
+decl {//Copyright (c) 2002-2005 Nasca Octavian Paul} {} 
+
+decl {//License: GNU GPL version 2} {} 
+
+decl {\#include <stdlib.h>} {public
+} 
+
+decl {\#include <FL/fl_draw.H>} {public
+} 
+
+decl {\#include <FL/Fl_Box.H>} {public
+} 
+
+decl {\#include "../globals.h"} {public
+} 
+
+decl {\#include "../Misc/Master.h"} {public
+} 
+
+decl {\#include "../Input/MidiIn.h"} {public
+} 
+
+decl {\#include "WidgetPDial.h"} {public
+} 
+
+decl {const int keyspos[12]={0,-1,1,-2,2,3,-4,4,-5,5,-6,6};} {} 
+
+decl {const int keysoct1qw[]={'q','2','w','3','e','r','5','t','6','y','7','u','i','9','o','0','p','[','=',']','\\\\',FL_Enter,0};} {} 
+
+decl {const int keysoct2qw[]={'z','s','x','d','c','v','g','b','h','n','j','m',',','l','.',';','/',0};} {} 
+
+decl {const int keysoct1dw[]={'\\'','2',',','3','.','p','5','y','6','f','7','g','c','9','r','0','l','/',']','=','\\\\',FL_Enter,0};} {} 
+
+decl {const int keysoct2dw[]={';','o','q','e','j','k','i','x','d','b','h','m','w','n','v','s','z',0};} {} 
+
+class VirKeys {: {public Fl_Box}
+} {
+  decl {static const int N_OCT=6;} {}
+  decl {static const int SIZE_WHITE=14;} {}
+  decl {static const int SIZE_BLACK=8;} {}
+  Function {VirKeys(int x,int y, int w, int h, const char *label=0):Fl_Box(x,y,w,h,label)} {} {
+    code {master=NULL;} {}
+  }
+  Function {init(Master *master_)} {} {
+    code {master=master_;
+for (int i=0;i<N_OCT*12+1;i++) pressed[i]=0;
+midich=0;
+midivel=100;
+midioct=2;
+
+keyoct1=3;
+keyoct2=2;
+rndvelocity=0;} {}
+  }
+  Function {draw()} {} {
+    code {int ox=x(),oy=y(),lx=w(),ly=h()-1,i;
+
+if (damage()!=1){
+ fl_color(250,240,230);
+ fl_rectf(ox,oy,lx,ly);
+
+ fl_color(FL_BLACK);
+ fl_line(ox,oy,ox+lx,oy);
+ fl_line(ox,oy+ly,ox+lx,oy+ly);
+ for (i=0;i<N_OCT*7+1;i++){
+   fl_line(ox+i*SIZE_WHITE,oy,ox+i*SIZE_WHITE,oy+ly);
+   int ik=i%7;
+   if ((ik==1)||(ik==2)||(ik==4)||(ik==5)||(ik==6)) 
+     fl_rectf(ox+i*SIZE_WHITE-SIZE_BLACK/2,oy,
+              SIZE_BLACK+1,ly*3/5);
+ };
+};
+
+
+for (i=0;i<N_OCT*12;i++){
+  // if (pressed[i]==0) continue;
+
+   int noct=i/12;
+   int kv=keyspos[i%12];
+
+   if (kv>=0){//white keys
+     if (pressed[i]==0) fl_color(250,240,230);
+        else fl_color(FL_BLUE);
+     fl_rectf(ox+(kv+7*noct)*SIZE_WHITE+3,oy+ly*3/5+2,
+       SIZE_WHITE-4,ly*2/5-3);
+   } else {//black keys
+     kv=keyspos[(i+1)%12];
+     if (pressed[i]==0) fl_color(FL_BLACK);
+        else fl_color(FL_BLUE);
+     fl_rectf(ox+(kv+7*noct)*SIZE_WHITE-SIZE_BLACK/2+2,oy+2,
+              SIZE_BLACK-3,ly*3/5-5);
+   };
+};} {}
+  }
+  Function {handle(int event)} {return_type int
+  } {
+    code {int i;
+int ly=h();
+int x_=Fl::event_x()-x();
+int y_=Fl::event_y()-y();
+if ( (x_<0)&&(x_>w()) && (y_<0)&&(y_>h())){
+  return(0);
+};
+
+
+if ((event==FL_PUSH)||(event==FL_DRAG)||(event==FL_RELEASE)){
+   int kpos=-1;
+  
+   if (y_>ly*3/5){//white keys
+       int pos=x_/SIZE_WHITE;
+       if (pos<0) return(1);
+       for (i=0;i<12;i++) {
+          if (pos%7==keyspos[i]) {
+             kpos=pos/7*12+i;
+             break;
+          };
+       };
+   } else {//black keys
+       int pos=(x_+SIZE_WHITE/2)/SIZE_WHITE;
+       if (pos<0) return(1);
+       for (i=1;i<12;i++) {
+          if (pos%7==-keyspos[i]) {
+             kpos=pos/7*12+i;
+             break;
+          };
+       };
+   };
+
+   if (((event==FL_PUSH)||(event==FL_DRAG))&&
+       (Fl::event_shift()==0)) {
+        presskey(kpos,1,1);
+   };
+
+   if ((event==FL_PUSH)&&(Fl::event_shift()!=0)) {
+       if (pressed[kpos]==0) presskey(kpos,0,1);
+          else relasekey(kpos,1);
+   };
+   if ((event==FL_RELEASE)&&(Fl::event_shift()==0))
+        relaseallkeys(1);
+   take_focus();
+};
+
+
+const int *keysoct1=keysoct1qw;
+const int *keysoct2=keysoct2qw;
+
+if (config.cfg.VirKeybLayout==2) {
+	keysoct1=keysoct1dw;
+	keysoct2=keysoct2dw;
+};
+
+if ((event==FL_KEYDOWN)||(event==FL_KEYUP)){
+   int key=Fl::event_key();
+   int kpos=-1;
+   for (i=0;keysoct1[i]!=0;i++) if (key==keysoct1[i]) kpos=i+12*keyoct1;
+   for (i=0;keysoct2[i]!=0;i++) if (key==keysoct2[i]) kpos=i+12*keyoct2;
+
+   if (kpos==-1) return(0);
+   if (event==FL_KEYDOWN) presskey(kpos,0,2);
+      else relasekey(kpos,2);
+};
+
+return(1);} {}
+  }
+  Function {presskey(int nk,int exclusive,int type)} {} {
+    code {if (nk>=N_OCT*12) return;
+if ((nk<0)&&(exclusive==0)) {
+  relaseallkeys(type);
+  return;
+};
+if (pressed[nk]!=0) return;//the key is already pressed
+
+if (exclusive!=0) relaseallkeys(type);
+pressed[nk]=type;
+
+damage(1);
+float vel=midivel;
+if (rndvelocity!=0){
+  vel=midivel*(127.0-rndvelocity)/127.0+RND*rndvelocity;
+};
+
+master->busy=true;
+ master->NoteOn(midich,nk+midioct*12,(int)vel);
+master->busy=false;} {}
+  }
+  Function {relasekey(int nk,int type)} {} {
+    code {if ((nk<0)||(nk>=N_OCT*12)) return;
+if (pressed[nk]==0) return;//the key is not pressed
+if ((type!=0)&&(pressed[nk]!=type)) return;
+
+pressed[nk]=0;
+
+
+damage(1);
+
+master->busy=true;
+ master->NoteOff(midich,nk+12*midioct);
+master->busy=false;} {}
+  }
+  Function {relaseallkeys(int type)} {} {
+    code {for (int i=0;i<N_OCT*12;i++) relasekey(i,type);} {}
+  }
+  decl {Master *master;} {}
+  decl {int pressed[N_OCT*12+1];} {}
+  decl {unsigned char midich;} {public
+  }
+  decl {unsigned char midivel;} {public
+  }
+  decl {char midioct,keyoct1,keyoct2;} {public
+  }
+  decl {unsigned char rndvelocity;} {public
+  }
+} 
+
+class VirKeyboard {selected
+} {
+  Function {make_window()} {} {
+    Fl_Window virkeyboardwindow {
+      label {Virtual Keyboard - ZynAddSubFX}
+      callback {relaseallkeys();
+virkeyboardwindow->hide();}
+      xywh {95 563 650 130} type Double hide
+    } {
+      Fl_Box virkeys {
+        label Keyboard
+        xywh {10 10 590 80} box FLAT_BOX color 17
+        code0 {o->init(master);}
+        class VirKeys
+      }
+      Fl_Counter {} {
+        label {"qwer.." Oct}
+        callback {relaseallkeys();
+virkeys->keyoct1=(int) o->value();
+virkeys->take_focus();}
+        tooltip {keys "q2w3er5t6y..." octave} xywh {380 95 45 15} type Simple labelsize 10 align 4 when 6 minimum 0 maximum 5 step 1 textfont 1 textsize 10
+        code0 {o->value(virkeys->keyoct1);}
+      }
+      Fl_Counter {} {
+        label {"zxcv.." Oct}
+        callback {relaseallkeys();
+virkeys->keyoct2=(int) o->value();
+virkeys->take_focus();}
+        tooltip {keys "zsxdcvgbh..." octave} xywh {380 110 45 15} type Simple labelsize 10 align 4 when 6 minimum 0 maximum 5 step 1 textfont 1 textsize 10
+        code0 {o->value(virkeys->keyoct2);}
+      }
+      Fl_Value_Slider {} {
+        label Vel
+        callback {virkeys->midivel=(int) o->value();
+virkeys->take_focus();}
+        tooltip Velocity xywh {95 105 100 15} type {Horz Knob} box FLAT_BOX labelsize 10 align 5 minimum 1 maximum 127 step 1
+        code0 {o->value(virkeys->midivel);}
+      }
+      Fl_Counter {} {
+        label {Oct.}
+        callback {relaseallkeys();
+virkeys->midioct=(int) o->value();
+virkeys->take_focus();}
+        tooltip {Midi Octave} xywh {255 100 55 20} type Simple labelsize 12 align 4 when 6 minimum 0 maximum 5 step 1 textfont 1 textsize 12
+        code0 {o->value(virkeys->midioct);}
+      }
+      Fl_Button {} {
+        label Close
+        callback {relaseallkeys();
+virkeyboardwindow->hide();}
+        xywh {545 105 55 20} box THIN_UP_BOX
+      }
+      Fl_Value_Slider {} {
+        label Cval
+        callback {int ctl=midictl;
+
+master->busy=true;
+ master->SetController(virkeys->midich,ctl,(int) o->value());
+master->busy=false;
+virkeys->take_focus();}
+        tooltip {Controller value} xywh {605 10 15 115} type {Vert Fill} box ENGRAVED_BOX selection_color 229 labelsize 8 align 5 minimum 127 maximum 0 step 1 value 64 textsize 7
+      }
+      Fl_Choice {} {
+        label Controller
+        callback {switch((int) o->value()+1){
+   case 1: midictl=C_modwheel; break;
+   case 2: midictl=C_volume; break;
+   case 3: midictl=C_panning; break;
+   case 4: midictl=C_expression; break;
+   case 5: midictl=C_sustain; break;
+   case 6: midictl=C_portamento; break;
+   case 7: midictl=C_filterq; break;
+   case 8: midictl=C_filtercutoff; break;
+   case 9: midictl=C_bandwidth; break;
+   case 10: midictl=C_fmamp; break;
+   case 11: midictl=C_resonance_center; break;
+   case 12: midictl=C_resonance_bandwidth; break;
+   default: midictl=C_NULL; break;
+
+};
+
+
+
+virkeys->take_focus();}
+        xywh {435 105 100 15} down_box BORDER_BOX labelsize 10 align 5 when 6 textfont 1 textsize 10
+        code0 {midictl=C_filtercutoff;o->value(7);}
+      } {
+        menuitem {} {
+          label {01: Mod.Wheel}
+          xywh {0 0 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label {07: Volume}
+          xywh {10 10 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label {10: Panning}
+          xywh {20 20 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label {11: Expression}
+          xywh {30 30 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label {64: Sustain}
+          xywh {40 40 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label {65: Portamento}
+          xywh {50 50 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label {71: Filter Q}
+          xywh {60 60 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label {74: Filter Freq.}
+          xywh {70 70 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label {75: Bandwidth}
+          xywh {80 80 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label {76: FM Gain}
+          xywh {90 90 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label {77: Res. c. freq}
+          xywh {100 100 100 20} labelfont 1 labelsize 10
+        }
+        menuitem {} {
+          label {78: Res. bw.}
+          xywh {110 110 100 20} labelfont 1 labelsize 10
+        }
+      }
+      Fl_Roller pitchwheelroller {
+        label Pwh
+        callback {master->lock();
+ master->SetController(virkeys->midich,C_pitchwheel,-(int) o->value());
+master->unlock();
+virkeys->take_focus();}
+        tooltip {Pitch Wheel} xywh {625 10 20 95} box PLASTIC_UP_BOX labelsize 8 align 1 when 3 minimum -8192 maximum 8192 step 64
+      }
+      Fl_Button {} {
+        label R
+        callback {pitchwheelroller->value(0);
+pitchwheelroller->do_callback();}
+        tooltip {Reset Pitch Bend} xywh {625 110 20 15} box THIN_UP_BOX labelfont 1
+      }
+      Fl_Dial {} {
+        label Vrnd
+        callback {virkeys->rndvelocity=(int) o->value();}
+        tooltip {Velocity Randomness} xywh {205 105 20 20} box ROUND_UP_BOX labelsize 10 align 129 maximum 127 step 1
+        code0 {o->value(virkeys->rndvelocity);}
+        class WidgetPDial
+      }
+      Fl_Choice partrcv {
+        label {MIDI Ch.}
+        callback {relaseallkeys();
+virkeys->midich=(int) o->value();
+virkeys->take_focus();} open
+        tooltip {Send to Midi Channel} xywh {20 105 65 20} down_box BORDER_BOX labelsize 10 align 5 textfont 1 textsize 10
+        code0 {char nrstr[10]; for(int i=0;i<NUM_MIDI_CHANNELS;i++){sprintf(nrstr,"Chn%d",i+1);if (i!=9) o->add(nrstr); else o->add("Drum10");};}
+        code1 {o->value(virkeys->midich);}
+      } {}
+    }
+  }
+  Function {VirKeyboard(Master *master_)} {} {
+    code {master=master_;
+midictl=75;
+make_window();} {}
+  }
+  Function {show()} {} {
+    code {virkeyboardwindow->show();} {}
+  }
+  Function {relaseallkeys()} {} {
+    code {virkeys->relaseallkeys(0);} {}
+  }
+  decl {Master *master;} {}
+  decl {int midictl;} {}
+} 
diff --git a/muse_qt4_evolution/synti/zynaddsubfx/UI/WidgetPDial.fl b/muse_qt4_evolution/synti/zynaddsubfx/UI/WidgetPDial.fl
new file mode 100644
index 00000000..8d8073bd
--- /dev/null
+++ b/muse_qt4_evolution/synti/zynaddsubfx/UI/WidgetPDial.fl
@@ -0,0 +1,131 @@
+# data file for the Fltk User Interface Designer (fluid)
+version 1.0105 
+header_name {.h} 
+code_name {.cc}
+decl {//Copyright (c) 2003-2005 Nasca Octavian Paul} {} 
+
+decl {//License: GNU GPL version 2} {} 
+
+decl {\#include <FL/Fl_Dial.H>} {public
+} 
+
+decl {\#include <FL/fl_draw.H>} {public
+} 
+
+decl {\#include <stdio.h>} {public
+} 
+
+decl {\#include <math.h>} {public
+} 
+
+class WidgetPDial {: {public Fl_Dial}
+} {
+  Function {WidgetPDial(int x,int y, int w, int h, const char *label=0):Fl_Dial(x,y,w,h,label)} {} {
+    code {oldvalue=0.0;} {}
+  }
+  Function {handle(int event)} {return_type int
+  } {
+    code {double dragsize,v,min=minimum(),max=maximum();
+int my;
+
+switch (event){
+case FL_PUSH:oldvalue=value();
+case FL_DRAG:
+     my=-(Fl::event_y()-y()-h()/2);
+
+     dragsize=200.0;
+     if (Fl::event_state(FL_BUTTON1)==0) dragsize*=10;
+     v=oldvalue+my/dragsize*(max-min);
+     if (v<min) v=min;
+        else if (v>max) v=max;
+
+     //printf("%d   %g    %g\\n",my,v,oldvalue);     
+     value(v);
+     value_damage();
+     if (this->when()!=0) do_callback();
+     return(1); 
+     break;
+case FL_RELEASE:
+     if (this->when()==0) do_callback();
+	return(1);
+     break;
+};
+return(0);} {selected
+    }
+  }
+  Function {drawgradient(int cx,int cy,int sx,double m1,double m2)} {return_type void
+  } {
+    code {for (int i=(int)(m1*sx);i<(int)(m2*sx);i++){
+   double tmp=1.0-pow(i*1.0/sx,2.0);
+   pdialcolor(140+(int) (tmp*90),140+(int)(tmp*90),140+(int) (tmp*100));
+   fl_arc(cx+sx/2-i/2,cy+sx/2-i/2,i,i,0,360);
+};} {}
+  }
+  Function {draw()} {} {
+    code {int cx=x(),cy=y(),sx=w(),sy=h();
+
+
+//clears the button face
+pdialcolor(190,190,200);
+fl_pie(cx-1,cy-1,sx+2,sy+2,0,360);
+
+//Draws the button face (gradinet)
+drawgradient(cx,cy,sx,0.5,1.0);
+
+double val=(value()-minimum())/(maximum()-minimum());
+
+//draws the scale
+pdialcolor(220,220,250);
+double a1=angle1(),a2=angle2();
+for (int i=0;i<12;i++){
+   double a=-i/12.0*360.0-val*(a2-a1)-a1;
+   fl_pie(cx,cy,sx,sy,a+270-3,a+3+270);
+};
+
+drawgradient(cx,cy,sx,0.0,0.75);
+
+//draws the value
+double a=-(a2-a1)*val-a1;
+
+
+
+
+
+//draws the max and min points
+pdialcolor(0,100,200);
+int xp=(int)(cx+sx/2.0+sx/2.0*sin(angle1()/180.0*3.141592));
+int yp=(int)(cy+sy/2.0+sy/2.0*cos(angle1()/180.0*3.141592));
+fl_pie(xp-2,yp-2,4,4,0,360);
+
+xp=(int)(cx+sx/2.0+sx/2.0*sin(angle2()/180.0*3.141592));
+yp=(int)(cy+sy/2.0+sy/2.0*cos(angle2()/180.0*3.141592));
+fl_pie(xp-2,yp-2,4,4,0,360);
+
+
+
+
+
+fl_push_matrix();
+
+  fl_translate(cx+sx/2,cy+sy/2);
+  fl_rotate(a-90.0); 
+
+  fl_translate(sx/2,0);
+
+
+  fl_begin_polygon();
+   pdialcolor(0,0,0);
+   fl_vertex(-10,-4);
+   fl_vertex(-10,4);
+   fl_vertex(0,0);  
+  fl_end_polygon();
+ 
+
+fl_pop_matrix();} {}
+  }
+  Function {pdialcolor(int r,int g,int b)} {} {
+    code {if (active_r()) fl_color(r,g,b);
+   else fl_color(160-(160-r)/3,160-(160-b)/3,160-(160-b)/3);} {}
+  }
+  decl {double oldvalue;} {}
+} 
-- 
cgit v1.2.3