# data file for the Fltk User Interface Designer (fluid) version 1.0107 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 } {public } decl {\#include } {public } decl {\#include } {public } decl {\#include } {} decl {\#include } {} decl {\#include } {} decl {\#include } {} 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;i0) 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;imutex); pars->oscilgen->getspectrum(n,spc,0); pthread_mutex_unlock(&master->mutex); //normalize REALTYPE max=0; for (int i=0;igetNhr(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;i1e-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;jdB2rap(-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} open xywh {281 302 535 450} type Double visible } { 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 10 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 10 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 10 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 10 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 10 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 10 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 10 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 11 } 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 10 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 11 code0 {o->value(pars->Phrpos.type);} } { MenuItem {} { label Harmonic xywh {70 70 100 20} labelfont 1 labelsize 11 } MenuItem {} { label ShiftU xywh {80 80 100 20} labelfont 1 labelsize 11 } MenuItem {} { label ShiftL xywh {90 90 100 20} labelfont 1 labelsize 11 } MenuItem {} { label PowerU xywh {90 90 100 20} labelfont 1 labelsize 11 } MenuItem {} { label PowerL xywh {100 100 100 20} labelfont 1 labelsize 11 } MenuItem {} { label Sine xywh {110 110 100 20} labelfont 1 labelsize 11 } MenuItem {} { label Power xywh {120 120 100 20} labelfont 1 labelsize 11 } } 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 10 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 10 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 10 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 11 code0 {o->value(pars->Pbwscale);} code1 {if (pars->Pmode!=0) o->deactivate();} } { MenuItem {} { label Normal xywh {95 95 100 20} labelfont 1 labelsize 11 } MenuItem {} { label EqualHz xywh {105 105 100 20} labelfont 1 labelsize 11 } MenuItem {} { label Quater xywh {115 115 100 20} labelfont 1 labelsize 11 } MenuItem {} { label Half xywh {125 125 100 20} labelfont 1 labelsize 11 } MenuItem {} { label {75%} xywh {135 135 100 20} labelfont 1 labelsize 11 } MenuItem {} { label {150%} xywh {145 145 100 20} labelfont 1 labelsize 11 } MenuItem {} { label Double xywh {145 145 100 20} labelfont 1 labelsize 11 } MenuItem {} { label {Inv.Half} xywh {155 155 100 20} labelfont 1 labelsize 11 } } 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 11 code0 {o->value(pars->Pquality.samplesize);} } { MenuItem {} { label {16k (Tiny)} xywh {155 155 100 20} labelfont 1 labelsize 11 } MenuItem {} { label 32k xywh {165 165 100 20} labelfont 1 labelsize 11 } MenuItem {} { label {64k (Small)} xywh {175 175 100 20} labelfont 1 labelsize 11 } MenuItem {} { label 128k xywh {185 185 100 20} labelfont 1 labelsize 11 } MenuItem {} { label {256k (Normal)} xywh {205 205 100 20} labelfont 1 labelsize 11 } MenuItem {} { label 512k xywh {200 200 100 20} labelfont 1 labelsize 11 } MenuItem {} { label {1M (Big)} xywh {205 205 100 20} labelfont 1 labelsize 11 } } 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 11 align 5 textsize 11 code0 {o->value(pars->Pquality.smpoct);} } { MenuItem {} { label {0.5} xywh {10 10 100 20} labelfont 1 labelsize 11 } MenuItem {} { label 1 xywh {0 0 100 20} labelfont 1 labelsize 11 } MenuItem {} { label 2 xywh {10 10 100 20} labelfont 1 labelsize 11 } MenuItem {} { label 3 xywh {20 20 100 20} labelfont 1 labelsize 11 } MenuItem {} { label 4 xywh {30 30 100 20} labelfont 1 labelsize 11 } MenuItem {} { label 6 xywh {40 40 100 20} labelfont 1 labelsize 11 } MenuItem {} { label 12 xywh {50 50 100 20} labelfont 1 labelsize 11 } } 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 11 align 5 textsize 11 code0 {o->value(pars->Pquality.oct);} } { MenuItem {} { label 1 xywh {10 10 100 20} labelfont 1 labelsize 11 } MenuItem {} { label 2 xywh {20 20 100 20} labelfont 1 labelsize 11 } MenuItem {} { label 3 xywh {30 30 100 20} labelfont 1 labelsize 11 } MenuItem {} { label 4 xywh {40 40 100 20} labelfont 1 labelsize 11 } MenuItem {} { label 5 xywh {50 50 100 20} labelfont 1 labelsize 11 } MenuItem {} { label 6 xywh {60 60 100 20} labelfont 1 labelsize 11 } MenuItem {} { label 7 xywh {70 70 100 20} labelfont 1 labelsize 11 } MenuItem {} { label 8 xywh {80 80 100 20} labelfont 1 labelsize 11 } } 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 11 align 5 textsize 11 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 align 5 textsize 11 code0 {o->value(pars->Pmode);} } { MenuItem {} { label Bandwidth xywh {105 105 100 20} labelfont 1 labelsize 11 } MenuItem {} { label Discrete xywh {125 125 100 20} labelfont 1 labelsize 11 } MenuItem {} { label Continous xywh {115 115 100 20} labelfont 1 labelsize 11 } } } 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 13 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 11 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 11 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 10 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 13 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 11 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 11 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 10 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 10 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 10 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 10 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 10 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 13 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 16 code0 {o->color(FL_RED);} } Fl_Button {} { label Close callback {padnotewindow->hide();} xywh {320 405 175 40} box THIN_UP_BOX labelsize 17 } Fl_Button {} { label C callback {presetsui->copy(pars);} xywh {240 430 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 11 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 11 labelcolor 7 } Fl_Button {} { label export callback {char *filename; filename=fl_file_chooser("Export samples:","(*.wav)",NULL,0); if (filename==NULL) return; fl_filename_setext(filename,""); pars->export2wav(filename);} selected tooltip {export samples as wav file} xywh {240 405 55 15} box THIN_UP_BOX color 255 labelsize 11 align 128 } } } 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 } }