# 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 "Fl_Osc_Pane.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 PointButton {open : {public Fl_Button, public Fl_Osc_Widget}} { Function {PointButton(int x,int y, int w, int h, const char *label=0):Fl_Button(x,y,w,h,label),Fl_Osc_Widget(this)} {open } { code {} {} } Function {rebase(std::string new_base)} {open } { code {loc = new_base;} {} } Function {init(std::string path_)} {open } { code {ext = path_;} {} } } 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)} {} { 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 resizable 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 55 code0 {freemodeeditwindow->init(osc, 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 55 } Fl_Button addpoint { label {Add pt} 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 {90 155 80 20} box THIN_UP_BOX labelsize 11 code0 {(void)o->init("addPoint");} class PointButton } 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 pt} callback {o->oscWrite("delPoint", "i", freeedit->lastpoint); freeedit->lastpoint-=1; freeedit->update(); envfree->redraw(); sustaincounter->update(); //sustaincounter->value(Penvsustain); //sustaincounter->maximum(Penvpoints-2);} xywh {175 155 85 20} box THIN_UP_BOX labelsize 11 code0 {(void)o->init("delPoint");} class PointButton } Fl_Check_Button forcedreleasecheck { label frcR tooltip {Forced Release} xywh {410 165 40 15} down_box DOWN_BOX labelsize 10 code0 {o->init("Pforcedrelease");} 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");} 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");} class Fl_Osc_Check } Fl_Counter sustaincounter { label Sust callback {freeedit->redraw(); envfree->redraw();} tooltip {Sustain (0 is disabled)} xywh {305 155 40 15} type Simple labelsize 11 align 4 minimum 0 maximum 127 step 1 code3 {o->init("Penvsustain");} class Fl_Osc_Counter } Fl_Check_Button freemodehack { xywh {0 0 0 0} down_box DOWN_BOX callback{refresh_display();} code0 {o->init("Pfreemode");o->hide();} class Fl_Osc_Check } Fl_Button {} { label {Cancel} tooltip {Cancel freemode editing} callback {disable_freemode();} xywh {5 155 80 20} box THIN_UP_BOX labelsize 11 labelcolor 1 class Fl_Osc_Button } } } 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 55 } 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 55 } 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 {open_as_freemode();} tooltip {Envelope window} xywh {185 5 15 15} labelfont 1 labelsize 10 class Fl_Osc_Button } 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 55 } 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 55 } 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 {open_as_freemode();} tooltip {Envelope window} xywh {190 5 15 15} labelfont 1 labelsize 10 class Fl_Osc_Button } } } 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 55 } 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 55 } 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 {open_as_freemode();} xywh {255 5 15 15} labelfont 1 labelsize 10 class Fl_Osc_Button } } } } 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 55 } 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 55 } 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 {open_as_freemode();} xywh {190 5 15 15} labelfont 1 labelsize 10 class Fl_Osc_Button } } } 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 {open_as_freemode();} xywh {185 5 15 15} labelfont 1 labelsize 10 class Fl_Osc_Button } 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 {open_as_freemode()} {open } { code { if (!freemodehack->value() && fl_choice("Convert envelope to free mode data?","No","Yes",NULL)==0) return; freemodehack->oscWrite("Pfreemode", "T"); freeedit->update(); freemodeeditwindow->show(); freemodeeditwindow->position(Fl::event_x_root()-20, Fl::event_y_root()+20); freemodeeditwindow->size_range(400,160); } {} } 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; 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_display();} {} } Function {rebase(std::string new_base)} {open } { code {Fl_Osc_Group::rebase(new_base); freemodeeditwindow->rebase(new_base+ext);} {} } Function {disable_freemode()} {open } { code {if (fl_choice("Discard free mode data?","No","Yes",NULL)==0) return; hide(); int winx = Fl::event_x_root()-10; int winy = Fl::event_y_root()-155; winx = winx < 1 ? 1 : winx; winy = winy < 1 ? 1 : winy; freemodeeditwindow->hide(); envwindow->hide(); Fl_Group *par=envwindow->parent(); par->hide(); freemodehack->oscWrite("Pfreemode", "F"); freeedit->update(); envwindow->show(); par->redraw(); par->show(); show(); freemodeeditwindow->position(winx,winy);} {} } Function {refresh()} { open } { code { freemodehack->oscWrite("Pfreemode"); } {} } Function {refresh_display()} {open } { code { sustaincounter->value(Penvsustain); sustaincounter->maximum(Penvpoints-2); envstretchdial->value(Penvstretch); if (Envmode > 2) linearenvelopecheck->hide(); else { linearenvelopecheck->value(Plinearenvelope); linearenvelopecheck->show(); } forcedreleasecheck->value(Pforcedrelease); envADSR->hide(); envASR->hide(); envADSRfilter->hide(); envASRbw->hide(); envfree->hide(); if (freemodehack->value()) { envwindow=envfree; freeedit->update(); } else { freemodeeditwindow->hide(); 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; } } assert(envwindow); envwindow->resize(this->x(),this->y(),this->w(),this->h()); envwindow->show();} {} } decl {int Envmode;} {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 } }