# data file for the Fltk User Interface Designer (fluid) version 1.0110 header_name {.h} code_name {.cc} decl {//Copyright (c) 2002-2005 Nasca Octavian Paul} {} decl {//License: GNU GPL version 2 or later} {} decl {\#include "WidgetPDial.h"} {public } decl {\#include } {public } decl {\#include } {public } decl {\#include "../globals.h"} {public } decl {\#include } {public } decl {\#include "../Params/EnvelopeParams.h"} {public } decl {\#include } {public } decl {\#include } {public } decl {\#include } {public } decl {\#include "PresetsUI.h"} {public } decl {\#include "common.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; ctrldown=false;} {} } 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;igetdt(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/(float) 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;iPenvpoints;i++){ int distance=abs(x-getpointx(i))+abs(y-getpointy(i)); if (distancePfreemode==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=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 && (!ctrldown||lastpoint <= 0)){ fl_color(alb); for (int i=1;igetdt(i); } else { fl_color(255,0,0); time=env->getdt(lastpoint); }; 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); if (lastpoint>=0){ snprintf((char *)&tmpstr,20,"%d", env->Penvval[lastpoint]); fl_draw(tmpstr,ox+lx-20,oy+ly-23,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(); // Some window magic makes us lose focus, so reassert it. if (event==FL_ENTER) Fl::focus(this); if ((event==FL_KEYDOWN || event==FL_KEYUP)){ int key = Fl::event_key(); if (key==FL_Control_L || key==FL_Control_R){ ctrldown = (event==FL_KEYDOWN); redraw(); if (pair!=NULL) pair->redraw(); } } if (event==FL_MOUSEWHEEL && lastpoint>=0) { if (!ctrldown) { int ny=env->Penvval[lastpoint] - Fl::event_dy(); env->Penvval[lastpoint]=ny < 0 ? 0 : ny > 127 ? 127 : ny; } else if (lastpoint > 0) { int newdt = Fl::event_dy() + env->Penvdt[lastpoint]; env->Penvdt[lastpoint] = newdt < 0 ? 0 : newdt > 127 ? 127 : newdt; } redraw(); if (pair!=NULL) pair->redraw(); } 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 } decl {bool ctrldown;} {} } class EnvelopeUI {open : {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()} {open } { Fl_Window freemodeeditwindow { label Envelope xywh {702 269 575 180} type Double visible } { 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 labelsize 11 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;iPenvpoints;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 labelsize 11 code0 {if (env->Pfreemode==0) o->hide();} } 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 callback {env->Pforcedrelease=(int)o->value();} tooltip {Forced Relase} xywh {410 165 40 15} down_box DOWN_BOX labelsize 10 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 10 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 20} 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 10 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 11 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 55 } 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 55 } } } Function {make_ADSR_window()} {open } { Fl_Window envADSR {open xywh {344 788 205 70} type Double color 50 labelfont 1 class Fl_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_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 10 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 10 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 10 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 10 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 10 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 10 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} 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 10 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 55 } 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 55 } } } } Function {make_ASR_window()} {open } { Fl_Window envASR {open xywh {648 667 210 70} type Double class Fl_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_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 10 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 10 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 10 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 10 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 10 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 10 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 55 } 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 55 } } Fl_Button {} { label E callback {freemodeeditwindow->show();} tooltip {Envelope window} xywh {190 5 15 15} labelfont 1 labelsize 10 } } } Function {make_ADSRfilter_window()} {open } { Fl_Window envADSRfilter {open selected xywh {627 569 275 70} type Double color 50 labelfont 1 class Fl_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_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 10 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 10 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 10 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 10 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 10 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 10 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 10 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 10 align 6 code0 {o->value(env->Pforcedrelease);} } Fl_Button {} { label E callback {freemodeeditwindow->show();} xywh {255 5 15 15} 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 55 } 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 55 } } } } Function {make_ASRbw_window()} {open } { Fl_Window envASRbw {open xywh {362 642 210 70} type Double code0 {set_module_parameters(o);} class Fl_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_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 10 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 10 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 10 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 10 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 10 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 10 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 55 } 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 55 } } Fl_Button {} { label E callback {freemodeeditwindow->show();} xywh {190 5 15 15} labelfont 1 labelsize 10 } } } Function {make_free_window()} {open } { Fl_Window envfree {open xywh {376 436 205 70} type Double color 50 labelfont 1 resizable code0 {set_module_parameters(o);} class Fl_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_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} 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 55 } 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 55 } } } } Function {init(EnvelopeParams *env_)} {open } { 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_choice("Disable the free mode of the Envelope?","No","Yes",NULL); 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(); };} {} } Function {refresh()} {open } { 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(); else forcedreleasecheck->show(); if (env->Pfreemode==0){ addpoint->hide(); deletepoint->hide(); } else { addpoint->show(); deletepoint->show(); } 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;} {} }