// generated by Fast Light User Interface Designer (fluid) version 1.0300 #include "external/zynaddsubfx/UI/ResonanceUI.h" //Copyright (c) 2002-2005 Nasca Octavian Paul //License: GNU GPL version 2 or later #include #include #include #include void ResonanceUI::cb_Close_i(Fl_Button*, void*) { resonancewindow->hide(); } void ResonanceUI::cb_Close(Fl_Button* o, void* v) { ((ResonanceUI*)(o->parent()->user_data()))->cb_Close_i(o,v); } void ResonanceUI::cb_Zero_i(Fl_Osc_Button* o, void*) { o->oscWrite("zero"); redrawPADnoteApply(); } void ResonanceUI::cb_Zero(Fl_Osc_Button* o, void* v) { ((ResonanceUI*)(o->parent()->user_data()))->cb_Zero_i(o,v); } void ResonanceUI::cb_Smooth_i(Fl_Osc_Button* o, void*) { o->oscWrite("smooth"); redrawPADnoteApply(); } void ResonanceUI::cb_Smooth(Fl_Osc_Button* o, void* v) { ((ResonanceUI*)(o->parent()->user_data()))->cb_Smooth_i(o,v); } void ResonanceUI::cb_maxdb_i(Fl_Osc_Slider* o, void*) { maxdbvo->value(o->value()); redrawPADnoteApply(); } void ResonanceUI::cb_maxdb(Fl_Osc_Slider* o, void* v) { ((ResonanceUI*)(o->parent()->user_data()))->cb_maxdb_i(o,v); } void ResonanceUI::cb_centerfreqvo_i(Fl_Osc_Output* o, void*) { o->value(o->newvalue()/1000.0); } void ResonanceUI::cb_centerfreqvo(Fl_Osc_Output* o, void* v) { ((ResonanceUI*)(o->parent()->user_data()))->cb_centerfreqvo_i(o,v); } void ResonanceUI::cb_octavesfreqvo_i(Fl_Osc_Output* o, void*) { o->value(o->newvalue()); } void ResonanceUI::cb_octavesfreqvo(Fl_Osc_Output* o, void* v) { ((ResonanceUI*)(o->parent()->user_data()))->cb_octavesfreqvo_i(o,v); } void ResonanceUI::cb_RND2_i(Fl_Osc_Button* o, void*) { o->oscWrite("randomize", "i", 1); redrawPADnoteApply(); } void ResonanceUI::cb_RND2(Fl_Osc_Button* o, void* v) { ((ResonanceUI*)(o->parent()->user_data()))->cb_RND2_i(o,v); } void ResonanceUI::cb_RND1_i(Fl_Osc_Button* o, void*) { o->oscWrite("randomize", "i", 0); redrawPADnoteApply(); } void ResonanceUI::cb_RND1(Fl_Osc_Button* o, void* v) { ((ResonanceUI*)(o->parent()->user_data()))->cb_RND1_i(o,v); } void ResonanceUI::cb_RND3_i(Fl_Osc_Button* o, void*) { o->oscWrite("randomize", "i", 2); redrawPADnoteApply(); } void ResonanceUI::cb_RND3(Fl_Osc_Button* o, void* v) { ((ResonanceUI*)(o->parent()->user_data()))->cb_RND3_i(o,v); } void ResonanceUI::cb_InterpP_i(Fl_Osc_Button* o, void*) { int type; if (Fl::event_button()==FL_LEFT_MOUSE) type=0; else type=1; o->oscWrite("interpolatepeaks", "i", type); redrawPADnoteApply(); } void ResonanceUI::cb_InterpP(Fl_Osc_Button* o, void* v) { ((ResonanceUI*)(o->parent()->user_data()))->cb_InterpP_i(o,v); } void ResonanceUI::cb_centerfreq_i(Fl_Osc_Slider*, void*) { centerfreqvo->do_callback(); redrawPADnoteApply(); } void ResonanceUI::cb_centerfreq(Fl_Osc_Slider* o, void* v) { ((ResonanceUI*)(o->parent()->user_data()))->cb_centerfreq_i(o,v); } void ResonanceUI::cb_octavesfreq_i(Fl_Osc_Slider*, void*) { octavesfreqvo->do_callback(); redrawPADnoteApply(); } void ResonanceUI::cb_octavesfreq(Fl_Osc_Slider* o, void* v) { ((ResonanceUI*)(o->parent()->user_data()))->cb_octavesfreq_i(o,v); } void ResonanceUI::cb_C_i(Fl_Button*, void*) { presetsui->copy(resonancewindow->loc()); } void ResonanceUI::cb_C(Fl_Button* o, void* v) { ((ResonanceUI*)(o->parent()->user_data()))->cb_C_i(o,v); } void ResonanceUI::cb_P_i(Fl_Button*, void*) { presetsui->paste(resonancewindow->loc(),this); } void ResonanceUI::cb_P(Fl_Button* o, void* v) { ((ResonanceUI*)(o->parent()->user_data()))->cb_P_i(o,v); } void ResonanceUI::cb_applybutton_i(Fl_Button*, void*) { applybutton->color(FL_GRAY); applybutton->redraw(); if (cbapplywidget!=NULL) { cbapplywidget->do_callback(); cbapplywidget->color(FL_GRAY); cbapplywidget->redraw(); }; } void ResonanceUI::cb_applybutton(Fl_Button* o, void* v) { ((ResonanceUI*)(o->parent()->user_data()))->cb_applybutton_i(o,v); } Fl_Osc_Window* ResonanceUI::make_window(Fl_Osc_Interface *osc, std::string loc) { { resonancewindow = new Fl_Osc_Window(780, 305, "Resonance"); resonancewindow->box(FL_FLAT_BOX); resonancewindow->color(FL_BACKGROUND_COLOR); resonancewindow->selection_color(FL_BACKGROUND_COLOR); resonancewindow->labeltype(FL_NO_LABEL); resonancewindow->labelfont(0); resonancewindow->labelsize(14); resonancewindow->labelcolor(FL_FOREGROUND_COLOR); resonancewindow->user_data((void*)(this)); resonancewindow->align(Fl_Align(FL_ALIGN_TOP)); resonancewindow->when(FL_WHEN_RELEASE); { khzvalue = new Fl_Value_Output(415, 264, 45, 18, "kHz"); khzvalue->labelsize(12); khzvalue->minimum(0.001); khzvalue->maximum(48); khzvalue->step(0.01); khzvalue->textfont(1); khzvalue->textsize(12); khzvalue->align(Fl_Align(FL_ALIGN_RIGHT)); //this widget must be before the calling widgets resonancewindow->init(osc,loc); } // Fl_Value_Output* khzvalue { dbvalue = new Fl_Value_Output(415, 282, 45, 18, "dB"); dbvalue->labelsize(12); dbvalue->minimum(-150); dbvalue->maximum(150); dbvalue->step(0.1); dbvalue->textfont(1); dbvalue->textsize(12); dbvalue->align(Fl_Align(FL_ALIGN_RIGHT)); //this widget must be before the calling widgets } // Fl_Value_Output* dbvalue { Fl_Button* o = new Fl_Button(690, 283, 84, 17, "Close"); o->box(FL_THIN_UP_BOX); o->callback((Fl_Callback*)cb_Close); } // Fl_Button* o { Fl_Osc_Button* o = new Fl_Osc_Button(491, 264, 66, 15, "Zero"); o->tooltip("Clear the resonance function"); o->box(FL_THIN_UP_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_BACKGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(1); o->labelsize(12); o->labelcolor(FL_FOREGROUND_COLOR); o->callback((Fl_Callback*)cb_Zero); o->align(Fl_Align(FL_ALIGN_CENTER)); o->when(FL_WHEN_RELEASE); } // Fl_Osc_Button* o { Fl_Osc_Button* o = new Fl_Osc_Button(491, 282, 66, 18, "Smooth"); o->tooltip("Smooth the resonance function"); o->box(FL_THIN_UP_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_BACKGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(1); o->labelsize(12); o->labelcolor(FL_FOREGROUND_COLOR); o->callback((Fl_Callback*)cb_Smooth); o->align(Fl_Align(FL_ALIGN_CENTER)); o->when(FL_WHEN_RELEASE); } // Fl_Osc_Button* o { Fl_Osc_Check* o = enabled = new Fl_Osc_Check(6, 270, 78, 27, "Enable"); enabled->box(FL_THIN_UP_BOX); enabled->down_box(FL_DOWN_BOX); enabled->color(FL_BACKGROUND_COLOR); enabled->selection_color(FL_FOREGROUND_COLOR); enabled->labeltype(FL_NORMAL_LABEL); enabled->labelfont(0); enabled->labelsize(14); enabled->labelcolor(FL_FOREGROUND_COLOR); enabled->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); enabled->when(FL_WHEN_RELEASE); o->init("Penabled"); } // Fl_Osc_Check* enabled { Fl_Osc_Slider* o = maxdb = new Fl_Osc_Slider(90, 285, 84, 15); maxdb->type(5); maxdb->box(FL_FLAT_BOX); maxdb->color(FL_BACKGROUND_COLOR); maxdb->selection_color(FL_BACKGROUND_COLOR); maxdb->labeltype(FL_NORMAL_LABEL); maxdb->labelfont(0); maxdb->labelsize(14); maxdb->labelcolor(FL_FOREGROUND_COLOR); maxdb->minimum(1); maxdb->maximum(90); maxdb->step(1); maxdb->value(30); maxdb->callback((Fl_Callback*)cb_maxdb); maxdb->align(Fl_Align(FL_ALIGN_BOTTOM)); maxdb->when(FL_WHEN_CHANGED); o->init("PmaxdB", 'i'); o->reset_value = 30; } // Fl_Osc_Slider* maxdb { maxdbvo = new Fl_Value_Output(126, 264, 24, 18, "Max."); maxdbvo->tooltip("The Maximum amplitude (dB)"); maxdbvo->labelsize(12); maxdbvo->minimum(1); maxdbvo->maximum(127); maxdbvo->step(1); maxdbvo->value(30); maxdbvo->textsize(12); } // Fl_Value_Output* maxdbvo { new Fl_Box(150, 264, 24, 18, "dB"); } // Fl_Box* o { Fl_Osc_Output* o = centerfreqvo = new Fl_Osc_Output(210, 264, 45, 18, "C.f."); centerfreqvo->tooltip("Center Frequency (kHz)"); centerfreqvo->box(FL_NO_BOX); centerfreqvo->color(FL_BACKGROUND_COLOR); centerfreqvo->selection_color(FL_BACKGROUND_COLOR); centerfreqvo->labeltype(FL_NORMAL_LABEL); centerfreqvo->labelfont(0); centerfreqvo->labelsize(12); centerfreqvo->labelcolor(FL_FOREGROUND_COLOR); centerfreqvo->minimum(1); centerfreqvo->maximum(10); centerfreqvo->step(0.01); centerfreqvo->value(1); centerfreqvo->textfont(1); centerfreqvo->textsize(12); centerfreqvo->callback((Fl_Callback*)cb_centerfreqvo); centerfreqvo->align(Fl_Align(FL_ALIGN_LEFT)); centerfreqvo->when(3); o->init("centerfreq"); } // Fl_Osc_Output* centerfreqvo { Fl_Osc_Output* o = octavesfreqvo = new Fl_Osc_Output(210, 282, 45, 18, "Oct."); octavesfreqvo->tooltip("No. of octaves"); octavesfreqvo->box(FL_NO_BOX); octavesfreqvo->color(FL_BACKGROUND_COLOR); octavesfreqvo->selection_color(FL_BACKGROUND_COLOR); octavesfreqvo->labeltype(FL_NORMAL_LABEL); octavesfreqvo->labelfont(0); octavesfreqvo->labelsize(12); octavesfreqvo->labelcolor(FL_FOREGROUND_COLOR); octavesfreqvo->maximum(11); octavesfreqvo->step(0.01); octavesfreqvo->value(5); octavesfreqvo->textfont(1); octavesfreqvo->textsize(12); octavesfreqvo->callback((Fl_Callback*)cb_octavesfreqvo); octavesfreqvo->align(Fl_Align(FL_ALIGN_LEFT)); octavesfreqvo->when(3); o->init("octavesfreq"); } // Fl_Osc_Output* octavesfreqvo { Fl_Osc_Button* o = new Fl_Osc_Button(566, 276, 42, 12, "RND2"); o->tooltip("Randomize the resonance function"); o->box(FL_THIN_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_RND2); o->align(Fl_Align(FL_ALIGN_CENTER)); o->when(FL_WHEN_RELEASE); } // Fl_Osc_Button* o { Fl_Osc_Button* o = new Fl_Osc_Button(566, 264, 42, 12, "RND1"); o->tooltip("Randomize the resonance function"); o->box(FL_THIN_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_RND1); o->align(Fl_Align(FL_ALIGN_CENTER)); o->when(FL_WHEN_RELEASE); } // Fl_Osc_Button* o { Fl_Osc_Button* o = new Fl_Osc_Button(566, 288, 42, 12, "RND3"); o->tooltip("Randomize the resonance function"); o->box(FL_THIN_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_RND3); o->align(Fl_Align(FL_ALIGN_CENTER)); o->when(FL_WHEN_RELEASE); } // Fl_Osc_Button* o { Fl_Osc_Check* o = p1st = new Fl_Osc_Check(365, 285, 45, 15, "P.1st"); p1st->tooltip("Protect the fundamental frequency (do not damp the first harmonic)"); p1st->box(FL_NO_BOX); p1st->down_box(FL_DOWN_BOX); p1st->color(FL_BACKGROUND_COLOR); p1st->selection_color(FL_FOREGROUND_COLOR); p1st->labeltype(FL_NORMAL_LABEL); p1st->labelfont(0); p1st->labelsize(10); p1st->labelcolor(FL_FOREGROUND_COLOR); p1st->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); p1st->when(FL_WHEN_RELEASE); o->init("Pprotectthefundamental"); } // Fl_Osc_Check* p1st { Fl_Osc_Button* o = new Fl_Osc_Button(365, 265, 46, 15, "InterpP"); o->tooltip("Interpolate the peaks"); o->box(FL_THIN_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_InterpP); o->align(Fl_Align(FL_ALIGN_CENTER)); o->when(FL_WHEN_RELEASE); } // Fl_Osc_Button* o { Fl_Osc_Slider* o = centerfreq = new Fl_Osc_Slider(260, 268, 90, 14); centerfreq->type(5); centerfreq->box(FL_FLAT_BOX); centerfreq->color(FL_BACKGROUND_COLOR); centerfreq->selection_color(FL_BACKGROUND_COLOR); centerfreq->labeltype(FL_NORMAL_LABEL); centerfreq->labelfont(0); centerfreq->labelsize(10); centerfreq->labelcolor(FL_FOREGROUND_COLOR); centerfreq->maximum(127); centerfreq->step(1); centerfreq->callback((Fl_Callback*)cb_centerfreq); centerfreq->align(Fl_Align(FL_ALIGN_BOTTOM)); centerfreq->when(FL_WHEN_CHANGED); o->init("Pcenterfreq", 'i');o->reset_value=64; } // Fl_Osc_Slider* centerfreq { Fl_Osc_Slider* o = octavesfreq = new Fl_Osc_Slider(260, 286, 90, 14); octavesfreq->type(5); octavesfreq->box(FL_FLAT_BOX); octavesfreq->color(FL_BACKGROUND_COLOR); octavesfreq->selection_color(FL_BACKGROUND_COLOR); octavesfreq->labeltype(FL_NORMAL_LABEL); octavesfreq->labelfont(0); octavesfreq->labelsize(10); octavesfreq->labelcolor(FL_FOREGROUND_COLOR); octavesfreq->maximum(127); octavesfreq->step(1); octavesfreq->callback((Fl_Callback*)cb_octavesfreq); octavesfreq->align(Fl_Align(FL_ALIGN_BOTTOM)); octavesfreq->when(FL_WHEN_CHANGED); o->init("Poctavesfreq", 'i');o->reset_value=64; } // Fl_Osc_Slider* octavesfreq { Fl_Button* o = new Fl_Button(625, 275, 25, 15, "C"); o->box(FL_THIN_UP_BOX); o->color((Fl_Color)179); o->labelfont(1); o->labelsize(11); o->labelcolor((Fl_Color)55); o->callback((Fl_Callback*)cb_C); } // Fl_Button* o { Fl_Button* o = new Fl_Button(655, 275, 25, 15, "P"); o->box(FL_THIN_UP_BOX); o->color((Fl_Color)179); o->labelfont(1); o->labelsize(11); o->labelcolor((Fl_Color)55); o->callback((Fl_Callback*)cb_P); } // Fl_Button* o { applybutton = new Fl_Button(690, 265, 85, 15, "Apply"); applybutton->box(FL_THIN_UP_BOX); applybutton->labelfont(1); applybutton->labelsize(11); applybutton->callback((Fl_Callback*)cb_applybutton); } // Fl_Button* applybutton { rg = new Fl_Resonance_Graph(6, 5, 768, 256); rg->box(FL_BORDER_BOX); rg->color(FL_BACKGROUND_COLOR); rg->selection_color(FL_BACKGROUND_COLOR); rg->labeltype(FL_NORMAL_LABEL); rg->labelfont(0); rg->labelsize(14); rg->labelcolor(FL_FOREGROUND_COLOR); rg->align(Fl_Align(FL_ALIGN_CENTER)); rg->when(FL_WHEN_RELEASE); } // Fl_Resonance_Graph* rg resonancewindow->end(); } // Fl_Osc_Window* resonancewindow return resonancewindow; } ResonanceUI::ResonanceUI(Fl_Osc_Interface *osc, std::string loc) { assert(osc); cbwidget=NULL; cbapplywidget=NULL; make_window(osc, loc); rg->init(khzvalue,dbvalue); applybutton->hide(); } ResonanceUI::~ResonanceUI() { resonancewindow->hide(); delete resonancewindow; } void ResonanceUI::redrawPADnoteApply() { rg->update(); if (cbwidget!=NULL) { cbwidget->do_callback(); applybutton->color(FL_RED); applybutton->redraw(); }; } void ResonanceUI::setcbwidget(Fl_Widget *cbwidget,Fl_Widget *cbapplywidget) { this->cbwidget=cbwidget; this->cbapplywidget=cbapplywidget; rg->setcbwidget(cbwidget,applybutton); applybutton->show(); } void ResonanceUI::refresh() { redrawPADnoteApply(); //TODO fix me when controls are relocatable //enabled->value(respar->Penabled); //maxdb->value(respar->PmaxdB); //maxdbvo->value(respar->PmaxdB); // //centerfreqvo->value(respar->getcenterfreq()/1000.0); //octavesfreqvo->value(respar->getoctavesfreq()); // //centerfreq->value(respar->Pcenterfreq); //octavesfreq->value(respar->Poctavesfreq); // //p1st->value(respar->Pprotectthefundamental); rg->update(); }