// generated by Fast Light User Interface Designer (fluid) version 1.0300 #include "external/zynaddsubfx/UI/ADnoteUI.h" //Copyright (c) 2002-2005 Nasca Octavian Paul //License: GNU GPL version 2 or later #include #include #include #include #include "Osc_IntModel.h" #include "PartUI.h" #include "MasterUI.h" extern class MasterUI *ui; PhaseSlider::PhaseSlider(int x,int y, int w, int h, const char *label) :Fl_Osc_TSlider(x,y,w,h,label) { set_rounding(1); reset_value=0; set_transform([](float x){return 180.0f*x/64.0f;}); } void PhaseSlider::set_scope(Fl_Oscilloscope *newscope) { oscope = newscope; } void PhaseSlider::OSC_value(int i) { value(64-i); oscope->phase=i; oscope->parent()->redraw(); } void PhaseSlider::cb(void) { oscWrite(ext, "i", (int)(64-Fl_Slider::value())); if(cb_data.first) cb_data.first(this, cb_data.second); } void ADvoicelistitem::cb_voicedetune_i(Fl_Osc_Slider*, void*) { detunevalueoutput->update(); } void ADvoicelistitem::cb_voicedetune(Fl_Osc_Slider* o, void* v) { ((ADvoicelistitem*)(o->parent()->parent()->user_data()))->cb_voicedetune_i(o,v); } void ADvoicelistitem::cb_voiceenabled_i(Fl_Osc_Check* o, void*) { if (o->value()==0) voicelistitemgroup->deactivate(); else voicelistitemgroup->activate(); o->redraw(); } void ADvoicelistitem::cb_voiceenabled(Fl_Osc_Check* o, void* v) { ((ADvoicelistitem*)(o->parent()->user_data()))->cb_voiceenabled_i(o,v); } void ADvoicelistitem::cb_edit_i(Fl_Button*, void*) { class ADnoteUI *adnoteui = ui->partui->adnoteui; adnoteui->ADnoteVoice->show(); adnoteui->currentvoicecounter->value(nvoice+1); adnoteui->currentvoicecounter->do_callback(); class ADvoiceUI *advoice = adnoteui->advoice; if (advoice->mod_type->value() == 0) advoice->voiceFMparametersgroup->deactivate(); else advoice->voiceFMparametersgroup->activate(); } void ADvoicelistitem::cb_edit(Fl_Button* o, void* v) { ((ADvoicelistitem*)(o->parent()->user_data()))->cb_edit_i(o,v); } Fl_Osc_Group* ADvoicelistitem::make_window() { { ADnoteVoiceListItem = new Fl_Osc_Group(0, 0, 670, 100); ADnoteVoiceListItem->box(FL_NO_BOX); ADnoteVoiceListItem->color(FL_BACKGROUND_COLOR); ADnoteVoiceListItem->selection_color(FL_BACKGROUND_COLOR); ADnoteVoiceListItem->labeltype(FL_NO_LABEL); ADnoteVoiceListItem->labelfont(0); ADnoteVoiceListItem->labelsize(14); ADnoteVoiceListItem->labelcolor(FL_FOREGROUND_COLOR); ADnoteVoiceListItem->user_data((void*)(this)); ADnoteVoiceListItem->align(Fl_Align(FL_ALIGN_TOP)); ADnoteVoiceListItem->when(FL_WHEN_RELEASE); { new Fl_Box(0, 0, 0, 0); ADnoteVoiceListItem->base = loc; } // Fl_Box* o { voicelistitemgroup = new Fl_Osc_Group(0, 0, 670, 25); voicelistitemgroup->box(FL_NO_BOX); voicelistitemgroup->color(FL_BACKGROUND_COLOR); voicelistitemgroup->selection_color(FL_BACKGROUND_COLOR); voicelistitemgroup->labeltype(FL_NORMAL_LABEL); voicelistitemgroup->labelfont(0); voicelistitemgroup->labelsize(14); voicelistitemgroup->labelcolor(FL_FOREGROUND_COLOR); voicelistitemgroup->align(Fl_Align(FL_ALIGN_TOP)); voicelistitemgroup->when(FL_WHEN_RELEASE); { Fl_Osc_VSlider* o = voicevolume = new Fl_Osc_VSlider(132, 5, 115, 20); voicevolume->tooltip("Volume"); voicevolume->type(5); voicevolume->box(FL_NO_BOX); voicevolume->color(FL_BACKGROUND_COLOR); voicevolume->selection_color(FL_BACKGROUND_COLOR); voicevolume->labeltype(FL_NORMAL_LABEL); voicevolume->labelfont(0); voicevolume->labelsize(8); voicevolume->labelcolor(FL_FOREGROUND_COLOR); voicevolume->maximum(127); voicevolume->step(1); voicevolume->align(Fl_Align(FL_ALIGN_TOP_LEFT)); voicevolume->when(FL_WHEN_CHANGED); o->init("PVolume"); o->reset_value=100; } // Fl_Osc_VSlider* voicevolume { Fl_Osc_Check* o = voiceresonanceenabled = new Fl_Osc_Check(287, 7, 15, 17); voiceresonanceenabled->tooltip("Resonance On/Off"); voiceresonanceenabled->box(FL_NO_BOX); voiceresonanceenabled->down_box(FL_DOWN_BOX); voiceresonanceenabled->color(FL_BACKGROUND_COLOR); voiceresonanceenabled->selection_color(FL_FOREGROUND_COLOR); voiceresonanceenabled->labeltype(FL_EMBOSSED_LABEL); voiceresonanceenabled->labelfont(1); voiceresonanceenabled->labelsize(11); voiceresonanceenabled->labelcolor(FL_FOREGROUND_COLOR); voiceresonanceenabled->align(Fl_Align(FL_ALIGN_LEFT)); voiceresonanceenabled->when(FL_WHEN_RELEASE); o->init("Presonance"); } // Fl_Osc_Check* voiceresonanceenabled { Fl_Osc_VSlider* o = voicelfofreq = new Fl_Osc_VSlider(542, 5, 115, 20); voicelfofreq->tooltip("Frequency LFO amount"); voicelfofreq->type(5); voicelfofreq->box(FL_NO_BOX); voicelfofreq->color(FL_BACKGROUND_COLOR); voicelfofreq->selection_color(FL_BACKGROUND_COLOR); voicelfofreq->labeltype(FL_NORMAL_LABEL); voicelfofreq->labelfont(0); voicelfofreq->labelsize(8); voicelfofreq->labelcolor(FL_FOREGROUND_COLOR); voicelfofreq->maximum(127); voicelfofreq->step(1); voicelfofreq->align(Fl_Align(FL_ALIGN_TOP_LEFT)); voicelfofreq->when(FL_WHEN_CHANGED); o->init("FreqLfo/Pintensity", 'i');o->reset_value=40; } // Fl_Osc_VSlider* voicelfofreq { Fl_Osc_Dial* o = voicepanning = new Fl_Osc_Dial(257, 5, 20, 20); voicepanning->tooltip("Panning (leftmost is Random)"); voicepanning->box(FL_ROUND_UP_BOX); voicepanning->color(FL_BACKGROUND_COLOR); voicepanning->selection_color(FL_INACTIVE_COLOR); voicepanning->labeltype(FL_NORMAL_LABEL); voicepanning->labelfont(0); voicepanning->labelsize(10); voicepanning->labelcolor(FL_FOREGROUND_COLOR); voicepanning->maximum(127); voicepanning->step(1); voicepanning->align(Fl_Align(FL_ALIGN_LEFT)); voicepanning->when(FL_WHEN_CHANGED); o->init("PPanning");o->reset_value=64; } // Fl_Osc_Dial* voicepanning { Fl_Osc_Group* o = voiceoscil = new Fl_Osc_Group(102, 5, 30, 20); voiceoscil->box(FL_THIN_DOWN_BOX); voiceoscil->color(FL_GRAY0); voiceoscil->selection_color((Fl_Color)71); voiceoscil->labeltype(FL_NORMAL_LABEL); voiceoscil->labelfont(0); voiceoscil->labelsize(14); voiceoscil->labelcolor((Fl_Color)179); voiceoscil->align(Fl_Align(FL_ALIGN_TOP)); voiceoscil->when(FL_WHEN_RELEASE); voiceoscil->ext = "OscilSmp/"; oscil=new Fl_Oscilloscope(o->x(),o->y()+1,o->w(),o->h(),""); oscil->init(false); voiceoscil->end(); } // Fl_Osc_Group* voiceoscil { Fl_Osc_Output* o = detunevalueoutput = new Fl_Osc_Output(307, 5, 45, 20); 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_Slider* o = voicedetune = new Fl_Osc_Slider(357, 5, 185, 20); voicedetune->tooltip("Fine Detune (cents)"); voicedetune->type(5); voicedetune->box(FL_NO_BOX); voicedetune->color(FL_BACKGROUND_COLOR); voicedetune->selection_color(FL_BACKGROUND_COLOR); voicedetune->labeltype(FL_NORMAL_LABEL); voicedetune->labelfont(0); voicedetune->labelsize(14); voicedetune->labelcolor(FL_FOREGROUND_COLOR); voicedetune->minimum(-8192); voicedetune->maximum(8191); voicedetune->step(1); voicedetune->callback((Fl_Callback*)cb_voicedetune); voicedetune->align(Fl_Align(FL_ALIGN_BOTTOM)); voicedetune->when(FL_WHEN_CHANGED); o->init("PDetune",'i'); } // Fl_Osc_Slider* voicedetune { whitenoiselabel = new Fl_Box(107, 5, 20, 20, "N"); whitenoiselabel->labelfont(1); whitenoiselabel->labelsize(13); whitenoiselabel->labelcolor(FL_LIGHT3); whitenoiselabel->hide(); } // Fl_Box* whitenoiselabel { pinknoiselabel = new Fl_Box(107, 5, 20, 20, "N"); pinknoiselabel->labelfont(1); pinknoiselabel->labelsize(13); pinknoiselabel->labelcolor((Fl_Color)212); pinknoiselabel->hide(); } // Fl_Box* pinknoiselabel voicelistitemgroup->end(); } // Fl_Osc_Group* voicelistitemgroup { Fl_Osc_Check* o = voiceenabled = new Fl_Osc_Check(30, 5, 20, 20, "01"); voiceenabled->box(FL_NO_BOX); voiceenabled->down_box(FL_DOWN_BOX); voiceenabled->color(FL_BACKGROUND_COLOR); voiceenabled->selection_color(FL_FOREGROUND_COLOR); voiceenabled->labeltype(FL_EMBOSSED_LABEL); voiceenabled->labelfont(1); voiceenabled->labelsize(13); voiceenabled->labelcolor(FL_FOREGROUND_COLOR); voiceenabled->callback((Fl_Callback*)cb_voiceenabled); voiceenabled->align(Fl_Align(FL_ALIGN_LEFT)); voiceenabled->when(FL_WHEN_RELEASE); char tmp[10];snprintf(tmp,10,"%d",nvoice+1);o->label(strdup(tmp)); o->init("Enabled"); } // Fl_Osc_Check* voiceenabled { Fl_Button* o = new Fl_Button(53, 6, 40, 15, "edit"); o->box(FL_THIN_UP_BOX); o->labelsize(11); o->callback((Fl_Callback*)cb_edit); } // Fl_Button* o ADnoteVoiceListItem->end(); } // Fl_Osc_Group* ADnoteVoiceListItem return ADnoteVoiceListItem; } ADvoicelistitem::ADvoicelistitem(int x,int y, int w, int h, const char *label):Fl_Osc_Group(x,y,w,h,label) { assert(osc); voice_phase = new Osc_IntModel(osc); voice_phase->callback=[this](int phase) { oscil->phase=phase; voiceoscil->redraw(); return; }; sound_type = new Osc_IntModel(osc); sound_type->callback=[this](int voice_type) { switch (voice_type) { case 0: whitenoiselabel->hide(); pinknoiselabel->hide(); oscil->Overlay = NULL; voiceresonanceenabled->activate(); detunevalueoutput->activate(); voicedetune->activate(); voicelfofreq->activate(); voiceoscil->activate(); return; case 1: whitenoiselabel->show(); pinknoiselabel->hide(); oscil->Overlay = whitenoiselabel; break; default: pinknoiselabel->show(); whitenoiselabel->hide(); oscil->Overlay = pinknoiselabel; } voiceresonanceenabled->deactivate(); detunevalueoutput->deactivate(); voicedetune->deactivate(); voicelfofreq->deactivate(); voiceoscil->deactivate(); }; ext_oscil = new Osc_IntModel(osc); ext_oscil->callback = [this](int ext) { if(ext == -1) voiceoscil->reext("OscilSmp/"); else voiceoscil->reext("../VoicePar"+to_s(ext)+"/OscilSmp/"); }; nvoice=0; } void ADvoicelistitem::init(int nvoice_, std::string loc_, Fl_Osc_Interface *osc_) { assert(osc_); assert(!loc_.empty()); voice_phase->doUpdate(loc_ + "Poscilphase"); sound_type->doUpdate(loc_ + "Type"); ext_oscil->doUpdate(loc_ + "Pextoscil"); nvoice=nvoice_; loc = loc_; make_window(); ADnoteVoiceListItem->show(); end(); } void ADvoicelistitem::refreshlist() { if (voiceenabled->value()==0) voicelistitemgroup->deactivate(); else voicelistitemgroup->activate(); detunevalueoutput->do_callback(); ADnoteVoiceListItem->redraw(); } ADvoicelistitem::~ADvoicelistitem() { ADnoteVoiceListItem->hide(); delete voice_phase; delete sound_type; delete ext_oscil; } void ADvoiceUI::cb_On_i(Fl_Osc_Check* o, void*) { if (o->value()==0) voiceFMfreqenvgroup->deactivate(); else voiceFMfreqenvgroup->activate(); o->redraw(); } void ADvoiceUI::cb_On(Fl_Osc_Check* o, void* v) { ((ADvoiceUI*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_On_i(o,v); } void ADvoiceUI::cb__i(Fl_Osc_Slider*, void*) { fmdetunevalueoutput->update(); } void ADvoiceUI::cb_(Fl_Osc_Slider* o, void* v) { ((ADvoiceUI*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb__i(o,v); } void ADvoiceUI::cb_Detune_i(Fl_Osc_Choice*, void*) { fmdetunevalueoutput->update(); } void ADvoiceUI::cb_Detune(Fl_Osc_Choice* o, void* v) { ((ADvoiceUI*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Detune_i(o,v); } void ADvoiceUI::cb_440Hz_i(Fl_Osc_Check* o, void*) { if (o->value()==0) fixedfreqetdial->deactivate(); else fixedfreqetdial->activate(); } void ADvoiceUI::cb_440Hz(Fl_Osc_Check* o, void* v) { ((ADvoiceUI*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_440Hz_i(o,v); } void ADvoiceUI::cb_On1_i(Fl_Osc_Check* o, void*) { if (o->value()==0) voiceFMampenvgroup->deactivate(); else voiceFMampenvgroup->activate(); o->redraw(); } void ADvoiceUI::cb_On1(Fl_Osc_Check* o, void* v) { ((ADvoiceUI*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_On1_i(o,v); } void ADvoiceUI::cb_changeFMoscilbutton_i(Fl_Button*, void*) { if (oscedit!=NULL) delete(oscedit); if(extFMoscil->value() == 0) oscedit=new OscilEditor(true,loc+"FMSmp/", osc_i); else oscedit=new OscilEditor(true,loc+"../VoicePar"+to_s(extFMoscil->value()-1)+"/FMSmp/", osc_i); } void ADvoiceUI::cb_changeFMoscilbutton(Fl_Button* o, void* v) { ((ADvoiceUI*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_changeFMoscilbutton_i(o,v); } void ADvoiceUI::cb_extFMoscil_i(Fl_Osc_Choice* o, void*) { if ((int) o->value() != 0) { oscFM->init(false); changeFMoscilbutton->labelcolor(FL_BLUE); } else { oscFM->init(false); changeFMoscilbutton->labelcolor(FL_BLACK); }; if(o->value() == 0) fmoscil->rebase(loc); else fmoscil->rebase(loc+"../VoicePar"+to_s(o->value()-1)+"/"); voiceFMparametersgroup->redraw(); } void ADvoiceUI::cb_extFMoscil(Fl_Osc_Choice* o, void* v) { ((ADvoiceUI*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_extFMoscil_i(o,v); } void ADvoiceUI::cb_extMod_i(Fl_Osc_Choice* o, void*) { if ((int) o->value() != 0) { modoscil->deactivate(); modfrequency->deactivate(); } else { modoscil->activate(); modfrequency->activate(); }; voiceFMparametersgroup->redraw(); } void ADvoiceUI::cb_extMod(Fl_Osc_Choice* o, void* v) { ((ADvoiceUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_extMod_i(o,v); } void ADvoiceUI::cb_mod_type_i(Fl_Osc_Choice* o, void*) { if (o->value()==0) voiceFMparametersgroup->deactivate(); else voiceFMparametersgroup->activate(); o->redraw(); } void ADvoiceUI::cb_mod_type(Fl_Osc_Choice* o, void* v) { ((ADvoiceUI*)(o->parent()->parent()->parent()->user_data()))->cb_mod_type_i(o,v); } Fl_Menu_Item ADvoiceUI::menu_mod_type[] = { {"OFF", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0}, {"MORPH", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0}, {"RING", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0}, {"PM", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0}, {"FM", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0}, {"PWM", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 14, 0}, {0,0,0,0,0,0,0,0,0} }; void ADvoiceUI::cb_On2_i(Fl_Osc_Check* o, void*) { if (o->value()==0) voicefreqenvgroup->deactivate(); else voicefreqenvgroup->activate(); o->redraw(); } void ADvoiceUI::cb_On2(Fl_Osc_Check* o, void* v) { ((ADvoiceUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_On2_i(o,v); } void ADvoiceUI::cb_On3_i(Fl_Osc_Check* o, void*) { if (o->value()==0) voicefreqlfogroup->deactivate(); else voicefreqlfogroup->activate(); o->redraw(); } void ADvoiceUI::cb_On3(Fl_Osc_Check* o, void* v) { ((ADvoiceUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_On3_i(o,v); } void ADvoiceUI::cb_1_i(Fl_Osc_Slider*, void*) { detunevalueoutput->update(); } void ADvoiceUI::cb_1(Fl_Osc_Slider* o, void* v) { ((ADvoiceUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_1_i(o,v); } void ADvoiceUI::cb_440Hz1_i(Fl_Osc_Check* o, void*) { if (o->value()==0) fixedfreqetdial->deactivate(); else fixedfreqetdial->activate(); } void ADvoiceUI::cb_440Hz1(Fl_Osc_Check* o, void* v) { ((ADvoiceUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_440Hz1_i(o,v); } void ADvoiceUI::cb_Detune1_i(Fl_Osc_Choice*, void*) { detunevalueoutput->update(); } void ADvoiceUI::cb_Detune1(Fl_Osc_Choice* o, void* v) { ((ADvoiceUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_Detune1_i(o,v); } void ADvoiceUI::cb_changevoiceoscilbutton_i(Fl_Button*, void*) { delete oscedit; if(extoscil->value() == 0) oscedit=new OscilEditor(true,loc+"OscilSmp/", osc_i); else oscedit=new OscilEditor(true,loc+"../VoicePar"+to_s(extoscil->value()-1)+"/OscilSmp/", osc_i); } void ADvoiceUI::cb_changevoiceoscilbutton(Fl_Button* o, void* v) { ((ADvoiceUI*)(o->parent()->parent()->parent()->user_data()))->cb_changevoiceoscilbutton_i(o,v); } void ADvoiceUI::cb_extoscil_i(Fl_Osc_Choice* o, void*) { if ((int) o->value() != 0) { osc->init(false); changevoiceoscilbutton->labelcolor(FL_BLUE); } else { osc->init(false); changevoiceoscilbutton->labelcolor(FL_BLACK); }; if(o->value() == 0) voiceoscil->rebase(loc); else voiceoscil->rebase(loc+"../VoicePar"+to_s(o->value()-1)+"/"); voiceparametersgroup->redraw(); voiceonbutton->redraw(); } void ADvoiceUI::cb_extoscil(Fl_Osc_Choice* o, void* v) { ((ADvoiceUI*)(o->parent()->parent()->parent()->user_data()))->cb_extoscil_i(o,v); } void ADvoiceUI::cb_Frequency_i(Fl_Osc_Slider*, void*) { unisonspreadoutput->update(); } void ADvoiceUI::cb_Frequency(Fl_Osc_Slider* o, void* v) { ((ADvoiceUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_Frequency_i(o,v); } void ADvoiceUI::cb_On4_i(Fl_Osc_Check* o, void*) { if (o->value()==0) voiceampenvgroup->deactivate(); else voiceampenvgroup->activate(); o->redraw(); } void ADvoiceUI::cb_On4(Fl_Osc_Check* o, void* v) { ((ADvoiceUI*)(o->parent()->parent()->parent()->user_data()))->cb_On4_i(o,v); } void ADvoiceUI::cb_On5_i(Fl_Osc_Check* o, void*) { if (o->value()==0) voiceamplfogroup->deactivate(); else voiceamplfogroup->activate(); o->redraw(); } void ADvoiceUI::cb_On5(Fl_Osc_Check* o, void* v) { ((ADvoiceUI*)(o->parent()->parent()->parent()->user_data()))->cb_On5_i(o,v); } void ADvoiceUI::cb_On6_i(Fl_Osc_Check* o, void*) { if (o->value()==0) voicefilterenvgroup->deactivate(); else voicefilterenvgroup->activate(); o->redraw(); } void ADvoiceUI::cb_On6(Fl_Osc_Check* o, void* v) { ((ADvoiceUI*)(o->parent()->parent()->parent()->user_data()))->cb_On6_i(o,v); } void ADvoiceUI::cb_On7_i(Fl_Osc_Check* o, void*) { if (o->value()==0) voicefilterlfogroup->deactivate(); else voicefilterlfogroup->activate(); o->redraw(); } void ADvoiceUI::cb_On7(Fl_Osc_Check* o, void* v) { ((ADvoiceUI*)(o->parent()->parent()->parent()->user_data()))->cb_On7_i(o,v); } void ADvoiceUI::cb_2_i(Fl_Osc_Choice* o, void*) { switch (o->value()) { case 0: voicemodegroup->activate(); whitenoiselabel->hide(); pinknoiselabel->hide(); osc->Overlay=NULL; break; case 1: voicemodegroup->deactivate(); whitenoiselabel->show(); pinknoiselabel->hide(); osc->Overlay=whitenoiselabel; break; default: voicemodegroup->deactivate(); whitenoiselabel->hide(); pinknoiselabel->show(); osc->Overlay=pinknoiselabel; break; }; } void ADvoiceUI::cb_2(Fl_Osc_Choice* o, void* v) { ((ADvoiceUI*)(o->parent()->parent()->user_data()))->cb_2_i(o,v); } Fl_Menu_Item ADvoiceUI::menu_[] = { {"Sound", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0}, {"White", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0}, {"Pink", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 11, 0}, {0,0,0,0,0,0,0,0,0} }; void ADvoiceUI::cb_On8_i(Fl_Osc_Check* o, void*) { if (o->value()==0) voicefiltergroup->deactivate(); else voicefiltergroup->activate(); o->redraw(); bypassfiltercheckbutton->redraw(); } void ADvoiceUI::cb_On8(Fl_Osc_Check* o, void* v) { ((ADvoiceUI*)(o->parent()->parent()->user_data()))->cb_On8_i(o,v); } void ADvoiceUI::cb_voiceonbutton_i(Fl_Osc_Check* o, void*) { if (o->value()==0) voiceparametersgroup->deactivate(); else voiceparametersgroup->activate(); o->redraw(); } void ADvoiceUI::cb_voiceonbutton(Fl_Osc_Check* o, void* v) { ((ADvoiceUI*)(o->parent()->user_data()))->cb_voiceonbutton_i(o,v); } Fl_Osc_Group* ADvoiceUI::make_window() { { ADnoteVoiceParameters = new Fl_Osc_Group(0, 0, 765, 595, "Voice"); ADnoteVoiceParameters->box(FL_NO_BOX); ADnoteVoiceParameters->color(FL_BACKGROUND_COLOR); ADnoteVoiceParameters->selection_color(FL_BACKGROUND_COLOR); ADnoteVoiceParameters->labeltype(FL_NO_LABEL); ADnoteVoiceParameters->labelfont(0); ADnoteVoiceParameters->labelsize(14); ADnoteVoiceParameters->labelcolor(FL_FOREGROUND_COLOR); ADnoteVoiceParameters->user_data((void*)(this)); ADnoteVoiceParameters->align(Fl_Align(FL_ALIGN_TOP)); ADnoteVoiceParameters->when(FL_WHEN_RELEASE); { new Fl_Box(25, 25, 35, 16, "label"); ADnoteVoiceParameters->base = base+"VoicePar"+to_s(nvoice)+"/"; ADnoteVoiceParameters->osc = osc_i; } // Fl_Box* o { voiceparametersgroup = new Fl_Group(0, 0, 770, 590); voiceparametersgroup->color((Fl_Color)48); { voicemodegroup = new Fl_Group(0, 5, 770, 585); voicemodegroup->color((Fl_Color)64); { voiceFMparametersgroup = new Fl_Group(530, 5, 230, 585, "MODULATOR"); voiceFMparametersgroup->box(FL_UP_FRAME); voiceFMparametersgroup->color((Fl_Color)48); voiceFMparametersgroup->labeltype(FL_EMBOSSED_LABEL); voiceFMparametersgroup->labelfont(1); voiceFMparametersgroup->labelsize(13); voiceFMparametersgroup->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE)); { modfrequency = new Fl_Group(535, 219, 220, 174, "Mod.FREQUENCY"); modfrequency->box(FL_UP_FRAME); modfrequency->labeltype(FL_EMBOSSED_LABEL); modfrequency->labelfont(1); modfrequency->labelsize(13); modfrequency->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE)); { EnvelopeUI* o = voiceFMfreqenvgroup = new EnvelopeUI(540, 315, 210, 70, "ADSynth Modulator - Frequency Envelope"); voiceFMfreqenvgroup->box(FL_FLAT_BOX); voiceFMfreqenvgroup->color((Fl_Color)51); voiceFMfreqenvgroup->selection_color(FL_BACKGROUND_COLOR); voiceFMfreqenvgroup->labeltype(FL_NORMAL_LABEL); voiceFMfreqenvgroup->labelfont(0); voiceFMfreqenvgroup->labelsize(14); voiceFMfreqenvgroup->labelcolor(FL_FOREGROUND_COLOR); voiceFMfreqenvgroup->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE)); voiceFMfreqenvgroup->when(FL_WHEN_RELEASE); o->init(ENV_ASR, osc_i, loc, "FMFreqEnvelope/"); voiceFMfreqenvgroup->end(); } // EnvelopeUI* voiceFMfreqenvgroup { Fl_Osc_Check* o = new Fl_Osc_Check(545, 322, 50, 10, "On"); o->tooltip("Forced Release"); o->box(FL_NO_BOX); o->down_box(FL_DOWN_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_FOREGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(1); o->labelsize(11); o->labelcolor(FL_FOREGROUND_COLOR); o->callback((Fl_Callback*)cb_On); o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); o->when(FL_WHEN_RELEASE); o->init("PFMFreqEnvelopeEnabled"); } // Fl_Osc_Check* o { Fl_Osc_Counter* o = new Fl_Osc_Counter(685, 295, 60, 15, "Coarse Det."); o->tooltip("Coarse Detune"); o->box(FL_UP_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_INACTIVE_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(0); o->labelsize(10); o->labelcolor(FL_FOREGROUND_COLOR); o->minimum(-64); o->maximum(63); o->step(1); o->textfont(1); o->textsize(11); o->align(Fl_Align(FL_ALIGN_TOP)); o->when(FL_WHEN_CHANGED); o->init("FMcoarsedetune"); o->lstep(10); } // Fl_Osc_Counter* o { Fl_Osc_Counter* o = new Fl_Osc_Counter(625, 295, 45, 15, "Octave"); o->tooltip("Octave"); o->type(1); o->box(FL_UP_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_INACTIVE_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(0); o->labelsize(10); o->labelcolor(FL_FOREGROUND_COLOR); o->minimum(-8); o->maximum(7); o->step(1); o->textfont(1); o->textsize(11); o->align(Fl_Align(FL_ALIGN_TOP)); o->when(FL_WHEN_CHANGED); o->init("FMoctave"); } // Fl_Osc_Counter* o { Fl_Osc_Slider* o = new Fl_Osc_Slider(590, 245, 155, 15); o->tooltip("Fine Detune (cents)"); o->type(5); o->box(FL_NO_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->minimum(-8192); o->maximum(8191); o->step(1); o->callback((Fl_Callback*)cb_); o->align(Fl_Align(FL_ALIGN_BOTTOM)); o->when(FL_WHEN_CHANGED); o->init("PFMDetune", 'i'); } // Fl_Osc_Slider* o { Fl_Osc_Output* o = fmdetunevalueoutput = new Fl_Osc_Output(540, 247, 45, 18, "Detune"); fmdetunevalueoutput->box(FL_NO_BOX); fmdetunevalueoutput->color(FL_BACKGROUND_COLOR); fmdetunevalueoutput->selection_color(FL_BACKGROUND_COLOR); fmdetunevalueoutput->labeltype(FL_NORMAL_LABEL); fmdetunevalueoutput->labelfont(0); fmdetunevalueoutput->labelsize(8); fmdetunevalueoutput->labelcolor(FL_FOREGROUND_COLOR); fmdetunevalueoutput->minimum(-5000); fmdetunevalueoutput->maximum(5000); fmdetunevalueoutput->step(0.01); fmdetunevalueoutput->textfont(1); fmdetunevalueoutput->textsize(8); fmdetunevalueoutput->align(Fl_Align(FL_ALIGN_TOP_LEFT)); fmdetunevalueoutput->when(FL_WHEN_CHANGED); o->init("FMdetunevalue"); } // Fl_Osc_Output* fmdetunevalueoutput { Fl_Osc_Choice* o = new Fl_Osc_Choice(540, 294, 75, 15, "Detune Type"); o->box(FL_UP_BOX); o->down_box(FL_BORDER_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_SELECTION_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(0); o->labelsize(10); o->labelcolor(FL_FOREGROUND_COLOR); o->textfont(1); o->textsize(10); o->callback((Fl_Callback*)cb_Detune); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); o->when(FL_WHEN_RELEASE); o->add("Default");o->add("L35cents");o->add("L10cents");o->add("E100cents");o->add("E1200cents"); o->init("PFMDetuneType"); } // Fl_Osc_Choice* o { Fl_Osc_Check* o = new Fl_Osc_Check(683, 266, 55, 15, "440Hz"); o->tooltip("Set the modulator base frequency to 440Hz"); o->box(FL_NO_BOX); o->down_box(FL_DOWN_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_FOREGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(1); o->labelsize(11); o->labelcolor(FL_FOREGROUND_COLOR); o->callback((Fl_Callback*)cb_440Hz); o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); o->when(FL_WHEN_RELEASE); o->init("PFMFixedFreq"); } // Fl_Osc_Check* o modfrequency->end(); } // Fl_Group* modfrequency { Fl_Group* o = new Fl_Group(535, 60, 220, 160, "Mod.AMPLITUDE"); o->box(FL_UP_FRAME); o->labeltype(FL_EMBOSSED_LABEL); o->labelfont(1); o->labelsize(13); o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE)); { Fl_Osc_VSlider* o = new Fl_Osc_VSlider(540, 80, 155, 15, "Vol"); o->tooltip("Volume"); o->type(5); o->box(FL_NO_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_FOREGROUND_COLOR); o->maximum(127); o->step(1); o->align(Fl_Align(FL_ALIGN_RIGHT)); o->when(FL_WHEN_CHANGED); o->init("PFMVolume", 'i');o->reset_value=90; } // Fl_Osc_VSlider* o { Fl_Osc_VSlider* o = new Fl_Osc_VSlider(540, 100, 160, 15, "V.Sns"); o->tooltip("Velocity Sensing Function (rightmost to disable)"); o->type(5); o->box(FL_NO_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_FOREGROUND_COLOR); o->maximum(127); o->step(1); o->align(Fl_Align(FL_ALIGN_RIGHT)); o->when(FL_WHEN_CHANGED); o->init("PFMVelocityScaleFunction");o->reset_value=64; } // Fl_Osc_VSlider* o { EnvelopeUI* o = voiceFMampenvgroup = new EnvelopeUI(540, 140, 205, 70, "ADSynth Modulator - Amplitude Envelope"); voiceFMampenvgroup->box(FL_FLAT_BOX); voiceFMampenvgroup->color((Fl_Color)51); voiceFMampenvgroup->selection_color(FL_BACKGROUND_COLOR); voiceFMampenvgroup->labeltype(FL_NORMAL_LABEL); voiceFMampenvgroup->labelfont(0); voiceFMampenvgroup->labelsize(14); voiceFMampenvgroup->labelcolor(FL_FOREGROUND_COLOR); voiceFMampenvgroup->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE)); voiceFMampenvgroup->when(FL_WHEN_RELEASE); o->init(//pars->VoicePar[nvoice].FMAmpEnvelope, ENV_ADSR, osc_i, loc, "FMAmpEnvelope/"); voiceFMampenvgroup->end(); } // EnvelopeUI* voiceFMampenvgroup { Fl_Osc_Check* o = new Fl_Osc_Check(545, 150, 50, 10, "On"); o->tooltip("Forced Release"); o->box(FL_NO_BOX); o->down_box(FL_DOWN_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_FOREGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(1); o->labelsize(11); o->labelcolor(FL_FOREGROUND_COLOR); o->callback((Fl_Callback*)cb_On1); o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); o->when(FL_WHEN_RELEASE); o->init("PFMAmpEnvelopeEnabled"); } // Fl_Osc_Check* o { Fl_Osc_VSlider* o = new Fl_Osc_VSlider(540, 120, 160, 15, "F.Damp"); o->tooltip("Modulator Damp at Higher frequency"); o->type(5); o->box(FL_NO_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_FOREGROUND_COLOR); o->minimum(-64); o->maximum(63); o->step(1); o->align(Fl_Align(FL_ALIGN_RIGHT)); o->when(FL_WHEN_CHANGED); o->init("PFMVolumeDamp",'i'); } // Fl_Osc_VSlider* o o->end(); } // Fl_Group* o { modoscil = new Fl_Group(535, 390, 220, 195); { Fl_Osc_Group* o = fmoscil = new Fl_Osc_Group(535, 445, 220, 140); fmoscil->box(FL_THIN_DOWN_BOX); fmoscil->color(FL_GRAY0); fmoscil->selection_color((Fl_Color)71); fmoscil->labeltype(FL_NORMAL_LABEL); fmoscil->labelfont(0); fmoscil->labelsize(14); fmoscil->labelcolor((Fl_Color)179); fmoscil->align(Fl_Align(FL_ALIGN_TOP)); fmoscil->when(FL_WHEN_RELEASE); fmoscil->base = loc; fmoscil->ext="FMSmp/";fmoscil->osc = osc_i;fmoscil->begin(); oscFM=new Fl_Oscilloscope(o->x(),o->y(),o->w(),o->h(),""); //int nv=nvoice; if (pars->VoicePar[nvoice].PextFMoscil>=0) nv=pars->VoicePar[nvoice].PextFMoscil; oscFM->parent(fmoscil);oscFM->init(false);oscFM->update();fmoscil->end(); fmoscil->end(); } // Fl_Osc_Group* fmoscil { Fl_Box* o = new Fl_Box(535, 393, 155, 20, "Mod.Oscillator"); o->labelfont(1); o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); } // Fl_Box* o { Fl_Button* o = changeFMoscilbutton = new Fl_Button(700, 398, 55, 15, "Change"); changeFMoscilbutton->box(FL_THIN_UP_BOX); changeFMoscilbutton->labelfont(1); changeFMoscilbutton->labelsize(11); changeFMoscilbutton->callback((Fl_Callback*)cb_changeFMoscilbutton); (void)o;/*if (extFMoscil->value()>=0) o->labelcolor(FL_BLUE);*/ } // Fl_Button* changeFMoscilbutton { PhaseSlider* o = new PhaseSlider(645, 425, 105, 15, "Phase"); o->type(5); o->box(FL_NO_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_BACKGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(0); o->labelsize(10); o->labelcolor(FL_FOREGROUND_COLOR); o->minimum(-63); o->maximum(64); o->step(1); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); o->when(FL_WHEN_CHANGED); o->init("PFMoscilphase", 'i'); o->set_scope(oscFM); } // PhaseSlider* o { Fl_Osc_Choice* o = extFMoscil = new Fl_Osc_Choice(560, 420, 75, 20, "Use"); extFMoscil->box(FL_UP_BOX); extFMoscil->down_box(FL_BORDER_BOX); extFMoscil->color(FL_BACKGROUND_COLOR); extFMoscil->selection_color(FL_SELECTION_COLOR); extFMoscil->labeltype(FL_NORMAL_LABEL); extFMoscil->labelfont(0); extFMoscil->labelsize(10); extFMoscil->labelcolor(FL_FOREGROUND_COLOR); extFMoscil->textfont(1); extFMoscil->textsize(10); extFMoscil->callback((Fl_Callback*)cb_extFMoscil); extFMoscil->align(Fl_Align(FL_ALIGN_LEFT)); extFMoscil->when(FL_WHEN_RELEASE); o->add("Internal"); char tmp[50]; for (int i=0;iadd(tmp);}; o->init("PextFMoscil",-1); } // Fl_Osc_Choice* extFMoscil modoscil->end(); } // Fl_Group* modoscil { Fl_Osc_Choice* o = extMod = new Fl_Osc_Choice(635, 40, 85, 20, "External Mod."); extMod->box(FL_UP_BOX); extMod->down_box(FL_BORDER_BOX); extMod->color(FL_BACKGROUND_COLOR); extMod->selection_color(FL_SELECTION_COLOR); extMod->labeltype(FL_NORMAL_LABEL); extMod->labelfont(0); extMod->labelsize(10); extMod->labelcolor(FL_FOREGROUND_COLOR); extMod->textfont(1); extMod->textsize(10); extMod->callback((Fl_Callback*)cb_extMod); extMod->align(Fl_Align(FL_ALIGN_TOP_LEFT)); extMod->when(FL_WHEN_RELEASE); o->add("OFF"); char tmp[50]; for (int i=0;iadd(tmp);}; o->init("PFMVoice", -1); if ((int) o->value() != 0) {modoscil->deactivate();modfrequency->deactivate();} } // Fl_Osc_Choice* extMod voiceFMparametersgroup->end(); } // Fl_Group* voiceFMparametersgroup { Fl_Osc_Choice* o = mod_type = new Fl_Osc_Choice(535, 40, 80, 20, "Type:"); mod_type->box(FL_UP_BOX); mod_type->down_box(FL_BORDER_BOX); mod_type->color(FL_BACKGROUND_COLOR); mod_type->selection_color(FL_SELECTION_COLOR); mod_type->labeltype(FL_NORMAL_LABEL); mod_type->labelfont(0); mod_type->labelsize(14); mod_type->labelcolor(FL_FOREGROUND_COLOR); mod_type->callback((Fl_Callback*)cb_mod_type); mod_type->align(Fl_Align(FL_ALIGN_TOP_LEFT)); mod_type->when(FL_WHEN_RELEASE); mod_type->menu(menu_mod_type); o->init("PFMEnabled"); } // Fl_Osc_Choice* mod_type { Fl_Group* o = new Fl_Group(5, 265, 525, 120, "FREQUENCY"); o->box(FL_UP_FRAME); o->labeltype(FL_EMBOSSED_LABEL); o->labelfont(1); o->labelsize(13); o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE)); { EnvelopeUI* o = voicefreqenvgroup = new EnvelopeUI(10, 305, 205, 70, "ADSynth Voice - Frequency Envelope"); voicefreqenvgroup->box(FL_FLAT_BOX); voicefreqenvgroup->color((Fl_Color)51); voicefreqenvgroup->selection_color(FL_BACKGROUND_COLOR); voicefreqenvgroup->labeltype(FL_NORMAL_LABEL); voicefreqenvgroup->labelfont(0); voicefreqenvgroup->labelsize(14); voicefreqenvgroup->labelcolor(FL_FOREGROUND_COLOR); voicefreqenvgroup->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE)); voicefreqenvgroup->when(FL_WHEN_RELEASE); o->init(//pars->VoicePar[nvoice].FreqEnvelope, ENV_ASR, osc_i, loc, "FreqEnvelope/"); voicefreqenvgroup->end(); } // EnvelopeUI* voicefreqenvgroup { Fl_Osc_Check* o = new Fl_Osc_Check(15, 310, 50, 10, "On"); o->tooltip("Forced Release"); o->box(FL_NO_BOX); o->down_box(FL_DOWN_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_FOREGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(1); o->labelsize(11); o->labelcolor(FL_FOREGROUND_COLOR); o->callback((Fl_Callback*)cb_On2); o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); o->when(FL_WHEN_RELEASE); o->init("PFreqEnvelopeEnabled"); } // Fl_Osc_Check* o { LFOUI* o = voicefreqlfogroup = new LFOUI(220, 305, 230, 70, "Frequency LFO "); voicefreqlfogroup->box(FL_FLAT_BOX); voicefreqlfogroup->color(FL_DARK1); voicefreqlfogroup->selection_color(FL_BACKGROUND_COLOR); voicefreqlfogroup->labeltype(FL_NORMAL_LABEL); voicefreqlfogroup->labelfont(0); voicefreqlfogroup->labelsize(14); voicefreqlfogroup->labelcolor(FL_FOREGROUND_COLOR); voicefreqlfogroup->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE)); voicefreqlfogroup->when(FL_WHEN_RELEASE); o->init(osc_i, loc,"FreqLfo/"); voicefreqlfogroup->end(); } // LFOUI* voicefreqlfogroup { Fl_Osc_Check* o = new Fl_Osc_Check(225, 311, 55, 10, "On"); o->tooltip("Forced Release"); o->box(FL_NO_BOX); o->down_box(FL_DOWN_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_FOREGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(1); o->labelsize(11); o->labelcolor(FL_FOREGROUND_COLOR); o->callback((Fl_Callback*)cb_On3); o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); o->when(FL_WHEN_RELEASE); o->init("PFreqLfoEnabled"); } // Fl_Osc_Check* o { Fl_Osc_Counter* o = new Fl_Osc_Counter(470, 285, 45, 15, "Octave"); o->tooltip("Octave"); o->type(1); o->box(FL_UP_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_INACTIVE_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(0); o->labelsize(10); o->labelcolor(FL_FOREGROUND_COLOR); o->minimum(-8); o->maximum(7); o->step(1); o->textfont(1); o->textsize(11); o->align(Fl_Align(FL_ALIGN_TOP)); o->when(FL_WHEN_CHANGED); o->init("octave"); } // Fl_Osc_Counter* o { Fl_Osc_Counter* o = new Fl_Osc_Counter(455, 355, 60, 20, "Coarse Det."); o->tooltip("Coarse Detune"); o->box(FL_UP_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_INACTIVE_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(0); o->labelsize(10); o->labelcolor(FL_FOREGROUND_COLOR); o->minimum(-64); o->maximum(63); o->step(1); o->textfont(1); o->textsize(11); o->align(Fl_Align(FL_ALIGN_TOP)); o->when(FL_WHEN_CHANGED); o->init("coarsedetune"); o->lstep(10); } // Fl_Osc_Counter* o { Fl_Osc_Dial* o = bendadjdial = new Fl_Osc_Dial(60, 270, 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(110, 270, 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_Slider* o = new Fl_Osc_Slider(58, 287, 392, 13); o->tooltip("Fine Detune (cents)"); o->type(5); o->box(FL_NO_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->minimum(-8192); o->maximum(8191); o->step(1); o->callback((Fl_Callback*)cb_1); o->align(Fl_Align(FL_ALIGN_BOTTOM)); o->when(FL_WHEN_CHANGED); o->init("PDetune", 'i'); } // Fl_Osc_Slider* o { Fl_Osc_Output* o = detunevalueoutput = new Fl_Osc_Output(10, 287, 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_Check* o = new Fl_Osc_Check(345, 268, 55, 15, "440Hz"); o->tooltip("Set the voice base frequency to 440Hz"); o->box(FL_NO_BOX); o->down_box(FL_DOWN_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_FOREGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(1); o->labelsize(11); o->labelcolor(FL_FOREGROUND_COLOR); o->callback((Fl_Callback*)cb_440Hz1); o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); o->when(FL_WHEN_RELEASE); o->init("Pfixedfreq"); } // Fl_Osc_Check* o { Fl_Osc_Dial* o = fixedfreqetdial = new Fl_Osc_Dial(405, 270, 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 = new Fl_Osc_Choice(455, 320, 70, 15, "Detune Type"); o->box(FL_UP_BOX); o->down_box(FL_BORDER_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_SELECTION_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(0); o->labelsize(10); o->labelcolor(FL_FOREGROUND_COLOR); o->textfont(1); o->textsize(10); o->callback((Fl_Callback*)cb_Detune1); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); o->when(FL_WHEN_RELEASE); o->add("Default");o->add("L35cents");o->add("L10cents");o->add("E100cents");o->add("E1200cents"); o->init("PDetuneType"); } // Fl_Osc_Choice* o o->end(); } // Fl_Group* o { Fl_Osc_Group* o = voiceoscil = new Fl_Osc_Group(80, 390, 445, 145); voiceoscil->box(FL_THIN_DOWN_BOX); voiceoscil->color(FL_GRAY0); voiceoscil->selection_color((Fl_Color)71); voiceoscil->labeltype(FL_NORMAL_LABEL); voiceoscil->labelfont(0); voiceoscil->labelsize(14); voiceoscil->labelcolor((Fl_Color)179); voiceoscil->align(Fl_Align(FL_ALIGN_TOP)); voiceoscil->when(FL_WHEN_RELEASE); voiceoscil->base = loc;voiceoscil->ext="OscilSmp/";voiceoscil->begin();//int nv=nvoice; if (extoscil->value()>=0) nv=extoscil->value(); osc=new Fl_Oscilloscope(o->x(),o->y(),o->w(),o->h(),""); voiceoscil->osc = osc_i; osc->parent(voiceoscil); osc->init(false);voiceoscil->end(); voiceoscil->end(); } // Fl_Osc_Group* voiceoscil { changevoiceoscilbutton = new Fl_Button(5, 490, 65, 20, "Change"); changevoiceoscilbutton->box(FL_THIN_UP_BOX); changevoiceoscilbutton->labelfont(1); changevoiceoscilbutton->labelsize(11); changevoiceoscilbutton->callback((Fl_Callback*)cb_changevoiceoscilbutton); } // Fl_Button* changevoiceoscilbutton { Fl_Box* o = new Fl_Box(5, 390, 75, 35, "Voice Oscillator"); o->labelfont(1); o->labelsize(12); o->align(Fl_Align(FL_ALIGN_WRAP)); } // Fl_Box* o { PhaseSlider* o = new PhaseSlider(10, 435, 65, 10, "Phase"); o->type(5); o->box(FL_NO_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_BACKGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(0); o->labelsize(10); o->labelcolor(FL_FOREGROUND_COLOR); o->minimum(-63); o->maximum(64); o->step(1); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); o->when(FL_WHEN_CHANGED); o->init("Poscilphase", 'i'); o->set_scope(osc); } // PhaseSlider* o { Fl_Osc_Check* o = new Fl_Osc_Check(210, 5, 35, 35, "R."); o->tooltip("Resonance On/Off"); o->box(FL_THIN_UP_BOX); o->down_box(FL_DOWN_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_FOREGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(1); o->labelsize(11); o->labelcolor(FL_FOREGROUND_COLOR); o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); o->when(FL_WHEN_RELEASE); o->init("Presonance"); } // Fl_Osc_Check* o { Fl_Osc_Choice* o = extoscil = new Fl_Osc_Choice(5, 470, 65, 15, "Use Oscil."); extoscil->box(FL_UP_BOX); extoscil->down_box(FL_BORDER_BOX); extoscil->color(FL_BACKGROUND_COLOR); extoscil->selection_color(FL_SELECTION_COLOR); extoscil->labeltype(FL_NORMAL_LABEL); extoscil->labelfont(0); extoscil->labelsize(10); extoscil->labelcolor(FL_FOREGROUND_COLOR); extoscil->textfont(1); extoscil->textsize(10); extoscil->callback((Fl_Callback*)cb_extoscil); extoscil->align(Fl_Align(FL_ALIGN_TOP_LEFT)); extoscil->when(FL_WHEN_RELEASE); o->add("Internal"); char tmp[50]; for (int i=0;iadd(tmp);}; o->init("Pextoscil",-1); } // Fl_Osc_Choice* extoscil { Fl_Group* o = new Fl_Group(5, 540, 520, 50); o->box(FL_UP_FRAME); { Fl_Osc_Dial* o = new Fl_Osc_Dial(364, 555, 25, 25, "Vibrato"); o->tooltip("Vibrato"); o->box(FL_ROUND_UP_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_INACTIVE_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(0); o->labelsize(10); o->labelcolor(FL_FOREGROUND_COLOR); o->maximum(127); o->step(1); o->align(Fl_Align(FL_ALIGN_TOP)); o->when(FL_WHEN_CHANGED); o->init("Unison_vibratto");o->reset_value=64; } // Fl_Osc_Dial* o { Fl_Osc_Choice* o = new Fl_Osc_Choice(445, 560, 65, 15, "Invert"); o->tooltip("Phase Invert"); o->box(FL_UP_BOX); o->down_box(FL_BORDER_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_SELECTION_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(0); o->labelsize(11); o->labelcolor(FL_FOREGROUND_COLOR); o->textfont(1); o->textsize(10); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); o->when(FL_WHEN_RELEASE); o->add("None");o->add("Random");char tmp[100];for (int i=2;i<=5;i++){snprintf(tmp,100,"%d %%",100/i);o->add(tmp);}; o->init("Unison_invert_phase"); } // Fl_Osc_Choice* o { Fl_Osc_Slider* o = new Fl_Osc_Slider(95, 562, 125, 13, "Frequency Spread"); o->tooltip("Frequency Spread of the Unison"); o->type(5); o->box(FL_NO_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_BACKGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(0); o->labelsize(12); o->labelcolor(FL_FOREGROUND_COLOR); o->maximum(127); o->step(1); o->value(64); o->callback((Fl_Callback*)cb_Frequency); o->align(Fl_Align(FL_ALIGN_TOP)); o->when(FL_WHEN_CHANGED); o->init("Unison_frequency_spread", 'i');o->reset_value=60; } // Fl_Osc_Slider* o { Fl_Osc_Output* o = unisonspreadoutput = new Fl_Osc_Output(225, 560, 40, 15, "(cents)"); unisonspreadoutput->box(FL_NO_BOX); unisonspreadoutput->color(FL_BACKGROUND_COLOR); unisonspreadoutput->selection_color(FL_BACKGROUND_COLOR); unisonspreadoutput->labeltype(FL_NORMAL_LABEL); unisonspreadoutput->labelfont(0); unisonspreadoutput->labelsize(10); unisonspreadoutput->labelcolor(FL_FOREGROUND_COLOR); unisonspreadoutput->maximum(1000); unisonspreadoutput->step(0.1); unisonspreadoutput->textfont(1); unisonspreadoutput->textsize(10); unisonspreadoutput->align(Fl_Align(FL_ALIGN_TOP_LEFT)); unisonspreadoutput->when(FL_WHEN_CHANGED); o->init("unisonFrequencySpreadCents");//o->value(pars->getUnisonFrequencySpreadCents(nvoice)); } // Fl_Osc_Output* unisonspreadoutput { Fl_Osc_Dial* o = new Fl_Osc_Dial(406, 555, 25, 25, "V.speed"); o->tooltip("Vibrato Average Speed"); o->box(FL_ROUND_UP_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_INACTIVE_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(0); o->labelsize(10); o->labelcolor(FL_FOREGROUND_COLOR); o->maximum(127); o->step(1); o->align(Fl_Align(FL_ALIGN_TOP)); o->when(FL_WHEN_CHANGED); o->init("Unison_vibratto_speed");o->reset_value=64; } // Fl_Osc_Dial* o { Fl_Osc_Dial* o = new Fl_Osc_Dial(280, 555, 25, 25, "Ph.rand"); o->tooltip("Phase randomness"); o->box(FL_ROUND_UP_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_INACTIVE_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(0); o->labelsize(10); o->labelcolor(FL_FOREGROUND_COLOR); o->maximum(127); o->step(1); o->align(Fl_Align(FL_ALIGN_TOP)); o->when(FL_WHEN_CHANGED); o->init("Unison_phase_randomness");o->reset_value=127; } // Fl_Osc_Dial* o { Fl_Osc_Dial* o = new Fl_Osc_Dial(322, 555, 25, 25, "Stereo"); o->tooltip("Stereo Spread"); o->box(FL_ROUND_UP_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_INACTIVE_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(0); o->labelsize(10); o->labelcolor(FL_FOREGROUND_COLOR); o->maximum(127); o->step(1); o->align(Fl_Align(FL_ALIGN_TOP)); o->when(FL_WHEN_CHANGED); o->init("Unison_stereo_spread");o->reset_value=64; } // Fl_Osc_Dial* o o->end(); } // Fl_Group* o voicemodegroup->end(); } // Fl_Group* voicemodegroup { Fl_Group* o = new Fl_Group(5, 40, 240, 220, "AMPLITUDE"); o->box(FL_UP_FRAME); o->labeltype(FL_EMBOSSED_LABEL); o->labelfont(1); o->labelsize(13); o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE)); { Fl_Osc_VSlider* o = new Fl_Osc_VSlider(10, 60, 160, 15, "Vol"); o->tooltip("Volume"); o->type(5); o->box(FL_NO_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_FOREGROUND_COLOR); o->maximum(127); o->step(1); o->align(Fl_Align(FL_ALIGN_RIGHT)); o->when(FL_WHEN_CHANGED); o->init("PVolume");o->reset_value=100; } // Fl_Osc_VSlider* o { Fl_Osc_VSlider* o = new Fl_Osc_VSlider(10, 80, 160, 15, "V.Sns"); o->tooltip("Velocity Sensing Function (rightmost to disable)"); o->type(5); o->box(FL_NO_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_FOREGROUND_COLOR); o->maximum(127); o->step(1); o->align(Fl_Align(FL_ALIGN_RIGHT)); o->when(FL_WHEN_CHANGED); o->init("PAmpVelocityScaleFunction");o->reset_value=127; } // Fl_Osc_VSlider* o { EnvelopeUI* o = voiceampenvgroup = new EnvelopeUI(10, 105, 205, 70, "ADSynth Voice - Amplitude Envelope"); voiceampenvgroup->box(FL_FLAT_BOX); voiceampenvgroup->color((Fl_Color)51); voiceampenvgroup->selection_color(FL_BACKGROUND_COLOR); voiceampenvgroup->labeltype(FL_NORMAL_LABEL); voiceampenvgroup->labelfont(0); voiceampenvgroup->labelsize(14); voiceampenvgroup->labelcolor(FL_FOREGROUND_COLOR); voiceampenvgroup->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE)); voiceampenvgroup->when(FL_WHEN_RELEASE); o->init(//pars->VoicePar[nvoice].AmpEnvelope, ENV_ADSR, osc_i, loc, "AmpEnvelope/"); voiceampenvgroup->end(); } // EnvelopeUI* voiceampenvgroup { Fl_Osc_Dial* o = new Fl_Osc_Dial(212, 65, 30, 30, "Pan"); o->tooltip("Panning (leftmost is Random)"); o->box(FL_ROUND_UP_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_INACTIVE_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(0); o->labelsize(10); o->labelcolor(FL_FOREGROUND_COLOR); o->maximum(127); o->step(1); o->align(Fl_Align(FL_ALIGN_BOTTOM)); o->when(FL_WHEN_CHANGED); o->init("PPanning");o->reset_value=64; } // Fl_Osc_Dial* o { Fl_Osc_Check* o = new Fl_Osc_Check(15, 110, 50, 10, "On"); o->tooltip("Forced Release"); o->box(FL_NO_BOX); o->down_box(FL_DOWN_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_FOREGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(1); o->labelsize(11); o->labelcolor(FL_FOREGROUND_COLOR); o->callback((Fl_Callback*)cb_On4); o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); o->when(FL_WHEN_RELEASE); o->init("PAmpEnvelopeEnabled"); } // Fl_Osc_Check* o { LFOUI* o = voiceamplfogroup = new LFOUI(10, 180, 230, 75, "Amplitude LFO "); voiceamplfogroup->box(FL_FLAT_BOX); voiceamplfogroup->color(FL_DARK1); voiceamplfogroup->selection_color(FL_BACKGROUND_COLOR); voiceamplfogroup->labeltype(FL_NORMAL_LABEL); voiceamplfogroup->labelfont(0); voiceamplfogroup->labelsize(14); voiceamplfogroup->labelcolor(FL_FOREGROUND_COLOR); voiceamplfogroup->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE)); voiceamplfogroup->when(FL_WHEN_RELEASE); o->init(osc_i, loc, "AmpLfo/"); voiceamplfogroup->end(); } // LFOUI* voiceamplfogroup { Fl_Osc_Check* o = new Fl_Osc_Check(15, 185, 55, 10, "On"); o->tooltip("Forced Release"); o->box(FL_NO_BOX); o->down_box(FL_DOWN_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_FOREGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(1); o->labelsize(11); o->labelcolor(FL_FOREGROUND_COLOR); o->callback((Fl_Callback*)cb_On5); o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); o->when(FL_WHEN_RELEASE); o->init("PAmpLfoEnabled"); } // Fl_Osc_Check* o { Fl_Osc_Check* o = new Fl_Osc_Check(10, 45, 50, 10, "Minus"); o->box(FL_NO_BOX); o->down_box(FL_DOWN_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_FOREGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(1); o->labelsize(10); o->labelcolor(FL_FOREGROUND_COLOR); o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); o->when(FL_WHEN_RELEASE); o->init("PVolumeminus"); } // Fl_Osc_Check* o o->end(); } // Fl_Group* o { voicefiltergroup = new Fl_Group(245, 5, 285, 260, "FILTER"); voicefiltergroup->box(FL_UP_FRAME); voicefiltergroup->labeltype(FL_EMBOSSED_LABEL); voicefiltergroup->labelfont(1); voicefiltergroup->labelsize(13); voicefiltergroup->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE)); { FilterUI* o = new FilterUI(250, 30, 275, 75, "ADsynth Voice - Filter"); o->box(FL_FLAT_BOX); o->color(FL_LIGHT1); o->selection_color(FL_BACKGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(0); o->labelsize(14); o->labelcolor(FL_FOREGROUND_COLOR); o->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE)); o->when(FL_WHEN_RELEASE); o->init(loc + "PFilter", osc_i, loc, "VoiceFilter/"); o->end(); } // FilterUI* o { EnvelopeUI* o = voicefilterenvgroup = new EnvelopeUI(250, 115, 275, 70, "ADSynth Voice - Filter Envelope"); voicefilterenvgroup->box(FL_FLAT_BOX); voicefilterenvgroup->color((Fl_Color)51); voicefilterenvgroup->selection_color(FL_BACKGROUND_COLOR); voicefilterenvgroup->labeltype(FL_NORMAL_LABEL); voicefilterenvgroup->labelfont(0); voicefilterenvgroup->labelsize(14); voicefilterenvgroup->labelcolor(FL_FOREGROUND_COLOR); voicefilterenvgroup->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE)); voicefilterenvgroup->when(FL_WHEN_RELEASE); o->init( ENV_ADSR_FILTER, osc_i, loc, "FilterEnvelope/"); voicefilterenvgroup->end(); } // EnvelopeUI* voicefilterenvgroup { Fl_Osc_Check* o = new Fl_Osc_Check(255, 119, 55, 10, "On"); o->tooltip("Forced Release"); o->box(FL_NO_BOX); o->down_box(FL_DOWN_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_FOREGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(1); o->labelsize(11); o->labelcolor(FL_FOREGROUND_COLOR); o->callback((Fl_Callback*)cb_On6); o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); o->when(FL_WHEN_RELEASE); o->init("PFilterEnvelopeEnabled"); } // Fl_Osc_Check* o { LFOUI* o = voicefilterlfogroup = new LFOUI(250, 190, 230, 70, "Filter LFO "); voicefilterlfogroup->box(FL_FLAT_BOX); voicefilterlfogroup->color(FL_DARK1); voicefilterlfogroup->selection_color(FL_BACKGROUND_COLOR); voicefilterlfogroup->labeltype(FL_NORMAL_LABEL); voicefilterlfogroup->labelfont(0); voicefilterlfogroup->labelsize(14); voicefilterlfogroup->labelcolor(FL_FOREGROUND_COLOR); voicefilterlfogroup->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE)); voicefilterlfogroup->when(FL_WHEN_RELEASE); o->init(osc_i, loc, "FilterLfo/"); voicefilterlfogroup->end(); } // LFOUI* voicefilterlfogroup { Fl_Osc_Check* o = new Fl_Osc_Check(255, 196, 55, 10, "On"); o->tooltip("Forced Release"); o->box(FL_NO_BOX); o->down_box(FL_DOWN_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_FOREGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(1); o->labelsize(11); o->labelcolor(FL_FOREGROUND_COLOR); o->callback((Fl_Callback*)cb_On7); o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); o->when(FL_WHEN_RELEASE); o->init("PFilterLfoEnabled"); } // Fl_Osc_Check* o voicefiltergroup->end(); } // Fl_Group* voicefiltergroup { Fl_Group* o = activeVoiceID = new Fl_Group(5, 5, 55, 35, "01"); activeVoiceID->box(FL_THIN_UP_BOX); activeVoiceID->labeltype(FL_EMBOSSED_LABEL); activeVoiceID->labelfont(1); activeVoiceID->labelsize(22); activeVoiceID->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE)); char tmp[10];snprintf(tmp,10,"%d",nvoice+1);o->label(strdup(tmp)); activeVoiceID->end(); } // Fl_Group* activeVoiceID { Fl_Osc_Choice* o = new Fl_Osc_Choice(5, 515, 65, 20); o->tooltip("Oscillator Type (sound/noise)"); o->box(FL_UP_BOX); o->down_box(FL_BORDER_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_SELECTION_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(0); o->labelsize(10); o->labelcolor(FL_FOREGROUND_COLOR); o->textfont(1); o->textsize(10); o->callback((Fl_Callback*)cb_2); o->align(Fl_Align(FL_ALIGN_LEFT)); o->when(FL_WHEN_RELEASE); o->menu(menu_); o->init("Type"); } // Fl_Osc_Choice* o { Fl_Osc_Check* o = bypassfiltercheckbutton = new Fl_Osc_Check(425, 10, 100, 20, "Bypass Global F."); bypassfiltercheckbutton->box(FL_NO_BOX); bypassfiltercheckbutton->down_box(FL_DOWN_BOX); bypassfiltercheckbutton->color(FL_BACKGROUND_COLOR); bypassfiltercheckbutton->selection_color(FL_FOREGROUND_COLOR); bypassfiltercheckbutton->labeltype(FL_NORMAL_LABEL); bypassfiltercheckbutton->labelfont(1); bypassfiltercheckbutton->labelsize(10); bypassfiltercheckbutton->labelcolor(FL_FOREGROUND_COLOR); bypassfiltercheckbutton->align(Fl_Align(132|FL_ALIGN_INSIDE)); bypassfiltercheckbutton->when(FL_WHEN_RELEASE); o->init("Pfilterbypass"); } // Fl_Osc_Check* bypassfiltercheckbutton { Fl_Group* o = new Fl_Group(115, 5, 95, 35); o->box(FL_THIN_UP_BOX); { Fl_Osc_VSlider* o = new Fl_Osc_VSlider(120, 21, 84, 12, "Delay"); o->tooltip("Volume"); o->type(5); o->box(FL_NO_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_FOREGROUND_COLOR); o->maximum(127); o->step(1); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); o->when(FL_WHEN_CHANGED); o->init("PDelay"); } // Fl_Osc_VSlider* o o->end(); } // Fl_Group* o { Fl_Osc_Check* o = new Fl_Osc_Check(250, 15, 60, 15, "On"); o->tooltip("Enable Filter"); o->box(FL_NO_BOX); o->down_box(FL_DOWN_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_FOREGROUND_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(1); o->labelsize(11); o->labelcolor(FL_FOREGROUND_COLOR); o->callback((Fl_Callback*)cb_On8); o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); o->when(FL_WHEN_RELEASE); o->init("PFilterEnabled"); } // Fl_Osc_Check* o { whitenoiselabel = new Fl_Box(150, 430, 300, 65, "White Noise"); whitenoiselabel->labelfont(1); whitenoiselabel->labelsize(50); whitenoiselabel->labelcolor(FL_LIGHT3); whitenoiselabel->hide(); } // Fl_Box* whitenoiselabel { pinknoiselabel = new Fl_Box(150, 430, 300, 65, "Pink Noise"); pinknoiselabel->labelfont(1); pinknoiselabel->labelsize(50); pinknoiselabel->labelcolor((Fl_Color)212); pinknoiselabel->hide(); } // Fl_Box* pinknoiselabel { Fl_Osc_Counter* o = new Fl_Osc_Counter(20, 568, 65, 18, "Unison"); o->tooltip("Unison size"); o->box(FL_UP_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_INACTIVE_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(1); o->labelsize(14); o->labelcolor(FL_FOREGROUND_COLOR); o->minimum(1); o->maximum(64); o->step(1); o->value(1); o->textfont(1); o->textsize(11); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); o->when(FL_WHEN_CHANGED); o->init("Unison_size", 1); o->lstep(5); } // Fl_Osc_Counter* o voiceparametersgroup->end(); } // Fl_Group* voiceparametersgroup { Fl_Osc_Check* o = voiceonbutton = new Fl_Osc_Check(60, 5, 55, 35, "On"); voiceonbutton->box(FL_THIN_UP_BOX); voiceonbutton->down_box(FL_DOWN_BOX); voiceonbutton->color(FL_BACKGROUND_COLOR); voiceonbutton->selection_color(FL_FOREGROUND_COLOR); voiceonbutton->labeltype(FL_NORMAL_LABEL); voiceonbutton->labelfont(1); voiceonbutton->labelsize(13); voiceonbutton->labelcolor(FL_FOREGROUND_COLOR); voiceonbutton->callback((Fl_Callback*)cb_voiceonbutton); voiceonbutton->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); voiceonbutton->when(FL_WHEN_RELEASE); o->init("Enabled"); } // Fl_Osc_Check* voiceonbutton ADnoteVoiceParameters->end(); } // Fl_Osc_Group* ADnoteVoiceParameters return ADnoteVoiceParameters; } ADvoiceUI::ADvoiceUI(int x,int y, int w, int h, const char *label):Fl_Group(x,y,w,h,label) { nvoice=0; oscedit=NULL; } void ADvoiceUI::init(int nvoice_, std::string loc_, Fl_Osc_Interface *osc_) { assert(osc_); assert(!loc_.empty()); nvoice=nvoice_; loc=loc_+"VoicePar"+to_s(nvoice)+"/"; base = loc_; osc_i=osc_; make_window(); end(); ADnoteVoiceParameters->show(); } ADvoiceUI::~ADvoiceUI() { ADnoteVoiceParameters->hide(); hide(); delete(oscedit); //delete (ADnoteVoiceParameters); } void ADvoiceUI::change_voice(int nvoice_) { nvoice = nvoice_; loc = base+"VoicePar"+to_s(nvoice)+"/"; char tmp[50];snprintf(tmp,10,"%d",nvoice+1); activeVoiceID->label(strdup(tmp)); extoscil->clear(); extoscil->add("Internal"); for (int i=0;iadd(tmp); }; extFMoscil->clear(); extFMoscil->add("Internal"); for (int i=0;iadd(tmp); } extMod->clear(); extMod->add("OFF"); for (int i=0;iadd(tmp); } ADnoteVoiceParameters->rebase(base+"VoicePar"+to_s(nvoice)+"/"); } void ADnoteUI::cb_detune_i(Fl_Osc_Slider*, void*) { detunevalueoutput->update(); } void ADnoteUI::cb_detune(Fl_Osc_Slider* o, void* v) { ((ADnoteUI*)(o->parent()->parent()->user_data()))->cb_detune_i(o,v); } void ADnoteUI::cb_detunetype_i(Fl_Osc_Choice*, void*) { detunevalueoutput->update(); ui->partui->adnoteui->advoice->detunevalueoutput->update(); ui->partui->adnoteui->advoice->fmdetunevalueoutput->update(); } void ADnoteUI::cb_detunetype(Fl_Osc_Choice* o, void* v) { ((ADnoteUI*)(o->parent()->parent()->user_data()))->cb_detunetype_i(o,v); } void ADnoteUI::cb_relBW_i(Fl_Osc_Dial*, void*) { for (int i=0;irefreshlist(); }; } void ADnoteUI::cb_relBW(Fl_Osc_Dial* o, void* v) { ((ADnoteUI*)(o->parent()->parent()->user_data()))->cb_relBW_i(o,v); } void ADnoteUI::cb_Show_i(Fl_Button*, void*) { for (int i=0;irefreshlist(); } ADnoteVoiceList->show(); } void ADnoteUI::cb_Show(Fl_Button* o, void* v) { ((ADnoteUI*)(o->parent()->user_data()))->cb_Show_i(o,v); } void ADnoteUI::cb_Show1_i(Fl_Button*, void*) { if (advoice->mod_type->value() == 0) advoice->voiceFMparametersgroup->deactivate(); else advoice->voiceFMparametersgroup->activate(); ADnoteVoice->show(); } void ADnoteUI::cb_Show1(Fl_Button* o, void* v) { ((ADnoteUI*)(o->parent()->user_data()))->cb_Show1_i(o,v); } void ADnoteUI::cb_Close_i(Fl_Button*, void*) { ADnoteGlobalParameters->hide(); } void ADnoteUI::cb_Close(Fl_Button* o, void* v) { ((ADnoteUI*)(o->parent()->user_data()))->cb_Close_i(o,v); } void ADnoteUI::cb_Resonance_i(Fl_Button*, void*) { resui->resonancewindow->redraw(); resui->resonancewindow->show(); } void ADnoteUI::cb_Resonance(Fl_Button* o, void* v) { ((ADnoteUI*)(o->parent()->user_data()))->cb_Resonance_i(o,v); } void ADnoteUI::cb_C_i(Fl_Button*, void*) { presetsui->copy(loc); } void ADnoteUI::cb_C(Fl_Button* o, void* v) { ((ADnoteUI*)(o->parent()->user_data()))->cb_C_i(o,v); } void ADnoteUI::cb_P_i(Fl_Button*, void*) { presetsui->paste(loc,this); } void ADnoteUI::cb_P(Fl_Button* o, void* v) { ((ADnoteUI*)(o->parent()->user_data()))->cb_P_i(o,v); } void ADnoteUI::cb_Close1_i(Fl_Button*, void*) { ADnoteVoice->hide(); } void ADnoteUI::cb_Close1(Fl_Button* o, void* v) { ((ADnoteUI*)(o->parent()->user_data()))->cb_Close1_i(o,v); } void ADnoteUI::cb_currentvoicecounter_i(Fl_Counter* o, void*) { nvoice=(int)o->value()-1; advoice->change_voice(nvoice); } void ADnoteUI::cb_currentvoicecounter(Fl_Counter* o, void* v) { ((ADnoteUI*)(o->parent()->user_data()))->cb_currentvoicecounter_i(o,v); } void ADnoteUI::cb_C1_i(Fl_Button*, void*) { presetsui->copy(ADnoteVoice->loc(),nvoice); } void ADnoteUI::cb_C1(Fl_Button* o, void* v) { ((ADnoteUI*)(o->parent()->user_data()))->cb_C1_i(o,v); } void ADnoteUI::cb_P1_i(Fl_Button*, void*) { presetsui->paste(ADnoteVoice->loc(),this,nvoice); } void ADnoteUI::cb_P1(Fl_Button* o, void* v) { ((ADnoteUI*)(o->parent()->user_data()))->cb_P1_i(o,v); } void ADnoteUI::cb_Show2_i(Fl_Button*, void*) { ADnoteGlobalParameters->show(); } void ADnoteUI::cb_Show2(Fl_Button* o, void* v) { ((ADnoteUI*)(o->parent()->user_data()))->cb_Show2_i(o,v); } void ADnoteUI::cb_Show3_i(Fl_Button*, void*) { for (int i=0;irefreshlist(); } ADnoteVoiceList->show(); } void ADnoteUI::cb_Show3(Fl_Button* o, void* v) { ((ADnoteUI*)(o->parent()->user_data()))->cb_Show3_i(o,v); } void ADnoteUI::cb_Close2_i(Fl_Button*, void*) { ADnoteVoiceList->hide(); } void ADnoteUI::cb_Close2(Fl_Button* o, void* v) { ((ADnoteUI*)(o->parent()->user_data()))->cb_Close2_i(o,v); } void ADnoteUI::cb_Edit_i(Fl_Button*, void*) { ui->partui->adnoteui->ADnoteGlobalParameters->show(); } void ADnoteUI::cb_Edit(Fl_Button* o, void* v) { ((ADnoteUI*)(o->parent()->user_data()))->cb_Edit_i(o,v); } Fl_Osc_Window* ADnoteUI::make_window() { { ADnoteGlobalParameters = new Fl_Osc_Window(540, 430, "ADsynth Global Parameters of the Instrument"); ADnoteGlobalParameters->box(FL_FLAT_BOX); ADnoteGlobalParameters->color(FL_BACKGROUND_COLOR); ADnoteGlobalParameters->selection_color(FL_BACKGROUND_COLOR); ADnoteGlobalParameters->labeltype(FL_NO_LABEL); ADnoteGlobalParameters->labelfont(0); ADnoteGlobalParameters->labelsize(14); ADnoteGlobalParameters->labelcolor(FL_FOREGROUND_COLOR); ADnoteGlobalParameters->user_data((void*)(this)); ADnoteGlobalParameters->align(Fl_Align(FL_ALIGN_TOP)); ADnoteGlobalParameters->when(FL_WHEN_RELEASE); { new Fl_Box(0, 0, 0, 0); ADnoteGlobalParameters->init(osc, loc + "GlobalPar/"); } // Fl_Box* o { Fl_Group* o = new Fl_Group(5, 280, 530, 115, "FREQUENCY"); o->box(FL_UP_FRAME); o->labeltype(FL_EMBOSSED_LABEL); o->labelfont(1); o->labelsize(13); o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE)); { EnvelopeUI* o = freqenv = new EnvelopeUI(10, 320, 205, 70, "ADSynth Global - Frequency Envelope"); freqenv->box(FL_FLAT_BOX); freqenv->color((Fl_Color)51); freqenv->selection_color(FL_BACKGROUND_COLOR); freqenv->labeltype(FL_NORMAL_LABEL); freqenv->labelfont(0); freqenv->labelsize(14); freqenv->labelcolor(FL_FOREGROUND_COLOR); freqenv->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE)); freqenv->when(FL_WHEN_RELEASE); o->init(ENV_ASR, osc, loc, "GlobalPar/FreqEnvelope/"); freqenv->end(); } // EnvelopeUI* freqenv { Fl_Osc_Counter* o = octave = new Fl_Osc_Counter(455, 300, 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(460, 370, 60, 20, "Coarse det."); coarsedet->tooltip("Coarse Detune"); coarsedet->type(1); 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_LEFT)); coarsedet->when(FL_WHEN_CHANGED); o->init("coarsedetune"); o->lstep(10); } // Fl_Osc_Counter* coarsedet { LFOUI* o = freqlfo = new LFOUI(220, 320, 230, 70, "Frequency LFO "); freqlfo->box(FL_FLAT_BOX); freqlfo->color(FL_DARK1); freqlfo->selection_color(FL_BACKGROUND_COLOR); freqlfo->labeltype(FL_NORMAL_LABEL); freqlfo->labelfont(0); freqlfo->labelsize(14); freqlfo->labelcolor(FL_FOREGROUND_COLOR); freqlfo->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE)); freqlfo->when(FL_WHEN_RELEASE); o->init(osc, loc, "GlobalPar/FreqLfo/"); freqlfo->end(); } // LFOUI* freqlfo { Fl_Osc_Slider* o = detune = new Fl_Osc_Slider(60, 300, 385, 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(12, 300, 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_Choice* o = detunetype = new Fl_Osc_Choice(455, 340, 75, 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 { Fl_Osc_Dial* o = new Fl_Osc_Dial(505, 295, 25, 25, "relBW"); o->tooltip("Bandwidth - how the relative fine detune of the voice are changed"); o->box(FL_ROUND_UP_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_INACTIVE_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(0); o->labelsize(10); o->labelcolor(FL_FOREGROUND_COLOR); o->maximum(127); o->step(1); o->callback((Fl_Callback*)cb_relBW); o->align(Fl_Align(FL_ALIGN_TOP)); o->when(FL_WHEN_CHANGED); o->init("PBandwidth");o->reset_value=64; } // Fl_Osc_Dial* o o->end(); } // Fl_Group* o { Fl_Group* o = new Fl_Group(5, 5, 240, 260, "AMPLITUDE"); o->box(FL_UP_FRAME); o->labeltype(FL_EMBOSSED_LABEL); o->labelfont(1); o->labelsize(13); o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE)); { Fl_Osc_VSlider* o = volume = new Fl_Osc_VSlider(10, 30, 160, 15, "Vol"); volume->tooltip("Volume"); volume->type(5); volume->box(FL_NO_BOX); volume->color(FL_BACKGROUND_COLOR); volume->selection_color(FL_BACKGROUND_COLOR); volume->labeltype(FL_NORMAL_LABEL); volume->labelfont(0); volume->labelsize(11); volume->labelcolor(FL_FOREGROUND_COLOR); volume->maximum(127); volume->step(1); volume->align(Fl_Align(FL_ALIGN_RIGHT)); volume->when(FL_WHEN_CHANGED); o->init("PVolume");o->reset_value=90; } // Fl_Osc_VSlider* volume { Fl_Osc_VSlider* o = vsns = new Fl_Osc_VSlider(10, 50, 160, 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=64; } // Fl_Osc_VSlider* vsns { Fl_Osc_Dial* o = pan = new Fl_Osc_Dial(210, 25, 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 { Fl_Osc_Dial* o = new Fl_Osc_Dial(208, 228, 20, 20, "De-pop"); o->tooltip("Pop suppression"); o->box(FL_NO_BOX); o->color(FL_BACKGROUND_COLOR); o->selection_color(FL_INACTIVE_COLOR); o->labeltype(FL_NORMAL_LABEL); o->labelfont(0); o->labelsize(10); o->labelcolor(FL_FOREGROUND_COLOR); o->maximum(127); o->step(1); o->align(Fl_Align(FL_ALIGN_BOTTOM)); o->when(FL_WHEN_CHANGED); o->init("Fadein_adjustment");o->reset_value=20; } // Fl_Osc_Dial* o { Fl_Osc_Dial* o = pstr = new Fl_Osc_Dial(78, 237, 25, 25, "P.Str."); pstr->tooltip("Punch Strength"); pstr->box(FL_ROUND_UP_BOX); pstr->color(FL_BACKGROUND_COLOR); pstr->selection_color(FL_INACTIVE_COLOR); pstr->labeltype(FL_NORMAL_LABEL); pstr->labelfont(0); pstr->labelsize(10); pstr->labelcolor(FL_FOREGROUND_COLOR); pstr->maximum(127); pstr->step(1); pstr->align(Fl_Align(FL_ALIGN_TOP)); pstr->when(FL_WHEN_CHANGED); o->init("PPunchStrength"); } // Fl_Osc_Dial* pstr { Fl_Osc_Dial* o = pt = new Fl_Osc_Dial(108, 237, 25, 25, "P.t."); pt->tooltip("Punch Time (duration)"); pt->box(FL_ROUND_UP_BOX); pt->color(FL_BACKGROUND_COLOR); pt->selection_color(FL_INACTIVE_COLOR); pt->labeltype(FL_NORMAL_LABEL); pt->labelfont(0); pt->labelsize(10); pt->labelcolor(FL_FOREGROUND_COLOR); pt->maximum(127); pt->step(1); pt->align(Fl_Align(FL_ALIGN_TOP)); pt->when(FL_WHEN_CHANGED); o->init("PPunchTime");o->reset_value=60; } // Fl_Osc_Dial* pt { Fl_Osc_Dial* o = pstc = new Fl_Osc_Dial(138, 237, 25, 25, "P.Stc."); pstc->tooltip("Punch Stretch"); pstc->box(FL_ROUND_UP_BOX); pstc->color(FL_BACKGROUND_COLOR); pstc->selection_color(FL_INACTIVE_COLOR); pstc->labeltype(FL_NORMAL_LABEL); pstc->labelfont(0); pstc->labelsize(10); pstc->labelcolor(FL_FOREGROUND_COLOR); pstc->maximum(127); pstc->step(1); pstc->align(Fl_Align(FL_ALIGN_TOP)); pstc->when(FL_WHEN_CHANGED); o->init("PPunchStretch");o->reset_value=64; } // Fl_Osc_Dial* pstc { Fl_Osc_Dial* o = pvel = new Fl_Osc_Dial(168, 237, 25, 25, "P.Vel."); pvel->tooltip("Punch Velocity Sensing"); pvel->box(FL_ROUND_UP_BOX); pvel->color(FL_BACKGROUND_COLOR); pvel->selection_color(FL_INACTIVE_COLOR); pvel->labeltype(FL_NORMAL_LABEL); pvel->labelfont(0); pvel->labelsize(10); pvel->labelcolor(FL_FOREGROUND_COLOR); pvel->maximum(127); pvel->step(1); pvel->align(Fl_Align(FL_ALIGN_TOP)); pvel->when(FL_WHEN_CHANGED); o->init("PPunchVelocitySensing");o->reset_value=72; } // Fl_Osc_Dial* pvel { EnvelopeUI* o = ampenv = new EnvelopeUI(10, 75, 205, 70, "ADSynth Global - 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, "GlobalPar/AmpEnvelope/"); ampenv->end(); } // EnvelopeUI* ampenv { LFOUI* o = amplfo = new LFOUI(10, 150, 230, 70, "Amplitude LFO "); amplfo->box(FL_FLAT_BOX); amplfo->color(FL_DARK1); amplfo->selection_color(FL_BACKGROUND_COLOR); amplfo->labeltype(FL_NORMAL_LABEL); amplfo->labelfont(0); amplfo->labelsize(14); amplfo->labelcolor(FL_FOREGROUND_COLOR); amplfo->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE)); amplfo->when(FL_WHEN_RELEASE); o->init(osc, loc, "GlobalPar/AmpLfo/"); amplfo->end(); } // LFOUI* amplfo { Fl_Osc_Check* o = rndgrp = new Fl_Osc_Check(7, 241, 65, 18, "Rnd Grp"); rndgrp->tooltip("How the Harmonic Amplitude is applied to voices that use the same oscillator"); rndgrp->box(FL_NO_BOX); rndgrp->down_box(FL_DOWN_BOX); rndgrp->color(FL_BACKGROUND_COLOR); rndgrp->selection_color(FL_FOREGROUND_COLOR); rndgrp->labeltype(FL_NORMAL_LABEL); rndgrp->labelfont(0); rndgrp->labelsize(11); rndgrp->labelcolor(FL_FOREGROUND_COLOR); rndgrp->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE)); rndgrp->when(FL_WHEN_RELEASE); o->init("Hrandgrouping"); } // Fl_Osc_Check* rndgrp o->end(); } // Fl_Group* o { Fl_Group* o = new Fl_Group(250, 5, 285, 265, "FILTER"); o->box(FL_UP_FRAME); o->labeltype(FL_EMBOSSED_LABEL); o->labelfont(1); o->labelsize(13); o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE)); { EnvelopeUI* o = filterenv = new EnvelopeUI(255, 118, 275, 70, "ADSynth Global - 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, "GlobalPar/FilterEnvelope/"); filterenv->end(); } // EnvelopeUI* filterenv { LFOUI* o = filterlfo = new LFOUI(255, 195, 230, 70, "Filter LFO"); filterlfo->box(FL_FLAT_BOX); filterlfo->color(FL_DARK1); filterlfo->selection_color(FL_BACKGROUND_COLOR); filterlfo->labeltype(FL_NORMAL_LABEL); filterlfo->labelfont(0); filterlfo->labelsize(14); filterlfo->labelcolor(FL_FOREGROUND_COLOR); filterlfo->align(Fl_Align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE)); filterlfo->when(FL_WHEN_RELEASE); o->init(osc, loc, "GlobalPar/FilterLfo/"); filterlfo->end(); } // LFOUI* filterlfo { FilterUI* o = filterui = new FilterUI(255, 35, 275, 75, "ADsynth Global - 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 + "GlobalPar/PFilter", osc, loc, "GlobalPar/GlobalFilter/"); filterui->end(); } // FilterUI* filterui o->end(); } // Fl_Group* o { Fl_Osc_Check* o = stereo = new Fl_Osc_Check(7, 223, 65, 18, "Stereo"); stereo->box(FL_NO_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(11); 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_Button* o = new Fl_Button(180, 400, 125, 25, "Show Voice List"); o->labelsize(12); o->callback((Fl_Callback*)cb_Show); } // Fl_Button* o { Fl_Button* o = new Fl_Button(5, 400, 170, 25, "Show Voice Parameters"); o->labelsize(12); o->callback((Fl_Callback*)cb_Show1); } // Fl_Button* o { Fl_Button* o = new Fl_Button(475, 400, 60, 25, "Close"); o->box(FL_THIN_UP_BOX); o->callback((Fl_Callback*)cb_Close); } // Fl_Button* o { Fl_Button* o = new Fl_Button(309, 400, 86, 25, "Resonance"); o->tooltip("Resonance"); o->box(FL_THIN_UP_BOX); o->labelsize(12); o->callback((Fl_Callback*)cb_Resonance); } // Fl_Button* o { Fl_Button* o = new Fl_Button(405, 405, 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(435, 405, 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 ADnoteGlobalParameters->end(); } // Fl_Osc_Window* ADnoteGlobalParameters { ADnoteVoice = new Fl_Osc_Window(765, 630, "ADsynth Voice Parameters"); ADnoteVoice->box(FL_FLAT_BOX); ADnoteVoice->color(FL_BACKGROUND_COLOR); ADnoteVoice->selection_color(FL_BACKGROUND_COLOR); ADnoteVoice->labeltype(FL_NO_LABEL); ADnoteVoice->labelfont(0); ADnoteVoice->labelsize(14); ADnoteVoice->labelcolor(FL_FOREGROUND_COLOR); ADnoteVoice->user_data((void*)(this)); ADnoteVoice->align(Fl_Align(FL_ALIGN_TOP)); ADnoteVoice->when(FL_WHEN_RELEASE); { new Fl_Box(0, 0, 0, 0); ADnoteVoice->init(osc,loc); } // Fl_Box* o { ADvoiceUI* o = advoice = new ADvoiceUI(0, 0, 765, 595); advoice->box(FL_NO_BOX); advoice->color(FL_BACKGROUND_COLOR); advoice->selection_color(FL_BACKGROUND_COLOR); advoice->labeltype(FL_NORMAL_LABEL); advoice->labelfont(0); advoice->labelsize(14); advoice->labelcolor(FL_FOREGROUND_COLOR); advoice->align(Fl_Align(FL_ALIGN_TOP)); advoice->when(FL_WHEN_RELEASE); o->init(nvoice,loc, osc); o->show(); advoice->end(); } // ADvoiceUI* advoice { Fl_Button* o = new Fl_Button(700, 601, 60, 25, "Close"); o->box(FL_THIN_UP_BOX); o->callback((Fl_Callback*)cb_Close1); } // Fl_Button* o { Fl_Counter* o = currentvoicecounter = new Fl_Counter(10, 601, 130, 25, "Current Voice"); currentvoicecounter->type(1); currentvoicecounter->labelfont(1); currentvoicecounter->minimum(0); currentvoicecounter->maximum(2); currentvoicecounter->step(1); currentvoicecounter->value(1); currentvoicecounter->textfont(1); currentvoicecounter->textsize(13); currentvoicecounter->callback((Fl_Callback*)cb_currentvoicecounter); currentvoicecounter->align(Fl_Align(FL_ALIGN_RIGHT)); o->bounds(1,NUM_VOICES); } // Fl_Counter* currentvoicecounter { Fl_Button* o = new Fl_Button(630, 609, 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_C1); } // Fl_Button* o { Fl_Button* o = new Fl_Button(660, 609, 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_P1); } // Fl_Button* o { Fl_Button* o = new Fl_Button(280, 601, 110, 25, "Show ADsynth"); o->labelsize(12); o->callback((Fl_Callback*)cb_Show2); } // Fl_Button* o { Fl_Button* o = new Fl_Button(400, 601, 130, 25, "Show Voice List"); o->labelsize(12); o->callback((Fl_Callback*)cb_Show3); } // Fl_Button* o ADnoteVoice->end(); } // Fl_Osc_Window* ADnoteVoice { ADnoteVoiceList = new Fl_Osc_Window(670, 260, "ADsynth Voices list"); ADnoteVoiceList->box(FL_FLAT_BOX); ADnoteVoiceList->color(FL_BACKGROUND_COLOR); ADnoteVoiceList->selection_color(FL_BACKGROUND_COLOR); ADnoteVoiceList->labeltype(FL_NO_LABEL); ADnoteVoiceList->labelfont(0); ADnoteVoiceList->labelsize(14); ADnoteVoiceList->labelcolor(FL_FOREGROUND_COLOR); ADnoteVoiceList->user_data((void*)(this)); ADnoteVoiceList->align(Fl_Align(FL_ALIGN_TOP)); ADnoteVoiceList->when(FL_WHEN_RELEASE); { new Fl_Box(0, 0, 0, 0); ADnoteVoiceList->init(osc, loc); } // Fl_Box* o { Fl_Text_Display* o = new Fl_Text_Display(17, 15, 30, 10, "No."); o->box(FL_NO_BOX); o->labelfont(1); o->labelsize(11); } // Fl_Text_Display* o { Fl_Text_Display* o = new Fl_Text_Display(190, 15, 30, 10, "Vol"); o->box(FL_NO_BOX); o->labelfont(1); o->labelsize(11); } // Fl_Text_Display* o { Fl_Text_Display* o = new Fl_Text_Display(431, 15, 25, 10, "Detune"); o->box(FL_NO_BOX); o->labelfont(1); o->labelsize(11); } // Fl_Text_Display* o { Fl_Text_Display* o = new Fl_Text_Display(253, 15, 30, 10, "Pan"); o->box(FL_NO_BOX); o->labelfont(1); o->labelsize(11); } // Fl_Text_Display* o { Fl_Text_Display* o = new Fl_Text_Display(600, 15, 30, 10, "Vib. Depth"); o->box(FL_NO_BOX); o->labelfont(1); o->labelsize(11); } // Fl_Text_Display* o { Fl_Text_Display* o = new Fl_Text_Display(285, 15, 25, 10, "R."); o->box(FL_NO_BOX); o->labelfont(1); o->labelsize(11); } // Fl_Text_Display* o { Fl_Button* o = new Fl_Button(271, 237, 80, 20, "Close"); o->callback((Fl_Callback*)cb_Close2); } // Fl_Button* o { Fl_Scroll* o = new Fl_Scroll(0, 15, 670, 220); o->type(2); o->box(FL_THIN_UP_BOX); { Fl_Pack* o = new Fl_Pack(0, 20, 670, 210); o->begin();for (int i=0;iinit(i,loc+"VoicePar"+to_s(i)+"/",osc);}o->end(); o->end(); } // Fl_Pack* o o->end(); } // Fl_Scroll* o { Fl_Button* o = new Fl_Button(5, 237, 106, 20, "Edit ADsynth"); o->labelsize(12); o->callback((Fl_Callback*)cb_Edit); } // Fl_Button* o ADnoteVoiceList->end(); } // Fl_Osc_Window* ADnoteVoiceList return ADnoteVoiceList; } ADnoteUI::ADnoteUI(std::string loc_, Fl_Osc_Interface *osc_) { assert(osc_); assert(!loc_.empty()); nvoice=0; resui=new ResonanceUI(osc_, loc_+"GlobalPar/Reson/"); loc=loc_; osc=osc_; make_window(); } ADnoteUI::~ADnoteUI() { ADnoteVoiceList->hide(); ADnoteGlobalParameters->hide(); ADnoteVoice->hide(); delete ADnoteVoiceList; delete ADnoteGlobalParameters; delete ADnoteVoice; delete resui; } void ADnoteUI::refresh() { amplfo->refresh(); freqlfo->refresh(); filterlfo->refresh(); ampenv->refresh(); freqenv->refresh(); filterenv->refresh(); filterui->refresh(); for (int i=0;irefreshlist(); resui->refresh(); currentvoicecounter->do_callback(); }