summaryrefslogtreecommitdiff
path: root/muse_qt4_evolution/synti/zynaddsubfx/UI
diff options
context:
space:
mode:
authorRobert Jonsson <spamatica@gmail.com>2009-12-27 11:30:35 +0000
committerRobert Jonsson <spamatica@gmail.com>2009-12-27 11:30:35 +0000
commitb703eab295330e6f81564fbb39a10a1a2fdd2f54 (patch)
treee46b5c9a6bc22fd661c15d1d2123f5bf631cef80 /muse_qt4_evolution/synti/zynaddsubfx/UI
parent5d5fa0fdf913907edbc3d2d29a7548f0cb658c94 (diff)
moved old qt4 branch
Diffstat (limited to 'muse_qt4_evolution/synti/zynaddsubfx/UI')
-rw-r--r--muse_qt4_evolution/synti/zynaddsubfx/UI/ADnoteUI.fl1107
-rw-r--r--muse_qt4_evolution/synti/zynaddsubfx/UI/BankUI.fl352
-rw-r--r--muse_qt4_evolution/synti/zynaddsubfx/UI/CMakeLists.txt54
-rw-r--r--muse_qt4_evolution/synti/zynaddsubfx/UI/ConfigUI.fl443
-rw-r--r--muse_qt4_evolution/synti/zynaddsubfx/UI/EffUI.fl2310
-rw-r--r--muse_qt4_evolution/synti/zynaddsubfx/UI/EnvelopeUI.fl851
-rw-r--r--muse_qt4_evolution/synti/zynaddsubfx/UI/FilterUI.fl624
-rw-r--r--muse_qt4_evolution/synti/zynaddsubfx/UI/LFOUI.fl176
-rw-r--r--muse_qt4_evolution/synti/zynaddsubfx/UI/MasterUI.fl1798
-rw-r--r--muse_qt4_evolution/synti/zynaddsubfx/UI/MicrotonalUI.fl270
-rw-r--r--muse_qt4_evolution/synti/zynaddsubfx/UI/OscilGenUI.fl1131
-rw-r--r--muse_qt4_evolution/synti/zynaddsubfx/UI/PADnoteUI.fl1086
-rw-r--r--muse_qt4_evolution/synti/zynaddsubfx/UI/PartUI.fl1086
-rw-r--r--muse_qt4_evolution/synti/zynaddsubfx/UI/PresetsUI.fl200
-rw-r--r--muse_qt4_evolution/synti/zynaddsubfx/UI/ResonanceUI.fl392
-rw-r--r--muse_qt4_evolution/synti/zynaddsubfx/UI/SUBnoteUI.fl449
-rw-r--r--muse_qt4_evolution/synti/zynaddsubfx/UI/SeqUI.fl73
-rw-r--r--muse_qt4_evolution/synti/zynaddsubfx/UI/VirKeyboard.fl400
-rw-r--r--muse_qt4_evolution/synti/zynaddsubfx/UI/WidgetPDial.fl131
19 files changed, 12933 insertions, 0 deletions
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;} {}
+}