// generated by Fast Light User Interface Designer (fluid) version 1.0300 #include "external/zynaddsubfx/UI/SUBnoteUI.h" //Copyright (c) 2002-2005 Nasca Octavian Paul //License: GNU GPL version 2 or later SUBSlider::SUBSlider(int x,int y, int w, int h, const char *label) :Fl_Osc_TSlider(x,y,w,h,label) { } void SUBSlider::OSC_value(char c) { value(127-c); selection_color(value() == reset_value ? 0 : 222); } void SUBSlider::cb(void) { selection_color(value() == reset_value ? 0 : 222); oscWrite(ext, "c", (int)(127-Fl_Slider::value())); if(cb_data.first) cb_data.first(this, cb_data.second); } Fl_Osc_Group* SUBnoteharmonic::make_window() { { harmonic = new Fl_Osc_Group(0, 0, 90, 305); harmonic->box(FL_FLAT_BOX); harmonic->color(FL_BACKGROUND_COLOR); harmonic->selection_color(FL_BACKGROUND_COLOR); harmonic->labeltype(FL_NO_LABEL); harmonic->labelfont(0); harmonic->labelsize(14); harmonic->labelcolor(FL_FOREGROUND_COLOR); harmonic->user_data((void*)(this)); harmonic->align(Fl_Align(FL_ALIGN_TOP)); harmonic->when(FL_WHEN_RELEASE); { mag = new SUBSlider(0, 15, 10, 135); mag->tooltip("harmonic\'s magnitude"); mag->type(4); mag->box(FL_FLAT_BOX); mag->color(FL_BACKGROUND_COLOR); mag->selection_color(FL_FOREGROUND_COLOR); mag->labeltype(FL_NORMAL_LABEL); mag->labelfont(0); mag->labelsize(14); mag->labelcolor(FL_FOREGROUND_COLOR); mag->maximum(127); mag->step(1); mag->value(127); mag->align(Fl_Align(FL_ALIGN_BOTTOM)); mag->when(FL_WHEN_CHANGED); } // SUBSlider* mag { bw = new SUBSlider(0, 157, 10, 130); bw->tooltip("harmonic\'s bandwidth"); bw->type(4); bw->box(FL_FLAT_BOX); bw->color(FL_BACKGROUND_COLOR); bw->selection_color((Fl_Color)222); bw->labeltype(FL_NORMAL_LABEL); bw->labelfont(0); bw->labelsize(14); bw->labelcolor(FL_FOREGROUND_COLOR); bw->maximum(127); bw->step(1); bw->value(64); bw->align(Fl_Align(FL_ALIGN_BOTTOM)); bw->when(FL_WHEN_CHANGED); } // SUBSlider* bw { Fl_Box* o = new Fl_Box(10, 219, 5, 5); o->box(FL_FLAT_BOX); o->color(FL_DARK2); if (n+1==MAX_SUB_HARMONICS) o->hide(); } // Fl_Box* o { Fl_Box* o = new Fl_Box(0, 288, 10, 15, "01"); o->labelfont(1); o->labelsize(9); o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); char tmp[10];snprintf(tmp,10,"%d",n+1);o->label(strdup(tmp)); } // Fl_Box* o { Fl_Box* o = new Fl_Box(0, 0, 10, 15, "01"); o->labelfont(1); o->labelsize(9); o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); char tmp[10];snprintf(tmp,10,"%d",n+1);o->label(strdup(tmp)); } // Fl_Box* o harmonic->end(); } // Fl_Osc_Group* harmonic return harmonic; } SUBnoteharmonic::SUBnoteharmonic(int x,int y, int w, int h, const char *label):Fl_Osc_Group(x,y,w,h,label) { n=0; } void SUBnoteharmonic::init(int n_) { n=n_; make_window(); harmonic->show(); mag->reset_value=127; mag->ext = "Phmag" + to_s(n); mag->oscRegister(mag->ext.c_str()); mag->set_transform([](float x){return 127.0f - x;}); bw->reset_value=63; bw->ext = "Phrelbw" + to_s(n); bw->oscRegister(bw->ext.c_str()); bw->set_transform([](float x){return 63.0f - x;}); osc->requestValue(base+"Phrelbw"+to_s(n)); end(); } void SUBnoteharmonic::refresh() { // request values for the widgets mag->oscWrite(mag->ext); bw->oscWrite(bw->ext); } SUBnoteharmonic::~SUBnoteharmonic() { harmonic->hide(); hide(); //delete(harmonic); } void SUBnoteUI::cb_Close_i(Fl_Button*, void*) { SUBparameters->hide(); } void SUBnoteUI::cb_Close(Fl_Button* o, void* v) { ((SUBnoteUI*)(o->parent()->user_data()))->cb_Close_i(o,v); } Fl_Menu_Item SUBnoteUI::menu_magtype[] = { {"Linear", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0}, {"-40dB", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0}, {"-60dB", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0}, {"-80dB", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0}, {"-100dB", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0}, {0,0,0,0,0,0,0,0,0} }; Fl_Menu_Item SUBnoteUI::menu_start[] = { {"Zero", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0}, {"RND", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0}, {"Max.", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0}, {0,0,0,0,0,0,0,0,0} }; void SUBnoteUI::cb_freqee_i(Fl_Osc_Check* o, void*) { if (o->value()==0) freqenvelopegroup->deactivate(); else freqenvelopegroup->activate(); o->show(); freqsettingsui->redraw(); } void SUBnoteUI::cb_freqee(Fl_Osc_Check* o, void* v) { ((SUBnoteUI*)(o->parent()->parent()->user_data()))->cb_freqee_i(o,v); } void SUBnoteUI::cb_detune_i(Fl_Osc_Slider* o, void*) { o->oscWrite("detunevalue"); } void SUBnoteUI::cb_detune(Fl_Osc_Slider* o, void* v) { ((SUBnoteUI*)(o->parent()->parent()->user_data()))->cb_detune_i(o,v); } void SUBnoteUI::cb_hz440_i(Fl_Osc_Check* o, void*) { if (o->value()==0) fixedfreqetdial->deactivate(); else fixedfreqetdial->activate(); } void SUBnoteUI::cb_hz440(Fl_Osc_Check* o, void* v) { ((SUBnoteUI*)(o->parent()->parent()->user_data()))->cb_hz440_i(o,v); } void SUBnoteUI::cb_detunetype_i(Fl_Osc_Choice* o, void*) { o->oscWrite("detunevalue"); } void SUBnoteUI::cb_detunetype(Fl_Osc_Choice* o, void* v) { ((SUBnoteUI*)(o->parent()->parent()->user_data()))->cb_detunetype_i(o,v); } void SUBnoteUI::cb_Clear_i(Fl_Osc_Button* o, void*) { o->oscWrite("clear"); for (int i=1;imag->oscWrite(h[i]->mag->ext, "c", 0); h[i]->bw->oscWrite(h[i]->bw->ext, "c", 64); }; h[0]->mag->oscWrite(h[0]->mag->ext, "c", 127); h[0]->bw->oscWrite(h[0]->bw->ext, "c", 64); SUBparameters->redraw(); } void SUBnoteUI::cb_Clear(Fl_Osc_Button* o, void* v) { ((SUBnoteUI*)(o->parent()->user_data()))->cb_Clear_i(o,v); } void SUBnoteUI::cb_bwee_i(Fl_Osc_Check* o, void*) { if (o->value()==0) bandwidthenvelopegroup->deactivate(); else bandwidthenvelopegroup->activate(); o->show(); bandwidthsettingsui->redraw(); } void SUBnoteUI::cb_bwee(Fl_Osc_Check* o, void* v) { ((SUBnoteUI*)(o->parent()->parent()->user_data()))->cb_bwee_i(o,v); } void SUBnoteUI::cb_filtere_i(Fl_Osc_Check* o, void*) { if (o->value()==0) globalfiltergroup->deactivate(); else globalfiltergroup->activate(); o->show(); globalfiltergroup->redraw(); } void SUBnoteUI::cb_filtere(Fl_Osc_Check* o, void* v) { ((SUBnoteUI*)(o->parent()->user_data()))->cb_filtere_i(o,v); } void SUBnoteUI::cb_C_i(Fl_Button*, void*) { presetsui->copy(loc); } void SUBnoteUI::cb_C(Fl_Button* o, void* v) { ((SUBnoteUI*)(o->parent()->user_data()))->cb_C_i(o,v); } void SUBnoteUI::cb_P_i(Fl_Button*, void*) { presetsui->paste(loc,this); } void SUBnoteUI::cb_P(Fl_Button* o, void* v) { ((SUBnoteUI*)(o->parent()->user_data()))->cb_P_i(o,v); } Fl_Menu_Item SUBnoteUI::menu_spreadtype[] = { {"Harmonic", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0}, {"ShiftU", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0}, {"ShiftL", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0}, {"PowerU", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0}, {"PowerL", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0}, {"Sine", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0}, {"Power", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0}, {"Shift", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0}, {0,0,0,0,0,0,0,0,0} }; Fl_Osc_Window* SUBnoteUI::make_window() { { SUBparameters = new Fl_Osc_Window(735, 475, "SUBsynth Parameters"); SUBparameters->box(FL_FLAT_BOX); SUBparameters->color(FL_BACKGROUND_COLOR); SUBparameters->selection_color(FL_BACKGROUND_COLOR); SUBparameters->labeltype(FL_NO_LABEL); SUBparameters->labelfont(0); SUBparameters->labelsize(14); SUBparameters->labelcolor(FL_FOREGROUND_COLOR); SUBparameters->user_data((void*)(this)); SUBparameters->align(Fl_Align(FL_ALIGN_TOP)); SUBparameters->when(FL_WHEN_RELEASE); { Fl_Box* o = new Fl_Box(0, 0, 0, 0); o->box(FL_FLAT_BOX); o->color(FL_DARK2); SUBparameters->init(osc, loc); } // Fl_Box* o { Fl_Scroll* o = new Fl_Scroll(5, 140, 434, 330, "scroll"); o->type(1); o->box(FL_FLAT_BOX); o->labeltype(FL_NO_LABEL); { Fl_Pack* o = harmonics = new Fl_Pack(5, 145, 425, 325); harmonics->type(1); for (int i=0;ih(),"");h[i]->init(i);} harmonics->end(); } // Fl_Pack* harmonics o->end(); } // Fl_Scroll* o { Fl_Button* o = new Fl_Button(670, 446, 60, 25, "Close"); o->box(FL_THIN_UP_BOX); o->callback((Fl_Callback*)cb_Close); } // Fl_Button* o { Fl_Group* o = new Fl_Group(5, 5, 215, 135, "AMPLITUDE"); o->box(FL_UP_FRAME); o->labeltype(FL_EMBOSSED_LABEL); o->labelfont(1); o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE)); { Fl_Osc_VSlider* o = vol = new Fl_Osc_VSlider(10, 25, 140, 15, "Vol"); vol->tooltip("Volume"); vol->type(5); vol->box(FL_NO_BOX); vol->color(FL_BACKGROUND_COLOR); vol->selection_color(FL_BACKGROUND_COLOR); vol->labeltype(FL_NORMAL_LABEL); vol->labelfont(0); vol->labelsize(11); vol->labelcolor(FL_FOREGROUND_COLOR); vol->maximum(127); vol->step(1); vol->align(Fl_Align(FL_ALIGN_RIGHT)); vol->when(FL_WHEN_CHANGED); o->init("PVolume");o->reset_value=96; } // Fl_Osc_VSlider* vol { Fl_Osc_VSlider* o = vsns = new Fl_Osc_VSlider(10, 45, 140, 15, "V.Sns"); vsns->tooltip("Velocity Sensing Function (rightmost to disable)"); vsns->type(5); vsns->box(FL_NO_BOX); vsns->color(FL_BACKGROUND_COLOR); vsns->selection_color(FL_BACKGROUND_COLOR); vsns->labeltype(FL_NORMAL_LABEL); vsns->labelfont(0); vsns->labelsize(11); vsns->labelcolor(FL_FOREGROUND_COLOR); vsns->maximum(127); vsns->step(1); vsns->align(Fl_Align(FL_ALIGN_RIGHT)); vsns->when(FL_WHEN_CHANGED); o->init("PAmpVelocityScaleFunction");o->reset_value=90; } // Fl_Osc_VSlider* vsns { Fl_Osc_Dial* o = pan = new Fl_Osc_Dial(185, 20, 30, 30, "Pan"); pan->tooltip("Panning (leftmost is Random)"); pan->box(FL_ROUND_UP_BOX); pan->color(FL_BACKGROUND_COLOR); pan->selection_color(FL_INACTIVE_COLOR); pan->labeltype(FL_NORMAL_LABEL); pan->labelfont(0); pan->labelsize(10); pan->labelcolor(FL_FOREGROUND_COLOR); pan->maximum(127); pan->step(1); pan->align(Fl_Align(FL_ALIGN_BOTTOM)); pan->when(FL_WHEN_CHANGED); o->init("PPanning");o->reset_value=64; } // Fl_Osc_Dial* pan { EnvelopeUI* o = ampenv = new EnvelopeUI(10, 65, 205, 70, "SUBsynth - Amplitude Envelope"); ampenv->box(FL_FLAT_BOX); ampenv->color((Fl_Color)51); ampenv->selection_color(FL_BACKGROUND_COLOR); ampenv->labeltype(FL_NORMAL_LABEL); ampenv->labelfont(0); ampenv->labelsize(14); ampenv->labelcolor(FL_FOREGROUND_COLOR); ampenv->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE)); ampenv->when(FL_WHEN_RELEASE); o->init(ENV_ADSR, osc, loc, "AmpEnvelope/"); ampenv->end(); } // EnvelopeUI* ampenv o->end(); } // Fl_Group* o { Fl_Group* o = new Fl_Group(495, 406, 235, 35); o->box(FL_UP_FRAME); { Fl_Osc_Counter* o = filterstages = new Fl_Osc_Counter(515, 421, 45, 15, "Filter Stages"); filterstages->tooltip("How many times the noise is filtered"); filterstages->type(1); filterstages->box(FL_UP_BOX); filterstages->color(FL_BACKGROUND_COLOR); filterstages->selection_color(FL_INACTIVE_COLOR); filterstages->labeltype(FL_NORMAL_LABEL); filterstages->labelfont(1); filterstages->labelsize(10); filterstages->labelcolor(FL_FOREGROUND_COLOR); filterstages->minimum(1); filterstages->maximum(5); filterstages->step(1); filterstages->textsize(10); filterstages->align(Fl_Align(FL_ALIGN_TOP)); filterstages->when(FL_WHEN_CHANGED); o->init("Pnumstages"); } // Fl_Osc_Counter* filterstages { Fl_Osc_Choice* o = magtype = new Fl_Osc_Choice(585, 421, 65, 15, "Mag.Type"); magtype->box(FL_UP_BOX); magtype->down_box(FL_BORDER_BOX); magtype->color(FL_BACKGROUND_COLOR); magtype->selection_color(FL_SELECTION_COLOR); magtype->labeltype(FL_NORMAL_LABEL); magtype->labelfont(1); magtype->labelsize(10); magtype->labelcolor(FL_FOREGROUND_COLOR); magtype->textsize(11); magtype->align(Fl_Align(FL_ALIGN_TOP)); magtype->when(FL_WHEN_RELEASE); magtype->menu(menu_magtype); o->init("Phmagtype"); } // Fl_Osc_Choice* magtype { Fl_Osc_Choice* o = start = new Fl_Osc_Choice(670, 420, 50, 15, "Start"); start->box(FL_UP_BOX); start->down_box(FL_BORDER_BOX); start->color(FL_BACKGROUND_COLOR); start->selection_color(FL_SELECTION_COLOR); start->labeltype(FL_NORMAL_LABEL); start->labelfont(1); start->labelsize(10); start->labelcolor(FL_FOREGROUND_COLOR); start->textsize(11); start->align(Fl_Align(FL_ALIGN_TOP)); start->when(FL_WHEN_RELEASE); start->menu(menu_start); o->init("Pstart"); } // Fl_Osc_Choice* start o->end(); } // Fl_Group* o { freqsettingsui = new Fl_Group(440, 5, 295, 146, "FREQUENCY"); freqsettingsui->box(FL_UP_FRAME); freqsettingsui->labeltype(FL_EMBOSSED_LABEL); freqsettingsui->labelfont(1); freqsettingsui->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE)); { EnvelopeUI* o = freqenvelopegroup = new EnvelopeUI(445, 75, 205, 70, "SUBsynth - Frequency Envelope"); freqenvelopegroup->box(FL_FLAT_BOX); freqenvelopegroup->color((Fl_Color)51); freqenvelopegroup->selection_color(FL_BACKGROUND_COLOR); freqenvelopegroup->labeltype(FL_NORMAL_LABEL); freqenvelopegroup->labelfont(0); freqenvelopegroup->labelsize(14); freqenvelopegroup->labelcolor(FL_FOREGROUND_COLOR); freqenvelopegroup->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE)); freqenvelopegroup->when(FL_WHEN_RELEASE); o->init(ENV_ASR, osc, loc, "FreqEnvelope/"); freqenvelopegroup->end(); } // EnvelopeUI* freqenvelopegroup { Fl_Osc_Check* o = freqee = new Fl_Osc_Check(445, 77, 55, 15, "Enabled"); freqee->box(FL_NO_BOX); freqee->down_box(FL_DOWN_BOX); freqee->color(FL_BACKGROUND_COLOR); freqee->selection_color(FL_FOREGROUND_COLOR); freqee->labeltype(FL_NORMAL_LABEL); freqee->labelfont(1); freqee->labelsize(10); freqee->labelcolor(FL_FOREGROUND_COLOR); freqee->callback((Fl_Callback*)cb_freqee); freqee->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); freqee->when(FL_WHEN_RELEASE); o->init("PFreqEnvelopeEnabled"); } // Fl_Osc_Check* freqee { Fl_Osc_Counter* o = octave = new Fl_Osc_Counter(670, 58, 45, 15, "Octave"); octave->tooltip("Octave"); octave->type(1); octave->box(FL_UP_BOX); octave->color(FL_BACKGROUND_COLOR); octave->selection_color(FL_INACTIVE_COLOR); octave->labeltype(FL_NORMAL_LABEL); octave->labelfont(0); octave->labelsize(10); octave->labelcolor(FL_FOREGROUND_COLOR); octave->minimum(-8); octave->maximum(7); octave->step(1); octave->textfont(1); octave->textsize(11); octave->align(Fl_Align(FL_ALIGN_TOP)); octave->when(FL_WHEN_CHANGED); o->init("octave"); } // Fl_Osc_Counter* octave { Fl_Osc_Counter* o = coarsedet = new Fl_Osc_Counter(655, 125, 60, 20, "Coarse Det."); coarsedet->tooltip("Coarse Detune"); coarsedet->box(FL_UP_BOX); coarsedet->color(FL_BACKGROUND_COLOR); coarsedet->selection_color(FL_INACTIVE_COLOR); coarsedet->labeltype(FL_NORMAL_LABEL); coarsedet->labelfont(0); coarsedet->labelsize(10); coarsedet->labelcolor(FL_FOREGROUND_COLOR); coarsedet->minimum(-64); coarsedet->maximum(63); coarsedet->step(1); coarsedet->textfont(1); coarsedet->textsize(11); coarsedet->align(Fl_Align(FL_ALIGN_TOP)); coarsedet->when(FL_WHEN_CHANGED); o->init("coarsedetune"); o->lstep(10); } // Fl_Osc_Counter* coarsedet { Fl_Osc_Slider* o = detune = new Fl_Osc_Slider(495, 27, 230, 15); detune->tooltip("Fine Detune (cents)"); detune->type(5); detune->box(FL_NO_BOX); detune->color(FL_BACKGROUND_COLOR); detune->selection_color(FL_BACKGROUND_COLOR); detune->labeltype(FL_NORMAL_LABEL); detune->labelfont(0); detune->labelsize(14); detune->labelcolor(FL_FOREGROUND_COLOR); detune->minimum(-8192); detune->maximum(8191); detune->step(1); detune->callback((Fl_Callback*)cb_detune); detune->align(Fl_Align(FL_ALIGN_BOTTOM)); detune->when(FL_WHEN_CHANGED); o->init("PDetune",'i'); } // Fl_Osc_Slider* detune { Fl_Osc_Output* o = detunevalueoutput = new Fl_Osc_Output(448, 27, 45, 15, "Detune"); detunevalueoutput->box(FL_NO_BOX); detunevalueoutput->color(FL_BACKGROUND_COLOR); detunevalueoutput->selection_color(FL_BACKGROUND_COLOR); detunevalueoutput->labeltype(FL_NORMAL_LABEL); detunevalueoutput->labelfont(0); detunevalueoutput->labelsize(10); detunevalueoutput->labelcolor(FL_FOREGROUND_COLOR); detunevalueoutput->minimum(-5000); detunevalueoutput->maximum(5000); detunevalueoutput->step(0.01); detunevalueoutput->textfont(1); detunevalueoutput->textsize(10); detunevalueoutput->align(Fl_Align(FL_ALIGN_TOP_LEFT)); detunevalueoutput->when(FL_WHEN_CHANGED); o->init("detunevalue"); } // Fl_Osc_Output* detunevalueoutput { Fl_Osc_Dial* o = bendadjdial = new Fl_Osc_Dial(448, 53, 15, 15, "Bend"); bendadjdial->tooltip("How the frequency varies according to the pitch wheel"); bendadjdial->box(FL_ROUND_UP_BOX); bendadjdial->color(FL_BACKGROUND_COLOR); bendadjdial->selection_color(FL_INACTIVE_COLOR); bendadjdial->labeltype(FL_NORMAL_LABEL); bendadjdial->labelfont(0); bendadjdial->labelsize(10); bendadjdial->labelcolor(FL_FOREGROUND_COLOR); bendadjdial->minimum(-64); bendadjdial->maximum(63); bendadjdial->step(1); bendadjdial->align(Fl_Align(FL_ALIGN_RIGHT)); bendadjdial->when(FL_WHEN_CHANGED); o->init("PBendAdjust"); o->reset_value=24;o->set_transform([](float x){return x/24.0f;});o->set_rounding(2); } // Fl_Osc_Dial* bendadjdial { Fl_Osc_Dial* o = offsethzdial = new Fl_Osc_Dial(500, 53, 15, 15, "Offset"); offsethzdial->tooltip("Offset of frequency in Hz"); offsethzdial->box(FL_ROUND_UP_BOX); offsethzdial->color(FL_BACKGROUND_COLOR); offsethzdial->selection_color(FL_INACTIVE_COLOR); offsethzdial->labeltype(FL_NORMAL_LABEL); offsethzdial->labelfont(0); offsethzdial->labelsize(10); offsethzdial->labelcolor(FL_FOREGROUND_COLOR); offsethzdial->minimum(-64); offsethzdial->maximum(63); offsethzdial->step(1); offsethzdial->align(Fl_Align(FL_ALIGN_RIGHT)); offsethzdial->when(FL_WHEN_CHANGED); o->init("POffsetHz"); o->set_rounding(2); o->set_transform([](float x){x/=64; return 15*(x*sqrtf(fabsf(x)));}); } // Fl_Osc_Dial* offsethzdial { Fl_Osc_Check* o = hz440 = new Fl_Osc_Check(555, 53, 50, 15, "440Hz"); hz440->tooltip("set the base frequency to 440Hz"); hz440->box(FL_NO_BOX); hz440->down_box(FL_DOWN_BOX); hz440->color(FL_BACKGROUND_COLOR); hz440->selection_color(FL_FOREGROUND_COLOR); hz440->labeltype(FL_NORMAL_LABEL); hz440->labelfont(1); hz440->labelsize(10); hz440->labelcolor(FL_FOREGROUND_COLOR); hz440->callback((Fl_Callback*)cb_hz440); hz440->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); hz440->when(FL_WHEN_RELEASE); o->init("Pfixedfreq"); } // Fl_Osc_Check* hz440 { Fl_Osc_Dial* o = fixedfreqetdial = new Fl_Osc_Dial(610, 53, 15, 15, "Eq.T."); fixedfreqetdial->tooltip("How the frequency varies according to the keyboard (leftmost for fixed freque\ ncy)"); fixedfreqetdial->box(FL_ROUND_UP_BOX); fixedfreqetdial->color(FL_BACKGROUND_COLOR); fixedfreqetdial->selection_color(FL_INACTIVE_COLOR); fixedfreqetdial->labeltype(FL_NORMAL_LABEL); fixedfreqetdial->labelfont(0); fixedfreqetdial->labelsize(10); fixedfreqetdial->labelcolor(FL_FOREGROUND_COLOR); fixedfreqetdial->maximum(127); fixedfreqetdial->step(1); fixedfreqetdial->align(Fl_Align(FL_ALIGN_RIGHT)); fixedfreqetdial->when(FL_WHEN_CHANGED); o->init("PfixedfreqET"); } // Fl_Osc_Dial* fixedfreqetdial { Fl_Osc_Choice* o = detunetype = new Fl_Osc_Choice(655, 94, 70, 15, "Detune Type"); detunetype->box(FL_UP_BOX); detunetype->down_box(FL_BORDER_BOX); detunetype->color(FL_BACKGROUND_COLOR); detunetype->selection_color(FL_SELECTION_COLOR); detunetype->labeltype(FL_NORMAL_LABEL); detunetype->labelfont(0); detunetype->labelsize(10); detunetype->labelcolor(FL_FOREGROUND_COLOR); detunetype->textfont(1); detunetype->textsize(10); detunetype->callback((Fl_Callback*)cb_detunetype); detunetype->align(Fl_Align(FL_ALIGN_TOP_LEFT)); detunetype->when(FL_WHEN_RELEASE); o->add("L35cents");o->add("L10cents");o->add("E100cents");o->add("E1200cents"); o->init("PDetuneType",1); } // Fl_Osc_Choice* detunetype freqsettingsui->end(); } // Fl_Group* freqsettingsui { Fl_Osc_Check* o = stereo = new Fl_Osc_Check(440, 406, 55, 35, "Stereo"); stereo->box(FL_THIN_UP_BOX); stereo->down_box(FL_DOWN_BOX); stereo->color(FL_BACKGROUND_COLOR); stereo->selection_color(FL_FOREGROUND_COLOR); stereo->labeltype(FL_NORMAL_LABEL); stereo->labelfont(0); stereo->labelsize(10); stereo->labelcolor(FL_FOREGROUND_COLOR); stereo->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); stereo->when(FL_WHEN_RELEASE); o->init("Pstereo"); } // Fl_Osc_Check* stereo { Fl_Osc_Button* o = new Fl_Osc_Button(445, 446, 70, 25, "Clear"); o->tooltip("Clear the harmonics"); 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(14); o->labelcolor(FL_FOREGROUND_COLOR); o->callback((Fl_Callback*)cb_Clear); o->align(Fl_Align(FL_ALIGN_CENTER)); o->when(FL_WHEN_RELEASE); } // Fl_Osc_Button* o { bandwidthsettingsui = new Fl_Group(220, 5, 220, 135, "BANDWIDTH"); bandwidthsettingsui->box(FL_UP_FRAME); bandwidthsettingsui->labeltype(FL_EMBOSSED_LABEL); bandwidthsettingsui->labelfont(1); bandwidthsettingsui->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE)); { EnvelopeUI* o = bandwidthenvelopegroup = new EnvelopeUI(225, 65, 205, 70, "SUBsynth - BandWidth Envelope"); bandwidthenvelopegroup->box(FL_FLAT_BOX); bandwidthenvelopegroup->color((Fl_Color)51); bandwidthenvelopegroup->selection_color(FL_BACKGROUND_COLOR); bandwidthenvelopegroup->labeltype(FL_NORMAL_LABEL); bandwidthenvelopegroup->labelfont(0); bandwidthenvelopegroup->labelsize(14); bandwidthenvelopegroup->labelcolor(FL_FOREGROUND_COLOR); bandwidthenvelopegroup->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE)); bandwidthenvelopegroup->when(FL_WHEN_RELEASE); o->init(ENV_ADSR_BW, osc, loc, "BandWidthEnvelope/"); bandwidthenvelopegroup->end(); } // EnvelopeUI* bandwidthenvelopegroup { Fl_Osc_Check* o = bwee = new Fl_Osc_Check(225, 67, 55, 15, "Enabled"); bwee->box(FL_NO_BOX); bwee->down_box(FL_DOWN_BOX); bwee->color(FL_BACKGROUND_COLOR); bwee->selection_color(FL_FOREGROUND_COLOR); bwee->labeltype(FL_NORMAL_LABEL); bwee->labelfont(1); bwee->labelsize(10); bwee->labelcolor(FL_FOREGROUND_COLOR); bwee->callback((Fl_Callback*)cb_bwee); bwee->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); bwee->when(FL_WHEN_RELEASE); o->init("PBandWidthEnvelopeEnabled"); } // Fl_Osc_Check* bwee { Fl_Osc_VSlider* o = bandwidth = new Fl_Osc_VSlider(225, 40, 115, 15, "Band Width"); bandwidth->type(5); bandwidth->box(FL_NO_BOX); bandwidth->color(FL_BACKGROUND_COLOR); bandwidth->selection_color(FL_BACKGROUND_COLOR); bandwidth->labeltype(FL_NORMAL_LABEL); bandwidth->labelfont(0); bandwidth->labelsize(10); bandwidth->labelcolor(FL_FOREGROUND_COLOR); bandwidth->maximum(127); bandwidth->step(1); bandwidth->align(Fl_Align(FL_ALIGN_TOP)); bandwidth->when(FL_WHEN_CHANGED); o->init("Pbandwidth");o->reset_value=40; } // Fl_Osc_VSlider* bandwidth { Fl_Osc_TSlider* o = bwidthscale = new Fl_Osc_TSlider(345, 40, 90, 15, "B.Width Scale"); bwidthscale->tooltip("How much I increase the BandWidth according to lower/higher harmonics"); bwidthscale->type(5); bwidthscale->box(FL_NO_BOX); bwidthscale->color(FL_BACKGROUND_COLOR); bwidthscale->selection_color(FL_BACKGROUND_COLOR); bwidthscale->labeltype(FL_NORMAL_LABEL); bwidthscale->labelfont(0); bwidthscale->labelsize(10); bwidthscale->labelcolor(FL_FOREGROUND_COLOR); bwidthscale->minimum(-64); bwidthscale->maximum(63); bwidthscale->step(1); bwidthscale->align(Fl_Align(FL_ALIGN_TOP)); bwidthscale->when(FL_WHEN_CHANGED); o->init("Pbwscale",'i'); } // Fl_Osc_TSlider* bwidthscale bandwidthsettingsui->end(); } // Fl_Group* bandwidthsettingsui { globalfiltergroup = new Fl_Group(440, 221, 290, 185, "FILTER"); globalfiltergroup->box(FL_UP_FRAME); globalfiltergroup->labeltype(FL_EMBOSSED_LABEL); globalfiltergroup->labelfont(1); globalfiltergroup->labelsize(13); globalfiltergroup->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE)); { EnvelopeUI* o = filterenv = new EnvelopeUI(445, 331, 275, 70, "SUBsynth - Filter Envelope"); filterenv->box(FL_FLAT_BOX); filterenv->color((Fl_Color)51); filterenv->selection_color(FL_BACKGROUND_COLOR); filterenv->labeltype(FL_NORMAL_LABEL); filterenv->labelfont(0); filterenv->labelsize(14); filterenv->labelcolor(FL_FOREGROUND_COLOR); filterenv->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE)); filterenv->when(FL_WHEN_RELEASE); o->init(ENV_ADSR_FILTER, osc, loc, "GlobalFilterEnvelope/"); filterenv->end(); } // EnvelopeUI* filterenv { FilterUI* o = filterui = new FilterUI(445, 246, 275, 75, "SUBsynthl - Filter"); filterui->box(FL_FLAT_BOX); filterui->color(FL_LIGHT1); filterui->selection_color(FL_BACKGROUND_COLOR); filterui->labeltype(FL_NORMAL_LABEL); filterui->labelfont(0); filterui->labelsize(14); filterui->labelcolor(FL_FOREGROUND_COLOR); filterui->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE)); filterui->when(FL_WHEN_RELEASE); o->init(loc + "PGlobalFilter" , osc, loc, "GlobalFilter/"); filterui->end(); } // FilterUI* filterui globalfiltergroup->end(); } // Fl_Group* globalfiltergroup { Fl_Osc_Check* o = filtere = new Fl_Osc_Check(445, 226, 85, 20, "Enabled"); filtere->box(FL_NO_BOX); filtere->down_box(FL_DOWN_BOX); filtere->color(FL_BACKGROUND_COLOR); filtere->selection_color(FL_FOREGROUND_COLOR); filtere->labeltype(FL_NORMAL_LABEL); filtere->labelfont(1); filtere->labelsize(11); filtere->labelcolor(FL_FOREGROUND_COLOR); filtere->callback((Fl_Callback*)cb_filtere); filtere->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); filtere->when(FL_WHEN_RELEASE); o->init("PGlobalFilterEnabled"); } // Fl_Osc_Check* filtere { Fl_Button* o = new Fl_Button(600, 451, 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(630, 451, 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 { Fl_Group* o = new Fl_Group(440, 151, 220, 70, "OVERTONES"); o->box(FL_UP_FRAME); o->labeltype(FL_EMBOSSED_LABEL); o->labelfont(1); o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE)); { Fl_Osc_Choice* o = spreadtype = new Fl_Osc_Choice(450, 190, 80, 20, "OvertonesPosition"); spreadtype->box(FL_UP_BOX); spreadtype->down_box(FL_BORDER_BOX); spreadtype->color(FL_BACKGROUND_COLOR); spreadtype->selection_color(FL_SELECTION_COLOR); spreadtype->labeltype(FL_NORMAL_LABEL); spreadtype->labelfont(0); spreadtype->labelsize(10); spreadtype->labelcolor(FL_FOREGROUND_COLOR); spreadtype->textsize(10); spreadtype->align(Fl_Align(FL_ALIGN_TOP_LEFT)); spreadtype->when(FL_WHEN_RELEASE); spreadtype->menu(menu_spreadtype); o->init("POvertoneSpread.type"); } // Fl_Osc_Choice* spreadtype { Fl_Osc_Dial* o = spreadpar1 = new Fl_Osc_Dial(548, 173, 30, 30, "Par1"); spreadpar1->box(FL_ROUND_UP_BOX); spreadpar1->color(FL_BACKGROUND_COLOR); spreadpar1->selection_color(FL_INACTIVE_COLOR); spreadpar1->labeltype(FL_NORMAL_LABEL); spreadpar1->labelfont(0); spreadpar1->labelsize(10); spreadpar1->labelcolor(FL_FOREGROUND_COLOR); spreadpar1->maximum(255); spreadpar1->step(1); spreadpar1->align(Fl_Align(FL_ALIGN_BOTTOM)); spreadpar1->when(FL_WHEN_CHANGED); o->init("POvertoneSpread.par1"); } // Fl_Osc_Dial* spreadpar1 { Fl_Osc_Dial* o = spreadpar2 = new Fl_Osc_Dial(583, 173, 30, 30, "Par2"); spreadpar2->box(FL_ROUND_UP_BOX); spreadpar2->color(FL_BACKGROUND_COLOR); spreadpar2->selection_color(FL_INACTIVE_COLOR); spreadpar2->labeltype(FL_NORMAL_LABEL); spreadpar2->labelfont(0); spreadpar2->labelsize(10); spreadpar2->labelcolor(FL_FOREGROUND_COLOR); spreadpar2->maximum(255); spreadpar2->step(1); spreadpar2->align(Fl_Align(FL_ALIGN_BOTTOM)); spreadpar2->when(FL_WHEN_CHANGED); o->init("POvertoneSpread.par2"); } // Fl_Osc_Dial* spreadpar2 { Fl_Osc_Dial* o = spreadpar3 = new Fl_Osc_Dial(618, 173, 30, 30, "ForceH"); spreadpar3->box(FL_ROUND_UP_BOX); spreadpar3->color(FL_BACKGROUND_COLOR); spreadpar3->selection_color(FL_INACTIVE_COLOR); spreadpar3->labeltype(FL_NORMAL_LABEL); spreadpar3->labelfont(0); spreadpar3->labelsize(10); spreadpar3->labelcolor(FL_FOREGROUND_COLOR); spreadpar3->maximum(255); spreadpar3->step(1); spreadpar3->align(Fl_Align(FL_ALIGN_BOTTOM)); spreadpar3->when(FL_WHEN_CHANGED); o->init("POvertoneSpread.par3"); } // Fl_Osc_Dial* spreadpar3 o->end(); } // Fl_Group* o SUBparameters->end(); } // Fl_Osc_Window* SUBparameters return SUBparameters; } void SUBnoteUI::refresh() { SUBparameters->update(); for (int i=0;irefresh(); //globalfiltergroup->redraw(); //ampenv->refresh(); //bandwidthenvelopegroup->refresh(); //freqenvelopegroup->refresh(); //filterui->refresh(); //filterenv->refresh(); } SUBnoteUI::SUBnoteUI(Fl_Osc_Interface *osc_, std::string loc_) { osc = osc_; loc = loc_; make_window(); } SUBnoteUI::~SUBnoteUI() { //for (int i=0;ihide(); delete(SUBparameters); }