# data file for the Fltk User Interface Designer (fluid) version 1.0302 header_name {.h} code_name {.cc} decl {//Copyright (c) 2002-2005 Nasca Octavian Paul} {private local } decl {//License: GNU GPL version 2 or later} {private local } decl {\#include "Fl_Osc_Dial.H"} {public local } decl {\#include "Fl_Osc_Check.H"} {public local } decl {\#include "Fl_Osc_Button.H"} {public local } decl {\#include "Fl_Osc_Counter.H"} {public local } decl {\#include } {public local } decl {\#include } {public local } decl {\#include "../globals.h"} {public local } decl {\#include } {public local } decl {\#include "../Params/EnvelopeParams.h"} {public local } decl {\#include } {public local } decl {\#include } {public local } decl {\#include } {public local } decl {\#include "PresetsUI.h"} {public local } decl {\#include "common.H"} {public local } decl {\#include "EnvelopeFreeEdit.h"} {public local } class EnvelopeUI {open : {public Fl_Osc_Group,PresetsUI_} } { Function {EnvelopeUI(int x,int y, int w, int h, const char *label=0):Fl_Osc_Group(x,y,w,h,label)} {} { code {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()} {open } { Fl_Window freemodeeditwindow { label Envelope open xywh {702 801 575 180} type Double class Fl_Osc_Window visible } { Fl_Button {} { label C callback {presetsui->copy(freemodeeditwindow->loc());} xywh {465 160 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7 code0 {freemodeeditwindow->osc = osc; freemodeeditwindow->base = loc();} } Fl_Button {} { label P callback {presetsui->paste(freemodeeditwindow->loc(),this);} xywh {482 160 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7 } Fl_Button addpoint { label {Add point} callback { if(freeedit->lastpoint >= MAX_ENVELOPE_POINTS - 1) return; o->oscWrite("addPoint", "i", freeedit->lastpoint); freeedit->lastpoint+=1; freeedit->update(); envfree->redraw(); sustaincounter->update(); //sustaincounter->value(Penvsustain); //sustaincounter->maximum(Penvpoints-2);} xywh {115 155 80 20} box THIN_UP_BOX labelsize 11 code0 {(void)o;//if (Pfreemode==0) o->hide();} class Fl_Osc_Button } Fl_Box freeedit { label Envelope callback {sustaincounter->maximum(o->Penvpoints-2);} xywh {5 5 565 145} box FLAT_BOX color 0 code0 {o->init();} class EnvelopeFreeEdit } Fl_Button deletepoint { label {Delete point} callback {o->oscWrite("delPoint", "i", freeedit->lastpoint); freeedit->lastpoint-=1; freeedit->update(); envfree->redraw(); sustaincounter->update(); //sustaincounter->value(Penvsustain); //sustaincounter->maximum(Penvpoints-2);} xywh {200 155 80 20} box THIN_UP_BOX labelsize 11 code0 {(void)o;//if (Pfreemode==0) o->hide();} class Fl_Osc_Button } Fl_Check_Button freemodebutton { label FreeMode callback {reinit(); freeedit->lastpoint=-1; freeedit->redraw();} tooltip {Enable or disable the freemode} xywh {10 155 95 20} labelsize 11 } Fl_Check_Button forcedreleasecheck { label frcR tooltip {Forced Release} xywh {410 165 40 15} down_box DOWN_BOX labelsize 10 code0 {o->init("Pforcedrelease");} code1 {//TODO if (Pfreemode==0) o->hide();} class Fl_Osc_Check } Fl_Dial envstretchdial { label {Str.} tooltip {Envelope stretch (on lower notes make the envelope longer)} xywh {380 155 25 25} box ROUND_UP_BOX labelsize 10 align 4 maximum 127 step 1 code0 {o->init("Penvstretch");} code1 {//TODO if (Pfreemode==0) o->hide();} class Fl_Osc_Dial } Fl_Button {} { label Close callback {freemodeeditwindow->hide();} xywh {510 155 60 20} box THIN_UP_BOX } Fl_Check_Button linearenvelopecheck { label L tooltip {Linear Envelope} xywh {410 151 30 15} down_box DOWN_BOX labelsize 10 code0 {o->init("Plinearenvelope");} code1 {//TODO if ((Pfreemode==0)||(Envmode>2)) o->hide();} class Fl_Osc_Check } Fl_Counter sustaincounter { label Sust callback {freeedit->redraw(); envfree->redraw();} tooltip {Sustain (0 is disabled)} xywh {315 155 40 15} type Simple labelsize 11 align 4 minimum 0 maximum 127 step 1 code3 {o->init("Penvsustain");} class Fl_Osc_Counter } } } Function {make_ADSR_window()} {} { Fl_Window envADSR {open xywh {353 911 205 70} type Double color 50 labelfont 1 class Fl_Osc_Group visible } { Fl_Group {} { label {Amplitude Envelope} xywh {0 0 205 70} box UP_BOX color 223 labeltype ENGRAVED_LABEL labelsize 10 align 17 code0 {set_module_parameters(o);} } { Fl_Button {} { label C callback {presetsui->copy(envADSR->loc());} xywh {150 5 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7 } Fl_Button {} { label P callback {presetsui->paste(envADSR->loc(),this);} xywh {167 5 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7 } Fl_Dial e1adt { label {A.dt} callback {freeedit->redraw();} tooltip {Attack time} xywh {5 20 30 30} box ROUND_UP_BOX labelsize 10 maximum 127 step 1 code0 {o->init("PA_dt");} class Fl_Osc_Dial } Fl_Dial e1ddt { label {D.dt} callback {freeedit->redraw();} tooltip {Decay time} xywh {40 20 30 30} box ROUND_UP_BOX labelsize 10 maximum 127 step 1 code0 {o->init("PD_dt");} class Fl_Osc_Dial } Fl_Dial e1rdt { label {R.dt} callback {freeedit->redraw();} tooltip {Release time} xywh {110 20 30 30} box ROUND_UP_BOX labelsize 10 maximum 127 step 1 code0 {o->init("PR_dt");} class Fl_Osc_Dial } Fl_Dial e1sval { label {S.val} callback {freeedit->redraw();} tooltip {Sustain value} xywh {75 20 30 30} box ROUND_UP_BOX labelsize 10 maximum 127 step 1 code0 {o->init("PS_val");} class Fl_Osc_Dial } Fl_Check_Button e1forcedrelease { label frcR tooltip {Forced Release} xywh {180 35 20 15} down_box DOWN_BOX labelsize 10 align 6 code0 {o->init("Pforcedrelease");} class Fl_Osc_Check } Fl_Dial e1envstretch { label Stretch tooltip {Envelope stretch (on lower notes makes the envelope longer)} xywh {145 25 25 25} box ROUND_UP_BOX labelsize 10 maximum 127 step 1 code0 {o->init("Penvstretch");} class Fl_Osc_Dial } Fl_Button {} { label E callback {freemodeeditwindow->show();} tooltip {Envelope window} xywh {185 5 15 15} labelfont 1 labelsize 10 } Fl_Check_Button e1linearenvelope { label L tooltip {The evelope is linear} xywh {180 20 15 15} down_box DOWN_BOX labelsize 10 align 4 code0 {o->init("Plinearenvelope");} class Fl_Osc_Check } } } } Function {make_ASR_window()} {} { Fl_Window envASR {open xywh {1067 911 210 70} type Double class Fl_Osc_Group visible } { Fl_Group {} { label {Frequency Envelope} xywh {0 0 210 70} box UP_BOX color 223 labeltype ENGRAVED_LABEL labelsize 10 align 17 code0 {set_module_parameters(o);} } { Fl_Button {} { label C callback {presetsui->copy(envASR->loc());} xywh {155 5 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7 } Fl_Button {} { label P callback {presetsui->paste(envASR->loc(),this);} xywh {172 5 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7 } Fl_Dial e2aval { label {A.val} callback {freeedit->redraw();} tooltip {Starting value} xywh {5 20 30 30} box ROUND_UP_BOX labelsize 10 maximum 127 step 1 code0 {o->init("PA_val");} class Fl_Osc_Dial } Fl_Dial e2adt { label {A.dt} callback {freeedit->redraw();} tooltip {Attack time} xywh {40 20 30 30} box ROUND_UP_BOX labelsize 10 maximum 127 step 1 code0 {o->init("PA_dt");} class Fl_Osc_Dial } Fl_Dial e2rval { label {R.val} callback {freeedit->redraw();} tooltip {Release value} xywh {110 20 30 30} box ROUND_UP_BOX labelsize 10 maximum 127 step 1 code0 {o->init("PR_val");} class Fl_Osc_Dial } Fl_Dial e2rdt { label {R.dt} callback {freeedit->redraw();} tooltip {Release time} xywh {75 20 30 30} box ROUND_UP_BOX labelsize 10 maximum 127 step 1 code0 {o->init("PR_dt");} class Fl_Osc_Dial } Fl_Dial e2envstretch { label Stretch tooltip {Envelope stretch (on lower notes makes the envelope longer)} xywh {145 25 25 25} box ROUND_UP_BOX labelsize 10 maximum 127 step 1 code0 {o->init("Penvstretch");} class Fl_Osc_Dial } Fl_Check_Button e2forcedrelease { label frcR tooltip {Forced release} xywh {180 25 15 25} down_box DOWN_BOX labelsize 10 align 6 code0 {o->init("Pforcedrelease");} class Fl_Osc_Check } } Fl_Button {} { label E callback {freemodeeditwindow->show();} tooltip {Envelope window} xywh {190 5 15 15} labelfont 1 labelsize 10 } } } Function {make_ADSRfilter_window()} {} { Fl_Window envADSRfilter {open xywh {1002 911 275 70} type Double color 50 labelfont 1 class Fl_Osc_Group visible } { Fl_Group {} { label {Filter Envelope} xywh {0 0 275 70} box UP_BOX color 223 labeltype ENGRAVED_LABEL labelsize 10 align 17 code0 {set_module_parameters(o);} } { Fl_Button {} { label C callback {presetsui->copy(envADSRfilter->loc());} xywh {220 5 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7 } Fl_Button {} { label P callback {presetsui->paste(envADSRfilter->loc(),this);} xywh {237 5 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7 } Fl_Dial e3aval { label {A.val} callback {freeedit->redraw();} tooltip {Starting value} xywh {5 20 30 30} box ROUND_UP_BOX labelsize 10 maximum 127 step 1 code0 {o->init("PA_val");} class Fl_Osc_Dial } Fl_Dial e3adt { label {A.dt} callback {freeedit->redraw();} tooltip {Attack time} xywh {40 20 30 30} box ROUND_UP_BOX labelsize 10 maximum 127 step 1 code0 {o->init("PA_dt");} class Fl_Osc_Dial } Fl_Dial e3dval { label {D.val} callback {freeedit->redraw();} tooltip {decay value} xywh {75 20 30 30} box ROUND_UP_BOX labelsize 10 maximum 127 step 1 code0 {o->init("PD_val");} class Fl_Osc_Dial } Fl_Dial e3ddt { label {D.dt} callback {freeedit->redraw();} tooltip {decay time} xywh {110 20 30 30} box ROUND_UP_BOX labelsize 10 maximum 127 step 1 code0 {o->init("PD_dt");} class Fl_Osc_Dial } Fl_Dial e3rdt { label {R.dt} callback {freeedit->redraw();} tooltip {Release time} xywh {145 20 30 30} box ROUND_UP_BOX labelsize 10 maximum 127 step 1 code0 {o->init("PR_dt");} class Fl_Osc_Dial } Fl_Dial e3rval { label {R.val} callback {freeedit->redraw();} tooltip {Release value} xywh {180 20 30 30} box ROUND_UP_BOX labelsize 10 maximum 127 step 1 code0 {o->init("PR_val");} class Fl_Osc_Dial } Fl_Dial e3envstretch { label Stretch tooltip {Envelope stretch (on lower notes makes the envelope longer)} xywh {215 25 25 25} box ROUND_UP_BOX labelsize 10 maximum 127 step 1 code0 {o->init("Penvstretch");} class Fl_Osc_Dial } Fl_Check_Button e3forcedrelease { label frcR tooltip {Forced Release} xywh {250 30 15 20} down_box DOWN_BOX labelsize 10 align 6 code0 {o->init("Pforcedrelease");} class Fl_Osc_Check } Fl_Button {} { label E callback {freemodeeditwindow->show();} xywh {255 5 15 15} labelfont 1 labelsize 10 } } } } Function {make_ASRbw_window()} {} { Fl_Window envASRbw {open xywh {371 911 210 70} type Double code0 {set_module_parameters(o);} class Fl_Osc_Group visible } { Fl_Group {} { label {BandWidth Envelope} xywh {0 0 210 70} box UP_BOX color 223 labeltype ENGRAVED_LABEL labelsize 10 align 17 code0 {set_module_parameters(o);} } { Fl_Button {} { label C callback {presetsui->copy(envASRbw->loc());} xywh {155 5 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7 } Fl_Button {} { label P callback {presetsui->paste(envASRbw->loc(),this);} xywh {172 5 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 7 } Fl_Dial e4aval { label {A.val} callback {freeedit->redraw();} tooltip {Starting value} xywh {5 20 30 30} box ROUND_UP_BOX labelsize 10 maximum 127 step 1 code0 {o->init("PA_val");} class Fl_Osc_Dial } Fl_Dial e4adt { label {A.dt} callback {freeedit->redraw();} tooltip {Attack time} xywh {40 20 30 30} box ROUND_UP_BOX labelsize 10 maximum 127 step 1 code0 {o->init("PA_dt");} class Fl_Osc_Dial } Fl_Dial e4rval { label {R.val} callback {freeedit->redraw();} tooltip {Release value} xywh {110 20 30 30} box ROUND_UP_BOX labelsize 10 maximum 127 step 1 code0 {o->init("PR_val");} class Fl_Osc_Dial } Fl_Dial e4rdt { label {R.dt} callback {freeedit->redraw();} tooltip {Release time} xywh {75 20 30 30} box ROUND_UP_BOX labelsize 10 maximum 127 step 1 code0 {o->init("PR_dt");} class Fl_Osc_Dial } Fl_Dial e4envstretch { label Stretch tooltip {Envelope stretch (on lower notes makes the envelope longer)} xywh {145 25 25 25} box ROUND_UP_BOX labelsize 10 maximum 127 step 1 code0 {o->init("Penvstretch");} class Fl_Osc_Dial } Fl_Check_Button e4forcedrelease { label frcR tooltip {Forced release} xywh {180 25 15 25} down_box DOWN_BOX labelsize 10 align 6 code0 {o->init("Pforcedrelease");} class Fl_Osc_Check } } Fl_Button {} { label E callback {freemodeeditwindow->show();} xywh {190 5 15 15} labelfont 1 labelsize 10 } } } Function {make_free_window()} {} { Fl_Window envfree {open xywh {385 911 205 70} type Double color 50 labelfont 1 resizable code0 {set_module_parameters(o);} class Fl_Osc_Group visible } { Fl_Group envfreegroup { label {Amplitude Envelope} xywh {0 0 205 70} box UP_BOX color 223 labeltype ENGRAVED_LABEL labelsize 10 align 17 resizable code0 {set_module_parameters(o);} } { Fl_Button {} { label E callback {freemodeeditwindow->show();} xywh {185 5 15 15} labelfont 1 labelsize 10 } Fl_Box freeeditsmall { label Envelope callback {envfree->redraw();} xywh {5 20 195 45} box FLAT_BOX color 0 resizable code0 {o->init();} class EnvelopeFreeEdit } Fl_Button {} { label C callback {presetsui->copy(envfree->loc());} xywh {150 5 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 55 } Fl_Button {} { label P callback {presetsui->paste(envfree->loc(),this);} xywh {167 5 15 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 10 labelcolor 55 } } } } Function {init(int env_type, Fl_Osc_Interface *osc_, std::string base_, std::string ext_)} {open } { code {osc = osc_; base = base_; ext = ext_; Envmode = env_type; Pfreemode = false; Penvsustain = false; Penvpoints = 3; Penvstretch = 0; Pforcedrelease = 0; Plinearenvelope = 0; assert(osc); make_ADSR_window(); make_ASR_window(); make_ADSRfilter_window(); make_ASRbw_window(); make_free_window(); make_freemode_edit_window(); envwindow=NULL; if(Envmode==3) envfreegroup->label("Frequency Envelope"); if(Envmode==4) envfreegroup->label("Filter Envelope"); if(Envmode==5) envfreegroup->label("Bandwidth Envelope"); freemodeeditwindow->label(this->label()); freeeditsmall->setpair(freeedit); freeedit->setpair(freeeditsmall); refresh();} {} } Function {rebase(std::string new_base)} {open } { code {Fl_Osc_Group::rebase(new_base); freemodeeditwindow->rebase(new_base+ext);} {} } Function {reinit()} {open } { code {if(Pfreemode){ int answer=fl_choice("Disable the free mode of the Envelope?","No","Yes",NULL); freemodebutton->value(Pfreemode); if (answer==0) return; }; Pfreemode = !Pfreemode; hide(); const int winx=freemodeeditwindow->x(); const 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 (Pfreemode) { freemodebutton->value(1); addpoint->show(); deletepoint->show(); forcedreleasecheck->show(); sustaincounter->show(); envstretchdial->show(); } else{ freemodebutton->value(0); addpoint->hide(); deletepoint->hide(); forcedreleasecheck->hide(); sustaincounter->hide(); envstretchdial->hide(); }; } {selected } } Function {refresh()} {open } { code {freemodebutton->value(Pfreemode); sustaincounter->value(Penvsustain); sustaincounter->maximum(Penvpoints-2); envstretchdial->value(Penvstretch); linearenvelopecheck->value(Plinearenvelope); //Conditionally display widgets if(Pfreemode) { freemodebutton->value(1); addpoint->show(); deletepoint->show(); forcedreleasecheck->show(); sustaincounter->show(); envstretchdial->show(); } else { freemodebutton->value(0); addpoint->hide(); deletepoint->hide(); forcedreleasecheck->hide(); sustaincounter->hide(); envstretchdial->hide(); } if(Pfreemode || Envmode>2) linearenvelopecheck->hide(); else linearenvelopecheck->show(); forcedreleasecheck->value(Pforcedrelease); if (Pfreemode==0){ addpoint->hide(); deletepoint->hide(); } else { addpoint->show(); deletepoint->show(); } envADSR->hide(); envASR->hide(); envADSRfilter->hide(); envASRbw->hide(); envfree->hide(); if (Pfreemode==0){ switch(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; }; assert(envwindow); envwindow->resize(this->x(),this->y(),this->w(),this->h()); envwindow->show();} {} } decl {int Envmode;} {private local } decl {int Pfreemode;} {private local } decl {int Penvsustain;} {private local } decl {int Penvpoints;} {private local } decl {int Penvstretch;} {private local } decl {int Pforcedrelease;} {private local } decl {int Plinearenvelope;} {private local } decl {Fl_Group *envwindow;} {private local } }