// generated by Fast Light User Interface Designer (fluid) version 1.0300 #include "external/zynaddsubfx/UI/EnvelopeUI.h" //Copyright (c) 2002-2005 Nasca Octavian Paul //License: GNU GPL version 2 or later PointButton::PointButton(int x,int y, int w, int h, const char *label):Fl_Button(x,y,w,h,label),Fl_Osc_Widget(this) { } void PointButton::rebase(std::string new_base) { loc = new_base; } void PointButton::init(std::string path_) { ext = path_; } void EnvelopeUI::cb_C_i(Fl_Button*, void*) { presetsui->copy(freemodeeditwindow->loc()); } void EnvelopeUI::cb_C(Fl_Button* o, void* v) { ((EnvelopeUI*)(o->parent()->user_data()))->cb_C_i(o,v); } void EnvelopeUI::cb_P_i(Fl_Button*, void*) { presetsui->paste(freemodeeditwindow->loc(),this); } void EnvelopeUI::cb_P(Fl_Button* o, void* v) { ((EnvelopeUI*)(o->parent()->user_data()))->cb_P_i(o,v); } void EnvelopeUI::cb_addpoint_i(PointButton* o, void*) { 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); } void EnvelopeUI::cb_addpoint(PointButton* o, void* v) { ((EnvelopeUI*)(o->parent()->user_data()))->cb_addpoint_i(o,v); } void EnvelopeUI::cb_freeedit_i(EnvelopeFreeEdit* o, void*) { sustaincounter->maximum(o->Penvpoints-2); } void EnvelopeUI::cb_freeedit(EnvelopeFreeEdit* o, void* v) { ((EnvelopeUI*)(o->parent()->user_data()))->cb_freeedit_i(o,v); } void EnvelopeUI::cb_deletepoint_i(PointButton* o, void*) { o->oscWrite("delPoint", "i", freeedit->lastpoint); freeedit->lastpoint-=1; freeedit->update(); envfree->redraw(); sustaincounter->update(); //sustaincounter->value(Penvsustain); //sustaincounter->maximum(Penvpoints-2); } void EnvelopeUI::cb_deletepoint(PointButton* o, void* v) { ((EnvelopeUI*)(o->parent()->user_data()))->cb_deletepoint_i(o,v); } void EnvelopeUI::cb_Close_i(Fl_Button*, void*) { freemodeeditwindow->hide(); } void EnvelopeUI::cb_Close(Fl_Button* o, void* v) { ((EnvelopeUI*)(o->parent()->user_data()))->cb_Close_i(o,v); } void EnvelopeUI::cb_sustaincounter_i(Fl_Osc_Counter*, void*) { freeedit->redraw(); envfree->redraw(); } void EnvelopeUI::cb_sustaincounter(Fl_Osc_Counter* o, void* v) { ((EnvelopeUI*)(o->parent()->user_data()))->cb_sustaincounter_i(o,v); } void EnvelopeUI::cb_freemodehack_i(Fl_Osc_Check*, void*) { refresh_display(); } void EnvelopeUI::cb_freemodehack(Fl_Osc_Check* o, void* v) { ((EnvelopeUI*)(o->parent()->user_data()))->cb_freemodehack_i(o,v); } void EnvelopeUI::cb_Cancel_i(Fl_Osc_Button*, void*) { disable_freemode(); } void EnvelopeUI::cb_Cancel(Fl_Osc_Button* o, void* v) { ((EnvelopeUI*)(o->parent()->user_data()))->cb_Cancel_i(o,v); } void EnvelopeUI::cb_C1_i(Fl_Button*, void*) { presetsui->copy(envADSR->loc()); } void EnvelopeUI::cb_C1(Fl_Button* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_C1_i(o,v); } void EnvelopeUI::cb_P1_i(Fl_Button*, void*) { presetsui->paste(envADSR->loc(),this); } void EnvelopeUI::cb_P1(Fl_Button* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_P1_i(o,v); } void EnvelopeUI::cb_e1adt_i(Fl_Osc_Dial*, void*) { freeedit->redraw(); } void EnvelopeUI::cb_e1adt(Fl_Osc_Dial* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e1adt_i(o,v); } void EnvelopeUI::cb_e1ddt_i(Fl_Osc_Dial*, void*) { freeedit->redraw(); } void EnvelopeUI::cb_e1ddt(Fl_Osc_Dial* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e1ddt_i(o,v); } void EnvelopeUI::cb_e1rdt_i(Fl_Osc_Dial*, void*) { freeedit->redraw(); } void EnvelopeUI::cb_e1rdt(Fl_Osc_Dial* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e1rdt_i(o,v); } void EnvelopeUI::cb_e1sval_i(Fl_Osc_Dial*, void*) { freeedit->redraw(); } void EnvelopeUI::cb_e1sval(Fl_Osc_Dial* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e1sval_i(o,v); } void EnvelopeUI::cb_E_i(Fl_Osc_Button*, void*) { open_as_freemode(); } void EnvelopeUI::cb_E(Fl_Osc_Button* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_E_i(o,v); } void EnvelopeUI::cb_C2_i(Fl_Button*, void*) { presetsui->copy(envASR->loc()); } void EnvelopeUI::cb_C2(Fl_Button* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_C2_i(o,v); } void EnvelopeUI::cb_P2_i(Fl_Button*, void*) { presetsui->paste(envASR->loc(),this); } void EnvelopeUI::cb_P2(Fl_Button* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_P2_i(o,v); } void EnvelopeUI::cb_e2aval_i(Fl_Osc_Dial*, void*) { freeedit->redraw(); } void EnvelopeUI::cb_e2aval(Fl_Osc_Dial* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e2aval_i(o,v); } void EnvelopeUI::cb_e2adt_i(Fl_Osc_Dial*, void*) { freeedit->redraw(); } void EnvelopeUI::cb_e2adt(Fl_Osc_Dial* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e2adt_i(o,v); } void EnvelopeUI::cb_e2rval_i(Fl_Osc_Dial*, void*) { freeedit->redraw(); } void EnvelopeUI::cb_e2rval(Fl_Osc_Dial* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e2rval_i(o,v); } void EnvelopeUI::cb_e2rdt_i(Fl_Osc_Dial*, void*) { freeedit->redraw(); } void EnvelopeUI::cb_e2rdt(Fl_Osc_Dial* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e2rdt_i(o,v); } void EnvelopeUI::cb_E1_i(Fl_Osc_Button*, void*) { open_as_freemode(); } void EnvelopeUI::cb_E1(Fl_Osc_Button* o, void* v) { ((EnvelopeUI*)(o->parent()->user_data()))->cb_E1_i(o,v); } void EnvelopeUI::cb_C3_i(Fl_Button*, void*) { presetsui->copy(envADSRfilter->loc()); } void EnvelopeUI::cb_C3(Fl_Button* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_C3_i(o,v); } void EnvelopeUI::cb_P3_i(Fl_Button*, void*) { presetsui->paste(envADSRfilter->loc(),this); } void EnvelopeUI::cb_P3(Fl_Button* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_P3_i(o,v); } void EnvelopeUI::cb_e3aval_i(Fl_Osc_Dial*, void*) { freeedit->redraw(); } void EnvelopeUI::cb_e3aval(Fl_Osc_Dial* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e3aval_i(o,v); } void EnvelopeUI::cb_e3adt_i(Fl_Osc_Dial*, void*) { freeedit->redraw(); } void EnvelopeUI::cb_e3adt(Fl_Osc_Dial* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e3adt_i(o,v); } void EnvelopeUI::cb_e3dval_i(Fl_Osc_Dial*, void*) { freeedit->redraw(); } void EnvelopeUI::cb_e3dval(Fl_Osc_Dial* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e3dval_i(o,v); } void EnvelopeUI::cb_e3ddt_i(Fl_Osc_Dial*, void*) { freeedit->redraw(); } void EnvelopeUI::cb_e3ddt(Fl_Osc_Dial* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e3ddt_i(o,v); } void EnvelopeUI::cb_e3rdt_i(Fl_Osc_Dial*, void*) { freeedit->redraw(); } void EnvelopeUI::cb_e3rdt(Fl_Osc_Dial* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e3rdt_i(o,v); } void EnvelopeUI::cb_e3rval_i(Fl_Osc_Dial*, void*) { freeedit->redraw(); } void EnvelopeUI::cb_e3rval(Fl_Osc_Dial* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e3rval_i(o,v); } void EnvelopeUI::cb_E2_i(Fl_Osc_Button*, void*) { open_as_freemode(); } void EnvelopeUI::cb_E2(Fl_Osc_Button* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_E2_i(o,v); } void EnvelopeUI::cb_C4_i(Fl_Button*, void*) { presetsui->copy(envASRbw->loc()); } void EnvelopeUI::cb_C4(Fl_Button* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_C4_i(o,v); } void EnvelopeUI::cb_P4_i(Fl_Button*, void*) { presetsui->paste(envASRbw->loc(),this); } void EnvelopeUI::cb_P4(Fl_Button* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_P4_i(o,v); } void EnvelopeUI::cb_e4aval_i(Fl_Osc_Dial*, void*) { freeedit->redraw(); } void EnvelopeUI::cb_e4aval(Fl_Osc_Dial* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e4aval_i(o,v); } void EnvelopeUI::cb_e4adt_i(Fl_Osc_Dial*, void*) { freeedit->redraw(); } void EnvelopeUI::cb_e4adt(Fl_Osc_Dial* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e4adt_i(o,v); } void EnvelopeUI::cb_e4rval_i(Fl_Osc_Dial*, void*) { freeedit->redraw(); } void EnvelopeUI::cb_e4rval(Fl_Osc_Dial* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e4rval_i(o,v); } void EnvelopeUI::cb_e4rdt_i(Fl_Osc_Dial*, void*) { freeedit->redraw(); } void EnvelopeUI::cb_e4rdt(Fl_Osc_Dial* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_e4rdt_i(o,v); } void EnvelopeUI::cb_E3_i(Fl_Osc_Button*, void*) { open_as_freemode(); } void EnvelopeUI::cb_E3(Fl_Osc_Button* o, void* v) { ((EnvelopeUI*)(o->parent()->user_data()))->cb_E3_i(o,v); } void EnvelopeUI::cb_E4_i(Fl_Osc_Button*, void*) { open_as_freemode(); } void EnvelopeUI::cb_E4(Fl_Osc_Button* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_E4_i(o,v); } void EnvelopeUI::cb_freeeditsmall_i(EnvelopeFreeEdit*, void*) { envfree->redraw(); } void EnvelopeUI::cb_freeeditsmall(EnvelopeFreeEdit* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_freeeditsmall_i(o,v); } void EnvelopeUI::cb_C5_i(Fl_Button*, void*) { presetsui->copy(envfree->loc()); } void EnvelopeUI::cb_C5(Fl_Button* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_C5_i(o,v); } void EnvelopeUI::cb_P5_i(Fl_Button*, void*) { presetsui->paste(envfree->loc(),this); } void EnvelopeUI::cb_P5(Fl_Button* o, void* v) { ((EnvelopeUI*)(o->parent()->parent()->user_data()))->cb_P5_i(o,v); } EnvelopeUI::EnvelopeUI(int x,int y, int w, int h, const char *label):Fl_Osc_Group(x,y,w,h) { freemodeeditwindow=NULL; envADSR=NULL; envASR=NULL; envADSRfilter=NULL; envASRbw=NULL; envfree=NULL; } EnvelopeUI::~EnvelopeUI() { envwindow->hide(); hide(); freemodeeditwindow->hide(); delete (freemodeeditwindow); } Fl_Osc_Window* EnvelopeUI::make_freemode_edit_window() { { freemodeeditwindow = new Fl_Osc_Window(575, 180, "Envelope"); freemodeeditwindow->box(FL_FLAT_BOX); freemodeeditwindow->color(FL_BACKGROUND_COLOR); freemodeeditwindow->selection_color(FL_BACKGROUND_COLOR); freemodeeditwindow->labeltype(FL_NO_LABEL); freemodeeditwindow->labelfont(0); freemodeeditwindow->labelsize(14); freemodeeditwindow->labelcolor(FL_FOREGROUND_COLOR); freemodeeditwindow->user_data((void*)(this)); freemodeeditwindow->align(Fl_Align(FL_ALIGN_TOP)); freemodeeditwindow->when(FL_WHEN_RELEASE); { Fl_Button* o = new Fl_Button(465, 160, 15, 15, "C"); o->box(FL_THIN_UP_BOX); o->color((Fl_Color)179); o->labelfont(1); o->labelsize(10); o->labelcolor((Fl_Color)55); o->callback((Fl_Callback*)cb_C); freemodeeditwindow->init(osc, loc()); } // Fl_Button* o { Fl_Button* o = new Fl_Button(482, 160, 15, 15, "P"); o->box(FL_THIN_UP_BOX); o->color((Fl_Color)179); o->labelfont(1); o->labelsize(10); o->labelcolor((Fl_Color)55); o->callback((Fl_Callback*)cb_P); } // Fl_Button* o { PointButton* o = addpoint = new PointButton(90, 155, 80, 20, "Add pt"); addpoint->box(FL_THIN_UP_BOX); addpoint->color(FL_BACKGROUND_COLOR); addpoint->selection_color(FL_BACKGROUND_COLOR); addpoint->labeltype(FL_NORMAL_LABEL); addpoint->labelfont(0); addpoint->labelsize(11); addpoint->labelcolor(FL_FOREGROUND_COLOR); addpoint->callback((Fl_Callback*)cb_addpoint); addpoint->align(Fl_Align(FL_ALIGN_CENTER)); addpoint->when(FL_WHEN_RELEASE); (void)o->init("addPoint"); } // PointButton* addpoint { EnvelopeFreeEdit* o = freeedit = new EnvelopeFreeEdit(5, 5, 565, 145, "Envelope"); freeedit->box(FL_FLAT_BOX); freeedit->color(FL_FOREGROUND_COLOR); freeedit->selection_color(FL_BACKGROUND_COLOR); freeedit->labeltype(FL_NORMAL_LABEL); freeedit->labelfont(0); freeedit->labelsize(14); freeedit->labelcolor(FL_FOREGROUND_COLOR); freeedit->callback((Fl_Callback*)cb_freeedit); freeedit->align(Fl_Align(FL_ALIGN_CENTER)); freeedit->when(FL_WHEN_RELEASE); o->init(); } // EnvelopeFreeEdit* freeedit { PointButton* o = deletepoint = new PointButton(175, 155, 85, 20, "Delete pt"); deletepoint->box(FL_THIN_UP_BOX); deletepoint->color(FL_BACKGROUND_COLOR); deletepoint->selection_color(FL_BACKGROUND_COLOR); deletepoint->labeltype(FL_NORMAL_LABEL); deletepoint->labelfont(0); deletepoint->labelsize(11); deletepoint->labelcolor(FL_FOREGROUND_COLOR); deletepoint->callback((Fl_Callback*)cb_deletepoint); deletepoint->align(Fl_Align(FL_ALIGN_CENTER)); deletepoint->when(FL_WHEN_RELEASE); (void)o->init("delPoint"); } // PointButton* deletepoint { Fl_Osc_Check* o = forcedreleasecheck = new Fl_Osc_Check(410, 165, 40, 15, "frcR"); forcedreleasecheck->tooltip("Forced Release"); forcedreleasecheck->box(FL_NO_BOX); forcedreleasecheck->down_box(FL_DOWN_BOX); forcedreleasecheck->color(FL_BACKGROUND_COLOR); forcedreleasecheck->selection_color(FL_FOREGROUND_COLOR); forcedreleasecheck->labeltype(FL_NORMAL_LABEL); forcedreleasecheck->labelfont(0); forcedreleasecheck->labelsize(10); forcedreleasecheck->labelcolor(FL_FOREGROUND_COLOR); forcedreleasecheck->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); forcedreleasecheck->when(FL_WHEN_RELEASE); o->init("Pforcedrelease"); } // Fl_Osc_Check* forcedreleasecheck { Fl_Osc_Dial* o = envstretchdial = new Fl_Osc_Dial(380, 155, 25, 25, "Str."); envstretchdial->tooltip("Envelope stretch (on lower notes make the envelope longer)"); envstretchdial->box(FL_ROUND_UP_BOX); envstretchdial->color(FL_BACKGROUND_COLOR); envstretchdial->selection_color(FL_INACTIVE_COLOR); envstretchdial->labeltype(FL_NORMAL_LABEL); envstretchdial->labelfont(0); envstretchdial->labelsize(10); envstretchdial->labelcolor(FL_FOREGROUND_COLOR); envstretchdial->maximum(127); envstretchdial->step(1); envstretchdial->align(Fl_Align(FL_ALIGN_LEFT)); envstretchdial->when(FL_WHEN_CHANGED); o->init("Penvstretch"); } // Fl_Osc_Dial* envstretchdial { Fl_Button* o = new Fl_Button(510, 155, 60, 20, "Close"); o->box(FL_THIN_UP_BOX); o->callback((Fl_Callback*)cb_Close); } // Fl_Button* o { Fl_Osc_Check* o = linearenvelopecheck = new Fl_Osc_Check(410, 151, 30, 15, "L"); linearenvelopecheck->tooltip("Linear Envelope"); linearenvelopecheck->box(FL_NO_BOX); linearenvelopecheck->down_box(FL_DOWN_BOX); linearenvelopecheck->color(FL_BACKGROUND_COLOR); linearenvelopecheck->selection_color(FL_FOREGROUND_COLOR); linearenvelopecheck->labeltype(FL_NORMAL_LABEL); linearenvelopecheck->labelfont(0); linearenvelopecheck->labelsize(10); linearenvelopecheck->labelcolor(FL_FOREGROUND_COLOR); linearenvelopecheck->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); linearenvelopecheck->when(FL_WHEN_RELEASE); o->init("Plinearenvelope"); } // Fl_Osc_Check* linearenvelopecheck { Fl_Osc_Counter* o = sustaincounter = new Fl_Osc_Counter(305, 155, 40, 15, "Sust"); sustaincounter->tooltip("Sustain (0 is disabled)"); sustaincounter->type(1); sustaincounter->box(FL_UP_BOX); sustaincounter->color(FL_BACKGROUND_COLOR); sustaincounter->selection_color(FL_INACTIVE_COLOR); sustaincounter->labeltype(FL_NORMAL_LABEL); sustaincounter->labelfont(0); sustaincounter->labelsize(11); sustaincounter->labelcolor(FL_FOREGROUND_COLOR); sustaincounter->minimum(0); sustaincounter->maximum(127); sustaincounter->step(1); sustaincounter->callback((Fl_Callback*)cb_sustaincounter); sustaincounter->align(Fl_Align(FL_ALIGN_LEFT)); sustaincounter->when(FL_WHEN_CHANGED); o->init("Penvsustain"); } // Fl_Osc_Counter* sustaincounter { Fl_Osc_Check* o = freemodehack = new Fl_Osc_Check(0, 0, 0, 0); freemodehack->box(FL_NO_BOX); freemodehack->down_box(FL_DOWN_BOX); freemodehack->color(FL_BACKGROUND_COLOR); freemodehack->selection_color(FL_FOREGROUND_COLOR); freemodehack->labeltype(FL_NORMAL_LABEL); freemodehack->labelfont(0); freemodehack->labelsize(14); freemodehack->labelcolor(FL_FOREGROUND_COLOR); freemodehack->callback((Fl_Callback*)cb_freemodehack); freemodehack->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); freemodehack->when(FL_WHEN_RELEASE); o->init("Pfreemode");o->hide(); } // Fl_Osc_Check* freemodehack { Fl_Osc_Button* o = new Fl_Osc_Button(5, 155, 80, 20, "Cancel"); o->tooltip("Cancel freemode editing"); o->box(FL_THIN_UP_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_BACKGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(0); o->labelsize(11); o->labelcolor((Fl_Color)1); o->callback((Fl_Callback*)cb_Cancel); o->align(Fl_Align(FL_ALIGN_CENTER)); o->when(FL_WHEN_RELEASE); } // Fl_Osc_Button* o freemodeeditwindow->end(); freemodeeditwindow->resizable(freemodeeditwindow); } // Fl_Osc_Window* freemodeeditwindow return freemodeeditwindow; } Fl_Osc_Group* EnvelopeUI::make_ADSR_window() { { envADSR = new Fl_Osc_Group(0, 0, 205, 70); envADSR->box(FL_FLAT_BOX); envADSR->color(FL_LIGHT1); envADSR->selection_color(FL_BACKGROUND_COLOR); envADSR->labeltype(FL_NO_LABEL); envADSR->labelfont(1); envADSR->labelsize(14); envADSR->labelcolor(FL_FOREGROUND_COLOR); envADSR->user_data((void*)(this)); envADSR->align(Fl_Align(FL_ALIGN_TOP)); envADSR->when(FL_WHEN_RELEASE); { Fl_Group* o = new Fl_Group(0, 0, 205, 70, "Amplitude Envelope"); o->box(FL_UP_BOX); o->color(FL_CYAN); o->labeltype(FL_ENGRAVED_LABEL); o->labelsize(10); o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE)); { Fl_Button* o = new Fl_Button(150, 5, 15, 15, "C"); o->box(FL_THIN_UP_BOX); o->color((Fl_Color)179); o->labelfont(1); o->labelsize(10); o->labelcolor((Fl_Color)55); o->callback((Fl_Callback*)cb_C1); } // Fl_Button* o { Fl_Button* o = new Fl_Button(167, 5, 15, 15, "P"); o->box(FL_THIN_UP_BOX); o->color((Fl_Color)179); o->labelfont(1); o->labelsize(10); o->labelcolor((Fl_Color)55); o->callback((Fl_Callback*)cb_P1); } // Fl_Button* o { Fl_Osc_Dial* o = e1adt = new Fl_Osc_Dial(5, 20, 30, 30, "A.dt"); e1adt->tooltip("Attack time"); e1adt->box(FL_ROUND_UP_BOX); e1adt->color(FL_BACKGROUND_COLOR); e1adt->selection_color(FL_INACTIVE_COLOR); e1adt->labeltype(FL_NORMAL_LABEL); e1adt->labelfont(0); e1adt->labelsize(10); e1adt->labelcolor(FL_FOREGROUND_COLOR); e1adt->maximum(127); e1adt->step(1); e1adt->callback((Fl_Callback*)cb_e1adt); e1adt->align(Fl_Align(FL_ALIGN_BOTTOM)); e1adt->when(FL_WHEN_CHANGED); o->init("PA_dt"); } // Fl_Osc_Dial* e1adt { Fl_Osc_Dial* o = e1ddt = new Fl_Osc_Dial(40, 20, 30, 30, "D.dt"); e1ddt->tooltip("Decay time"); e1ddt->box(FL_ROUND_UP_BOX); e1ddt->color(FL_BACKGROUND_COLOR); e1ddt->selection_color(FL_INACTIVE_COLOR); e1ddt->labeltype(FL_NORMAL_LABEL); e1ddt->labelfont(0); e1ddt->labelsize(10); e1ddt->labelcolor(FL_FOREGROUND_COLOR); e1ddt->maximum(127); e1ddt->step(1); e1ddt->callback((Fl_Callback*)cb_e1ddt); e1ddt->align(Fl_Align(FL_ALIGN_BOTTOM)); e1ddt->when(FL_WHEN_CHANGED); o->init("PD_dt"); } // Fl_Osc_Dial* e1ddt { Fl_Osc_Dial* o = e1rdt = new Fl_Osc_Dial(110, 20, 30, 30, "R.dt"); e1rdt->tooltip("Release time"); e1rdt->box(FL_ROUND_UP_BOX); e1rdt->color(FL_BACKGROUND_COLOR); e1rdt->selection_color(FL_INACTIVE_COLOR); e1rdt->labeltype(FL_NORMAL_LABEL); e1rdt->labelfont(0); e1rdt->labelsize(10); e1rdt->labelcolor(FL_FOREGROUND_COLOR); e1rdt->maximum(127); e1rdt->step(1); e1rdt->callback((Fl_Callback*)cb_e1rdt); e1rdt->align(Fl_Align(FL_ALIGN_BOTTOM)); e1rdt->when(FL_WHEN_CHANGED); o->init("PR_dt"); } // Fl_Osc_Dial* e1rdt { Fl_Osc_Dial* o = e1sval = new Fl_Osc_Dial(75, 20, 30, 30, "S.val"); e1sval->tooltip("Sustain value"); e1sval->box(FL_ROUND_UP_BOX); e1sval->color(FL_BACKGROUND_COLOR); e1sval->selection_color(FL_INACTIVE_COLOR); e1sval->labeltype(FL_NORMAL_LABEL); e1sval->labelfont(0); e1sval->labelsize(10); e1sval->labelcolor(FL_FOREGROUND_COLOR); e1sval->maximum(127); e1sval->step(1); e1sval->callback((Fl_Callback*)cb_e1sval); e1sval->align(Fl_Align(FL_ALIGN_BOTTOM)); e1sval->when(FL_WHEN_CHANGED); o->init("PS_val"); } // Fl_Osc_Dial* e1sval { Fl_Osc_Check* o = e1forcedrelease = new Fl_Osc_Check(180, 35, 20, 15, "frcR"); e1forcedrelease->tooltip("Forced Release"); e1forcedrelease->box(FL_NO_BOX); e1forcedrelease->down_box(FL_DOWN_BOX); e1forcedrelease->color(FL_BACKGROUND_COLOR); e1forcedrelease->selection_color(FL_FOREGROUND_COLOR); e1forcedrelease->labeltype(FL_NORMAL_LABEL); e1forcedrelease->labelfont(0); e1forcedrelease->labelsize(10); e1forcedrelease->labelcolor(FL_FOREGROUND_COLOR); e1forcedrelease->align(Fl_Align(FL_ALIGN_BOTTOM_LEFT)); e1forcedrelease->when(FL_WHEN_RELEASE); o->init("Pforcedrelease"); } // Fl_Osc_Check* e1forcedrelease { Fl_Osc_Dial* o = e1envstretch = new Fl_Osc_Dial(145, 25, 25, 25, "Stretch"); e1envstretch->tooltip("Envelope stretch (on lower notes makes the envelope longer)"); e1envstretch->box(FL_ROUND_UP_BOX); e1envstretch->color(FL_BACKGROUND_COLOR); e1envstretch->selection_color(FL_INACTIVE_COLOR); e1envstretch->labeltype(FL_NORMAL_LABEL); e1envstretch->labelfont(0); e1envstretch->labelsize(10); e1envstretch->labelcolor(FL_FOREGROUND_COLOR); e1envstretch->maximum(127); e1envstretch->step(1); e1envstretch->align(Fl_Align(FL_ALIGN_BOTTOM)); e1envstretch->when(FL_WHEN_CHANGED); o->init("Penvstretch"); } // Fl_Osc_Dial* e1envstretch { Fl_Osc_Button* o = new Fl_Osc_Button(185, 5, 15, 15, "E"); o->tooltip("Envelope window"); o->box(FL_UP_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_BACKGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(1); o->labelsize(10); o->labelcolor(FL_FOREGROUND_COLOR); o->callback((Fl_Callback*)cb_E); o->align(Fl_Align(FL_ALIGN_CENTER)); o->when(FL_WHEN_RELEASE); } // Fl_Osc_Button* o { Fl_Osc_Check* o = e1linearenvelope = new Fl_Osc_Check(180, 20, 15, 15, "L"); e1linearenvelope->tooltip("The evelope is linear"); e1linearenvelope->box(FL_NO_BOX); e1linearenvelope->down_box(FL_DOWN_BOX); e1linearenvelope->color(FL_BACKGROUND_COLOR); e1linearenvelope->selection_color(FL_FOREGROUND_COLOR); e1linearenvelope->labeltype(FL_NORMAL_LABEL); e1linearenvelope->labelfont(0); e1linearenvelope->labelsize(10); e1linearenvelope->labelcolor(FL_FOREGROUND_COLOR); e1linearenvelope->align(Fl_Align(FL_ALIGN_LEFT)); e1linearenvelope->when(FL_WHEN_RELEASE); o->init("Plinearenvelope"); } // Fl_Osc_Check* e1linearenvelope set_module_parameters(o); o->end(); } // Fl_Group* o envADSR->end(); } // Fl_Osc_Group* envADSR return envADSR; } Fl_Osc_Group* EnvelopeUI::make_ASR_window() { { envASR = new Fl_Osc_Group(0, 0, 210, 70); envASR->box(FL_FLAT_BOX); envASR->color(FL_BACKGROUND_COLOR); envASR->selection_color(FL_BACKGROUND_COLOR); envASR->labeltype(FL_NO_LABEL); envASR->labelfont(0); envASR->labelsize(14); envASR->labelcolor(FL_FOREGROUND_COLOR); envASR->user_data((void*)(this)); envASR->align(Fl_Align(FL_ALIGN_TOP)); envASR->when(FL_WHEN_RELEASE); { Fl_Group* o = new Fl_Group(0, 0, 210, 70, "Frequency Envelope"); o->box(FL_UP_BOX); o->color(FL_CYAN); o->labeltype(FL_ENGRAVED_LABEL); o->labelsize(10); o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE)); { Fl_Button* o = new Fl_Button(155, 5, 15, 15, "C"); o->box(FL_THIN_UP_BOX); o->color((Fl_Color)179); o->labelfont(1); o->labelsize(10); o->labelcolor((Fl_Color)55); o->callback((Fl_Callback*)cb_C2); } // Fl_Button* o { Fl_Button* o = new Fl_Button(172, 5, 15, 15, "P"); o->box(FL_THIN_UP_BOX); o->color((Fl_Color)179); o->labelfont(1); o->labelsize(10); o->labelcolor((Fl_Color)55); o->callback((Fl_Callback*)cb_P2); } // Fl_Button* o { Fl_Osc_Dial* o = e2aval = new Fl_Osc_Dial(5, 20, 30, 30, "A.val"); e2aval->tooltip("Starting value"); e2aval->box(FL_ROUND_UP_BOX); e2aval->color(FL_BACKGROUND_COLOR); e2aval->selection_color(FL_INACTIVE_COLOR); e2aval->labeltype(FL_NORMAL_LABEL); e2aval->labelfont(0); e2aval->labelsize(10); e2aval->labelcolor(FL_FOREGROUND_COLOR); e2aval->maximum(127); e2aval->step(1); e2aval->callback((Fl_Callback*)cb_e2aval); e2aval->align(Fl_Align(FL_ALIGN_BOTTOM)); e2aval->when(FL_WHEN_CHANGED); o->init("PA_val"); } // Fl_Osc_Dial* e2aval { Fl_Osc_Dial* o = e2adt = new Fl_Osc_Dial(40, 20, 30, 30, "A.dt"); e2adt->tooltip("Attack time"); e2adt->box(FL_ROUND_UP_BOX); e2adt->color(FL_BACKGROUND_COLOR); e2adt->selection_color(FL_INACTIVE_COLOR); e2adt->labeltype(FL_NORMAL_LABEL); e2adt->labelfont(0); e2adt->labelsize(10); e2adt->labelcolor(FL_FOREGROUND_COLOR); e2adt->maximum(127); e2adt->step(1); e2adt->callback((Fl_Callback*)cb_e2adt); e2adt->align(Fl_Align(FL_ALIGN_BOTTOM)); e2adt->when(FL_WHEN_CHANGED); o->init("PA_dt"); } // Fl_Osc_Dial* e2adt { Fl_Osc_Dial* o = e2rval = new Fl_Osc_Dial(110, 20, 30, 30, "R.val"); e2rval->tooltip("Release value"); e2rval->box(FL_ROUND_UP_BOX); e2rval->color(FL_BACKGROUND_COLOR); e2rval->selection_color(FL_INACTIVE_COLOR); e2rval->labeltype(FL_NORMAL_LABEL); e2rval->labelfont(0); e2rval->labelsize(10); e2rval->labelcolor(FL_FOREGROUND_COLOR); e2rval->maximum(127); e2rval->step(1); e2rval->callback((Fl_Callback*)cb_e2rval); e2rval->align(Fl_Align(FL_ALIGN_BOTTOM)); e2rval->when(FL_WHEN_CHANGED); o->init("PR_val"); } // Fl_Osc_Dial* e2rval { Fl_Osc_Dial* o = e2rdt = new Fl_Osc_Dial(75, 20, 30, 30, "R.dt"); e2rdt->tooltip("Release time"); e2rdt->box(FL_ROUND_UP_BOX); e2rdt->color(FL_BACKGROUND_COLOR); e2rdt->selection_color(FL_INACTIVE_COLOR); e2rdt->labeltype(FL_NORMAL_LABEL); e2rdt->labelfont(0); e2rdt->labelsize(10); e2rdt->labelcolor(FL_FOREGROUND_COLOR); e2rdt->maximum(127); e2rdt->step(1); e2rdt->callback((Fl_Callback*)cb_e2rdt); e2rdt->align(Fl_Align(FL_ALIGN_BOTTOM)); e2rdt->when(FL_WHEN_CHANGED); o->init("PR_dt"); } // Fl_Osc_Dial* e2rdt { Fl_Osc_Dial* o = e2envstretch = new Fl_Osc_Dial(145, 25, 25, 25, "Stretch"); e2envstretch->tooltip("Envelope stretch (on lower notes makes the envelope longer)"); e2envstretch->box(FL_ROUND_UP_BOX); e2envstretch->color(FL_BACKGROUND_COLOR); e2envstretch->selection_color(FL_INACTIVE_COLOR); e2envstretch->labeltype(FL_NORMAL_LABEL); e2envstretch->labelfont(0); e2envstretch->labelsize(10); e2envstretch->labelcolor(FL_FOREGROUND_COLOR); e2envstretch->maximum(127); e2envstretch->step(1); e2envstretch->align(Fl_Align(FL_ALIGN_BOTTOM)); e2envstretch->when(FL_WHEN_CHANGED); o->init("Penvstretch"); } // Fl_Osc_Dial* e2envstretch { Fl_Osc_Check* o = e2forcedrelease = new Fl_Osc_Check(180, 25, 15, 25, "frcR"); e2forcedrelease->tooltip("Forced release"); e2forcedrelease->box(FL_NO_BOX); e2forcedrelease->down_box(FL_DOWN_BOX); e2forcedrelease->color(FL_BACKGROUND_COLOR); e2forcedrelease->selection_color(FL_FOREGROUND_COLOR); e2forcedrelease->labeltype(FL_NORMAL_LABEL); e2forcedrelease->labelfont(0); e2forcedrelease->labelsize(10); e2forcedrelease->labelcolor(FL_FOREGROUND_COLOR); e2forcedrelease->align(Fl_Align(FL_ALIGN_BOTTOM_LEFT)); e2forcedrelease->when(FL_WHEN_RELEASE); o->init("Pforcedrelease"); } // Fl_Osc_Check* e2forcedrelease set_module_parameters(o); o->end(); } // Fl_Group* o { Fl_Osc_Button* o = new Fl_Osc_Button(190, 5, 15, 15, "E"); o->tooltip("Envelope window"); o->box(FL_UP_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_BACKGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(1); o->labelsize(10); o->labelcolor(FL_FOREGROUND_COLOR); o->callback((Fl_Callback*)cb_E1); o->align(Fl_Align(FL_ALIGN_CENTER)); o->when(FL_WHEN_RELEASE); } // Fl_Osc_Button* o envASR->end(); } // Fl_Osc_Group* envASR return envASR; } Fl_Osc_Group* EnvelopeUI::make_ADSRfilter_window() { { envADSRfilter = new Fl_Osc_Group(0, 0, 275, 70); envADSRfilter->box(FL_FLAT_BOX); envADSRfilter->color(FL_LIGHT1); envADSRfilter->selection_color(FL_BACKGROUND_COLOR); envADSRfilter->labeltype(FL_NO_LABEL); envADSRfilter->labelfont(1); envADSRfilter->labelsize(14); envADSRfilter->labelcolor(FL_FOREGROUND_COLOR); envADSRfilter->user_data((void*)(this)); envADSRfilter->align(Fl_Align(FL_ALIGN_TOP)); envADSRfilter->when(FL_WHEN_RELEASE); { Fl_Group* o = new Fl_Group(0, 0, 275, 70, "Filter Envelope"); o->box(FL_UP_BOX); o->color(FL_CYAN); o->labeltype(FL_ENGRAVED_LABEL); o->labelsize(10); o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE)); { Fl_Button* o = new Fl_Button(220, 5, 15, 15, "C"); o->box(FL_THIN_UP_BOX); o->color((Fl_Color)179); o->labelfont(1); o->labelsize(10); o->labelcolor((Fl_Color)55); o->callback((Fl_Callback*)cb_C3); } // Fl_Button* o { Fl_Button* o = new Fl_Button(237, 5, 15, 15, "P"); o->box(FL_THIN_UP_BOX); o->color((Fl_Color)179); o->labelfont(1); o->labelsize(10); o->labelcolor((Fl_Color)55); o->callback((Fl_Callback*)cb_P3); } // Fl_Button* o { Fl_Osc_Dial* o = e3aval = new Fl_Osc_Dial(5, 20, 30, 30, "A.val"); e3aval->tooltip("Starting value"); e3aval->box(FL_ROUND_UP_BOX); e3aval->color(FL_BACKGROUND_COLOR); e3aval->selection_color(FL_INACTIVE_COLOR); e3aval->labeltype(FL_NORMAL_LABEL); e3aval->labelfont(0); e3aval->labelsize(10); e3aval->labelcolor(FL_FOREGROUND_COLOR); e3aval->maximum(127); e3aval->step(1); e3aval->callback((Fl_Callback*)cb_e3aval); e3aval->align(Fl_Align(FL_ALIGN_BOTTOM)); e3aval->when(FL_WHEN_CHANGED); o->init("PA_val"); } // Fl_Osc_Dial* e3aval { Fl_Osc_Dial* o = e3adt = new Fl_Osc_Dial(40, 20, 30, 30, "A.dt"); e3adt->tooltip("Attack time"); e3adt->box(FL_ROUND_UP_BOX); e3adt->color(FL_BACKGROUND_COLOR); e3adt->selection_color(FL_INACTIVE_COLOR); e3adt->labeltype(FL_NORMAL_LABEL); e3adt->labelfont(0); e3adt->labelsize(10); e3adt->labelcolor(FL_FOREGROUND_COLOR); e3adt->maximum(127); e3adt->step(1); e3adt->callback((Fl_Callback*)cb_e3adt); e3adt->align(Fl_Align(FL_ALIGN_BOTTOM)); e3adt->when(FL_WHEN_CHANGED); o->init("PA_dt"); } // Fl_Osc_Dial* e3adt { Fl_Osc_Dial* o = e3dval = new Fl_Osc_Dial(75, 20, 30, 30, "D.val"); e3dval->tooltip("decay value"); e3dval->box(FL_ROUND_UP_BOX); e3dval->color(FL_BACKGROUND_COLOR); e3dval->selection_color(FL_INACTIVE_COLOR); e3dval->labeltype(FL_NORMAL_LABEL); e3dval->labelfont(0); e3dval->labelsize(10); e3dval->labelcolor(FL_FOREGROUND_COLOR); e3dval->maximum(127); e3dval->step(1); e3dval->callback((Fl_Callback*)cb_e3dval); e3dval->align(Fl_Align(FL_ALIGN_BOTTOM)); e3dval->when(FL_WHEN_CHANGED); o->init("PD_val"); } // Fl_Osc_Dial* e3dval { Fl_Osc_Dial* o = e3ddt = new Fl_Osc_Dial(110, 20, 30, 30, "D.dt"); e3ddt->tooltip("decay time"); e3ddt->box(FL_ROUND_UP_BOX); e3ddt->color(FL_BACKGROUND_COLOR); e3ddt->selection_color(FL_INACTIVE_COLOR); e3ddt->labeltype(FL_NORMAL_LABEL); e3ddt->labelfont(0); e3ddt->labelsize(10); e3ddt->labelcolor(FL_FOREGROUND_COLOR); e3ddt->maximum(127); e3ddt->step(1); e3ddt->callback((Fl_Callback*)cb_e3ddt); e3ddt->align(Fl_Align(FL_ALIGN_BOTTOM)); e3ddt->when(FL_WHEN_CHANGED); o->init("PD_dt"); } // Fl_Osc_Dial* e3ddt { Fl_Osc_Dial* o = e3rdt = new Fl_Osc_Dial(145, 20, 30, 30, "R.dt"); e3rdt->tooltip("Release time"); e3rdt->box(FL_ROUND_UP_BOX); e3rdt->color(FL_BACKGROUND_COLOR); e3rdt->selection_color(FL_INACTIVE_COLOR); e3rdt->labeltype(FL_NORMAL_LABEL); e3rdt->labelfont(0); e3rdt->labelsize(10); e3rdt->labelcolor(FL_FOREGROUND_COLOR); e3rdt->maximum(127); e3rdt->step(1); e3rdt->callback((Fl_Callback*)cb_e3rdt); e3rdt->align(Fl_Align(FL_ALIGN_BOTTOM)); e3rdt->when(FL_WHEN_CHANGED); o->init("PR_dt"); } // Fl_Osc_Dial* e3rdt { Fl_Osc_Dial* o = e3rval = new Fl_Osc_Dial(180, 20, 30, 30, "R.val"); e3rval->tooltip("Release value"); e3rval->box(FL_ROUND_UP_BOX); e3rval->color(FL_BACKGROUND_COLOR); e3rval->selection_color(FL_INACTIVE_COLOR); e3rval->labeltype(FL_NORMAL_LABEL); e3rval->labelfont(0); e3rval->labelsize(10); e3rval->labelcolor(FL_FOREGROUND_COLOR); e3rval->maximum(127); e3rval->step(1); e3rval->callback((Fl_Callback*)cb_e3rval); e3rval->align(Fl_Align(FL_ALIGN_BOTTOM)); e3rval->when(FL_WHEN_CHANGED); o->init("PR_val"); } // Fl_Osc_Dial* e3rval { Fl_Osc_Dial* o = e3envstretch = new Fl_Osc_Dial(215, 25, 25, 25, "Stretch"); e3envstretch->tooltip("Envelope stretch (on lower notes makes the envelope longer)"); e3envstretch->box(FL_ROUND_UP_BOX); e3envstretch->color(FL_BACKGROUND_COLOR); e3envstretch->selection_color(FL_INACTIVE_COLOR); e3envstretch->labeltype(FL_NORMAL_LABEL); e3envstretch->labelfont(0); e3envstretch->labelsize(10); e3envstretch->labelcolor(FL_FOREGROUND_COLOR); e3envstretch->maximum(127); e3envstretch->step(1); e3envstretch->align(Fl_Align(FL_ALIGN_BOTTOM)); e3envstretch->when(FL_WHEN_CHANGED); o->init("Penvstretch"); } // Fl_Osc_Dial* e3envstretch { Fl_Osc_Check* o = e3forcedrelease = new Fl_Osc_Check(250, 30, 15, 20, "frcR"); e3forcedrelease->tooltip("Forced Release"); e3forcedrelease->box(FL_NO_BOX); e3forcedrelease->down_box(FL_DOWN_BOX); e3forcedrelease->color(FL_BACKGROUND_COLOR); e3forcedrelease->selection_color(FL_FOREGROUND_COLOR); e3forcedrelease->labeltype(FL_NORMAL_LABEL); e3forcedrelease->labelfont(0); e3forcedrelease->labelsize(10); e3forcedrelease->labelcolor(FL_FOREGROUND_COLOR); e3forcedrelease->align(Fl_Align(FL_ALIGN_BOTTOM_LEFT)); e3forcedrelease->when(FL_WHEN_RELEASE); o->init("Pforcedrelease"); } // Fl_Osc_Check* e3forcedrelease { Fl_Osc_Button* o = new Fl_Osc_Button(255, 5, 15, 15, "E"); o->box(FL_UP_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_BACKGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(1); o->labelsize(10); o->labelcolor(FL_FOREGROUND_COLOR); o->callback((Fl_Callback*)cb_E2); o->align(Fl_Align(FL_ALIGN_CENTER)); o->when(FL_WHEN_RELEASE); } // Fl_Osc_Button* o set_module_parameters(o); o->end(); } // Fl_Group* o envADSRfilter->end(); } // Fl_Osc_Group* envADSRfilter return envADSRfilter; } Fl_Osc_Group* EnvelopeUI::make_ASRbw_window() { { Fl_Osc_Group* o = envASRbw = new Fl_Osc_Group(0, 0, 210, 70); envASRbw->box(FL_FLAT_BOX); envASRbw->color(FL_BACKGROUND_COLOR); envASRbw->selection_color(FL_BACKGROUND_COLOR); envASRbw->labeltype(FL_NO_LABEL); envASRbw->labelfont(0); envASRbw->labelsize(14); envASRbw->labelcolor(FL_FOREGROUND_COLOR); envASRbw->user_data((void*)(this)); envASRbw->align(Fl_Align(FL_ALIGN_TOP)); envASRbw->when(FL_WHEN_RELEASE); { Fl_Group* o = new Fl_Group(0, 0, 210, 70, "BandWidth Envelope"); o->box(FL_UP_BOX); o->color(FL_CYAN); o->labeltype(FL_ENGRAVED_LABEL); o->labelsize(10); o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE)); { Fl_Button* o = new Fl_Button(155, 5, 15, 15, "C"); o->box(FL_THIN_UP_BOX); o->color((Fl_Color)179); o->labelfont(1); o->labelsize(10); o->labelcolor((Fl_Color)55); o->callback((Fl_Callback*)cb_C4); } // Fl_Button* o { Fl_Button* o = new Fl_Button(172, 5, 15, 15, "P"); o->box(FL_THIN_UP_BOX); o->color((Fl_Color)179); o->labelfont(1); o->labelsize(10); o->labelcolor((Fl_Color)55); o->callback((Fl_Callback*)cb_P4); } // Fl_Button* o { Fl_Osc_Dial* o = e4aval = new Fl_Osc_Dial(5, 20, 30, 30, "A.val"); e4aval->tooltip("Starting value"); e4aval->box(FL_ROUND_UP_BOX); e4aval->color(FL_BACKGROUND_COLOR); e4aval->selection_color(FL_INACTIVE_COLOR); e4aval->labeltype(FL_NORMAL_LABEL); e4aval->labelfont(0); e4aval->labelsize(10); e4aval->labelcolor(FL_FOREGROUND_COLOR); e4aval->maximum(127); e4aval->step(1); e4aval->callback((Fl_Callback*)cb_e4aval); e4aval->align(Fl_Align(FL_ALIGN_BOTTOM)); e4aval->when(FL_WHEN_CHANGED); o->init("PA_val"); } // Fl_Osc_Dial* e4aval { Fl_Osc_Dial* o = e4adt = new Fl_Osc_Dial(40, 20, 30, 30, "A.dt"); e4adt->tooltip("Attack time"); e4adt->box(FL_ROUND_UP_BOX); e4adt->color(FL_BACKGROUND_COLOR); e4adt->selection_color(FL_INACTIVE_COLOR); e4adt->labeltype(FL_NORMAL_LABEL); e4adt->labelfont(0); e4adt->labelsize(10); e4adt->labelcolor(FL_FOREGROUND_COLOR); e4adt->maximum(127); e4adt->step(1); e4adt->callback((Fl_Callback*)cb_e4adt); e4adt->align(Fl_Align(FL_ALIGN_BOTTOM)); e4adt->when(FL_WHEN_CHANGED); o->init("PA_dt"); } // Fl_Osc_Dial* e4adt { Fl_Osc_Dial* o = e4rval = new Fl_Osc_Dial(110, 20, 30, 30, "R.val"); e4rval->tooltip("Release value"); e4rval->box(FL_ROUND_UP_BOX); e4rval->color(FL_BACKGROUND_COLOR); e4rval->selection_color(FL_INACTIVE_COLOR); e4rval->labeltype(FL_NORMAL_LABEL); e4rval->labelfont(0); e4rval->labelsize(10); e4rval->labelcolor(FL_FOREGROUND_COLOR); e4rval->maximum(127); e4rval->step(1); e4rval->callback((Fl_Callback*)cb_e4rval); e4rval->align(Fl_Align(FL_ALIGN_BOTTOM)); e4rval->when(FL_WHEN_CHANGED); o->init("PR_val"); } // Fl_Osc_Dial* e4rval { Fl_Osc_Dial* o = e4rdt = new Fl_Osc_Dial(75, 20, 30, 30, "R.dt"); e4rdt->tooltip("Release time"); e4rdt->box(FL_ROUND_UP_BOX); e4rdt->color(FL_BACKGROUND_COLOR); e4rdt->selection_color(FL_INACTIVE_COLOR); e4rdt->labeltype(FL_NORMAL_LABEL); e4rdt->labelfont(0); e4rdt->labelsize(10); e4rdt->labelcolor(FL_FOREGROUND_COLOR); e4rdt->maximum(127); e4rdt->step(1); e4rdt->callback((Fl_Callback*)cb_e4rdt); e4rdt->align(Fl_Align(FL_ALIGN_BOTTOM)); e4rdt->when(FL_WHEN_CHANGED); o->init("PR_dt"); } // Fl_Osc_Dial* e4rdt { Fl_Osc_Dial* o = e4envstretch = new Fl_Osc_Dial(145, 25, 25, 25, "Stretch"); e4envstretch->tooltip("Envelope stretch (on lower notes makes the envelope longer)"); e4envstretch->box(FL_ROUND_UP_BOX); e4envstretch->color(FL_BACKGROUND_COLOR); e4envstretch->selection_color(FL_INACTIVE_COLOR); e4envstretch->labeltype(FL_NORMAL_LABEL); e4envstretch->labelfont(0); e4envstretch->labelsize(10); e4envstretch->labelcolor(FL_FOREGROUND_COLOR); e4envstretch->maximum(127); e4envstretch->step(1); e4envstretch->align(Fl_Align(FL_ALIGN_BOTTOM)); e4envstretch->when(FL_WHEN_CHANGED); o->init("Penvstretch"); } // Fl_Osc_Dial* e4envstretch { Fl_Osc_Check* o = e4forcedrelease = new Fl_Osc_Check(180, 25, 15, 25, "frcR"); e4forcedrelease->tooltip("Forced release"); e4forcedrelease->box(FL_NO_BOX); e4forcedrelease->down_box(FL_DOWN_BOX); e4forcedrelease->color(FL_BACKGROUND_COLOR); e4forcedrelease->selection_color(FL_FOREGROUND_COLOR); e4forcedrelease->labeltype(FL_NORMAL_LABEL); e4forcedrelease->labelfont(0); e4forcedrelease->labelsize(10); e4forcedrelease->labelcolor(FL_FOREGROUND_COLOR); e4forcedrelease->align(Fl_Align(FL_ALIGN_BOTTOM_LEFT)); e4forcedrelease->when(FL_WHEN_RELEASE); o->init("Pforcedrelease"); } // Fl_Osc_Check* e4forcedrelease set_module_parameters(o); o->end(); } // Fl_Group* o { Fl_Osc_Button* o = new Fl_Osc_Button(190, 5, 15, 15, "E"); o->box(FL_UP_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_BACKGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(1); o->labelsize(10); o->labelcolor(FL_FOREGROUND_COLOR); o->callback((Fl_Callback*)cb_E3); o->align(Fl_Align(FL_ALIGN_CENTER)); o->when(FL_WHEN_RELEASE); } // Fl_Osc_Button* o set_module_parameters(o); envASRbw->end(); } // Fl_Osc_Group* envASRbw return envASRbw; } Fl_Osc_Group* EnvelopeUI::make_free_window() { { Fl_Osc_Group* o = envfree = new Fl_Osc_Group(0, 0, 205, 70); envfree->box(FL_FLAT_BOX); envfree->color(FL_LIGHT1); envfree->selection_color(FL_BACKGROUND_COLOR); envfree->labeltype(FL_NO_LABEL); envfree->labelfont(1); envfree->labelsize(14); envfree->labelcolor(FL_FOREGROUND_COLOR); envfree->user_data((void*)(this)); envfree->align(Fl_Align(FL_ALIGN_TOP)); envfree->when(FL_WHEN_RELEASE); { Fl_Group* o = envfreegroup = new Fl_Group(0, 0, 205, 70, "Amplitude Envelope"); envfreegroup->box(FL_UP_BOX); envfreegroup->color(FL_CYAN); envfreegroup->labeltype(FL_ENGRAVED_LABEL); envfreegroup->labelsize(10); envfreegroup->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE)); { Fl_Osc_Button* o = new Fl_Osc_Button(185, 5, 15, 15, "E"); o->box(FL_UP_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_BACKGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(1); o->labelsize(10); o->labelcolor(FL_FOREGROUND_COLOR); o->callback((Fl_Callback*)cb_E4); o->align(Fl_Align(FL_ALIGN_CENTER)); o->when(FL_WHEN_RELEASE); } // Fl_Osc_Button* o { EnvelopeFreeEdit* o = freeeditsmall = new EnvelopeFreeEdit(5, 20, 195, 45, "Envelope"); freeeditsmall->box(FL_FLAT_BOX); freeeditsmall->color(FL_FOREGROUND_COLOR); freeeditsmall->selection_color(FL_BACKGROUND_COLOR); freeeditsmall->labeltype(FL_NORMAL_LABEL); freeeditsmall->labelfont(0); freeeditsmall->labelsize(14); freeeditsmall->labelcolor(FL_FOREGROUND_COLOR); freeeditsmall->callback((Fl_Callback*)cb_freeeditsmall); freeeditsmall->align(Fl_Align(FL_ALIGN_CENTER)); freeeditsmall->when(FL_WHEN_RELEASE); Fl_Group::current()->resizable(freeeditsmall); o->init(); } // EnvelopeFreeEdit* freeeditsmall { Fl_Button* o = new Fl_Button(150, 5, 15, 15, "C"); o->box(FL_THIN_UP_BOX); o->color((Fl_Color)179); o->labelfont(1); o->labelsize(10); o->labelcolor((Fl_Color)55); o->callback((Fl_Callback*)cb_C5); } // Fl_Button* o { Fl_Button* o = new Fl_Button(167, 5, 15, 15, "P"); o->box(FL_THIN_UP_BOX); o->color((Fl_Color)179); o->labelfont(1); o->labelsize(10); o->labelcolor((Fl_Color)55); o->callback((Fl_Callback*)cb_P5); } // Fl_Button* o set_module_parameters(o); envfreegroup->end(); Fl_Group::current()->resizable(envfreegroup); } // Fl_Group* envfreegroup set_module_parameters(o); envfree->end(); } // Fl_Osc_Group* envfree return envfree; } void EnvelopeUI::open_as_freemode() { 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); } void EnvelopeUI::init(int env_type, Fl_Osc_Interface *osc_, std::string base_, std::string ext_) { 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(); } void EnvelopeUI::rebase(std::string new_base) { Fl_Osc_Group::rebase(new_base); freemodeeditwindow->rebase(new_base+ext); } void EnvelopeUI::disable_freemode() { 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); } void EnvelopeUI::refresh() { freemodehack->oscWrite("Pfreemode"); } void EnvelopeUI::refresh_display() { 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(); }