|
- // 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 <math.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- 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();
- }
|