| 
							- # 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 <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
 - } 
 - 
 - 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;} {}
 -   }
 -   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/(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;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 {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;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 labelsize 11
 -         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 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 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()} {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 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()} {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 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} 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 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()} {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 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} 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 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_)} {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();
 - 
 - 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;} {}
 - } 
 
 
  |