diff options
author | Robert Jonsson <spamatica@gmail.com> | 2009-12-27 11:30:35 +0000 |
---|---|---|
committer | Robert Jonsson <spamatica@gmail.com> | 2009-12-27 11:30:35 +0000 |
commit | b703eab295330e6f81564fbb39a10a1a2fdd2f54 (patch) | |
tree | e46b5c9a6bc22fd661c15d1d2123f5bf631cef80 /muse_qt4_evolution/synti/zynaddsubfx/UI | |
parent | 5d5fa0fdf913907edbc3d2d29a7548f0cb658c94 (diff) |
moved old qt4 branch
Diffstat (limited to 'muse_qt4_evolution/synti/zynaddsubfx/UI')
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;} {} +} |