diff --git a/plugins/zynaddsubfx/src/UI/ADnoteUI.cc b/plugins/zynaddsubfx/src/UI/ADnoteUI.cc index 9d3ca6caf..bf32baa2b 100644 --- a/plugins/zynaddsubfx/src/UI/ADnoteUI.cc +++ b/plugins/zynaddsubfx/src/UI/ADnoteUI.cc @@ -202,39 +202,39 @@ Fl_Group* ADvoicelistitem::make_window() { ADvoicelistitem::ADvoicelistitem(int x,int y, int w, int h, const char *label):Fl_Group(x,y,w,h,label) { nvoice=0; -pars=NULL; + pars=NULL; } void ADvoicelistitem::init(ADnoteParameters *parameters,int nvoice_,Master *master_) { pars=parameters; -nvoice=nvoice_; -master=master_; -make_window(); -ADnoteVoiceListItem->show(); -end(); + nvoice=nvoice_; + master=master_; + make_window(); + ADnoteVoiceListItem->show(); + end(); } void ADvoicelistitem::refreshlist() { voiceenabled->value(pars->VoicePar[nvoice].Enabled); -voiceresonanceenabled->value(pars->VoicePar[nvoice].Presonance); -voicevolume->value(pars->VoicePar[nvoice].PVolume); -voicedetune->value(pars->VoicePar[nvoice].PDetune-8192); -voicepanning->value(pars->VoicePar[nvoice].PPanning); -voicelfofreq->value(pars->VoicePar[nvoice].FreqLfo->Pintensity); -if (pars->VoicePar[nvoice].Pextoscil != -1) { - osc->init(pars->VoicePar[pars->VoicePar[nvoice].Pextoscil].OscilSmp,0,pars->VoicePar[nvoice].Poscilphase,master); -} else - osc->init(pars->VoicePar[nvoice].OscilSmp,0,pars->VoicePar[nvoice].Poscilphase,master); -if (pars->VoicePar[nvoice].Enabled==0) voicelistitemgroup->deactivate(); - else voicelistitemgroup->activate(); -detunevalueoutput->do_callback(); -noiselabel->do_callback(); -ADnoteVoiceListItem->redraw(); + voiceresonanceenabled->value(pars->VoicePar[nvoice].Presonance); + voicevolume->value(pars->VoicePar[nvoice].PVolume); + voicedetune->value(pars->VoicePar[nvoice].PDetune-8192); + voicepanning->value(pars->VoicePar[nvoice].PPanning); + voicelfofreq->value(pars->VoicePar[nvoice].FreqLfo->Pintensity); + if (pars->VoicePar[nvoice].Pextoscil != -1) { + osc->init(pars->VoicePar[pars->VoicePar[nvoice].Pextoscil].OscilSmp,0,pars->VoicePar[nvoice].Poscilphase,master); + } else + osc->init(pars->VoicePar[nvoice].OscilSmp,0,pars->VoicePar[nvoice].Poscilphase,master); + if (pars->VoicePar[nvoice].Enabled==0) voicelistitemgroup->deactivate(); + else voicelistitemgroup->activate(); + detunevalueoutput->do_callback(); + noiselabel->do_callback(); + ADnoteVoiceListItem->redraw(); } ADvoicelistitem::~ADvoicelistitem() { ADnoteVoiceListItem->hide(); -//delete(ADnoteVoiceListItem); + //delete(ADnoteVoiceListItem); } void ADvoiceUI::cb_Enable_i(Fl_Check_Button* o, void*) { @@ -1469,26 +1469,26 @@ cy)"); ADvoiceUI::ADvoiceUI(int x,int y, int w, int h, const char *label):Fl_Group(x,y,w,h,label) { nvoice=0; -pars=NULL; -oscedit=NULL; + pars=NULL; + oscedit=NULL; } void ADvoiceUI::init(ADnoteParameters *parameters,int nvoice_,Master *master_) { pars=parameters; -nvoice=nvoice_; -master=master_; -make_window(); -end(); -ADnoteVoiceParameters->show(); + nvoice=nvoice_; + master=master_; + make_window(); + end(); + ADnoteVoiceParameters->show(); } ADvoiceUI::~ADvoiceUI() { ADnoteVoiceParameters->hide(); -hide(); -if (oscedit!=NULL) { - delete(oscedit); -}; -//delete (ADnoteVoiceParameters); + hide(); + if (oscedit!=NULL) { + delete(oscedit); + }; + //delete (ADnoteVoiceParameters); } void ADnoteUI::cb_octave_i(Fl_Counter* o, void*) { @@ -2148,55 +2148,55 @@ Fl_Double_Window* ADnoteUI::make_window() { ADnoteUI::ADnoteUI(ADnoteParameters *parameters,Master *master_) { pars=parameters; -master=master_; -nvoice=0; -resui=new ResonanceUI(pars->GlobalPar.Reson); -make_window(); + master=master_; + nvoice=0; + resui=new ResonanceUI(pars->GlobalPar.Reson); + make_window(); } ADnoteUI::~ADnoteUI() { ADnoteVoiceList->hide(); -ADnoteGlobalParameters->hide(); -ADnoteVoice->hide(); -delete(ADnoteVoiceList); -delete(ADnoteGlobalParameters); -delete(ADnoteVoice); -delete(resui); + ADnoteGlobalParameters->hide(); + ADnoteVoice->hide(); + delete(ADnoteVoiceList); + delete(ADnoteGlobalParameters); + delete(ADnoteVoice); + delete(resui); } void ADnoteUI::refresh() { volume->value(pars->GlobalPar.PVolume); -vsns->value(pars->GlobalPar.PAmpVelocityScaleFunction); -pan->value(pars->GlobalPar.PPanning); - -stereo->value(pars->GlobalPar.PStereo); -rndgrp->value(pars->GlobalPar.Hrandgrouping); - -pstr->value(pars->GlobalPar.PPunchStrength); -pt->value(pars->GlobalPar.PPunchTime); -pstc->value(pars->GlobalPar.PPunchStretch); -pvel->value(pars->GlobalPar.PPunchVelocitySensing); - -detunevalueoutput->value(getdetune(pars->GlobalPar.PDetuneType,0,pars->GlobalPar.PDetune)); -freq->value(pars->GlobalPar.PDetune-8192); - -int k=pars->GlobalPar.PCoarseDetune/1024;if (k>=8) k-=16; -octave->value(k); - -detunetype->value(pars->GlobalPar.PDetuneType-1); -k=pars->GlobalPar.PCoarseDetune%1024;if (k>=512) k-=1024; -coarsedet->value(k); -amplfo->refresh(); -freqlfo->refresh(); -filterlfo->refresh(); - -ampenv->refresh(); -freqenv->refresh(); -filterenv->refresh(); -filterui->refresh(); - -for (int i=0;irefreshlist(); - -resui->refresh(); -currentvoicecounter->do_callback(); + vsns->value(pars->GlobalPar.PAmpVelocityScaleFunction); + pan->value(pars->GlobalPar.PPanning); + + stereo->value(pars->GlobalPar.PStereo); + rndgrp->value(pars->GlobalPar.Hrandgrouping); + + pstr->value(pars->GlobalPar.PPunchStrength); + pt->value(pars->GlobalPar.PPunchTime); + pstc->value(pars->GlobalPar.PPunchStretch); + pvel->value(pars->GlobalPar.PPunchVelocitySensing); + + detunevalueoutput->value(getdetune(pars->GlobalPar.PDetuneType,0,pars->GlobalPar.PDetune)); + freq->value(pars->GlobalPar.PDetune-8192); + + int k=pars->GlobalPar.PCoarseDetune/1024;if (k>=8) k-=16; + octave->value(k); + + detunetype->value(pars->GlobalPar.PDetuneType-1); + k=pars->GlobalPar.PCoarseDetune%1024;if (k>=512) k-=1024; + coarsedet->value(k); + amplfo->refresh(); + freqlfo->refresh(); + filterlfo->refresh(); + + ampenv->refresh(); + freqenv->refresh(); + filterenv->refresh(); + filterui->refresh(); + + for (int i=0;irefreshlist(); + + resui->refresh(); + currentvoicecounter->do_callback(); } diff --git a/plugins/zynaddsubfx/src/UI/BankUI.cc b/plugins/zynaddsubfx/src/UI/BankUI.cc index ac976f873..de79932bc 100644 --- a/plugins/zynaddsubfx/src/UI/BankUI.cc +++ b/plugins/zynaddsubfx/src/UI/BankUI.cc @@ -5,58 +5,59 @@ //License: GNU GPL version 2 or later void BankProcess_::process() { + ; } BankSlot::BankSlot(int x,int y, int w, int h, const char *label):Fl_Button(x,y,w,h,label) { what=NULL; -whatslot=NULL; -nslot=0; -nselected=NULL; + whatslot=NULL; + nslot=0; + nselected=NULL; } int BankSlot::handle(int event) { if (what==NULL) return(0); -if (Fl::event_inside(this)){ - *what=0;*whatslot=nslot; - if ((event==FL_RELEASE)&&(Fl::event_button()==1))*what=1; - if ((event==FL_RELEASE)&&(Fl::event_button()==3))*what=2; - if (event==FL_PUSH) highlight=1; -}else highlight=0; - -int tmp=Fl_Button::handle(event); -if ((*what!=0) && Fl::event_inside(this)) (bp->*fnc)(); -return(tmp); + if (Fl::event_inside(this)){ + *what=0;*whatslot=nslot; + if ((event==FL_RELEASE)&&(Fl::event_button()==1))*what=1; + if ((event==FL_RELEASE)&&(Fl::event_button()==3))*what=2; + if (event==FL_PUSH) highlight=1; + }else highlight=0; + + int tmp=Fl_Button::handle(event); + if ((*what!=0) && Fl::event_inside(this)) (bp->*fnc)(); + return(tmp); } void BankSlot::init(int nslot_, int *what_, int *whatslot_,void (BankProcess_:: *fnc_)(void),BankProcess_ *bp_,Bank *bank_,int *nselected_) { nslot=nslot_; -what=what_; -whatslot=whatslot_; -fnc=fnc_; -bp=bp_; -bank=bank_; -nselected=nselected_; -box(FL_THIN_UP_BOX); -labelfont(0); -labelsize(13); -align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE|FL_ALIGN_CLIP); - -highlight=0; -refresh(); + what=what_; + whatslot=whatslot_; + fnc=fnc_; + bp=bp_; + bank=bank_; + nselected=nselected_; + box(FL_THIN_UP_BOX); + labelfont(0); + labelsize(13); + align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE|FL_ALIGN_CLIP); + + highlight=0; + refresh(); } void BankSlot::refresh() { if (bank->emptyslot(nslot)) { - color(46); -} else { - if (bank->isPADsynth_used(nslot)) color(26); - else color(51); -}; - -if (*nselected==nslot) color(6); - - -label(bank->getnamenumbered(nslot)); + color(46); + } else { + if (bank->isPADsynth_used(nslot)) color(26); + else color(51); + }; + + if (*nselected==nslot) color(6); + + + label(bank->getnamenumbered(nslot)); } void BankUI::cb_Close_i(Fl_Button*, void*) { @@ -285,23 +286,23 @@ Fl_Double_Window* BankUI::make_window() { BankUI::BankUI(Master *master_,int *npart_) { fnc=&BankProcess_::process; -master=master_; -npart=npart_; -bank=&master_->bank; -what=0; -nselected=-1; -make_window(); -mode=1; + master=master_; + npart=npart_; + bank=&master_->bank; + what=0; + nselected=-1; + make_window(); + mode=1; } BankUI::~BankUI() { bankuiwindow->hide(); -delete(bankuiwindow); + delete(bankuiwindow); } void BankUI::show() { bankuiwindow->show(); -simplesetmode(config.cfg.UserInterfaceMode==2); + simplesetmode(config.cfg.UserInterfaceMode==2); } void BankUI::hide() { @@ -310,111 +311,111 @@ void BankUI::hide() { void BankUI::init(Fl_Valuator *cbwig_) { cbwig=cbwig_; -rescan_for_banks(); + rescan_for_banks(); } void BankUI::process() { int slot=this->slot; - -if ((what==2)&&(bank->emptyslot(slot)==0)&&(mode!=4)) {//Rename slot - const char *tmp=fl_input("Slot (instrument) name:",(const char *)bank->getname(slot)); - if (tmp!=NULL) bank->setname(slot,tmp,-1); - bs[slot]->refresh(); -}; - -if ((what==1)&&(mode==1)&&(!bank->emptyslot(slot))){//Reads from slot - pthread_mutex_lock(&master->mutex); - bank->loadfromslot(slot,master->part[*npart]); - pthread_mutex_unlock(&master->mutex); - master->part[*npart]->applyparameters(); - snprintf((char *)master->part[*npart]->Pname,PART_MAX_NAME_LEN,"%s",bank->getname(slot)); - cbwig->do_callback(); - - if (config.cfg.BankUIAutoClose!=0) - bankuiwindow->hide(); - -}; - -if ((what==1)&&(mode==2)){//save(write) to slot - if (!bank->emptyslot(slot)){ - if (!fl_choice("Overwrite the slot no. %d ?","No","Yes",NULL,slot+1)) goto nooverwriteslot; + + if ((what==2)&&(bank->emptyslot(slot)==0)&&(mode!=4)) {//Rename slot + const char *tmp=fl_input("Slot (instrument) name:",(const char *)bank->getname(slot)); + if (tmp!=NULL) bank->setname(slot,tmp,-1); + bs[slot]->refresh(); + }; + + if ((what==1)&&(mode==1)&&(!bank->emptyslot(slot))){//Reads from slot + pthread_mutex_lock(&master->mutex); + bank->loadfromslot(slot,master->part[*npart]); + pthread_mutex_unlock(&master->mutex); + master->part[*npart]->applyparameters(); + snprintf((char *)master->part[*npart]->Pname,PART_MAX_NAME_LEN,"%s",bank->getname(slot)); + cbwig->do_callback(); + + if (config.cfg.BankUIAutoClose!=0) + bankuiwindow->hide(); + + }; + + if ((what==1)&&(mode==2)){//save(write) to slot + if (!bank->emptyslot(slot)){ + if (!fl_choice("Overwrite the slot no. %d ?","No","Yes",NULL,slot+1)) goto nooverwriteslot; + }; + pthread_mutex_lock(&master->mutex); + bank->savetoslot(slot,master->part[*npart]); + pthread_mutex_unlock(&master->mutex); + + bs[slot]->refresh(); + mode=1;readbutton->value(1);writebutton->value(0); + nooverwriteslot:; + }; + + + + if ((what==1)&&(mode==3)&&(!bank->emptyslot(slot))){//Clears the slot + if (fl_choice("Clear the slot no. %d ?","No","Yes",NULL,slot+1)){ + bank->clearslot(slot); + bs[slot]->refresh(); + }; + }; + + if (mode==4){//swap + bool done=false; + if ((what==1)&&(nselected>=0)){ + bank->swapslot(nselected,slot); + int ns=nselected; + nselected=-1; + bs[slot]->refresh(); + bs[ns]->refresh(); + done=true; }; - pthread_mutex_lock(&master->mutex); - bank->savetoslot(slot,master->part[*npart]); - pthread_mutex_unlock(&master->mutex); - - bs[slot]->refresh(); - mode=1;readbutton->value(1);writebutton->value(0); - nooverwriteslot:; -}; - - - -if ((what==1)&&(mode==3)&&(!bank->emptyslot(slot))){//Clears the slot - if (fl_choice("Clear the slot no. %d ?","No","Yes",NULL,slot+1)){ - bank->clearslot(slot); + if (((nselected<0)||(what==2))&&(!done)){ + int ns=nselected; + nselected=slot; + if (ns>0) bs[ns]->refresh(); bs[slot]->refresh(); }; -}; - -if (mode==4){//swap - bool done=false; - if ((what==1)&&(nselected>=0)){ - bank->swapslot(nselected,slot); - int ns=nselected; - nselected=-1; - bs[slot]->refresh(); - bs[ns]->refresh(); - done=true; - }; - if (((nselected<0)||(what==2))&&(!done)){ - int ns=nselected; - nselected=slot; - if (ns>0) bs[ns]->refresh(); - bs[slot]->refresh(); - }; -}; -if (mode!=4) refreshmainwindow(); + }; + if (mode!=4) refreshmainwindow(); } void BankUI::refreshmainwindow() { bankuiwindow->label(bank->bankfiletitle); -mode=1;readbutton->value(1);writebutton->value(0);clearbutton->value(0);swapbutton->value(0); -nselected=-1; -if (bank->locked()){ - writebutton->deactivate(); - clearbutton->deactivate(); - swapbutton->deactivate(); -} else { - writebutton->activate(); - clearbutton->activate(); - swapbutton->activate(); -}; -for (int i=0;irefresh(); + mode=1;readbutton->value(1);writebutton->value(0);clearbutton->value(0);swapbutton->value(0); + nselected=-1; + if (bank->locked()){ + writebutton->deactivate(); + clearbutton->deactivate(); + swapbutton->deactivate(); + } else { + writebutton->activate(); + clearbutton->activate(); + swapbutton->activate(); + }; + for (int i=0;irefresh(); } void BankUI::removeselection() { if (nselected>=0) { - int ns=nselected; - nselected=-1; - bs[ns]->refresh(); -}; + int ns=nselected; + nselected=-1; + bs[ns]->refresh(); + }; } void BankUI::rescan_for_banks() { banklist->clear(); -banklist->add(" "); -bank->rescanforbanks(); - -for (int i=1;ibanks[i].name!=NULL) banklist->add(bank->banks[i].name); -}; + banklist->add(" "); + bank->rescanforbanks(); + + for (int i=1;ibanks[i].name!=NULL) banklist->add(bank->banks[i].name); + }; } void BankUI::simplesetmode(bool beginnerui) { readbutton->value(1); -mode=1; -removeselection(); -if (beginnerui) modeselect->hide(); - else modeselect->show(); + mode=1; + removeselection(); + if (beginnerui) modeselect->hide(); + else modeselect->show(); } diff --git a/plugins/zynaddsubfx/src/UI/ConfigUI.cc b/plugins/zynaddsubfx/src/UI/ConfigUI.cc index 0599214ec..6619f749f 100644 --- a/plugins/zynaddsubfx/src/UI/ConfigUI.cc +++ b/plugins/zynaddsubfx/src/UI/ConfigUI.cc @@ -37,19 +37,19 @@ Fl_Menu_Item ConfigUI::menu_[] = { {0,0,0,0,0,0,0,0,0} }; -void ConfigUI::cb_samplerateinput_i(Fl_Input* o, void*) { +void ConfigUI::cb_samplerateinput_i(Fl_Int_Input* o, void*) { char *tmp; config.cfg.SampleRate=strtoul(o->value(),&tmp,10); } -void ConfigUI::cb_samplerateinput(Fl_Input* o, void* v) { +void ConfigUI::cb_samplerateinput(Fl_Int_Input* o, void* v) { ((ConfigUI*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_samplerateinput_i(o,v); } -void ConfigUI::cb_Buffer_i(Fl_Input* o, void*) { +void ConfigUI::cb_Buffer_i(Fl_Int_Input* o, void*) { char *tmp; config.cfg.SoundBufferSize=strtoul(o->value(),&tmp,10); } -void ConfigUI::cb_Buffer(Fl_Input* o, void* v) { +void ConfigUI::cb_Buffer(Fl_Int_Input* o, void* v) { ((ConfigUI*)(o->parent()->parent()->parent()->user_data()))->cb_Buffer_i(o,v); } @@ -266,16 +266,16 @@ Fl_Double_Window* ConfigUI::make_window() { o->menu(menu_); o->value(getsamplerateorder()); } // Fl_Choice* o - { Fl_Input* o = samplerateinput = new Fl_Input(115, 50, 60, 20); + { Fl_Int_Input* o = samplerateinput = new Fl_Int_Input(115, 50, 60, 20); samplerateinput->type(2); samplerateinput->textfont(1); samplerateinput->callback((Fl_Callback*)cb_samplerateinput); setsamplerateinput(); if (getsamplerateorder()!=0) o->deactivate(); - } // Fl_Input* samplerateinput + } // Fl_Int_Input* samplerateinput o->end(); } // Fl_Group* o - { Fl_Input* o = new Fl_Input(190, 45, 60, 20, "Buffer Size"); + { Fl_Int_Input* o = new Fl_Int_Input(190, 45, 60, 20, "Buffer Size"); o->tooltip("Internal Sound Buffer Size (samples)"); o->type(2); o->labelsize(11); @@ -285,7 +285,7 @@ Fl_Double_Window* ConfigUI::make_window() { char *tmpbuf=new char[100];o->cut(0,o->maximum_size()); snprintf(tmpbuf,100,"%d",config.cfg.SoundBufferSize);o->insert(tmpbuf); delete []tmpbuf; - } // Fl_Input* o + } // Fl_Int_Input* o { Fl_Light_Button* o = new Fl_Light_Button(20, 80, 85, 20, "Swap Stereo "); o->box(FL_THIN_UP_BOX); o->labelsize(10); @@ -475,86 +475,86 @@ system, etc..)"); ConfigUI::ConfigUI() { make_window(); -readbankcfg(); -readpresetcfg(); + readbankcfg(); + readpresetcfg(); } void ConfigUI::activatebutton_rootdir(bool active) { if (active) { - removerootdirbutton->activate(); - makedefaultrootdirbutton->activate(); -}else{ - removerootdirbutton->deactivate(); - makedefaultrootdirbutton->deactivate(); -}; + removerootdirbutton->activate(); + makedefaultrootdirbutton->activate(); + }else{ + removerootdirbutton->deactivate(); + makedefaultrootdirbutton->deactivate(); + }; } void ConfigUI::activatebutton_presetdir(bool active) { if (active) { - removepresetbutton->activate(); - makedefaultpresetbutton->activate(); -}else{ - removepresetbutton->deactivate(); - makedefaultpresetbutton->deactivate(); -}; + removepresetbutton->activate(); + makedefaultpresetbutton->activate(); + }else{ + removepresetbutton->deactivate(); + makedefaultpresetbutton->deactivate(); + }; } void ConfigUI::readbankcfg() { rootsbrowse->clear(); - -for (int i=0;iadd(config.cfg.bankRootDirList[i]); -}; + + for (int i=0;iadd(config.cfg.bankRootDirList[i]); + }; } void ConfigUI::writebankcfg() { config.clearbankrootdirlist(); - -for (int n=0;nsize();n++){ - config.cfg.bankRootDirList[n]=new char [MAX_STRING_SIZE]; - strncpy(config.cfg.bankRootDirList[n],rootsbrowse->text(n+1),MAX_STRING_SIZE); -}; + + for (int n=0;nsize();n++){ + config.cfg.bankRootDirList[n]=new char [MAX_STRING_SIZE]; + strncpy(config.cfg.bankRootDirList[n],rootsbrowse->text(n+1),MAX_STRING_SIZE); + }; } void ConfigUI::readpresetcfg() { presetbrowse->clear(); - -for (int i=0;iadd(config.cfg.presetsDirList[i]); -}; + + for (int i=0;iadd(config.cfg.presetsDirList[i]); + }; } void ConfigUI::writepresetcfg() { config.clearpresetsdirlist(); - -for (int n=0;nsize();n++){ - config.cfg.presetsDirList[n]=new char [MAX_STRING_SIZE]; - strncpy(config.cfg.presetsDirList[n],presetbrowse->text(n+1),MAX_STRING_SIZE); -}; + + for (int n=0;nsize();n++){ + config.cfg.presetsDirList[n]=new char [MAX_STRING_SIZE]; + strncpy(config.cfg.presetsDirList[n],presetbrowse->text(n+1),MAX_STRING_SIZE); + }; } int ConfigUI::getsamplerateorder() { int smpr=config.cfg.SampleRate; -int order=0; -switch(smpr){ - case 16000:order=1;break; - case 22050:order=2;break; - case 32000:order=3;break; - case 44100:order=4;break; - case 48000:order=5;break; - case 88200:order=6;break; - case 96000:order=7;break; - default:order=0;break; -}; -return(order); + int order=0; + switch(smpr){ + case 16000:order=1;break; + case 22050:order=2;break; + case 32000:order=3;break; + case 44100:order=4;break; + case 48000:order=5;break; + case 88200:order=6;break; + case 96000:order=7;break; + default:order=0;break; + }; + return(order); } void ConfigUI::setsamplerateinput() { char *tmpbuf=new char[100]; -samplerateinput->cut(0,samplerateinput->maximum_size()); -snprintf(tmpbuf,100,"%d",config.cfg.SampleRate); -samplerateinput->insert(tmpbuf); -delete []tmpbuf; + samplerateinput->cut(0,samplerateinput->maximum_size()); + snprintf(tmpbuf,100,"%d",config.cfg.SampleRate); + samplerateinput->insert(tmpbuf); + delete []tmpbuf; } void ConfigUI::show() { diff --git a/plugins/zynaddsubfx/src/UI/EffUI.cc b/plugins/zynaddsubfx/src/UI/EffUI.cc index cf7a3be53..aae61d9c7 100644 --- a/plugins/zynaddsubfx/src/UI/EffUI.cc +++ b/plugins/zynaddsubfx/src/UI/EffUI.cc @@ -6,116 +6,116 @@ EQGraph::EQGraph(int x,int y, int w, int h, const char *label):Fl_Box(x,y,w,h,label) { eff=NULL; -maxdB=30; + maxdB=30; } void EQGraph::init(EffectMgr *eff_) { eff=eff_; -oldx=-1; -khzval=-1; + oldx=-1; + khzval=-1; } void EQGraph::draw_freq_line(REALTYPE freq,int type) { fl_color(FL_GRAY); -REALTYPE freqx=getfreqpos(freq); -switch(type){ - case 0:if (active_r()) fl_color(FL_WHITE); - else fl_color(205,205,205); - fl_line_style(FL_SOLID); - break; - case 1:fl_line_style(FL_DOT);break; - case 2:fl_line_style(FL_DASH);break; -}; - - -if ((freqx>0.0)&&(freqx<1.0)) - fl_line(x()+(int) (freqx*w()),y(), - x()+(int) (freqx*w()),y()+h()); + REALTYPE freqx=getfreqpos(freq); + switch(type){ + case 0:if (active_r()) fl_color(FL_WHITE); + else fl_color(205,205,205); + fl_line_style(FL_SOLID); + break; + case 1:fl_line_style(FL_DOT);break; + case 2:fl_line_style(FL_DASH);break; + }; + + + if ((freqx>0.0)&&(freqx<1.0)) + fl_line(x()+(int) (freqx*w()),y(), + x()+(int) (freqx*w()),y()+h()); } void EQGraph::draw() { int ox=x(),oy=y(),lx=w(),ly=h(),i,iy,oiy; -REALTYPE freqx; - -if (active_r()) fl_color(0,70,150); - else fl_color(80,120,160); -fl_rectf(ox,oy,lx,ly); - - -//draw the lines -fl_color(FL_GRAY); - -fl_line_style(FL_SOLID); -fl_line(ox+2,oy+ly/2,ox+lx-2,oy+ly/2); - -freqx=getfreqpos(1000.0); -if ((freqx>0.0)&&(freqx<1.0)) - fl_line(ox+(int) (freqx*lx),oy, - ox+(int) (freqx*lx),oy+ly); - -for (i=1;i<10;i++){ - if(i==1){ - draw_freq_line(i*100.0,0); - draw_freq_line(i*1000.0,0); - }else - if (i==5){ - draw_freq_line(i*10.0,2); - draw_freq_line(i*100.0,2); - draw_freq_line(i*1000.0,2); - }else{ - draw_freq_line(i*10.0,1); - draw_freq_line(i*100.0,1); - draw_freq_line(i*1000.0,1); - }; -}; - -draw_freq_line(10000.0,0); -draw_freq_line(20000.0,1); - - -fl_line_style(FL_DOT); -int GY=6;if (lySAMPLE_RATE/2) break; - iy=getresponse(ly,frq); - if ((oiy>=0) && (oiy=0) && (iy0.0)&&(freqx<1.0)) + fl_line(ox+(int) (freqx*lx),oy, + ox+(int) (freqx*lx),oy+ly); + + for (i=1;i<10;i++){ + if(i==1){ + draw_freq_line(i*100.0,0); + draw_freq_line(i*1000.0,0); + }else + if (i==5){ + draw_freq_line(i*10.0,2); + draw_freq_line(i*100.0,2); + draw_freq_line(i*1000.0,2); + }else{ + draw_freq_line(i*10.0,1); + draw_freq_line(i*100.0,1); + draw_freq_line(i*1000.0,1); + }; + }; + + draw_freq_line(10000.0,0); + draw_freq_line(20000.0,1); + + + fl_line_style(FL_DOT); + int GY=6;if (lySAMPLE_RATE/2) break; + iy=getresponse(ly,frq); + if ((oiy>=0) && (oiy=0) && (iygetEQfreqresponse(freq); -int idbresp=(int) ((dbresp/maxdB+1.0)*maxy/2.0); - - -//fprintf(stderr,"%.5f\n",(dbresp/maxdB+1.0)*maxy/2.0); - - -return(idbresp); + int idbresp=(int) ((dbresp/maxdB+1.0)*maxy/2.0); + + + //fprintf(stderr,"%.5f\n",(dbresp/maxdB+1.0)*maxy/2.0); + + + return(idbresp); } REALTYPE EQGraph::getfreqx(REALTYPE x) { if (x>1.0) x=1.0; -return(20.0*pow((REALTYPE)1000.0,x)); + return(20.0*pow((REALTYPE)1000.0,x)); } REALTYPE EQGraph::getfreqpos(REALTYPE freq) { if (freq<0.00001) freq=0.00001; -return(log(freq/20.0)/log(1000.0)); + return(log(freq/20.0)/log(1000.0)); } void EffUI::cb_revp_i(Fl_Choice* o, void*) { @@ -975,24 +975,24 @@ void EffUI::cb_Close(Fl_Button* o, void* v) { EffUI::EffUI(int x,int y, int w, int h, const char *label):Fl_Group(x,y,w,h,label) { eff=NULL; -filterwindow=NULL; + filterwindow=NULL; } EffUI::~EffUI() { effnullwindow->hide();//delete (effnullwindow); -effreverbwindow->hide();//delete (effreverbwindow); -effechowindow->hide();//delete (effechowindow); -effchoruswindow->hide();//delete (effchoruswindow); -effphaserwindow->hide();//delete (effphaserwindow); -effalienwahwindow->hide();//delete (effalienwahwindow); -effdistorsionwindow->hide();//delete (effdistorsionwindow); -effeqwindow->hide();//delete (effeqwindow); -effdynamicfilterwindow->hide();//delete (effdynamicfilterwindow); - -if (filterwindow!=NULL){ - filterwindow->hide(); - delete(filterwindow); -}; + effreverbwindow->hide();//delete (effreverbwindow); + effechowindow->hide();//delete (effechowindow); + effchoruswindow->hide();//delete (effchoruswindow); + effphaserwindow->hide();//delete (effphaserwindow); + effalienwahwindow->hide();//delete (effalienwahwindow); + effdistorsionwindow->hide();//delete (effdistorsionwindow); + effeqwindow->hide();//delete (effeqwindow); + effdynamicfilterwindow->hide();//delete (effdynamicfilterwindow); + + if (filterwindow!=NULL){ + filterwindow->hide(); + delete(filterwindow); + }; } Fl_Group* EffUI::make_null_window() { @@ -2446,185 +2446,185 @@ Fl_Double_Window* EffUI::make_filter_window() { void EffUI::init(EffectMgr *eff_) { eff=eff_; - -make_null_window(); -make_reverb_window(); -make_echo_window(); -make_chorus_window(); -make_phaser_window(); -make_alienwah_window(); -make_distorsion_window(); -make_eq_window(); -make_dynamicfilter_window(); - -int px=this->parent()->x(); -int py=this->parent()->y(); - -effnullwindow->position(px,py); -effreverbwindow->position(px,py); -effechowindow->position(px,py); -effchoruswindow->position(px,py); -effphaserwindow->position(px,py); -effalienwahwindow->position(px,py); -effdistorsionwindow->position(px,py); -effeqwindow->position(px,py); -effdynamicfilterwindow->position(px,py); - -refresh(eff); + + make_null_window(); + make_reverb_window(); + make_echo_window(); + make_chorus_window(); + make_phaser_window(); + make_alienwah_window(); + make_distorsion_window(); + make_eq_window(); + make_dynamicfilter_window(); + + int px=this->parent()->x(); + int py=this->parent()->y(); + + effnullwindow->position(px,py); + effreverbwindow->position(px,py); + effechowindow->position(px,py); + effchoruswindow->position(px,py); + effphaserwindow->position(px,py); + effalienwahwindow->position(px,py); + effdistorsionwindow->position(px,py); + effeqwindow->position(px,py); + effdynamicfilterwindow->position(px,py); + + refresh(eff); } void EffUI::refresh(EffectMgr *eff_) { eff=eff_; -this->hide(); - -effnullwindow->hide(); -effreverbwindow->hide(); -effechowindow->hide(); -effchoruswindow->hide(); -effphaserwindow->hide(); -effalienwahwindow->hide(); -effdistorsionwindow->hide(); -effeqwindow->hide(); -effdynamicfilterwindow->hide(); - -eqband=0; - -if (filterwindow!=NULL){ - filterwindow->hide(); - delete(filterwindow); - filterwindow=NULL; -}; - -switch(eff->geteffect()){ - case 1: - revp->value(eff->getpreset()); - revp0->value(eff->geteffectpar(0));if (eff->insertion!=0) revp0->label("D/W"); - revp1->value(eff->geteffectpar(1)); - revp2->value(eff->geteffectpar(2)); - revp3->value(eff->geteffectpar(3)); - revp4->value(eff->geteffectpar(4)); - //revp5->value(eff->geteffectpar(5)); - revp6->value(eff->geteffectpar(6)); - revp7->value(eff->geteffectpar(7)); - revp8->value(eff->geteffectpar(8)); - revp9->value(eff->geteffectpar(9)); - revp10->value(eff->geteffectpar(10)); - revp11->value(eff->geteffectpar(11)); - revp12->value(eff->geteffectpar(12)); - - effreverbwindow->show(); - break; - case 2: - echop->value(eff->getpreset()); - echop0->value(eff->geteffectpar(0));if (eff->insertion!=0) echop0->label("D/W"); - echop1->value(eff->geteffectpar(1)); - echop2->value(eff->geteffectpar(2)); - echop3->value(eff->geteffectpar(3)); - echop4->value(eff->geteffectpar(4)); - echop5->value(eff->geteffectpar(5)); - echop6->value(eff->geteffectpar(6)); - effechowindow->show(); - break; - case 3: - chorusp->value(eff->getpreset()); - chorusp0->value(eff->geteffectpar(0));if (eff->insertion!=0) chorusp0->label("D/W"); - chorusp1->value(eff->geteffectpar(1)); - chorusp2->value(eff->geteffectpar(2)); - chorusp3->value(eff->geteffectpar(3)); - chorusp4->value(eff->geteffectpar(4)); - chorusp5->value(eff->geteffectpar(5)); - chorusp6->value(eff->geteffectpar(6)); - chorusp7->value(eff->geteffectpar(7)); - chorusp8->value(eff->geteffectpar(8)); - chorusp9->value(eff->geteffectpar(9)); - chorusp11->value(eff->geteffectpar(11)); - effchoruswindow->show(); - break; - case 4: - phaserp->value(eff->getpreset()); - phaserp0->value(eff->geteffectpar(0));if (eff->insertion!=0) phaserp0->label("D/W"); - phaserp1->value(eff->geteffectpar(1)); - phaserp2->value(eff->geteffectpar(2)); - phaserp3->value(eff->geteffectpar(3)); - phaserp4->value(eff->geteffectpar(4)); - phaserp5->value(eff->geteffectpar(5)); - phaserp6->value(eff->geteffectpar(6)); - phaserp7->value(eff->geteffectpar(7)); - phaserp8->value(eff->geteffectpar(8)); - phaserp9->value(eff->geteffectpar(9)); - phaserp10->value(eff->geteffectpar(10)); - phaserp11->value(eff->geteffectpar(11)); - phaserp12->value(eff->geteffectpar(12)); - phaserp13->value(eff->geteffectpar(13)); - phaserp14->value(eff->geteffectpar(14)); - effphaserwindow->show(); - break; - case 5: - awp->value(eff->getpreset()); - awp0->value(eff->geteffectpar(0));if (eff->insertion!=0) awp0->label("D/W"); - awp1->value(eff->geteffectpar(1)); - awp2->value(eff->geteffectpar(2)); - awp3->value(eff->geteffectpar(3)); - awp4->value(eff->geteffectpar(4)); - awp5->value(eff->geteffectpar(5)); - awp6->value(eff->geteffectpar(6)); - awp7->value(eff->geteffectpar(7)); - awp8->value(eff->geteffectpar(8)); - awp9->value(eff->geteffectpar(9)); - awp10->value(eff->geteffectpar(10)); - - effalienwahwindow->show(); - break; - case 6: - distp->value(eff->getpreset()); - distp0->value(eff->geteffectpar(0));if (eff->insertion!=0) distp0->label("D/W"); - distp1->value(eff->geteffectpar(1)); - distp2->value(eff->geteffectpar(2)); - distp3->value(eff->geteffectpar(3)); - distp4->value(eff->geteffectpar(4)); - distp5->value(eff->geteffectpar(5)); - distp6->value(eff->geteffectpar(6)); - distp7->value(eff->geteffectpar(7)); - distp8->value(eff->geteffectpar(8)); - distp9->value(eff->geteffectpar(9)); - distp10->value(eff->geteffectpar(10)); - effdistorsionwindow->show(); - break; - case 7:eqband=0; - eqp0->value(eff->geteffectpar(0)); - bandcounter->value(eqband); - bandcounter->do_callback(); - typechoice->value(eff->geteffectpar(10)); - eqgraph->redraw(); - freqdial->value(eff->geteffectpar(11)); - gaindial->value(eff->geteffectpar(12)); - if (eff->geteffectpar(10)<6) gaindial->deactivate(); - qdial->value(eff->geteffectpar(13)); - stagescounter->value(eff->geteffectpar(14)); - eqgraph->init(eff); - effeqwindow->show(); - break; - case 8:make_filter_window(); - dfp->value(eff->getpreset()); - dfp0->value(eff->geteffectpar(0));if (eff->insertion!=0) dfp0->label("D/W"); - dfp1->value(eff->geteffectpar(1)); - dfp2->value(eff->geteffectpar(2)); - dfp3->value(eff->geteffectpar(3)); - dfp4->value(eff->geteffectpar(4)); - dfp5->value(eff->geteffectpar(5)); - dfp6->value(eff->geteffectpar(6)); - dfp7->value(eff->geteffectpar(7)); - dfp8->value(eff->geteffectpar(8)); - dfp9->value(eff->geteffectpar(9)); - - - effdynamicfilterwindow->show(); - break; - default:effnullwindow->show(); - break; -}; - -this->show(); + this->hide(); + + effnullwindow->hide(); + effreverbwindow->hide(); + effechowindow->hide(); + effchoruswindow->hide(); + effphaserwindow->hide(); + effalienwahwindow->hide(); + effdistorsionwindow->hide(); + effeqwindow->hide(); + effdynamicfilterwindow->hide(); + + eqband=0; + + if (filterwindow!=NULL){ + filterwindow->hide(); + delete(filterwindow); + filterwindow=NULL; + }; + + switch(eff->geteffect()){ + case 1: + revp->value(eff->getpreset()); + revp0->value(eff->geteffectpar(0));if (eff->insertion!=0) revp0->label("D/W"); + revp1->value(eff->geteffectpar(1)); + revp2->value(eff->geteffectpar(2)); + revp3->value(eff->geteffectpar(3)); + revp4->value(eff->geteffectpar(4)); + //revp5->value(eff->geteffectpar(5)); + revp6->value(eff->geteffectpar(6)); + revp7->value(eff->geteffectpar(7)); + revp8->value(eff->geteffectpar(8)); + revp9->value(eff->geteffectpar(9)); + revp10->value(eff->geteffectpar(10)); + revp11->value(eff->geteffectpar(11)); + revp12->value(eff->geteffectpar(12)); + + effreverbwindow->show(); + break; + case 2: + echop->value(eff->getpreset()); + echop0->value(eff->geteffectpar(0));if (eff->insertion!=0) echop0->label("D/W"); + echop1->value(eff->geteffectpar(1)); + echop2->value(eff->geteffectpar(2)); + echop3->value(eff->geteffectpar(3)); + echop4->value(eff->geteffectpar(4)); + echop5->value(eff->geteffectpar(5)); + echop6->value(eff->geteffectpar(6)); + effechowindow->show(); + break; + case 3: + chorusp->value(eff->getpreset()); + chorusp0->value(eff->geteffectpar(0));if (eff->insertion!=0) chorusp0->label("D/W"); + chorusp1->value(eff->geteffectpar(1)); + chorusp2->value(eff->geteffectpar(2)); + chorusp3->value(eff->geteffectpar(3)); + chorusp4->value(eff->geteffectpar(4)); + chorusp5->value(eff->geteffectpar(5)); + chorusp6->value(eff->geteffectpar(6)); + chorusp7->value(eff->geteffectpar(7)); + chorusp8->value(eff->geteffectpar(8)); + chorusp9->value(eff->geteffectpar(9)); + chorusp11->value(eff->geteffectpar(11)); + effchoruswindow->show(); + break; + case 4: + phaserp->value(eff->getpreset()); + phaserp0->value(eff->geteffectpar(0));if (eff->insertion!=0) phaserp0->label("D/W"); + phaserp1->value(eff->geteffectpar(1)); + phaserp2->value(eff->geteffectpar(2)); + phaserp3->value(eff->geteffectpar(3)); + phaserp4->value(eff->geteffectpar(4)); + phaserp5->value(eff->geteffectpar(5)); + phaserp6->value(eff->geteffectpar(6)); + phaserp7->value(eff->geteffectpar(7)); + phaserp8->value(eff->geteffectpar(8)); + phaserp9->value(eff->geteffectpar(9)); + phaserp10->value(eff->geteffectpar(10)); + phaserp11->value(eff->geteffectpar(11)); + phaserp12->value(eff->geteffectpar(12)); + phaserp13->value(eff->geteffectpar(13)); + phaserp14->value(eff->geteffectpar(14)); + effphaserwindow->show(); + break; + case 5: + awp->value(eff->getpreset()); + awp0->value(eff->geteffectpar(0));if (eff->insertion!=0) awp0->label("D/W"); + awp1->value(eff->geteffectpar(1)); + awp2->value(eff->geteffectpar(2)); + awp3->value(eff->geteffectpar(3)); + awp4->value(eff->geteffectpar(4)); + awp5->value(eff->geteffectpar(5)); + awp6->value(eff->geteffectpar(6)); + awp7->value(eff->geteffectpar(7)); + awp8->value(eff->geteffectpar(8)); + awp9->value(eff->geteffectpar(9)); + awp10->value(eff->geteffectpar(10)); + + effalienwahwindow->show(); + break; + case 6: + distp->value(eff->getpreset()); + distp0->value(eff->geteffectpar(0));if (eff->insertion!=0) distp0->label("D/W"); + distp1->value(eff->geteffectpar(1)); + distp2->value(eff->geteffectpar(2)); + distp3->value(eff->geteffectpar(3)); + distp4->value(eff->geteffectpar(4)); + distp5->value(eff->geteffectpar(5)); + distp6->value(eff->geteffectpar(6)); + distp7->value(eff->geteffectpar(7)); + distp8->value(eff->geteffectpar(8)); + distp9->value(eff->geteffectpar(9)); + distp10->value(eff->geteffectpar(10)); + effdistorsionwindow->show(); + break; + case 7:eqband=0; + eqp0->value(eff->geteffectpar(0)); + bandcounter->value(eqband); + bandcounter->do_callback(); + typechoice->value(eff->geteffectpar(10)); + eqgraph->redraw(); + freqdial->value(eff->geteffectpar(11)); + gaindial->value(eff->geteffectpar(12)); + if (eff->geteffectpar(10)<6) gaindial->deactivate(); + qdial->value(eff->geteffectpar(13)); + stagescounter->value(eff->geteffectpar(14)); + eqgraph->init(eff); + effeqwindow->show(); + break; + case 8:make_filter_window(); + dfp->value(eff->getpreset()); + dfp0->value(eff->geteffectpar(0));if (eff->insertion!=0) dfp0->label("D/W"); + dfp1->value(eff->geteffectpar(1)); + dfp2->value(eff->geteffectpar(2)); + dfp3->value(eff->geteffectpar(3)); + dfp4->value(eff->geteffectpar(4)); + dfp5->value(eff->geteffectpar(5)); + dfp6->value(eff->geteffectpar(6)); + dfp7->value(eff->geteffectpar(7)); + dfp8->value(eff->geteffectpar(8)); + dfp9->value(eff->geteffectpar(9)); + + + effdynamicfilterwindow->show(); + break; + default:effnullwindow->show(); + break; + }; + + this->show(); } void EffUI::refresh() { @@ -3113,14 +3113,14 @@ SimpleEffUI::SimpleEffUI(int x,int y, int w, int h, const char *label):Fl_Group( SimpleEffUI::~SimpleEffUI() { effnullwindow->hide();//delete (effnullwindow); -effreverbwindow->hide();//delete (effreverbwindow); -effechowindow->hide();//delete (effechowindow); -effchoruswindow->hide();//delete (effchoruswindow); -effphaserwindow->hide();//delete (effphaserwindow); -effalienwahwindow->hide();//delete (effalienwahwindow); -effdistorsionwindow->hide();//delete (effdistorsionwindow); -effeqwindow->hide();//delete (effeqwindow); -effdynamicfilterwindow->hide();//delete (effdynamicfilterwindow); + effreverbwindow->hide();//delete (effreverbwindow); + effechowindow->hide();//delete (effechowindow); + effchoruswindow->hide();//delete (effchoruswindow); + effphaserwindow->hide();//delete (effphaserwindow); + effalienwahwindow->hide();//delete (effalienwahwindow); + effdistorsionwindow->hide();//delete (effdistorsionwindow); + effeqwindow->hide();//delete (effeqwindow); + effdynamicfilterwindow->hide();//delete (effdynamicfilterwindow); } Fl_Group* SimpleEffUI::make_null_window() { @@ -3981,131 +3981,131 @@ Fl_Group* SimpleEffUI::make_dynamicfilter_window() { void SimpleEffUI::init(EffectMgr *eff_) { eff=eff_; - -make_null_window(); -make_reverb_window(); -make_echo_window(); -make_chorus_window(); -make_phaser_window(); -make_alienwah_window(); -make_distorsion_window(); -make_eq_window(); -make_dynamicfilter_window(); - -int px=this->parent()->x(); -int py=this->parent()->y(); - -effnullwindow->position(px,py); -effreverbwindow->position(px,py); -effechowindow->position(px,py); -effchoruswindow->position(px,py); -effphaserwindow->position(px,py); -effalienwahwindow->position(px,py); -effdistorsionwindow->position(px,py); -effeqwindow->position(px,py); -effdynamicfilterwindow->position(px,py); - -refresh(eff); + + make_null_window(); + make_reverb_window(); + make_echo_window(); + make_chorus_window(); + make_phaser_window(); + make_alienwah_window(); + make_distorsion_window(); + make_eq_window(); + make_dynamicfilter_window(); + + int px=this->parent()->x(); + int py=this->parent()->y(); + + effnullwindow->position(px,py); + effreverbwindow->position(px,py); + effechowindow->position(px,py); + effchoruswindow->position(px,py); + effphaserwindow->position(px,py); + effalienwahwindow->position(px,py); + effdistorsionwindow->position(px,py); + effeqwindow->position(px,py); + effdynamicfilterwindow->position(px,py); + + refresh(eff); } void SimpleEffUI::refresh(EffectMgr *eff_) { eff=eff_; -this->hide(); - -effnullwindow->hide(); -effreverbwindow->hide(); -effechowindow->hide(); -effchoruswindow->hide(); -effphaserwindow->hide(); -effalienwahwindow->hide(); -effdistorsionwindow->hide(); -effeqwindow->hide(); -effdynamicfilterwindow->hide(); - -eqband=0; - - -switch(eff->geteffect()){ - case 1: - revp->value(eff->getpreset()); - revp0->value(eff->geteffectpar(0));if (eff->insertion!=0) revp0->label("D/W"); - revp2->value(eff->geteffectpar(2)); - revp3->value(eff->geteffectpar(3)); - revp9->value(eff->geteffectpar(9)); - effreverbwindow->show(); - break; - case 2: - echop->value(eff->getpreset()); - echop0->value(eff->geteffectpar(0));if (eff->insertion!=0) echop0->label("D/W"); - echop2->value(eff->geteffectpar(2)); - echop5->value(eff->geteffectpar(5)); - effechowindow->show(); - break; - case 3: - chorusp->value(eff->getpreset()); - chorusp0->value(eff->geteffectpar(0));if (eff->insertion!=0) chorusp0->label("D/W"); - chorusp2->value(eff->geteffectpar(2)); - chorusp6->value(eff->geteffectpar(6)); - chorusp7->value(eff->geteffectpar(7)); - chorusp8->value(eff->geteffectpar(8)); - effchoruswindow->show(); - break; - case 4: - phaserp->value(eff->getpreset()); - phaserp0->value(eff->geteffectpar(0));if (eff->insertion!=0) phaserp0->label("D/W"); - phaserp2->value(eff->geteffectpar(2)); - phaserp5->value(eff->geteffectpar(5)); - phaserp6->value(eff->geteffectpar(6)); - phaserp7->value(eff->geteffectpar(7)); - phaserp8->value(eff->geteffectpar(8)); - effphaserwindow->show(); - break; - case 5: - awp->value(eff->getpreset()); - awp0->value(eff->geteffectpar(0));if (eff->insertion!=0) awp0->label("D/W"); - awp2->value(eff->geteffectpar(2)); - awp6->value(eff->geteffectpar(6)); - awp8->value(eff->geteffectpar(8)); - effalienwahwindow->show(); - break; - case 6: - distp->value(eff->getpreset()); - distp0->value(eff->geteffectpar(0));if (eff->insertion!=0) distp0->label("D/W"); - distp3->value(eff->geteffectpar(3)); - distp4->value(eff->geteffectpar(4)); - distp5->value(eff->geteffectpar(5)); - distp7->value(eff->geteffectpar(7)); - effdistorsionwindow->show(); - break; - case 7: - bandcounter->value(eqband); - bandcounter->do_callback(); - typechoice->value(eff->geteffectpar(10)); - eqgraph->redraw(); - freqdial->value(eff->geteffectpar(11)); - gaindial->value(eff->geteffectpar(12)); - if (eff->geteffectpar(10)<6) gaindial->deactivate(); - qdial->value(eff->geteffectpar(13)); - stagescounter->value(eff->geteffectpar(14)); - eqgraph->init(eff); - effeqwindow->show(); - break; - case 8: - dfp->value(eff->getpreset()); - dfp0->value(eff->geteffectpar(0));if (eff->insertion!=0) dfp0->label("D/W"); - dfp2->value(eff->geteffectpar(2)); - dfp6->value(eff->geteffectpar(6)); - dfp7->value(eff->geteffectpar(7)); - dfp9->value(eff->geteffectpar(9)); - - - effdynamicfilterwindow->show(); - break; - default:effnullwindow->show(); - break; -}; - -this->show(); + this->hide(); + + effnullwindow->hide(); + effreverbwindow->hide(); + effechowindow->hide(); + effchoruswindow->hide(); + effphaserwindow->hide(); + effalienwahwindow->hide(); + effdistorsionwindow->hide(); + effeqwindow->hide(); + effdynamicfilterwindow->hide(); + + eqband=0; + + + switch(eff->geteffect()){ + case 1: + revp->value(eff->getpreset()); + revp0->value(eff->geteffectpar(0));if (eff->insertion!=0) revp0->label("D/W"); + revp2->value(eff->geteffectpar(2)); + revp3->value(eff->geteffectpar(3)); + revp9->value(eff->geteffectpar(9)); + effreverbwindow->show(); + break; + case 2: + echop->value(eff->getpreset()); + echop0->value(eff->geteffectpar(0));if (eff->insertion!=0) echop0->label("D/W"); + echop2->value(eff->geteffectpar(2)); + echop5->value(eff->geteffectpar(5)); + effechowindow->show(); + break; + case 3: + chorusp->value(eff->getpreset()); + chorusp0->value(eff->geteffectpar(0));if (eff->insertion!=0) chorusp0->label("D/W"); + chorusp2->value(eff->geteffectpar(2)); + chorusp6->value(eff->geteffectpar(6)); + chorusp7->value(eff->geteffectpar(7)); + chorusp8->value(eff->geteffectpar(8)); + effchoruswindow->show(); + break; + case 4: + phaserp->value(eff->getpreset()); + phaserp0->value(eff->geteffectpar(0));if (eff->insertion!=0) phaserp0->label("D/W"); + phaserp2->value(eff->geteffectpar(2)); + phaserp5->value(eff->geteffectpar(5)); + phaserp6->value(eff->geteffectpar(6)); + phaserp7->value(eff->geteffectpar(7)); + phaserp8->value(eff->geteffectpar(8)); + effphaserwindow->show(); + break; + case 5: + awp->value(eff->getpreset()); + awp0->value(eff->geteffectpar(0));if (eff->insertion!=0) awp0->label("D/W"); + awp2->value(eff->geteffectpar(2)); + awp6->value(eff->geteffectpar(6)); + awp8->value(eff->geteffectpar(8)); + effalienwahwindow->show(); + break; + case 6: + distp->value(eff->getpreset()); + distp0->value(eff->geteffectpar(0));if (eff->insertion!=0) distp0->label("D/W"); + distp3->value(eff->geteffectpar(3)); + distp4->value(eff->geteffectpar(4)); + distp5->value(eff->geteffectpar(5)); + distp7->value(eff->geteffectpar(7)); + effdistorsionwindow->show(); + break; + case 7: + bandcounter->value(eqband); + bandcounter->do_callback(); + typechoice->value(eff->geteffectpar(10)); + eqgraph->redraw(); + freqdial->value(eff->geteffectpar(11)); + gaindial->value(eff->geteffectpar(12)); + if (eff->geteffectpar(10)<6) gaindial->deactivate(); + qdial->value(eff->geteffectpar(13)); + stagescounter->value(eff->geteffectpar(14)); + eqgraph->init(eff); + effeqwindow->show(); + break; + case 8: + dfp->value(eff->getpreset()); + dfp0->value(eff->geteffectpar(0));if (eff->insertion!=0) dfp0->label("D/W"); + dfp2->value(eff->geteffectpar(2)); + dfp6->value(eff->geteffectpar(6)); + dfp7->value(eff->geteffectpar(7)); + dfp9->value(eff->geteffectpar(9)); + + + effdynamicfilterwindow->show(); + break; + default:effnullwindow->show(); + break; + }; + + this->show(); } void SimpleEffUI::refresh() { diff --git a/plugins/zynaddsubfx/src/UI/EnvelopeUI.cc b/plugins/zynaddsubfx/src/UI/EnvelopeUI.cc index 120e743ec..78d2b17cd 100644 --- a/plugins/zynaddsubfx/src/UI/EnvelopeUI.cc +++ b/plugins/zynaddsubfx/src/UI/EnvelopeUI.cc @@ -6,15 +6,15 @@ EnvelopeFreeEdit::EnvelopeFreeEdit(int x,int y, int w, int h, const char *label):Fl_Box(x,y,w,h,label) { env=NULL; -pair=NULL; + pair=NULL; } void EnvelopeFreeEdit::init(EnvelopeParams *env_) { env=env_; -oldx=-1; -currentpoint=-1; -cpx=0; -lastpoint=-1; + oldx=-1; + currentpoint=-1; + cpx=0; + lastpoint=-1; } void EnvelopeFreeEdit::setpair(Fl_Box *pair_) { @@ -23,137 +23,137 @@ void EnvelopeFreeEdit::setpair(Fl_Box *pair_) { int EnvelopeFreeEdit::getpointx(int n) { int lx=w()-10; -int npoints=env->Penvpoints; - -float sum=0; -for (int i=1;igetdt(i)+1; - -float sumbefore=0;//the sum of all points before the computed point -for (int i=1;i<=n;i++) sumbefore+=env->getdt(i)+1; - -return((int) (sumbefore/(REALTYPE) sum*lx)); + int npoints=env->Penvpoints; + + float sum=0; + for (int i=1;igetdt(i)+1; + + float sumbefore=0;//the sum of all points before the computed point + for (int i=1;i<=n;i++) sumbefore+=env->getdt(i)+1; + + return((int) (sumbefore/(REALTYPE) sum*lx)); } int EnvelopeFreeEdit::getpointy(int n) { int ly=h()-10; - -return((int) ((1.0-env->Penvval[n]/127.0)*ly)); + + return((int) ((1.0-env->Penvval[n]/127.0)*ly)); } int EnvelopeFreeEdit::getnearest(int x,int y) { x-=5;y-=5; - -int nearestpoint=0; -int nearestval=1000000;//a big value -for (int i=0;iPenvpoints;i++){ - int distance=abs(x-getpointx(i))+abs(y-getpointy(i)); - if (distancePenvpoints;i++){ + int distance=abs(x-getpointx(i))+abs(y-getpointy(i)); + if (distancePfreemode==0) env->converttofree(); -int npoints=env->Penvpoints; - -if (active_r()) fl_color(FL_BLACK); - else fl_color(90,90,90); -if (!active_r()) currentpoint=-1; - -fl_rectf(ox,oy,lx,ly); - -ox+=5;oy+=5;lx-=10;ly-=10; - -//draw the lines -fl_color(FL_GRAY); - -fl_line_style(FL_SOLID); -fl_line(ox+2,oy+ly/2,ox+lx-2,oy+ly/2); - -//draws the evelope points and lines -Fl_Color alb=FL_WHITE; -if (!active_r()) alb=fl_rgb_color(180,180,180); -fl_color(alb); -int oldxx=0,xx=0,oldyy=0,yy=getpointy(0); -fl_rectf(ox-3,oy+yy-3,6,6); -for (int i=1;i=0){ - fl_color(FL_CYAN); - fl_rectf(ox+getpointx(lastpoint)-5,oy+getpointy(lastpoint)-5,10,10); -}; - -//draw the sustain position -if (env->Penvsustain>0){ - fl_color(FL_YELLOW); - xx=getpointx(env->Penvsustain); - fl_line(ox+xx,oy+0,ox+xx,oy+ly); -}; - -//Show the envelope duration and the current line duration -fl_font(FL_HELVETICA|FL_BOLD,10); -float time=0.0; -if (currentpoint<=0){ - fl_color(alb); - for (int i=1;igetdt(i); -} else { - fl_color(255,0,0); - time=env->getdt(currentpoint); -}; -char tmpstr[20]; -if (time<1000.0) snprintf((char *)&tmpstr,20,"%.1fms",time); - else snprintf((char *)&tmpstr,20,"%.2fs",time/1000.0); -fl_draw(tmpstr,ox+lx-20,oy+ly-10,20,10,FL_ALIGN_RIGHT,NULL,0); + if (env->Pfreemode==0) env->converttofree(); + int npoints=env->Penvpoints; + + if (active_r()) fl_color(FL_BLACK); + else fl_color(90,90,90); + if (!active_r()) currentpoint=-1; + + fl_rectf(ox,oy,lx,ly); + + ox+=5;oy+=5;lx-=10;ly-=10; + + //draw the lines + fl_color(FL_GRAY); + + fl_line_style(FL_SOLID); + fl_line(ox+2,oy+ly/2,ox+lx-2,oy+ly/2); + + //draws the evelope points and lines + Fl_Color alb=FL_WHITE; + if (!active_r()) alb=fl_rgb_color(180,180,180); + fl_color(alb); + int oldxx=0,xx=0,oldyy=0,yy=getpointy(0); + fl_rectf(ox-3,oy+yy-3,6,6); + for (int i=1;i=0){ + fl_color(FL_CYAN); + fl_rectf(ox+getpointx(lastpoint)-5,oy+getpointy(lastpoint)-5,10,10); + }; + + //draw the sustain position + if (env->Penvsustain>0){ + fl_color(FL_YELLOW); + xx=getpointx(env->Penvsustain); + fl_line(ox+xx,oy+0,ox+xx,oy+ly); + }; + + //Show the envelope duration and the current line duration + fl_font(FL_HELVETICA|FL_BOLD,10); + float time=0.0; + if (currentpoint<=0){ + fl_color(alb); + for (int i=1;igetdt(i); + } else { + fl_color(255,0,0); + time=env->getdt(currentpoint); + }; + char tmpstr[20]; + if (time<1000.0) snprintf((char *)&tmpstr,20,"%.1fms",time); + else snprintf((char *)&tmpstr,20,"%.2fs",time/1000.0); + fl_draw(tmpstr,ox+lx-20,oy+ly-10,20,10,FL_ALIGN_RIGHT,NULL,0); } int EnvelopeFreeEdit::handle(int event) { int x_=Fl::event_x()-x(); -int y_=Fl::event_y()-y(); - -if (event==FL_PUSH) { - currentpoint=getnearest(x_,y_); - cpx=x_; - cpdt=env->Penvdt[currentpoint]; - lastpoint=currentpoint; - redraw(); - if (pair!=NULL) pair->redraw(); -}; - -if (event==FL_RELEASE){ - currentpoint=-1; - redraw(); - if (pair!=NULL) pair->redraw(); -}; - -if ((event==FL_DRAG)&&(currentpoint>=0)){ - int ny=127-(int) (y_*127.0/h()); - if (ny<0) ny=0;if (ny>127) ny=127; - env->Penvval[currentpoint]=ny; - - int dx=(int)((x_-cpx)*0.1); - int newdt=cpdt+dx; - if (newdt<0) newdt=0;if (newdt>127) newdt=127; - if (currentpoint!=0) env->Penvdt[currentpoint]=newdt; - else env->Penvdt[currentpoint]=0; - - redraw(); - if (pair!=NULL) pair->redraw(); -}; - - -return(1); + int y_=Fl::event_y()-y(); + + if (event==FL_PUSH) { + currentpoint=getnearest(x_,y_); + cpx=x_; + cpdt=env->Penvdt[currentpoint]; + lastpoint=currentpoint; + redraw(); + if (pair!=NULL) pair->redraw(); + }; + + if (event==FL_RELEASE){ + currentpoint=-1; + redraw(); + if (pair!=NULL) pair->redraw(); + }; + + if ((event==FL_DRAG)&&(currentpoint>=0)){ + int ny=127-(int) (y_*127.0/h()); + if (ny<0) ny=0;if (ny>127) ny=127; + env->Penvval[currentpoint]=ny; + + int dx=(int)((x_-cpx)*0.1); + int newdt=cpdt+dx; + if (newdt<0) newdt=0;if (newdt>127) newdt=127; + if (currentpoint!=0) env->Penvdt[currentpoint]=newdt; + else env->Penvdt[currentpoint]=0; + + redraw(); + if (pair!=NULL) pair->redraw(); + }; + + + return(1); } void EnvelopeUI::cb_addpoint_i(Fl_Button*, void*) { @@ -594,19 +594,19 @@ void EnvelopeUI::cb_P5(Fl_Button* o, void* v) { EnvelopeUI::EnvelopeUI(int x,int y, int w, int h, const char *label):Fl_Group(x,y,w,h,label) { env=NULL; -freemodeeditwindow=NULL; -envADSR=NULL; -envASR=NULL; -envADSRfilter=NULL; -envASRbw=NULL; -envfree=NULL; + freemodeeditwindow=NULL; + envADSR=NULL; + envASR=NULL; + envADSRfilter=NULL; + envASRbw=NULL; + envfree=NULL; } EnvelopeUI::~EnvelopeUI() { envwindow->hide(); -hide(); -freemodeeditwindow->hide(); -delete (freemodeeditwindow); + hide(); + freemodeeditwindow->hide(); + delete (freemodeeditwindow); } Fl_Double_Window* EnvelopeUI::make_freemode_edit_window() { @@ -1356,170 +1356,170 @@ Fl_Group* EnvelopeUI::make_free_window() { void EnvelopeUI::init(EnvelopeParams *env_) { env=env_; -make_ADSR_window(); -make_ASR_window(); -make_ADSRfilter_window(); -make_ASRbw_window(); -make_free_window(); - -make_freemode_edit_window(); - -envwindow=NULL; -if (env->Envmode==3) envfreegroup->label("Frequency Envelope"); -if (env->Envmode==4) envfreegroup->label("Filter Envelope"); -if (env->Envmode==5) envfreegroup->label("Bandwidth Envelope"); - -freemodeeditwindow->label(this->label()); - - -freeeditsmall->setpair(freeedit); -freeedit->setpair(freeeditsmall); - - -refresh(); + make_ADSR_window(); + make_ASR_window(); + make_ADSRfilter_window(); + make_ASRbw_window(); + make_free_window(); + + make_freemode_edit_window(); + + envwindow=NULL; + if (env->Envmode==3) envfreegroup->label("Frequency Envelope"); + if (env->Envmode==4) envfreegroup->label("Filter Envelope"); + if (env->Envmode==5) envfreegroup->label("Bandwidth Envelope"); + + freemodeeditwindow->label(this->label()); + + + freeeditsmall->setpair(freeedit); + freeedit->setpair(freeeditsmall); + + + refresh(); } void EnvelopeUI::reinit() { if (env->Pfreemode!=0){ - int answer=fl_choice("Disable the free mode of the Envelope?","No","Yes",NULL); - if (env->Pfreemode!=0) freemodebutton->value(1); - else freemodebutton->value(0); - if (answer==0) return; -}; - -if (env->Pfreemode==0) env->Pfreemode=1; - else env->Pfreemode=0; - -hide(); -int winx=freemodeeditwindow->x(); -int winy=freemodeeditwindow->y(); - -freemodeeditwindow->hide(); - -envwindow->hide(); -Fl_Group *par=envwindow->parent(); -par->hide(); - - -refresh(); -envwindow->show(); -par->redraw(); - -par->show(); -show(); -freemodeeditwindow->position(winx,winy); -freemodeeditwindow->show(); - -if (env->Pfreemode!=0) { - freemodebutton->value(1); - addpoint->show(); - deletepoint->show(); - forcedreleasecheck->show(); -}else{ - freemodebutton->value(0); - addpoint->hide(); - deletepoint->hide(); - forcedreleasecheck->hide(); -}; + int answer=fl_choice("Disable the free mode of the Envelope?","No","Yes",NULL); + if (env->Pfreemode!=0) freemodebutton->value(1); + else freemodebutton->value(0); + if (answer==0) return; + }; + + if (env->Pfreemode==0) env->Pfreemode=1; + else env->Pfreemode=0; + + hide(); + int winx=freemodeeditwindow->x(); + int winy=freemodeeditwindow->y(); + + freemodeeditwindow->hide(); + + envwindow->hide(); + Fl_Group *par=envwindow->parent(); + par->hide(); + + + refresh(); + envwindow->show(); + par->redraw(); + + par->show(); + show(); + freemodeeditwindow->position(winx,winy); + freemodeeditwindow->show(); + + if (env->Pfreemode!=0) { + freemodebutton->value(1); + addpoint->show(); + deletepoint->show(); + forcedreleasecheck->show(); + }else{ + freemodebutton->value(0); + addpoint->hide(); + deletepoint->hide(); + forcedreleasecheck->hide(); + }; } void EnvelopeUI::refresh() { freemodebutton->value(env->Pfreemode); - -sustaincounter->value(env->Penvsustain); -if (env->Pfreemode==0) sustaincounter->hide(); - else sustaincounter->show(); -sustaincounter->maximum(env->Penvpoints-2); - -envstretchdial->value(env->Penvstretch); -if (env->Pfreemode==0) envstretchdial->hide(); - else envstretchdial->show(); - -linearenvelopecheck->value(env->Plinearenvelope); -if ((env->Pfreemode==0)||(env->Envmode>2)) linearenvelopecheck->hide(); - else linearenvelopecheck->show(); - -forcedreleasecheck->value(env->Pforcedrelease); -if (env->Pfreemode==0) forcedreleasecheck->hide(); - -freeedit->redraw(); - - -if (env->Pfreemode==0){ - switch(env->Envmode){ - case(1): - case(2): - e1adt->value(env->PA_dt); - e1ddt->value(env->PD_dt); - e1sval->value(env->PS_val); - e1rdt->value(env->PR_dt); - e1envstretch->value(env->Penvstretch); - e1linearenvelope->value(env->Plinearenvelope); - e1forcedrelease->value(env->Pforcedrelease); - break; - case(3): - e2aval->value(env->PA_val); - e2adt->value(env->PA_dt); - e2rdt->value(env->PR_dt); - e2rval->value(env->PR_val); - e2envstretch->value(env->Penvstretch); - e2forcedrelease->value(env->Pforcedrelease); - break; - case(4): - e3aval->value(env->PA_val); - e3adt->value(env->PA_dt); - e3dval->value(env->PD_val); - e3ddt->value(env->PD_dt); - e3rdt->value(env->PR_dt); - e3rval->value(env->PR_val); - e3envstretch->value(env->Penvstretch); - e3forcedrelease->value(env->Pforcedrelease); - break; - case(5): - e4aval->value(env->PA_val); - e4adt->value(env->PA_dt); - e4rdt->value(env->PR_dt); - e4rval->value(env->PR_val); - e4envstretch->value(env->Penvstretch); - e4forcedrelease->value(env->Pforcedrelease); - break; - default: - break; - }; -}else{ - envfree->redraw(); -}; - - -envADSR->hide(); -envASR->hide(); -envADSRfilter->hide(); -envASRbw->hide(); -envfree->hide(); - -if (env->Pfreemode==0){ - switch(env->Envmode){ - case(1): - case(2): - envwindow=envADSR; - break; - case(3): - envwindow=envASR; - break; - case(4): - envwindow=envADSRfilter; - break; - case(5): - envwindow=envASRbw; - break; - default: - break; - }; -}else{ - envwindow=envfree; -}; - -envwindow->resize(this->x(),this->y(),this->w(),this->h()); - -envwindow->show(); + + sustaincounter->value(env->Penvsustain); + if (env->Pfreemode==0) sustaincounter->hide(); + else sustaincounter->show(); + sustaincounter->maximum(env->Penvpoints-2); + + envstretchdial->value(env->Penvstretch); + if (env->Pfreemode==0) envstretchdial->hide(); + else envstretchdial->show(); + + linearenvelopecheck->value(env->Plinearenvelope); + if ((env->Pfreemode==0)||(env->Envmode>2)) linearenvelopecheck->hide(); + else linearenvelopecheck->show(); + + forcedreleasecheck->value(env->Pforcedrelease); + if (env->Pfreemode==0) forcedreleasecheck->hide(); + + freeedit->redraw(); + + + if (env->Pfreemode==0){ + switch(env->Envmode){ + case(1): + case(2): + e1adt->value(env->PA_dt); + e1ddt->value(env->PD_dt); + e1sval->value(env->PS_val); + e1rdt->value(env->PR_dt); + e1envstretch->value(env->Penvstretch); + e1linearenvelope->value(env->Plinearenvelope); + e1forcedrelease->value(env->Pforcedrelease); + break; + case(3): + e2aval->value(env->PA_val); + e2adt->value(env->PA_dt); + e2rdt->value(env->PR_dt); + e2rval->value(env->PR_val); + e2envstretch->value(env->Penvstretch); + e2forcedrelease->value(env->Pforcedrelease); + break; + case(4): + e3aval->value(env->PA_val); + e3adt->value(env->PA_dt); + e3dval->value(env->PD_val); + e3ddt->value(env->PD_dt); + e3rdt->value(env->PR_dt); + e3rval->value(env->PR_val); + e3envstretch->value(env->Penvstretch); + e3forcedrelease->value(env->Pforcedrelease); + break; + case(5): + e4aval->value(env->PA_val); + e4adt->value(env->PA_dt); + e4rdt->value(env->PR_dt); + e4rval->value(env->PR_val); + e4envstretch->value(env->Penvstretch); + e4forcedrelease->value(env->Pforcedrelease); + break; + default: + break; + }; + }else{ + envfree->redraw(); + }; + + + envADSR->hide(); + envASR->hide(); + envADSRfilter->hide(); + envASRbw->hide(); + envfree->hide(); + + if (env->Pfreemode==0){ + switch(env->Envmode){ + case(1): + case(2): + envwindow=envADSR; + break; + case(3): + envwindow=envASR; + break; + case(4): + envwindow=envADSRfilter; + break; + case(5): + envwindow=envASRbw; + break; + default: + break; + }; + }else{ + envwindow=envfree; + }; + + envwindow->resize(this->x(),this->y(),this->w(),this->h()); + + envwindow->show(); } diff --git a/plugins/zynaddsubfx/src/UI/FilterUI.cc b/plugins/zynaddsubfx/src/UI/FilterUI.cc index 8218ac0ae..935f2f513 100644 --- a/plugins/zynaddsubfx/src/UI/FilterUI.cc +++ b/plugins/zynaddsubfx/src/UI/FilterUI.cc @@ -6,107 +6,107 @@ FormantFilterGraph::FormantFilterGraph(int x,int y, int w, int h, const char *label):Fl_Box(x,y,w,h,label) { pars=NULL; -nvowel=NULL; -nformant=NULL; -graphpoints=NULL; + nvowel=NULL; + nformant=NULL; + graphpoints=NULL; } void FormantFilterGraph::init(FilterParams *pars_,int *nvowel_,int *nformant_) { pars=pars_; -nvowel=nvowel_; -nformant=nformant_; -oldx=-1; -graphpoints=new REALTYPE [w()]; + nvowel=nvowel_; + nformant=nformant_; + oldx=-1; + graphpoints=new REALTYPE [w()]; } void FormantFilterGraph::draw_freq_line(REALTYPE freq,int type) { REALTYPE freqx=pars->getfreqpos(freq); -switch(type){ - case 0:fl_line_style(FL_SOLID);break; - case 1:fl_line_style(FL_DOT);break; - case 2:fl_line_style(FL_DASH);break; -}; - - -if ((freqx>0.0)&&(freqx<1.0)) - fl_line(x()+(int) (freqx*w()),y(), - x()+(int) (freqx*w()),y()+h()); + switch(type){ + case 0:fl_line_style(FL_SOLID);break; + case 1:fl_line_style(FL_DOT);break; + case 2:fl_line_style(FL_DASH);break; + }; + + + if ((freqx>0.0)&&(freqx<1.0)) + fl_line(x()+(int) (freqx*w()),y(), + x()+(int) (freqx*w()),y()+h()); } void FormantFilterGraph::draw() { int maxdB=30; -int ox=x(),oy=y(),lx=w(),ly=h(),i,oiy; -REALTYPE freqx; - -fl_color(FL_BLACK); -fl_rectf(ox,oy,lx,ly); - - -//draw the lines -fl_color(FL_GRAY); - -fl_line_style(FL_SOLID); -//fl_line(ox+2,oy+ly/2,ox+lx-2,oy+ly/2); - -freqx=pars->getfreqpos(1000.0); -if ((freqx>0.0)&&(freqx<1.0)) - fl_line(ox+(int) (freqx*lx),oy, - ox+(int) (freqx*lx),oy+ly); - -for (i=1;i<10;i++){ - if(i==1){ - draw_freq_line(i*100.0,0); - draw_freq_line(i*1000.0,0); - }else - if (i==5){ - draw_freq_line(i*100.0,2); - draw_freq_line(i*1000.0,2); - }else{ - draw_freq_line(i*100.0,1); - draw_freq_line(i*1000.0,1); - }; -}; - -draw_freq_line(10000.0,0); -draw_freq_line(20000.0,1); - -fl_line_style(FL_DOT); -int GY=10;if (lyPnumformants){ - draw_freq_line(pars->getformantfreq(pars->Pvowels[*nvowel].formants[*nformant].freq),2); - -//show some information (like current formant frequency,amplitude) - char tmpstr[20]; - - snprintf(tmpstr,20,"%.2f kHz",pars->getformantfreq(pars->Pvowels[*nvowel].formants[*nformant].freq)*0.001); - fl_draw(tmpstr,ox+1,oy+1,40,12,FL_ALIGN_LEFT,NULL,0); - - snprintf(tmpstr,20,"%d dB",(int)( rap2dB(1e-9 + pars->getformantamp(pars->Pvowels[*nvowel].formants[*nformant].amp)) + pars->getgain() )); - fl_draw(tmpstr,ox+1,oy+15,40,12,FL_ALIGN_LEFT,NULL,0); - -}; - -//draw the data - -fl_color(FL_RED); -fl_line_style(FL_SOLID); - -pars->formantfilterH(*nvowel,lx,graphpoints); - -oiy=(int) ((graphpoints[0]/maxdB+1.0)*ly/2.0); -for (i=1;i=0)&&(oiy>=0)&&(iygetfreqpos(1000.0); + if ((freqx>0.0)&&(freqx<1.0)) + fl_line(ox+(int) (freqx*lx),oy, + ox+(int) (freqx*lx),oy+ly); + + for (i=1;i<10;i++){ + if(i==1){ + draw_freq_line(i*100.0,0); + draw_freq_line(i*1000.0,0); + }else + if (i==5){ + draw_freq_line(i*100.0,2); + draw_freq_line(i*1000.0,2); + }else{ + draw_freq_line(i*100.0,1); + draw_freq_line(i*1000.0,1); + }; + }; + + draw_freq_line(10000.0,0); + draw_freq_line(20000.0,1); + + fl_line_style(FL_DOT); + int GY=10;if (lyPnumformants){ + draw_freq_line(pars->getformantfreq(pars->Pvowels[*nvowel].formants[*nformant].freq),2); + + //show some information (like current formant frequency,amplitude) + char tmpstr[20]; + + snprintf(tmpstr,20,"%.2f kHz",pars->getformantfreq(pars->Pvowels[*nvowel].formants[*nformant].freq)*0.001); + fl_draw(tmpstr,ox+1,oy+1,40,12,FL_ALIGN_LEFT,NULL,0); + + snprintf(tmpstr,20,"%d dB",(int)( rap2dB(1e-9 + pars->getformantamp(pars->Pvowels[*nvowel].formants[*nformant].amp)) + pars->getgain() )); + fl_draw(tmpstr,ox+1,oy+15,40,12,FL_ALIGN_LEFT,NULL,0); + + }; + + //draw the data + + fl_color(FL_RED); + fl_line_style(FL_SOLID); + + pars->formantfilterH(*nvowel,lx,graphpoints); + + oiy=(int) ((graphpoints[0]/maxdB+1.0)*ly/2.0); + for (i=1;i=0)&&(oiy>=0)&&(iyhide(); -formantparswindow->hide(); -hide(); -//delete (filterui); -delete (formantparswindow); + formantparswindow->hide(); + hide(); + //delete (filterui); + delete (formantparswindow); } Fl_Group* FilterUI::make_window() { @@ -875,113 +875,113 @@ Fl_Double_Window* FilterUI::make_formant_window() { void FilterUI::update_formant_window() { formant_freq_dial->value(pars->Pvowels[nvowel].formants[nformant].freq); -formant_q_dial->value(pars->Pvowels[nvowel].formants[nformant].q); -formant_amp_dial->value(pars->Pvowels[nvowel].formants[nformant].amp); -if (nformantPnumformants) formantparsgroup->activate(); - else formantparsgroup->deactivate(); - -if (nseqposPsequencesize) vowel_counter->activate(); - else vowel_counter->deactivate(); - - -vowel_counter->value(pars->Psequence[nseqpos].nvowel); + formant_q_dial->value(pars->Pvowels[nvowel].formants[nformant].q); + formant_amp_dial->value(pars->Pvowels[nvowel].formants[nformant].amp); + if (nformantPnumformants) formantparsgroup->activate(); + else formantparsgroup->deactivate(); + + if (nseqposPsequencesize) vowel_counter->activate(); + else vowel_counter->deactivate(); + + + vowel_counter->value(pars->Psequence[nseqpos].nvowel); } void FilterUI::refresh() { update_formant_window(); -formantfiltergraph->redraw(); - -if (pars->Pcategory==0) svfiltertypechoice->value(pars->Ptype); -if (pars->Pcategory==2) analogfiltertypechoice->value(pars->Ptype); - -filtertype->value(pars->Pcategory); - -cfreqdial->value(pars->Pfreq); -qdial->value(pars->Pq); - -freqtrdial->value(pars->Pfreqtrack); -gaindial->value(pars->Pgain); - -stcounter->value(pars->Pstages); - -int categ=pars->Pcategory; -if ((categ==0)||(categ==2)) { - if (categ==0) { - analogfiltertypechoice->show(); - svfiltertypechoice->hide(); - } else { - svfiltertypechoice->show(); - analogfiltertypechoice->hide(); - }; - editbutton->hide(); - formantparswindow->hide(); - cfreqdial->label("C.freq"); -} else { - analogfiltertypechoice->hide(); - svfiltertypechoice->hide(); - editbutton->show(); - cfreqdial->label("BS.pos"); -}; - -filterparamswindow->redraw(); + formantfiltergraph->redraw(); + + if (pars->Pcategory==0) svfiltertypechoice->value(pars->Ptype); + if (pars->Pcategory==2) analogfiltertypechoice->value(pars->Ptype); + + filtertype->value(pars->Pcategory); + + cfreqdial->value(pars->Pfreq); + qdial->value(pars->Pq); + + freqtrdial->value(pars->Pfreqtrack); + gaindial->value(pars->Pgain); + + stcounter->value(pars->Pstages); + + int categ=pars->Pcategory; + if ((categ==0)||(categ==2)) { + if (categ==0) { + analogfiltertypechoice->show(); + svfiltertypechoice->hide(); + } else { + svfiltertypechoice->show(); + analogfiltertypechoice->hide(); + }; + editbutton->hide(); + formantparswindow->hide(); + cfreqdial->label("C.freq"); + } else { + analogfiltertypechoice->hide(); + svfiltertypechoice->hide(); + editbutton->show(); + cfreqdial->label("BS.pos"); + }; + + filterparamswindow->redraw(); } void FilterUI::init(FilterParams *filterpars_,unsigned char *velsnsamp_,unsigned char *velsns_) { pars=filterpars_; -velsnsamp=velsnsamp_; -velsns=velsns_; - -make_window(); -end(); -make_formant_window(); - - -filterui->resize(this->x(),this->y(),this->w(),this->h()); - - -if (velsnsamp==NULL){ - vsnsadial->deactivate(); - vsnsadial->value(127); - } else vsnsadial->value(*velsnsamp); - -if (velsns==NULL){ - vsnsdial->deactivate(); - vsnsdial->value(127); - } else vsnsdial->value(*velsns); - -switchcategory(pars->Pcategory); - - -formantparswindow->label(this->label()); - -update_formant_window(); + velsnsamp=velsnsamp_; + velsns=velsns_; + + make_window(); + end(); + make_formant_window(); + + + filterui->resize(this->x(),this->y(),this->w(),this->h()); + + + if (velsnsamp==NULL){ + vsnsadial->deactivate(); + vsnsadial->value(127); + } else vsnsadial->value(*velsnsamp); + + if (velsns==NULL){ + vsnsdial->deactivate(); + vsnsdial->value(127); + } else vsnsdial->value(*velsns); + + switchcategory(pars->Pcategory); + + + formantparswindow->label(this->label()); + + update_formant_window(); } void FilterUI::switchcategory(int newcat) { if (pars->Pcategory!=newcat){ - pars->Pgain=64; - gaindial->value(64); - analogfiltertypechoice->value(0); - analogfiltertypechoice->do_callback(); - svfiltertypechoice->value(0); - svfiltertypechoice->do_callback(); -}; -pars->Pcategory=newcat; - -refresh(); + pars->Pgain=64; + gaindial->value(64); + analogfiltertypechoice->value(0); + analogfiltertypechoice->do_callback(); + svfiltertypechoice->value(0); + svfiltertypechoice->do_callback(); + }; + pars->Pcategory=newcat; + + refresh(); } void FilterUI::use_for_dynamic_filter() { freqtrdial->deactivate(); -gaindial->when(0); - -cfknob->when(FL_WHEN_RELEASE); -octknob->when(FL_WHEN_RELEASE); - -frsldial->when(0); -wvknob->when(0); -formant_freq_dial->when(0); -formant_q_dial->when(0); -formant_amp_dial->when(0); -strchdial->when(0); + gaindial->when(0); + + cfknob->when(FL_WHEN_RELEASE); + octknob->when(FL_WHEN_RELEASE); + + frsldial->when(0); + wvknob->when(0); + formant_freq_dial->when(0); + formant_q_dial->when(0); + formant_amp_dial->when(0); + strchdial->when(0); } diff --git a/plugins/zynaddsubfx/src/UI/LFOUI.cc b/plugins/zynaddsubfx/src/UI/LFOUI.cc index af6c1f189..120600891 100644 --- a/plugins/zynaddsubfx/src/UI/LFOUI.cc +++ b/plugins/zynaddsubfx/src/UI/LFOUI.cc @@ -98,8 +98,8 @@ LFOUI::LFOUI(int x,int y, int w, int h, const char *label):Fl_Group(x,y,w,h,labe LFOUI::~LFOUI() { lfoui->hide(); -hide(); -//delete (lfoui); + hide(); + //delete (lfoui); } Fl_Group* LFOUI::make_window() { @@ -265,25 +265,25 @@ Fl_Group* LFOUI::make_window() { void LFOUI::refresh() { freq->value(pars->Pfreq); -intensity->value(pars->Pintensity); -startphase->value(pars->Pstartphase); -delay->value(pars->Pdelay); -continous->value(pars->Pcontinous); -stretch->value(pars->Pstretch); -randomness->value(pars->Prandomness); -freqrand->value(pars->Pfreqrand); -LFOtype->value(pars->PLFOtype); + intensity->value(pars->Pintensity); + startphase->value(pars->Pstartphase); + delay->value(pars->Pdelay); + continous->value(pars->Pcontinous); + stretch->value(pars->Pstretch); + randomness->value(pars->Prandomness); + freqrand->value(pars->Pfreqrand); + LFOtype->value(pars->PLFOtype); } void LFOUI::init(LFOParams *lfopars_) { pars=lfopars_; - -make_window(); -end(); - -refresh(); - -lfoui->resize(this->x(),this->y(),this->w(),this->h()); - -lfoparamswindow->label(this->label()); + + make_window(); + end(); + + refresh(); + + lfoui->resize(this->x(),this->y(),this->w(),this->h()); + + lfoparamswindow->label(this->label()); } diff --git a/plugins/zynaddsubfx/src/UI/MasterUI.cc b/plugins/zynaddsubfx/src/UI/MasterUI.cc index cc8330473..966088460 100644 --- a/plugins/zynaddsubfx/src/UI/MasterUI.cc +++ b/plugins/zynaddsubfx/src/UI/MasterUI.cc @@ -6,167 +6,167 @@ VUMeter::VUMeter(int x,int y, int w, int h, const char *label):Fl_Box(x,y,w,h,label) { master=NULL; -npart=-1; + npart=-1; } void VUMeter::init(Master *master_,int part_) { //the "part_" parameters sets the part (if it is >=0), else it sets the master -master=master_; -label(NULL); -npart=part_; -olddbl=0.0; -olddbr=0.0; -oldrmsdbl=0.0; -oldrmsdbr=0.0; + master=master_; + label(NULL); + npart=part_; + olddbl=0.0; + olddbr=0.0; + oldrmsdbl=0.0; + oldrmsdbr=0.0; } void VUMeter::draw_master() { #define MIN_DB (-48) - -int ox=x(); int oy=y(); int lx=w(); int ly=h(); - -pthread_mutex_lock(&master->mutex); -REALTYPE dbl=rap2dB(master->vuoutpeakl); -REALTYPE dbr=rap2dB(master->vuoutpeakr); -REALTYPE rmsdbl=rap2dB(master->vurmspeakl); -REALTYPE rmsdbr=rap2dB(master->vurmspeakr); -REALTYPE maxdbl=rap2dB(master->vumaxoutpeakl); -REALTYPE maxdbr=rap2dB(master->vumaxoutpeakr); -int clipped=master->vuclipped; -pthread_mutex_unlock(&master->mutex); - -dbl=(MIN_DB-dbl)/MIN_DB; -if (dbl<0.0) dbl=0.0; - else if (dbl>1.0)dbl=1.0; - -dbr=(MIN_DB-dbr)/MIN_DB; -if (dbr<0.0) dbr=0.0; - else if (dbr>1.0) dbr=1.0; - -dbl=dbl*0.4+olddbl*0.6; -dbr=dbr*0.4+olddbr*0.6; - -olddbl=dbl; -olddbr=dbr; - -#define VULENX (lx-35) -#define VULENY (ly/2-3) - -dbl*=VULENX;dbr*=VULENX; - -int idbl=(int) dbl; -int idbr=(int) dbr; - -//compute RMS - start -rmsdbl=(MIN_DB-rmsdbl)/MIN_DB; -if (rmsdbl<0.0) rmsdbl=0.0; - else if (rmsdbl>1.0) rmsdbl=1.0; - -rmsdbr=(MIN_DB-rmsdbr)/MIN_DB; -if (rmsdbr<0.0) rmsdbr=0.0; - else if (rmsdbr>1.0) rmsdbr=1.0; - -rmsdbl=rmsdbl*0.4+oldrmsdbl*0.6; -rmsdbr=rmsdbr*0.4+oldrmsdbr*0.6; - -oldrmsdbl=rmsdbl; -oldrmsdbr=rmsdbr; - - -rmsdbl*=VULENX;rmsdbr*=VULENX; - -int irmsdbl=(int) rmsdbl; -int irmsdbr=(int) rmsdbr; -//compute RMS - end - - - -//draw the vu-meter lines -//db -fl_rectf(ox,oy,idbr,VULENY,0,200,255); -fl_rectf(ox,oy+ly/2,idbl,VULENY,0,200,255); -//black -fl_rectf(ox+idbr,oy,VULENX-idbr,VULENY,0,0,0); -fl_rectf(ox+idbl,oy+ly/2,VULENX-idbl,VULENY,0,0,0); - -//draw the scales -REALTYPE tmp=VULENX*1.0/MIN_DB; -for (int i=1;i<1-MIN_DB;i++){ - int tx=VULENX+(int) (tmp*i); - fl_rectf(ox+tx,oy,1,VULENY+ly/2,0,160,200); - if (i%5==0) fl_rectf(ox+tx,oy,1,VULENY+ly/2,0,230,240); - if (i%10==0) fl_rectf(ox+tx-1,oy,2,VULENY+ly/2,0,225,255); -}; - -//rms -if (irmsdbr>2) fl_rectf(ox+irmsdbr-1,oy,3,VULENY,255,255,0); -if (irmsdbl>2) fl_rectf(ox+irmsdbl-1,oy+ly/2,3,VULENY,255,255,0); - - -//draw the red box if clipping has occured -if (clipped==0) fl_rectf(ox+VULENX+2,oy+1,lx-VULENX-3,ly-4,0,0,10); - else fl_rectf(ox+VULENX+2,oy+1,lx-VULENX-3,ly-4,250,10,10); - -//draw the maxdB -fl_font(FL_HELVETICA|FL_BOLD,10); -fl_color(255,255,255); -char tmpstr[10]; -if ((maxdbl>MIN_DB-20)){ - snprintf((char *)&tmpstr,10,"%ddB",(int)maxdbr); - fl_draw(tmpstr,ox+VULENX+1,oy+1,lx-VULENX-1,VULENY,FL_ALIGN_RIGHT,NULL,0); -}; -if ((maxdbr>MIN_DB-20)){ - snprintf((char *)&tmpstr,10,"%ddB",(int)maxdbl); - fl_draw(tmpstr,ox+VULENX+1,oy+ly/2+1,lx-VULENX-1,VULENY,FL_ALIGN_RIGHT,NULL,0); -}; + + int ox=x(); int oy=y(); int lx=w(); int ly=h(); + + pthread_mutex_lock(&master->mutex); + REALTYPE dbl=rap2dB(master->vuoutpeakl); + REALTYPE dbr=rap2dB(master->vuoutpeakr); + REALTYPE rmsdbl=rap2dB(master->vurmspeakl); + REALTYPE rmsdbr=rap2dB(master->vurmspeakr); + REALTYPE maxdbl=rap2dB(master->vumaxoutpeakl); + REALTYPE maxdbr=rap2dB(master->vumaxoutpeakr); + int clipped=master->vuclipped; + pthread_mutex_unlock(&master->mutex); + + dbl=(MIN_DB-dbl)/MIN_DB; + if (dbl<0.0) dbl=0.0; + else if (dbl>1.0)dbl=1.0; + + dbr=(MIN_DB-dbr)/MIN_DB; + if (dbr<0.0) dbr=0.0; + else if (dbr>1.0) dbr=1.0; + + dbl=dbl*0.4+olddbl*0.6; + dbr=dbr*0.4+olddbr*0.6; + + olddbl=dbl; + olddbr=dbr; + + #define VULENX (lx-35) + #define VULENY (ly/2-3) + + dbl*=VULENX;dbr*=VULENX; + + int idbl=(int) dbl; + int idbr=(int) dbr; + + //compute RMS - start + rmsdbl=(MIN_DB-rmsdbl)/MIN_DB; + if (rmsdbl<0.0) rmsdbl=0.0; + else if (rmsdbl>1.0) rmsdbl=1.0; + + rmsdbr=(MIN_DB-rmsdbr)/MIN_DB; + if (rmsdbr<0.0) rmsdbr=0.0; + else if (rmsdbr>1.0) rmsdbr=1.0; + + rmsdbl=rmsdbl*0.4+oldrmsdbl*0.6; + rmsdbr=rmsdbr*0.4+oldrmsdbr*0.6; + + oldrmsdbl=rmsdbl; + oldrmsdbr=rmsdbr; + + + rmsdbl*=VULENX;rmsdbr*=VULENX; + + int irmsdbl=(int) rmsdbl; + int irmsdbr=(int) rmsdbr; + //compute RMS - end + + + + //draw the vu-meter lines + //db + fl_rectf(ox,oy,idbr,VULENY,0,200,255); + fl_rectf(ox,oy+ly/2,idbl,VULENY,0,200,255); + //black + fl_rectf(ox+idbr,oy,VULENX-idbr,VULENY,0,0,0); + fl_rectf(ox+idbl,oy+ly/2,VULENX-idbl,VULENY,0,0,0); + + //draw the scales + REALTYPE tmp=VULENX*1.0/MIN_DB; + for (int i=1;i<1-MIN_DB;i++){ + int tx=VULENX+(int) (tmp*i); + fl_rectf(ox+tx,oy,1,VULENY+ly/2,0,160,200); + if (i%5==0) fl_rectf(ox+tx,oy,1,VULENY+ly/2,0,230,240); + if (i%10==0) fl_rectf(ox+tx-1,oy,2,VULENY+ly/2,0,225,255); + }; + + //rms + if (irmsdbr>2) fl_rectf(ox+irmsdbr-1,oy,3,VULENY,255,255,0); + if (irmsdbl>2) fl_rectf(ox+irmsdbl-1,oy+ly/2,3,VULENY,255,255,0); + + + //draw the red box if clipping has occured + if (clipped==0) fl_rectf(ox+VULENX+2,oy+1,lx-VULENX-3,ly-4,0,0,10); + else fl_rectf(ox+VULENX+2,oy+1,lx-VULENX-3,ly-4,250,10,10); + + //draw the maxdB + fl_font(FL_HELVETICA|FL_BOLD,10); + fl_color(255,255,255); + char tmpstr[10]; + if ((maxdbl>MIN_DB-20)){ + snprintf((char *)&tmpstr,10,"%ddB",(int)maxdbr); + fl_draw(tmpstr,ox+VULENX+1,oy+1,lx-VULENX-1,VULENY,FL_ALIGN_RIGHT,NULL,0); + }; + if ((maxdbr>MIN_DB-20)){ + snprintf((char *)&tmpstr,10,"%ddB",(int)maxdbl); + fl_draw(tmpstr,ox+VULENX+1,oy+ly/2+1,lx-VULENX-1,VULENY,FL_ALIGN_RIGHT,NULL,0); + }; } void VUMeter::draw_part() { #define MIN_DB (-48) -int ox=x(); int oy=y(); int lx=w(); int ly=h(); - -if (!active_r()){ - pthread_mutex_lock(&master->mutex); - int fakedb=master->fakepeakpart[npart]; - pthread_mutex_unlock(&master->mutex); - fl_rectf(ox,oy,lx,ly,140,140,140); - if (fakedb>0){ - fakedb=(int)(fakedb/255.0*ly)+4; - fl_rectf(ox+2,oy+ly-fakedb,lx-4,fakedb,0,0,0); + int ox=x(); int oy=y(); int lx=w(); int ly=h(); + + if (!active_r()){ + pthread_mutex_lock(&master->mutex); + int fakedb=master->fakepeakpart[npart]; + pthread_mutex_unlock(&master->mutex); + fl_rectf(ox,oy,lx,ly,140,140,140); + if (fakedb>0){ + fakedb=(int)(fakedb/255.0*ly)+4; + fl_rectf(ox+2,oy+ly-fakedb,lx-4,fakedb,0,0,0); + }; + + return; }; - return; -}; - -//draw the vu lines -pthread_mutex_lock(&master->mutex); - REALTYPE db=rap2dB(master->vuoutpeakpart[npart]); -pthread_mutex_unlock(&master->mutex); - -db=(MIN_DB-db)/MIN_DB; -if (db<0.0) db=0.0; - else if (db>1.0) db=1.0; - -db*=ly-2; - -int idb=(int) db; - -fl_rectf(ox,oy+ly-idb,lx,idb,0,200,255); -fl_rectf(ox,oy,lx,ly-idb,0,0,0); - - -//draw the scales -REALTYPE tmp=ly*1.0/MIN_DB; - for (int i=1;i<1-MIN_DB;i++){ - int ty=ly+(int) (tmp*i); - if (i%5==0) fl_rectf(ox,oy+ly-ty,lx,1,0,160,200); - if (i%10==0) fl_rectf(ox,oy+ly-ty,lx,1,0,230,240); -}; + //draw the vu lines + pthread_mutex_lock(&master->mutex); + REALTYPE db=rap2dB(master->vuoutpeakpart[npart]); + pthread_mutex_unlock(&master->mutex); + + db=(MIN_DB-db)/MIN_DB; + if (db<0.0) db=0.0; + else if (db>1.0) db=1.0; + + db*=ly-2; + + int idb=(int) db; + + fl_rectf(ox,oy+ly-idb,lx,idb,0,200,255); + fl_rectf(ox,oy,lx,ly-idb,0,0,0); + + + //draw the scales + REALTYPE tmp=ly*1.0/MIN_DB; + for (int i=1;i<1-MIN_DB;i++){ + int ty=ly+(int) (tmp*i); + if (i%5==0) fl_rectf(ox,oy+ly-ty,lx,1,0,160,200); + if (i%10==0) fl_rectf(ox,oy+ly-ty,lx,1,0,230,240); + }; } void VUMeter::draw() { if (npart>=0) draw_part(); - else draw_master(); + else draw_master(); } void VUMeter::tickdraw(VUMeter *o) { @@ -175,47 +175,47 @@ void VUMeter::tickdraw(VUMeter *o) { void VUMeter::tick(void *v) { tickdraw((VUMeter *) v); -Fl::add_timeout(1.0/25.0,tick,v);//25 fps + Fl::add_timeout(1.0/25.0,tick,v);//25 fps } int VUMeter::handle(int event) { switch(event){ - case FL_SHOW: - tick(this); - break; - case FL_HIDE: - Fl::remove_timeout(tick,this); - break; - case FL_PUSH: - if (npart>=0) break; - pthread_mutex_lock(&master->mutex); - master->vuresetpeaks(); - pthread_mutex_unlock(&master->mutex); - break; -}; -return(1); + case FL_SHOW: + tick(this); + break; + case FL_HIDE: + Fl::remove_timeout(tick,this); + break; + case FL_PUSH: + if (npart>=0) break; + pthread_mutex_lock(&master->mutex); + master->vuresetpeaks(); + pthread_mutex_unlock(&master->mutex); + break; + }; + return(1); } SysEffSend::SysEffSend(int x,int y, int w, int h, const char *label):WidgetPDial(x,y,w,h,label) { master=NULL; -neff1=0; -neff2=0; + neff1=0; + neff2=0; } void SysEffSend::init(Master *master_,int neff1_,int neff2_) { neff1=neff1_; -neff2=neff2_; -master=master_; -minimum(0); -maximum(127); -step(1); -labelfont(1); -labelsize(10); -align(FL_ALIGN_TOP); - -value(master->Psysefxsend[neff1][neff2]); -char tmp[20];snprintf(tmp,20,"%d->%d",neff1+1,neff2+1); -this->copy_label(tmp); + neff2=neff2_; + master=master_; + minimum(0); + maximum(127); + step(1); + labelfont(1); + labelsize(10); + align(FL_ALIGN_TOP); + + value(master->Psysefxsend[neff1][neff2]); + char tmp[20];snprintf(tmp,20,"%d->%d",neff1+1,neff2+1); + this->copy_label(tmp); } SysEffSend::~SysEffSend() { @@ -224,10 +224,10 @@ SysEffSend::~SysEffSend() { int SysEffSend::handle(int event) { if ((event==FL_PUSH) || (event==FL_DRAG)){ - master->setPsysefxsend(neff1,neff2,(int) value()); -}; - -return(WidgetPDial::handle(event)); + master->setPsysefxsend(neff1,neff2,(int) value()); + }; + + return(WidgetPDial::handle(event)); } void Panellistitem::cb_partname_i(Fl_Button*, void*) { @@ -391,42 +391,42 @@ Fl_Group* Panellistitem::make_window() { Panellistitem::Panellistitem(int x,int y, int w, int h, const char *label):Fl_Group(x,y,w,h,label) { npart=0; -master=NULL; -bankui=NULL; + master=NULL; + bankui=NULL; } void Panellistitem::init(Master *master_, int npart_,BankUI *bankui_) { npart=npart_; -master=master_; -bankui=bankui_; - -make_window(); -panellistitem->show(); -end(); + master=master_; + bankui=bankui_; + + make_window(); + panellistitem->show(); + end(); } void Panellistitem::refresh() { partenabled->value(master->part[npart]->Penabled); -if (master->part[npart]->Penabled!=0) panellistitemgroup->activate(); - else panellistitemgroup->deactivate(); - -partvolume->value(master->part[npart]->Pvolume); -partpanning->value(master->part[npart]->Ppanning); -partrcv->value(master->part[npart]->Prcvchn); - -partname->label((char *)master->part[npart]->Pname); - -if ((int)bankui->cbwig->value()!=(npart+1)) - panellistitemgroup->color(fl_rgb_color(160,160,160)); -else - panellistitemgroup->color(fl_rgb_color(50,190,240)); - -panellistitemgroup->redraw(); + if (master->part[npart]->Penabled!=0) panellistitemgroup->activate(); + else panellistitemgroup->deactivate(); + + partvolume->value(master->part[npart]->Pvolume); + partpanning->value(master->part[npart]->Ppanning); + partrcv->value(master->part[npart]->Prcvchn); + + partname->label((char *)master->part[npart]->Pname); + + if ((int)bankui->cbwig->value()!=(npart+1)) + panellistitemgroup->color(fl_rgb_color(160,160,160)); + else + panellistitemgroup->color(fl_rgb_color(50,190,240)); + + panellistitemgroup->redraw(); } Panellistitem::~Panellistitem() { panellistitem->hide(); -//delete(panellistitem); + //delete(panellistitem); } void MasterUI::cb_masterwindow_i(Fl_Double_Window*, void*) { @@ -2295,210 +2295,210 @@ de to make simple the learning/using it."); void MasterUI::updatesendwindow() { for (int neff1=0;neff1value(master->Psysefxsend[neff1][neff2]); + for (int neff2=neff1+1;neff2value(master->Psysefxsend[neff1][neff2]); } void MasterUI::updatepanel() { for (int npart=0;npartrefresh(); -}; + panellistitem[npart]->refresh(); + }; } void MasterUI::setfilelabel(const char *filename) { if (filename!=NULL) snprintf(&masterwindowlabel[0],100,"%s - ZynAddSubFX",fl_filename_name(filename)); - else snprintf(&masterwindowlabel[0],100,"%s","ZynAddSubFX"); -masterwindowlabel[99]='\0'; -masterwindow->label(&masterwindowlabel[0]); -simplemasterwindow->label(&masterwindowlabel[0]); + else snprintf(&masterwindowlabel[0],100,"%s","ZynAddSubFX"); + masterwindowlabel[99]='\0'; + masterwindow->label(&masterwindowlabel[0]); + simplemasterwindow->label(&masterwindowlabel[0]); } MasterUI::MasterUI(Master *master_,int *exitprogram_) { master=master_; -exitprogram=exitprogram_; -ninseff=0; -nsyseff=0; -npart=0; - -for (int i=0;imicrotonal); -virkeyboard=new VirKeyboard(master); -bankui=new BankUI(master,&npart); -configui=new ConfigUI(); -sequi=new SeqUI(master); - -make_window(); -#ifdef OS_WINDOWS -masterwindow->icon((char *)LoadIcon(GetModuleHandle(NULL), "zynaddsubfx_icon")); -#endif -presetsui=new PresetsUI(); -setfilelabel(NULL); -swapefftype=0; -simplerefresh(); + exitprogram=exitprogram_; + ninseff=0; + nsyseff=0; + npart=0; + + for (int i=0;imicrotonal); + virkeyboard=new VirKeyboard(master); + bankui=new BankUI(master,&npart); + configui=new ConfigUI(); + sequi=new SeqUI(master); + + make_window(); + #ifdef OS_WINDOWS + masterwindow->icon((char *)LoadIcon(GetModuleHandle(NULL), "zynaddsubfx_icon")); + #endif + presetsui=new PresetsUI(); + setfilelabel(NULL); + swapefftype=0; + simplerefresh(); } MasterUI::~MasterUI() { masterwindow->hide(); -delete masterwindow; -simplemasterwindow->hide(); -delete simplemasterwindow; -aboutwindow->hide(); -delete aboutwindow; -syseffsendwindow->hide(); -delete syseffsendwindow; - -delete virkeyboard; -delete microtonalui; -delete bankui; -delete configui; -delete sequi; - -delete presetsui; -delete panelwindow; -delete selectuiwindow; + delete masterwindow; + simplemasterwindow->hide(); + delete simplemasterwindow; + aboutwindow->hide(); + delete aboutwindow; + syseffsendwindow->hide(); + delete syseffsendwindow; + + delete virkeyboard; + delete microtonalui; + delete bankui; + delete configui; + delete sequi; + + delete presetsui; + delete panelwindow; + delete selectuiwindow; } void MasterUI::showUI() { switch (config.cfg.UserInterfaceMode){ - case 0:selectuiwindow->show(); - break; - case 1:masterwindow->show(); - break; - case 2:simplemasterwindow->show(); - break; -}; + case 0:selectuiwindow->show(); + break; + case 1:masterwindow->show(); + break; + case 2:simplemasterwindow->show(); + break; + }; } void MasterUI::simplerefresh() { partenabled->value(master->part[npart]->Penabled); -if (master->part[npart]->Penabled!=0) simplelistitemgroup->activate(); - else simplelistitemgroup->deactivate(); - -partvolume->value(master->part[npart]->Pvolume); -partpanning->value(master->part[npart]->Ppanning); -partrcv->value(master->part[npart]->Prcvchn); - -if (master->part[npart]->Pname[0]!=0) partname->label((char *)master->part[npart]->Pname); - else partname->label("Click here to load a instrument"); - -simplelistitemgroup->redraw(); -simplepartportamento->value(master->part[npart]->ctl.portamento.portamento); -simpleminkcounter->value(master->part[npart]->Pminkey); -simplemaxkcounter->value(master->part[npart]->Pmaxkey); - -simplepartkeyshiftcounter->value(master->part[npart]->Pkeyshift-64); -simplesyseffsend->value(master->Psysefxvol[nsyseff][npart]); + if (master->part[npart]->Penabled!=0) simplelistitemgroup->activate(); + else simplelistitemgroup->deactivate(); + + partvolume->value(master->part[npart]->Pvolume); + partpanning->value(master->part[npart]->Ppanning); + partrcv->value(master->part[npart]->Prcvchn); + + if (master->part[npart]->Pname[0]!=0) partname->label((char *)master->part[npart]->Pname); + else partname->label("Click here to load a instrument"); + + simplelistitemgroup->redraw(); + simplepartportamento->value(master->part[npart]->ctl.portamento.portamento); + simpleminkcounter->value(master->part[npart]->Pminkey); + simplemaxkcounter->value(master->part[npart]->Pmaxkey); + + simplepartkeyshiftcounter->value(master->part[npart]->Pkeyshift-64); + simplesyseffsend->value(master->Psysefxvol[nsyseff][npart]); } void MasterUI::do_new_master() { if (fl_choice("Clear *ALL* the parameters ?","No","Yes",NULL)){ - delete microtonalui; - - pthread_mutex_lock(&master->mutex); - master->defaults(); - pthread_mutex_unlock(&master->mutex); - - npartcounter->value(1); - refresh_master_ui(); - -}; - -updatepanel(); + delete microtonalui; + + pthread_mutex_lock(&master->mutex); + master->defaults(); + pthread_mutex_unlock(&master->mutex); + + npartcounter->value(1); + refresh_master_ui(); + + }; + + updatepanel(); } void MasterUI::do_load_master(const char* file ) { const char *filename; - if (file == NULL) { - filename=fl_file_chooser("Open:","({*.xmz})",NULL,0); - if (filename==NULL) return; - } - else { - filename = file; - } - - -pthread_mutex_lock(&master->mutex); - //clear all parameters - master->defaults(); - - //load the data - int result=master->loadXML(filename); -pthread_mutex_unlock(&master->mutex); -master->applyparameters(); - -npartcounter->value(1); -refresh_master_ui(); -updatepanel(); -if (result>=0) setfilelabel(filename); - - -if (result==-10) fl_alert("Error: Could not load the file\nbecause it is not a zynaddsubfx parameters file."); - else if (result<0) fl_alert("Error: Could not load the file."); + if (file == NULL) { + filename=fl_file_chooser("Open:","({*.xmz})",NULL,0); + if (filename==NULL) return; + } + else { + filename = file; + } + + + pthread_mutex_lock(&master->mutex); + //clear all parameters + master->defaults(); + + //load the data + int result=master->loadXML(filename); + pthread_mutex_unlock(&master->mutex); + master->applyparameters(); + + npartcounter->value(1); + refresh_master_ui(); + updatepanel(); + if (result>=0) setfilelabel(filename); + + + if (result==-10) fl_alert("Error: Could not load the file\nbecause it is not a zynaddsubfx parameters file."); + else if (result<0) fl_alert("Error: Could not load the file."); } void MasterUI::do_save_master(const char* file ) { const char *filename; -char *tmp; - int result=0; - if (file == NULL) { - tmp=fl_file_chooser("Save:","({*.xmz})",NULL,0); - if (tmp==NULL) return; - tmp=fl_filename_setext(tmp,".xmz"); - filename=tmp; - result=fileexists(tmp); - if (result) { - result=0; - if (!fl_choice("The file exists. Overwrite it?","No","Yes",NULL)) return; - + char *tmp; + int result=0; + if (file == NULL) { + tmp=fl_file_chooser("Save:","({*.xmz})",NULL,0); + if (tmp==NULL) return; + tmp=fl_filename_setext(tmp,".xmz"); + filename=tmp; + result=fileexists(tmp); + if (result) { + result=0; + if (!fl_choice("The file exists. Overwrite it?","No","Yes",NULL)) return; + + } } - } - else { - filename = file; - } - - -pthread_mutex_lock(&master->mutex); -result=master->saveXML(filename); -pthread_mutex_unlock(&master->mutex); - -if (result<0) fl_alert("Error: Could not save the file."); - else setfilelabel(filename); - -updatepanel(); + else { + filename = file; + } + + + pthread_mutex_lock(&master->mutex); + result=master->saveXML(filename); + pthread_mutex_unlock(&master->mutex); + + if (result<0) fl_alert("Error: Could not save the file."); + else setfilelabel(filename); + + updatepanel(); } void MasterUI::refresh_master_ui() { ninseff=0; -nsyseff=0; -npart=0; - -//the Master UI -npartcounter->do_callback(); -syseffnocounter->do_callback(); -inseffnocounter->do_callback(); -masterkeyshiftcounter->value(master->Pkeyshift-64); -mastervolumedial->value(master->Pvolume); -globalfinedetuneslider->value(master->microtonal.Pglobalfinedetune); -microtonalui=new MicrotonalUI(&master->microtonal); -nrpnbutton->value(master->ctl.NRPN.receive); -updatesendwindow(); -updatepanel(); - -//the simle MasterUI -simplenpartcounter->value(1); -simplesyseffnocounter->value(1); -simpleinseffnocounter->value(1); -simplenpartcounter->do_callback(); -simplesyseffnocounter->do_callback(); -simpleinseffnocounter->do_callback(); -simplemasterkeyshiftcounter->value(master->Pkeyshift-64); -simplemastervolumedial->value(master->Pvolume); -simpleglobalfinedetuneslider->value(master->microtonal.Pglobalfinedetune); -virkeys->midich=master->part[npart]->Prcvchn; - -simplerefresh(); -bankui->hide(); + nsyseff=0; + npart=0; + + //the Master UI + npartcounter->do_callback(); + syseffnocounter->do_callback(); + inseffnocounter->do_callback(); + masterkeyshiftcounter->value(master->Pkeyshift-64); + mastervolumedial->value(master->Pvolume); + globalfinedetuneslider->value(master->microtonal.Pglobalfinedetune); + microtonalui=new MicrotonalUI(&master->microtonal); + nrpnbutton->value(master->ctl.NRPN.receive); + updatesendwindow(); + updatepanel(); + + //the simle MasterUI + simplenpartcounter->value(1); + simplesyseffnocounter->value(1); + simpleinseffnocounter->value(1); + simplenpartcounter->do_callback(); + simplesyseffnocounter->do_callback(); + simpleinseffnocounter->do_callback(); + simplemasterkeyshiftcounter->value(master->Pkeyshift-64); + simplemastervolumedial->value(master->Pvolume); + simpleglobalfinedetuneslider->value(master->microtonal.Pglobalfinedetune); + virkeys->midich=master->part[npart]->Prcvchn; + + simplerefresh(); + bankui->hide(); } diff --git a/plugins/zynaddsubfx/src/UI/MicrotonalUI.cc b/plugins/zynaddsubfx/src/UI/MicrotonalUI.cc index c37e08155..a58bbf021 100644 --- a/plugins/zynaddsubfx/src/UI/MicrotonalUI.cc +++ b/plugins/zynaddsubfx/src/UI/MicrotonalUI.cc @@ -406,43 +406,43 @@ pings\""); void MicrotonalUI::updateTuningsInput() { char *tmpbuf=new char[100]; - -tuningsinput->cut(0,tuningsinput->maximum_size()); - -for (int i=0;igetoctavesize();i++){ - if (i!=0) tuningsinput->insert("\n"); - microtonal->tuningtoline(i,tmpbuf,100); - tuningsinput->insert(tmpbuf); -}; - -delete []tmpbuf; + + tuningsinput->cut(0,tuningsinput->maximum_size()); + + for (int i=0;igetoctavesize();i++){ + if (i!=0) tuningsinput->insert("\n"); + microtonal->tuningtoline(i,tmpbuf,100); + tuningsinput->insert(tmpbuf); + }; + + delete []tmpbuf; } void MicrotonalUI::updateMappingInput() { char *tmpbuf=new char[100]; - -mappinginput->cut(0,tuningsinput->maximum_size()); - -for (int i=0;iPmapsize;i++){ - if (i!=0) mappinginput->insert("\n"); - if ((microtonal->Pmapping[i])==-1) - snprintf(tmpbuf,100,"x"); - else snprintf(tmpbuf,100,"%d",microtonal->Pmapping[i]); - mappinginput->insert(tmpbuf); -}; - -delete []tmpbuf; + + mappinginput->cut(0,tuningsinput->maximum_size()); + + for (int i=0;iPmapsize;i++){ + if (i!=0) mappinginput->insert("\n"); + if ((microtonal->Pmapping[i])==-1) + snprintf(tmpbuf,100,"x"); + else snprintf(tmpbuf,100,"%d",microtonal->Pmapping[i]); + mappinginput->insert(tmpbuf); + }; + + delete []tmpbuf; } MicrotonalUI::MicrotonalUI(Microtonal *microtonal_) { microtonal=microtonal_; - -make_window(); + + make_window(); } MicrotonalUI::~MicrotonalUI() { microtonaluiwindow->hide(); -delete(microtonaluiwindow); + delete(microtonaluiwindow); } void MicrotonalUI::show() { @@ -451,13 +451,13 @@ void MicrotonalUI::show() { void MicrotonalUI::apply() { int err=microtonal->texttotunings(tuningsinput->value()); -if (err>=0) fl_alert("Parse Error: The input may contain only numbers (like 232.59)\n or divisions (like 121/64)."); -if (err==-2) fl_alert("Parse Error: The input is empty."); -octavesizeoutput->do_callback(); - -microtonal->texttomapping(mappinginput->value()); -mapsizeoutput->do_callback(); -anotecounter->do_callback(); - -//applybutton->color(FL_GRAY); + if (err>=0) fl_alert("Parse Error: The input may contain only numbers (like 232.59)\n or divisions (like 121/64)."); + if (err==-2) fl_alert("Parse Error: The input is empty."); + octavesizeoutput->do_callback(); + + microtonal->texttomapping(mappinginput->value()); + mapsizeoutput->do_callback(); + anotecounter->do_callback(); + + //applybutton->color(FL_GRAY); } diff --git a/plugins/zynaddsubfx/src/UI/OscilGenUI.cc b/plugins/zynaddsubfx/src/UI/OscilGenUI.cc index 7bcb5ad3e..2925a1e14 100644 --- a/plugins/zynaddsubfx/src/UI/OscilGenUI.cc +++ b/plugins/zynaddsubfx/src/UI/OscilGenUI.cc @@ -14,174 +14,175 @@ OscilSpectrum::OscilSpectrum(int x,int y, int w, int h, const char *label):Fl_Bo void OscilSpectrum::init(OscilGen *oscil_,int oscbase_,Master *master_) { oscil=oscil_; -oscbase=oscbase_; -master=master_; + oscbase=oscbase_; + master=master_; } void OscilSpectrum::draw() { int ox=x(),oy=y(),lx=w(),ly=h(),i; -const int maxdb=60;//must be multiple of 10 -int GX=2; -int n=lx/GX-1; -if (n>OSCIL_SIZE/2) n=OSCIL_SIZE/2; - -REALTYPE x; -REALTYPE* spc=new REALTYPE[n]; -for (i=0;imutex); -if (oscbase==0) oscil->getspectrum(n,spc,0); - else oscil->getspectrum(n,spc,1); -pthread_mutex_unlock(&master->mutex); - -//normalize -REALTYPE max=0; -for (i=0;iactive_r()) fl_color(this->parent()->selection_color()); - else fl_color(this->parent()->color()); -fl_line_style(FL_DOT); - -for (i=1;iactive_r()) fl_color(this->parent()->labelcolor()); - else fl_color(this->parent()->color()); -fl_line_style(0); - -//draws the spectrum -for (i=0;idB2rap(-maxdb)) x=rap2dB(x)/maxdb+1; - else x=0; - - int val=(int) ((ly-2)*x); - if (val>0) fl_line(ox+tmp,oy+ly-2-val,ox+tmp,oy+ly-2); -} -delete [] spc; + const int maxdb=60;//must be multiple of 10 + int GX=2; + int n=lx/GX-1; + if (n>OSCIL_SIZE/2) n=OSCIL_SIZE/2; + + REALTYPE x; + REALTYPE* spc=new REALTYPE[n]; + for (i=0;imutex); + if (oscbase==0) oscil->getspectrum(n,spc,0); + else oscil->getspectrum(n,spc,1); + pthread_mutex_unlock(&master->mutex); + + //normalize + REALTYPE max=0; + for (i=0;iactive_r()) fl_color(this->parent()->selection_color()); + else fl_color(this->parent()->color()); + fl_line_style(FL_DOT); + + for (i=1;iactive_r()) fl_color(this->parent()->labelcolor()); + else fl_color(this->parent()->color()); + fl_line_style(0); + + //draws the spectrum + for (i=0;idB2rap(-maxdb)) x=rap2dB(x)/maxdb+1; + else x=0; + + int val=(int) ((ly-2)*x); + if (val>0) fl_line(ox+tmp,oy+ly-2-val,ox+tmp,oy+ly-2); + } + delete [] spc; } PSlider::PSlider(int x,int y, int w, int h, const char *label):Fl_Slider(x,y,w,h,label) { + ; } int PSlider::handle(int event) { int X=x(),Y=y(),W=w(),H=h(); - -if ((!Fl::event_buttons())|| (event==0)||(Fl::event_shift()==0)) return(Fl_Slider::handle(event)); - -if (!Fl::event_inside(X,Y,W,H)) { - if (event==FL_DRAG){ - Fl_Slider::handle(FL_RELEASE); - Fl_Slider::handle(FL_LEAVE); - deactivate(); - activate(); - return(1); - }else{ - return(Fl_Slider::handle(event)); - }; -} else { - //Fl_Slider::handle(FL_FOCUS); - Fl_Slider::handle(FL_PUSH); -}; - -return(1); + + if ((!Fl::event_buttons())|| (event==0)||(Fl::event_shift()==0)) return(Fl_Slider::handle(event)); + + if (!Fl::event_inside(X,Y,W,H)) { + if (event==FL_DRAG){ + Fl_Slider::handle(FL_RELEASE); + Fl_Slider::handle(FL_LEAVE); + deactivate(); + activate(); + return(1); + }else{ + return(Fl_Slider::handle(event)); + }; + } else { + //Fl_Slider::handle(FL_FOCUS); + Fl_Slider::handle(FL_PUSH); + }; + + return(1); } Oscilloscope::Oscilloscope(int x,int y, int w, int h, const char *label):Fl_Box(x,y,w,h,label) { oscil=NULL; -phase=64; -oscbase=0; + phase=64; + oscbase=0; } void Oscilloscope::init(OscilGen *oscil_,Master *master_) { oscil=oscil_; -master=master_; + master=master_; } void Oscilloscope::init(OscilGen *oscil_,int oscbase_,Master *master_) { oscil=oscil_; -oscbase=oscbase_; -master=master_; + oscbase=oscbase_; + master=master_; } void Oscilloscope::init(OscilGen *oscil_,int oscbase_,int phase_,Master *master_) { oscil=oscil_; -oscbase=oscbase_; -phase=phase_; -master=master_; + oscbase=oscbase_; + phase=phase_; + master=master_; } void Oscilloscope::draw() { int ox=x(),oy=y(),lx=w(),ly=h()-1,i; -REALTYPE smps[OSCIL_SIZE]; -pthread_mutex_lock(&master->mutex); -if (oscbase==0) oscil->get(smps,-1.0); - else oscil->getcurrentbasefunction(smps); -pthread_mutex_unlock(&master->mutex); - -if (damage()!=1){ - fl_color(0,0,0); - fl_rectf(ox,oy,lx,ly); -}; - -//normalize -REALTYPE max=0; -for (i=0;iactive_r()) fl_color(this->parent()->labelcolor()); - else fl_color(this->parent()->color()); -int GX=16;if (lxactive_r()) fl_color(this->parent()->selection_color()); - else fl_color(this->parent()->labelcolor()); -int lw=1; -//if ((lx<135)||(ly<135)) lw=1; -fl_line_style(0,lw); -int ph=(int)((phase-64.0)/128.0*OSCIL_SIZE+OSCIL_SIZE); -for (i=1;imutex); + if (oscbase==0) oscil->get(smps,-1.0); + else oscil->getcurrentbasefunction(smps); + pthread_mutex_unlock(&master->mutex); + + if (damage()!=1){ + fl_color(0,0,0); + fl_rectf(ox,oy,lx,ly); + }; + + //normalize + REALTYPE max=0; + for (i=0;iactive_r()) fl_color(this->parent()->labelcolor()); + else fl_color(this->parent()->color()); + int GX=16;if (lxactive_r()) fl_color(this->parent()->selection_color()); + else fl_color(this->parent()->labelcolor()); + int lw=1; + //if ((lx<135)||(ly<135)) lw=1; + fl_line_style(0,lw); + int ph=(int)((phase-64.0)/128.0*OSCIL_SIZE+OSCIL_SIZE); + for (i=1;ishow(); + n=n_; + display=display_; + master=master_; + oldosc=oldosc_; + cbwidget=cbwidget_; + applybutton=applybutton_; + make_window(); + end(); + harmonic->show(); } void Oscilharmonic::refresh() { mag->value(127-oscil->Phmag[n]); -phase->value(oscil->Phphase[n]); - -if (oscil->Phmag[n]==64) mag->selection_color(0); - else mag->selection_color(222); + phase->value(oscil->Phphase[n]); + + if (oscil->Phmag[n]==64) mag->selection_color(0); + else mag->selection_color(222); } Oscilharmonic::~Oscilharmonic() { harmonic->hide(); -//delete(harmonic); + //delete(harmonic); } void OscilEditor::cb_applybutton_i(Fl_Button*, void*) { @@ -1330,80 +1331,80 @@ Fl_Double_Window* OscilEditor::make_window() { OscilEditor::OscilEditor(OscilGen *oscil_,Fl_Widget *oldosc_,Fl_Widget *cbwidget_,Fl_Widget *cbapplywidget_,Master *master_) { oscil=oscil_; -oldosc=oldosc_; -cbwidget=cbwidget_; -cbapplywidget=cbapplywidget_; -master=master_; - -make_window(); - -refresh(); -osceditUI->show(); + oldosc=oldosc_; + cbwidget=cbwidget_; + cbapplywidget=cbapplywidget_; + master=master_; + + make_window(); + + refresh(); + osceditUI->show(); } OscilEditor::~OscilEditor() { osceditUI->hide(); -//for (int i=0;ivalue(oscil->Phmagtype); -rndslider->value(oscil->Prand-64); - -hrndtype->value(oscil->Pamprandtype); -hrnddial->value(oscil->Pamprandpower); - -bftype->value(oscil->Pcurrentbasefunc); -bfparval->value(oscil->Pbasefuncpar-64); -bfslider->value(oscil->Pbasefuncpar-64); - -bfmodtype->value(oscil->Pbasefuncmodulation); -bfmodpar1->value(oscil->Pbasefuncmodulationpar1); -bfmodpar2->value(oscil->Pbasefuncmodulationpar2); -bfmodpar3->value(oscil->Pbasefuncmodulationpar3); - -wshbutton->value(oscil->Pwaveshapingfunction); -wsparval->value(oscil->Pwaveshaping-64); -wshpar->value(oscil->Pwaveshaping-64); - -fltbutton->value(oscil->Pfiltertype); -filtervalue1->value(oscil->Pfilterpar1); -filtervalue2->value(oscil->Pfilterpar2); -filterpref->value(oscil->Pfilterbeforews); - -modtype->value(oscil->Pmodulation); -modpar1->value(oscil->Pmodulationpar1); -modpar2->value(oscil->Pmodulationpar2); -modpar3->value(oscil->Pmodulationpar3); - -sabutton->value(oscil->Psatype); -sadjpar->value(oscil->Psapar); - -harmonicshiftcounter->value(oscil->Pharmonicshift); -harmonicshiftpre->value(oscil->Pharmonicshiftfirst); - -adhrtype->value(oscil->Padaptiveharmonics); -adhrbf->value(oscil->Padaptiveharmonicsbasefreq); -adhrpow->value(oscil->Padaptiveharmonicspower); -adhrtype->value(oscil->Padaptiveharmonicspar); - -for (int i=0;irefresh(); - -pthread_mutex_lock(&master->mutex); - oscil->prepare(); -pthread_mutex_unlock(&master->mutex); - -basefuncdisplaygroup->redraw(); -redrawoscil(); + rndslider->value(oscil->Prand-64); + + hrndtype->value(oscil->Pamprandtype); + hrnddial->value(oscil->Pamprandpower); + + bftype->value(oscil->Pcurrentbasefunc); + bfparval->value(oscil->Pbasefuncpar-64); + bfslider->value(oscil->Pbasefuncpar-64); + + bfmodtype->value(oscil->Pbasefuncmodulation); + bfmodpar1->value(oscil->Pbasefuncmodulationpar1); + bfmodpar2->value(oscil->Pbasefuncmodulationpar2); + bfmodpar3->value(oscil->Pbasefuncmodulationpar3); + + wshbutton->value(oscil->Pwaveshapingfunction); + wsparval->value(oscil->Pwaveshaping-64); + wshpar->value(oscil->Pwaveshaping-64); + + fltbutton->value(oscil->Pfiltertype); + filtervalue1->value(oscil->Pfilterpar1); + filtervalue2->value(oscil->Pfilterpar2); + filterpref->value(oscil->Pfilterbeforews); + + modtype->value(oscil->Pmodulation); + modpar1->value(oscil->Pmodulationpar1); + modpar2->value(oscil->Pmodulationpar2); + modpar3->value(oscil->Pmodulationpar3); + + sabutton->value(oscil->Psatype); + sadjpar->value(oscil->Psapar); + + harmonicshiftcounter->value(oscil->Pharmonicshift); + harmonicshiftpre->value(oscil->Pharmonicshiftfirst); + + adhrtype->value(oscil->Padaptiveharmonics); + adhrbf->value(oscil->Padaptiveharmonicsbasefreq); + adhrpow->value(oscil->Padaptiveharmonicspower); + adhrtype->value(oscil->Padaptiveharmonicspar); + + for (int i=0;irefresh(); + + pthread_mutex_lock(&master->mutex); + oscil->prepare(); + pthread_mutex_unlock(&master->mutex); + + basefuncdisplaygroup->redraw(); + redrawoscil(); } void OscilEditor::redrawoscil() { oscildisplaygroup->redraw(); -oldosc->redraw(); -if (cbwidget!=NULL) { - cbwidget->do_callback(); - applybutton->color(FL_RED); - applybutton->redraw(); -}; + oldosc->redraw(); + if (cbwidget!=NULL) { + cbwidget->do_callback(); + applybutton->color(FL_RED); + applybutton->redraw(); + }; } diff --git a/plugins/zynaddsubfx/src/UI/PADnoteUI.cc b/plugins/zynaddsubfx/src/UI/PADnoteUI.cc index 0478e4cb1..a2abb9a05 100644 --- a/plugins/zynaddsubfx/src/UI/PADnoteUI.cc +++ b/plugins/zynaddsubfx/src/UI/PADnoteUI.cc @@ -12,63 +12,63 @@ PADnoteHarmonicProfile::PADnoteHarmonicProfile(int x,int y, int w, int h, const void PADnoteHarmonicProfile::init(PADnoteParameters *pars,Master *master_) { master=master_; -this->pars=pars; + this->pars=pars; } void PADnoteHarmonicProfile::draw() { int ox=x(),oy=y(),lx=w(),ly=h(); -if (!visible()) return; -REALTYPE smps[lx]; - -REALTYPE realbw=pars->getprofile(smps,lx); -bool active=active_r(); - -//draw the equivalent bandwidth -if (active) fl_color(220,220,220); - else fl_color(160,165,165); -fl_line_style(0); -int rbw=(int)(realbw*(lx-1.0)/2.0); -for (int i=lx/2-rbw;i<(lx/2+rbw);i++) fl_line(ox+i,oy,ox+i,oy+ly-1); - -fl_line_style(0); -if (active) fl_color(200,200,200); - else fl_color(160,160,160); -for (int i=1;i<10;i++){ - int kx=(int)(lx/10.0*i); - fl_line(ox+kx,oy,ox+kx,oy+ly-1); -}; -for (int i=1;i<5;i++){ - int ky=(int)(ly/5.0*i); - fl_line(ox,oy+ly-ky,ox+lx,oy+ly-ky-1); -}; - - -fl_color(120,120,120); -fl_line_style(FL_DOT); -fl_line(ox+lx/2,oy,ox+lx/2,oy+ly); - -//draw the graph -fl_line_style(0); -int old=0; -for (int i=0;i0) fl_line(ox+i-1,oy+ly-2-old,ox+i,oy+ly-2-val); - old=val; -}; - - -fl_line_style(FL_DASH); -if (active) fl_color(0,100,220); - else fl_color(150,160,170); -fl_line(ox+lx/2-rbw,oy,ox+lx/2-rbw,oy+ly-1); -fl_line(ox+lx/2+rbw,oy,ox+lx/2+rbw,oy+ly-1); - -fl_line_style(0); + if (!visible()) return; + REALTYPE smps[lx]; + + REALTYPE realbw=pars->getprofile(smps,lx); + bool active=active_r(); + + //draw the equivalent bandwidth + if (active) fl_color(220,220,220); + else fl_color(160,165,165); + fl_line_style(0); + int rbw=(int)(realbw*(lx-1.0)/2.0); + for (int i=lx/2-rbw;i<(lx/2+rbw);i++) fl_line(ox+i,oy,ox+i,oy+ly-1); + + fl_line_style(0); + if (active) fl_color(200,200,200); + else fl_color(160,160,160); + for (int i=1;i<10;i++){ + int kx=(int)(lx/10.0*i); + fl_line(ox+kx,oy,ox+kx,oy+ly-1); + }; + for (int i=1;i<5;i++){ + int ky=(int)(ly/5.0*i); + fl_line(ox,oy+ly-ky,ox+lx,oy+ly-ky-1); + }; + + + fl_color(120,120,120); + fl_line_style(FL_DOT); + fl_line(ox+lx/2,oy,ox+lx/2,oy+ly); + + //draw the graph + fl_line_style(0); + int old=0; + for (int i=0;i0) fl_line(ox+i-1,oy+ly-2-old,ox+i,oy+ly-2-val); + old=val; + }; + + + fl_line_style(FL_DASH); + if (active) fl_color(0,100,220); + else fl_color(150,160,170); + fl_line(ox+lx/2-rbw,oy,ox+lx/2-rbw,oy+ly-1); + fl_line(ox+lx/2+rbw,oy,ox+lx/2+rbw,oy+ly-1); + + fl_line_style(0); } PADnoteOvertonePosition::PADnoteOvertonePosition(int x,int y, int w, int h, const char *label):Fl_Box(x,y,w,h,label) { @@ -77,89 +77,89 @@ PADnoteOvertonePosition::PADnoteOvertonePosition(int x,int y, int w, int h, cons void PADnoteOvertonePosition::init(PADnoteParameters *pars,Master *master_) { master=master_; -this->pars=pars; + this->pars=pars; } void PADnoteOvertonePosition::draw() { if (!visible()) return; -const int maxdb=60; - -int ox=x(),oy=y(),lx=w(),ly=h(); -const int maxharmonic=64; - - -for (int i=1;imutex); -pars->oscilgen->getspectrum(n,spc,0); -pthread_mutex_unlock(&master->mutex); - - -//normalize -REALTYPE max=0; -for (int i=0;igetNhr(i); - int kx=(int)(lx/(REALTYPE)maxharmonic*nhr); - if ((kx<0)||(kx>lx)) continue; - - spectrum[kx]=spc[i-1]/max+1e-9; - -}; - -fl_color(180,0,0); -fl_line_style(0); - -if (pars->Pmode==2){ - int old=0; - for (int i=1;i1e-10)||(i==(lx-1))){ - int delta=i-old; - REALTYPE val1=spectrum[old]; - REALTYPE val2=spectrum[i]; - - REALTYPE idelta=1.0/delta; - for (int j=0;jdB2rap(-maxdb)) x=rap2dB(x)/maxdb+1; - else continue; - int yy=(int)(x*ly); - fl_line(ox+i,oy+ly-1-yy,ox+i,oy+ly-1); - -}; + const int maxdb=60; + + int ox=x(),oy=y(),lx=w(),ly=h(); + const int maxharmonic=64; + + + for (int i=1;imutex); + pars->oscilgen->getspectrum(n,spc,0); + pthread_mutex_unlock(&master->mutex); + + + //normalize + REALTYPE max=0; + for (int i=0;igetNhr(i); + int kx=(int)(lx/(REALTYPE)maxharmonic*nhr); + if ((kx<0)||(kx>lx)) continue; + + spectrum[kx]=spc[i-1]/max+1e-9; + + }; + + fl_color(180,0,0); + fl_line_style(0); + + if (pars->Pmode==2){ + int old=0; + for (int i=1;i1e-10)||(i==(lx-1))){ + int delta=i-old; + REALTYPE val1=spectrum[old]; + REALTYPE val2=spectrum[i]; + + REALTYPE idelta=1.0/delta; + for (int j=0;jdB2rap(-maxdb)) x=rap2dB(x)/maxdb+1; + else continue; + int yy=(int)(x*ly); + fl_line(ox+i,oy+ly-1-yy,ox+i,oy+ly-1); + + }; } void PADnoteUI::cb__i(Fl_Tabs* o, void*) { @@ -690,10 +690,10 @@ void PADnoteUI::cb_export(Fl_Button* o, void* v) { PADnoteUI::PADnoteUI(PADnoteParameters *parameters,Master *master_) { pars=parameters; -master=master_; -oscui=NULL; -resui=new ResonanceUI(pars->resonance); -make_window(); + master=master_; + oscui=NULL; + resui=new ResonanceUI(pars->resonance); + make_window(); } Fl_Double_Window* PADnoteUI::make_window() { @@ -1403,102 +1403,102 @@ cy)"); void PADnoteUI::refresh() { volume->value(pars->PVolume); -vsns->value(pars->PAmpVelocityScaleFunction); -pan->value(pars->PPanning); - -stereo->value(pars->PStereo); - - -pstr->value(pars->PPunchStrength); -pt->value(pars->PPunchTime); -pstc->value(pars->PPunchStretch); -pvel->value(pars->PPunchVelocitySensing); - -detunevalueoutput->value(getdetune(pars->PDetuneType,0,pars->PDetune)); -detune->value(pars->PDetune-8192); - -int k=pars->PCoarseDetune/1024;if (k>=8) k-=16; -octave->value(k); - -detunetype->value(pars->PDetuneType-1); -k=pars->PCoarseDetune%1024;if (k>=512) k-=1024; -coarsedet->value(k); - -hz440->value(pars->Pfixedfreq); -fixedfreqetdial->value(pars->PfixedfreqET); - -amplfo->refresh(); -freqlfo->refresh(); -filterlfo->refresh(); - -ampenv->refresh(); -freqenv->refresh(); -filterenv->refresh(); -filterui->refresh(); - - -/* harmonic structure parametrs */ - -resui->refresh(); -if (oscui!=NULL) oscui->refresh(); - -hpbasetype->value(pars->Php.base.type); -hpbasepar1->value(pars->Php.base.par1); -hpfreqmult->value(pars->Php.freqmult); - -hpmpar1->value(pars->Php.modulator.par1); -hpmfreq->value(pars->Php.modulator.freq); -hpwidth->value(pars->Php.width); - -hponehalf->value(pars->Php.onehalf); -hpamptype->value(pars->Php.amp.type); -hpampmode->value(pars->Php.amp.mode); -hpamppar1->value(pars->Php.amp.par1); -hpamppar2->value(pars->Php.amp.par2); -hpautoscale->value(pars->Php.autoscale); - -bwdial->value(pars->Pbandwidth); -if (pars->Pmode==0){ - bwprofilegroup->activate(); - bwdial->activate(); - bwcents->activate(); - hprofile->activate(); - hprofile->color(54); - bwscale->activate(); -} else { - bwprofilegroup->deactivate(); - bwdial->deactivate(); - bwcents->deactivate(); - hprofile->deactivate(); - hprofile->color(48); - bwscale->activate(); -}; - -spectrummode->value(pars->Pmode); - -qbasenote->value(pars->Pquality.basenote); -qsmpoct->value(pars->Pquality.smpoct); -qoct->value(pars->Pquality.oct); -qsamplesize->value(pars->Pquality.samplesize); - -hrpostype->value(pars->Phrpos.type); -hrpospar1->value(pars->Phrpos.par1); -hrpospar2->value(pars->Phrpos.par2); -hrpospar3->value(pars->Phrpos.par3); - -hprofile->redraw(); -overtonepos->redraw(); - -osc->redraw(); -pars->applyparameters(true); -applybutton->color(FL_GRAY); -applybutton->parent()->redraw(); + vsns->value(pars->PAmpVelocityScaleFunction); + pan->value(pars->PPanning); + + stereo->value(pars->PStereo); + + + pstr->value(pars->PPunchStrength); + pt->value(pars->PPunchTime); + pstc->value(pars->PPunchStretch); + pvel->value(pars->PPunchVelocitySensing); + + detunevalueoutput->value(getdetune(pars->PDetuneType,0,pars->PDetune)); + detune->value(pars->PDetune-8192); + + int k=pars->PCoarseDetune/1024;if (k>=8) k-=16; + octave->value(k); + + detunetype->value(pars->PDetuneType-1); + k=pars->PCoarseDetune%1024;if (k>=512) k-=1024; + coarsedet->value(k); + + hz440->value(pars->Pfixedfreq); + fixedfreqetdial->value(pars->PfixedfreqET); + + amplfo->refresh(); + freqlfo->refresh(); + filterlfo->refresh(); + + ampenv->refresh(); + freqenv->refresh(); + filterenv->refresh(); + filterui->refresh(); + + + /* harmonic structure parametrs */ + + resui->refresh(); + if (oscui!=NULL) oscui->refresh(); + + hpbasetype->value(pars->Php.base.type); + hpbasepar1->value(pars->Php.base.par1); + hpfreqmult->value(pars->Php.freqmult); + + hpmpar1->value(pars->Php.modulator.par1); + hpmfreq->value(pars->Php.modulator.freq); + hpwidth->value(pars->Php.width); + + hponehalf->value(pars->Php.onehalf); + hpamptype->value(pars->Php.amp.type); + hpampmode->value(pars->Php.amp.mode); + hpamppar1->value(pars->Php.amp.par1); + hpamppar2->value(pars->Php.amp.par2); + hpautoscale->value(pars->Php.autoscale); + + bwdial->value(pars->Pbandwidth); + if (pars->Pmode==0){ + bwprofilegroup->activate(); + bwdial->activate(); + bwcents->activate(); + hprofile->activate(); + hprofile->color(54); + bwscale->activate(); + } else { + bwprofilegroup->deactivate(); + bwdial->deactivate(); + bwcents->deactivate(); + hprofile->deactivate(); + hprofile->color(48); + bwscale->activate(); + }; + + spectrummode->value(pars->Pmode); + + qbasenote->value(pars->Pquality.basenote); + qsmpoct->value(pars->Pquality.smpoct); + qoct->value(pars->Pquality.oct); + qsamplesize->value(pars->Pquality.samplesize); + + hrpostype->value(pars->Phrpos.type); + hrpospar1->value(pars->Phrpos.par1); + hrpospar2->value(pars->Phrpos.par2); + hrpospar3->value(pars->Phrpos.par3); + + hprofile->redraw(); + overtonepos->redraw(); + + osc->redraw(); + pars->applyparameters(true); + applybutton->color(FL_GRAY); + applybutton->parent()->redraw(); } PADnoteUI::~PADnoteUI() { delete(oscui); -delete(resui); - -padnotewindow->hide(); -delete(padnotewindow); + delete(resui); + + padnotewindow->hide(); + delete(padnotewindow); } diff --git a/plugins/zynaddsubfx/src/UI/PartUI.cc b/plugins/zynaddsubfx/src/UI/PartUI.cc index f25571165..102edde25 100644 --- a/plugins/zynaddsubfx/src/UI/PartUI.cc +++ b/plugins/zynaddsubfx/src/UI/PartUI.cc @@ -47,22 +47,22 @@ Fl_Group* PartSysEffSend::make_window() { PartSysEffSend::PartSysEffSend(int x,int y, int w, int h, const char *label):Fl_Group(x,y,w,h,label) { master=NULL; -neff=0; -npart=0; + neff=0; + npart=0; } void PartSysEffSend::init(Master *master_,int npart_,int neff_) { npart=npart_; -neff=neff_; -master=master_; -make_window(); -syseffsend->show(); -end(); + neff=neff_; + master=master_; + make_window(); + syseffsend->show(); + end(); } PartSysEffSend::~PartSysEffSend() { syseffsend->hide(); -//delete(syseffsend); + //delete(syseffsend); } void PartUI_::showparameters(int kititem,int engine) { @@ -344,42 +344,42 @@ Fl_Group* PartKitItem::make_window() { PartKitItem::PartKitItem(int x,int y, int w, int h, const char *label):Fl_Group(x,y,w,h,label) { n=0; -part=NULL; + part=NULL; } void PartKitItem::refresh() { enabledcheck->value(part->kit[n].Penabled); -if (part->kit[n].Penabled==0) partkititemgroup->deactivate(); -else partkititemgroup->activate(); - -mutedcheck->value(part->kit[n].Pmuted); -labelbutton->label((char *)part->kit[n].Pname); -minkcounter->value(part->kit[n].Pminkey); -maxkcounter->value(part->kit[n].Pmaxkey); -adcheck->value(part->kit[n].Padenabled); -adcheck->do_callback(); -subcheck->value(part->kit[n].Psubenabled); -subcheck->do_callback(); - -sendtoeffect->value(part->kit[n].Psendtoparteffect+1); -if (part->kit[n].Psendtoparteffect==127) sendtoeffect->value(0); - -this->redraw(); + if (part->kit[n].Penabled==0) partkititemgroup->deactivate(); + else partkititemgroup->activate(); + + mutedcheck->value(part->kit[n].Pmuted); + labelbutton->label((char *)part->kit[n].Pname); + minkcounter->value(part->kit[n].Pminkey); + maxkcounter->value(part->kit[n].Pmaxkey); + adcheck->value(part->kit[n].Padenabled); + adcheck->do_callback(); + subcheck->value(part->kit[n].Psubenabled); + subcheck->do_callback(); + + sendtoeffect->value(part->kit[n].Psendtoparteffect+1); + if (part->kit[n].Psendtoparteffect==127) sendtoeffect->value(0); + + this->redraw(); } void PartKitItem::init(Part *part_,int n_,Master *master_,PartUI_ *partui_) { part=part_; -n=n_; -partui=partui_; -master=master_; -make_window(); -//partkititem->show(); -end(); + n=n_; + partui=partui_; + master=master_; + make_window(); + //partkititem->show(); + end(); } PartKitItem::~PartKitItem() { partkititem->hide(); -//delete(partkititem); + //delete(partkititem); } void PartUI::cb_Pan_i(WidgetPDial* o, void*) { @@ -1784,97 +1784,97 @@ cents)"); PartUI::PartUI(int x,int y, int w, int h, const char *label):Fl_Group(x,y,w,h,label) { part=NULL; -adnoteui=NULL; -subnoteui=NULL; -padnoteui=NULL; -lastkititem=-1; + adnoteui=NULL; + subnoteui=NULL; + padnoteui=NULL; + lastkititem=-1; } void PartUI::init(Part *part_,Master *master_,int npart_,BankUI *bankui_) { bankui=bankui_; -part=part_; -npart=npart_; -master=master_; -ninseff=0; - -make_window(); -partgroup->position(this->parent()->x()+2,this->parent()->y()+2); -partgroup->show(); -end(); - - -//if (config.ui.showinstrumentinfo!=0) instrumenteditwindow->show(); - -int klimits[]={1,2,3,4,5,6,7,8,9,10,15,20,30,50,100,0}; - -keylimitlist->add("OFF"); -int k=0; -int val=-1; -char tmp[10]; -while (klimits[k]!=0){ - sprintf(tmp,"%d",klimits[k]); - keylimitlist->add(tmp); - if ((val==-1)){ - if (klimits[k]>part->Pkeylimit) val=k; - }; - k++; -}; - -if (val==-1) val=k; -keylimitlist->value(val); + part=part_; + npart=npart_; + master=master_; + ninseff=0; + + make_window(); + partgroup->position(this->parent()->x()+2,this->parent()->y()+2); + partgroup->show(); + end(); + + + //if (config.ui.showinstrumentinfo!=0) instrumenteditwindow->show(); + + int klimits[]={1,2,3,4,5,6,7,8,9,10,15,20,30,50,100,0}; + + keylimitlist->add("OFF"); + int k=0; + int val=-1; + char tmp[10]; + while (klimits[k]!=0){ + sprintf(tmp,"%d",klimits[k]); + keylimitlist->add(tmp); + if ((val==-1)){ + if (klimits[k]>part->Pkeylimit) val=k; + }; + k++; + }; + + if (val==-1) val=k; + keylimitlist->value(val); } void PartUI::showparameters(int kititem,int engine) { if (engine==-1){//this is used if I want to clear the engine from the part - if (kititem==lastkititem) kititem=-1; - else kititem=lastkititem; -}; - -if (kititem!=lastkititem){ - if (adnoteui!=NULL) delete (adnoteui); - if (subnoteui!=NULL) delete (subnoteui); - if (padnoteui!=NULL) delete (padnoteui); - adnoteui=NULL;subnoteui=NULL;padnoteui=NULL; - lastkititem=kititem; - - if (kititem>=NUM_KIT_ITEMS) return;//bad kit item - if (kititem<0) return; - - if (part->kit[kititem].adpars!=NULL) - adnoteui=new ADnoteUI(part->kit[kititem].adpars,master); - - if (part->kit[kititem].subpars!=NULL) - subnoteui=new SUBnoteUI(part->kit[kititem].subpars); - - if (part->kit[kititem].padpars!=NULL) - padnoteui=new PADnoteUI(part->kit[kititem].padpars,master); - -}; - - - -if ((engine==0)&&(adnoteui!=NULL)) adnoteui->ADnoteGlobalParameters->show(); -if ((engine==1)&&(subnoteui!=NULL)) subnoteui->SUBparameters->show(); -if ((engine==2)&&(adnoteui!=NULL)) padnoteui->padnotewindow->show(); + if (kititem==lastkititem) kititem=-1; + else kititem=lastkititem; + }; + + if (kititem!=lastkititem){ + if (adnoteui!=NULL) delete (adnoteui); + if (subnoteui!=NULL) delete (subnoteui); + if (padnoteui!=NULL) delete (padnoteui); + adnoteui=NULL;subnoteui=NULL;padnoteui=NULL; + lastkititem=kititem; + + if (kititem>=NUM_KIT_ITEMS) return;//bad kit item + if (kititem<0) return; + + if (part->kit[kititem].adpars!=NULL) + adnoteui=new ADnoteUI(part->kit[kititem].adpars,master); + + if (part->kit[kititem].subpars!=NULL) + subnoteui=new SUBnoteUI(part->kit[kititem].subpars); + + if (part->kit[kititem].padpars!=NULL) + padnoteui=new PADnoteUI(part->kit[kititem].padpars,master); + + }; + + + + if ((engine==0)&&(adnoteui!=NULL)) adnoteui->ADnoteGlobalParameters->show(); + if ((engine==1)&&(subnoteui!=NULL)) subnoteui->SUBparameters->show(); + if ((engine==2)&&(adnoteui!=NULL)) padnoteui->padnotewindow->show(); } PartUI::~PartUI() { if (adnoteui!=NULL) delete (adnoteui); -if (subnoteui!=NULL) delete (subnoteui); -if (padnoteui!=NULL) delete (padnoteui); - -partgroup->hide(); -//delete(partgroup); - -ctlwindow->hide(); -delete(ctlwindow); - -partfx->hide(); -delete(partfx); - -instrumentkitlist->hide(); -delete(instrumentkitlist); - -instrumenteditwindow->hide(); -delete(instrumenteditwindow); + if (subnoteui!=NULL) delete (subnoteui); + if (padnoteui!=NULL) delete (padnoteui); + + partgroup->hide(); + //delete(partgroup); + + ctlwindow->hide(); + delete(ctlwindow); + + partfx->hide(); + delete(partfx); + + instrumentkitlist->hide(); + delete(instrumentkitlist); + + instrumenteditwindow->hide(); + delete(instrumenteditwindow); } diff --git a/plugins/zynaddsubfx/src/UI/PresetsUI.cc b/plugins/zynaddsubfx/src/UI/PresetsUI.cc index d27285ee5..a1c464f80 100644 --- a/plugins/zynaddsubfx/src/UI/PresetsUI.cc +++ b/plugins/zynaddsubfx/src/UI/PresetsUI.cc @@ -4,9 +4,11 @@ #include "../Params/PresetsArray.h" void PresetsUI_::refresh() { + ; } PresetsUI_::~PresetsUI_() { + ; } void PresetsUI::cb_copybrowse_i(Fl_Browser* o, void*) { @@ -113,12 +115,12 @@ void PresetsUI::cb_deletepbutton(Fl_Button* o, void* v) { PresetsUI::PresetsUI() { p=NULL; -make_window(); + make_window(); } PresetsUI::~PresetsUI() { copywin->hide();delete(copywin); -pastewin->hide();delete(pastewin); + pastewin->hide();delete(pastewin); } Fl_Double_Window* PresetsUI::make_window() { @@ -207,66 +209,66 @@ Fl_Double_Window* PresetsUI::make_window() { void PresetsUI::copy(Presets *p) { copybutton->activate(); -copypbutton->deactivate(); - - -this->p=p; -this->pui=NULL; -bool but=(Fl::event_button()!=FL_LEFT_MOUSE); -presetname->cut(0,presetname->maximum_size()); - -if (but) p->copy(NULL); - else { - rescan(); - copytypetext->label(&p->type[1]); - copywin->show(); - }; + copypbutton->deactivate(); + + + this->p=p; + this->pui=NULL; + bool but=(Fl::event_button()!=FL_LEFT_MOUSE); + presetname->cut(0,presetname->maximum_size()); + + if (but) p->copy(NULL); + else { + rescan(); + copytypetext->label(&p->type[1]); + copywin->show(); + }; } void PresetsUI::paste(Presets *p,PresetsUI_ *pui) { this->p=p; -this->pui=pui; -bool but=(Fl::event_button()!=FL_LEFT_MOUSE); -pastepbutton->deactivate(); -deletepbutton->deactivate(); - -if (but) { - p->paste(0); - pui->refresh(); -} else { - rescan(); - pastetypetext->label(&p->type[1]); - if (p->checkclipboardtype()) pastebutton->activate(); - else pastebutton->deactivate(); - pastewin->show(); - }; + this->pui=pui; + bool but=(Fl::event_button()!=FL_LEFT_MOUSE); + pastepbutton->deactivate(); + deletepbutton->deactivate(); + + if (but) { + p->paste(0); + pui->refresh(); + } else { + rescan(); + pastetypetext->label(&p->type[1]); + if (p->checkclipboardtype()) pastebutton->activate(); + else pastebutton->deactivate(); + pastewin->show(); + }; } void PresetsUI::copy(Presets *p,int n) { PresetsArray *pre = dynamic_cast(p); -if(pre) - pre->setelement(n); -copy(p); + if(pre) + pre->setelement(n); + copy(p); } void PresetsUI::paste(Presets *p,PresetsUI_ *pui,int n) { PresetsArray *pre = dynamic_cast(p); -if(pre) - pre->setelement(n); -paste(p,pui); + if(pre) + pre->setelement(n); + paste(p,pui); } void PresetsUI::rescan() { copybrowse->clear(); -pastebrowse->clear(); -p->rescanforpresets(); - -for (int i=0;iadd(name.c_str()); - pastebrowse->add(name.c_str()); -}; + pastebrowse->clear(); + p->rescanforpresets(); + + for (int i=0;iadd(name.c_str()); + pastebrowse->add(name.c_str()); + }; } PresetsUI *presetsui; diff --git a/plugins/zynaddsubfx/src/UI/ResonanceUI.cc b/plugins/zynaddsubfx/src/UI/ResonanceUI.cc index 8718cd85d..3481134d9 100644 --- a/plugins/zynaddsubfx/src/UI/ResonanceUI.cc +++ b/plugins/zynaddsubfx/src/UI/ResonanceUI.cc @@ -10,148 +10,148 @@ ResonanceGraph::ResonanceGraph(int x,int y, int w, int h, const char *label):Fl_Box(x,y,w,h,label) { respar=NULL; -cbwidget=NULL; -applybutton=NULL; + cbwidget=NULL; + applybutton=NULL; } void ResonanceGraph::init(Resonance *respar_,Fl_Value_Output *khzvalue_,Fl_Value_Output *dbvalue_) { respar=respar_; -khzvalue=khzvalue_; -dbvalue=dbvalue_; -oldx=-1; -khzval=-1; + khzvalue=khzvalue_; + dbvalue=dbvalue_; + oldx=-1; + khzval=-1; } void ResonanceGraph::draw_freq_line(REALTYPE freq,int type) { REALTYPE freqx=respar->getfreqpos(freq); -switch(type){ - case 0:fl_line_style(FL_SOLID);break; - case 1:fl_line_style(FL_DOT);break; - case 2:fl_line_style(FL_DASH);break; -}; - - -if ((freqx>0.0)&&(freqx<1.0)) - fl_line(x()+(int) (freqx*w()),y(), - x()+(int) (freqx*w()),y()+h()); + switch(type){ + case 0:fl_line_style(FL_SOLID);break; + case 1:fl_line_style(FL_DOT);break; + case 2:fl_line_style(FL_DASH);break; + }; + + + if ((freqx>0.0)&&(freqx<1.0)) + fl_line(x()+(int) (freqx*w()),y(), + x()+(int) (freqx*w()),y()+h()); } void ResonanceGraph::draw() { int ox=x(),oy=y(),lx=w(),ly=h(),i,ix,iy,oiy; -REALTYPE freqx; - -fl_color(FL_BLACK); -fl_rectf(ox,oy,lx,ly); - - -//draw the lines -fl_color(FL_GRAY); - -fl_line_style(FL_SOLID); -fl_line(ox+2,oy+ly/2,ox+lx-2,oy+ly/2); - -freqx=respar->getfreqpos(1000.0); -if ((freqx>0.0)&&(freqx<1.0)) - fl_line(ox+(int) (freqx*lx),oy, - ox+(int) (freqx*lx),oy+ly); - -for (i=1;i<10;i++){ - if(i==1){ - draw_freq_line(i*100.0,0); - draw_freq_line(i*1000.0,0); - }else - if (i==5){ - draw_freq_line(i*100.0,2); - draw_freq_line(i*1000.0,2); - }else{ - draw_freq_line(i*100.0,1); - draw_freq_line(i*1000.0,1); - }; -}; - -draw_freq_line(10000.0,0); -draw_freq_line(20000.0,1); - -fl_line_style(FL_DOT); -int GY=10;if (lyPrespoints[0]/128.0*ly); -for (i=1;iPrespoints[i]/128.0*ly); - fl_line(ox+ix-1,oy+ly-oiy,ox+ix,oy+ly-iy); - oiy=iy; -}; + REALTYPE freqx; + + fl_color(FL_BLACK); + fl_rectf(ox,oy,lx,ly); + + + //draw the lines + fl_color(FL_GRAY); + + fl_line_style(FL_SOLID); + fl_line(ox+2,oy+ly/2,ox+lx-2,oy+ly/2); + + freqx=respar->getfreqpos(1000.0); + if ((freqx>0.0)&&(freqx<1.0)) + fl_line(ox+(int) (freqx*lx),oy, + ox+(int) (freqx*lx),oy+ly); + + for (i=1;i<10;i++){ + if(i==1){ + draw_freq_line(i*100.0,0); + draw_freq_line(i*1000.0,0); + }else + if (i==5){ + draw_freq_line(i*100.0,2); + draw_freq_line(i*1000.0,2); + }else{ + draw_freq_line(i*100.0,1); + draw_freq_line(i*1000.0,1); + }; + }; + + draw_freq_line(10000.0,0); + draw_freq_line(20000.0,1); + + fl_line_style(FL_DOT); + int GY=10;if (lyPrespoints[0]/128.0*ly); + for (i=1;iPrespoints[i]/128.0*ly); + fl_line(ox+ix-1,oy+ly-oiy,ox+ix,oy+ly-iy); + oiy=iy; + }; } int ResonanceGraph::handle(int event) { int x_=Fl::event_x()-x(); -int y_=Fl::event_y()-y(); -if ( (x_>=0)&&(x_=0)&&(y_value(respar->getfreqx(x_*1.0/w())/1000.0); - dbvalue->value((1.0-y_*2.0/h())*respar->PmaxdB); -}; - -if ((event==FL_PUSH)||(event==FL_DRAG)){ - int leftbutton=1; - if (Fl::event_button()==FL_RIGHT_MOUSE) leftbutton=0; - if (x_<0) x_=0;if (y_<0) y_=0; - if (x_>=w()) x_=w();if (y_>=h()-1) y_=h()-1; - - if ((oldx<0)||(oldx==x_)){ - int sn=(int)(x_*1.0/w()*N_RES_POINTS); - int sp=127-(int)(y_*1.0/h()*127); - if (leftbutton!=0) respar->setpoint(sn,sp); - else respar->setpoint(sn,64); - } else { - int x1=oldx; - int x2=x_; - int y1=oldy; - int y2=y_; - if (oldx>x_){ - x1=x_;y1=y_; - x2=oldx;y2=oldy; - }; - for (int i=0;isetpoint(sn,sp); - else respar->setpoint(sn,64); - }; + int y_=Fl::event_y()-y(); + if ( (x_>=0)&&(x_=0)&&(y_value(respar->getfreqx(x_*1.0/w())/1000.0); + dbvalue->value((1.0-y_*2.0/h())*respar->PmaxdB); }; - - oldx=x_;oldy=y_; - redraw(); -}; - -if (event==FL_RELEASE) { - oldx=-1; - if (cbwidget!=NULL) { - cbwidget->do_callback(); - if (applybutton!=NULL) { - applybutton->color(FL_RED); - applybutton->redraw(); - - }; - }; -}; - -return(1); + + if ((event==FL_PUSH)||(event==FL_DRAG)){ + int leftbutton=1; + if (Fl::event_button()==FL_RIGHT_MOUSE) leftbutton=0; + if (x_<0) x_=0;if (y_<0) y_=0; + if (x_>=w()) x_=w();if (y_>=h()-1) y_=h()-1; + + if ((oldx<0)||(oldx==x_)){ + int sn=(int)(x_*1.0/w()*N_RES_POINTS); + int sp=127-(int)(y_*1.0/h()*127); + if (leftbutton!=0) respar->setpoint(sn,sp); + else respar->setpoint(sn,64); + } else { + int x1=oldx; + int x2=x_; + int y1=oldy; + int y2=y_; + if (oldx>x_){ + x1=x_;y1=y_; + x2=oldx;y2=oldy; + }; + for (int i=0;isetpoint(sn,sp); + else respar->setpoint(sn,64); + }; + }; + + oldx=x_;oldy=y_; + redraw(); + }; + + if (event==FL_RELEASE) { + oldx=-1; + if (cbwidget!=NULL) { + cbwidget->do_callback(); + if (applybutton!=NULL) { + applybutton->color(FL_RED); + applybutton->redraw(); + + }; + }; + }; + + return(1); } void ResonanceGraph::setcbwidget(Fl_Widget *cbwidget,Fl_Widget *applybutton) { this->cbwidget=cbwidget; -this->applybutton=applybutton; + this->applybutton=applybutton; } void ResonanceUI::cb_Close_i(Fl_Button*, void*) { @@ -508,10 +508,10 @@ Fl_Double_Window* ResonanceUI::make_window() { ResonanceUI::ResonanceUI(Resonance *respar_) { respar=respar_; -cbwidget=NULL; -cbapplywidget=NULL; -make_window(); -applybutton->hide(); + cbwidget=NULL; + cbapplywidget=NULL; + make_window(); + applybutton->hide(); } ResonanceUI::~ResonanceUI() { @@ -520,34 +520,34 @@ ResonanceUI::~ResonanceUI() { void ResonanceUI::redrawPADnoteApply() { if (cbwidget!=NULL) { - cbwidget->do_callback(); - applybutton->color(FL_RED); - applybutton->redraw(); -}; + cbwidget->do_callback(); + applybutton->color(FL_RED); + applybutton->redraw(); + }; } void ResonanceUI::setcbwidget(Fl_Widget *cbwidget,Fl_Widget *cbapplywidget) { this->cbwidget=cbwidget; -this->cbapplywidget=cbapplywidget; -rg->setcbwidget(cbwidget,applybutton); -applybutton->show(); + this->cbapplywidget=cbapplywidget; + rg->setcbwidget(cbwidget,applybutton); + applybutton->show(); } void ResonanceUI::refresh() { redrawPADnoteApply(); - -enabled->value(respar->Penabled); - -maxdb->value(respar->PmaxdB); -maxdbvo->value(respar->PmaxdB); - -centerfreqvo->value(respar->getcenterfreq()/1000.0); -octavesfreqvo->value(respar->getoctavesfreq()); - -centerfreq->value(respar->Pcenterfreq); -octavesfreq->value(respar->Poctavesfreq); - -p1st->value(respar->Pprotectthefundamental); - -rg->redraw(); + + enabled->value(respar->Penabled); + + maxdb->value(respar->PmaxdB); + maxdbvo->value(respar->PmaxdB); + + centerfreqvo->value(respar->getcenterfreq()/1000.0); + octavesfreqvo->value(respar->getoctavesfreq()); + + centerfreq->value(respar->Pcenterfreq); + octavesfreq->value(respar->Poctavesfreq); + + p1st->value(respar->Pprotectthefundamental); + + rg->redraw(); } diff --git a/plugins/zynaddsubfx/src/UI/SUBnoteUI.cc b/plugins/zynaddsubfx/src/UI/SUBnoteUI.cc index c00c374c4..9314333c5 100644 --- a/plugins/zynaddsubfx/src/UI/SUBnoteUI.cc +++ b/plugins/zynaddsubfx/src/UI/SUBnoteUI.cc @@ -89,22 +89,22 @@ SUBnoteharmonic::SUBnoteharmonic(int x,int y, int w, int h, const char *label):F void SUBnoteharmonic::init(SUBnoteParameters *pars_,int n_) { pars=pars_; -n=n_; -make_window(); -harmonic->show(); -end(); + n=n_; + make_window(); + harmonic->show(); + end(); } void SUBnoteharmonic::refresh() { mag->value(127-pars->Phmag[n]); -if (pars->Phmag[n]==0) mag->selection_color(0); -bw->value(127-pars->Phrelbw[n]); + if (pars->Phmag[n]==0) mag->selection_color(0); + bw->value(127-pars->Phrelbw[n]); } SUBnoteharmonic::~SUBnoteharmonic() { harmonic->hide(); -hide(); -//delete(harmonic); + hide(); + //delete(harmonic); } void SUBnoteUI::cb_Close_i(Fl_Button*, void*) { @@ -672,64 +672,64 @@ cy)"); void SUBnoteUI::refresh() { for (int i=0;irefresh(); -vol->value(pars->PVolume); -vsns->value(pars->PAmpVelocityScaleFunction); -pan->value(pars->PPanning); - - -bandwidth->value(pars->Pbandwidth); -bwidthscale->value(pars->Pbwscale-64); -bwee->value(pars->PBandWidthEnvelopeEnabled); -if (pars->PBandWidthEnvelopeEnabled==0) bandwidthenvelopegroup->deactivate(); - else bandwidthenvelopegroup->activate(); -bwee->show(); -bandwidthsettingsui->redraw(); - -detunevalueoutput->value(getdetune(pars->PDetuneType,0,pars->PDetune)); -freqee->value(pars->PFreqEnvelopeEnabled); -if (pars->PFreqEnvelopeEnabled==0) freqenvelopegroup->deactivate(); - else freqenvelopegroup->activate(); -freqee->show(); -freqsettingsui->redraw(); - -detune->value(pars->PDetune-8192); -hz440->value(pars->Pfixedfreq); - -fixedfreqetdial->value(pars->PfixedfreqET); - -int k=pars->PCoarseDetune/1024;if (k>=8) k-=16; -octave->value(k); - -detunetype->value(pars->PDetuneType-1); - -k=pars->PCoarseDetune%1024;if (k>=512) k-=1024; -coarsedet->value(k); - -filtere->value(pars->PGlobalFilterEnabled); -if (pars->PGlobalFilterEnabled==0) globalfiltergroup->deactivate(); - else globalfiltergroup->activate(); -filtere->show(); -globalfiltergroup->redraw(); - -stereo->value(pars->Pstereo); -filterstages->value(pars->Pnumstages); -magtype->value(pars->Phmagtype); -start->value(pars->Pstart); - -ampenv->refresh(); -bandwidthenvelopegroup->refresh(); -freqenvelopegroup->refresh(); -filterui->refresh(); -filterenv->refresh(); + vol->value(pars->PVolume); + vsns->value(pars->PAmpVelocityScaleFunction); + pan->value(pars->PPanning); + + + bandwidth->value(pars->Pbandwidth); + bwidthscale->value(pars->Pbwscale-64); + bwee->value(pars->PBandWidthEnvelopeEnabled); + if (pars->PBandWidthEnvelopeEnabled==0) bandwidthenvelopegroup->deactivate(); + else bandwidthenvelopegroup->activate(); + bwee->show(); + bandwidthsettingsui->redraw(); + + detunevalueoutput->value(getdetune(pars->PDetuneType,0,pars->PDetune)); + freqee->value(pars->PFreqEnvelopeEnabled); + if (pars->PFreqEnvelopeEnabled==0) freqenvelopegroup->deactivate(); + else freqenvelopegroup->activate(); + freqee->show(); + freqsettingsui->redraw(); + + detune->value(pars->PDetune-8192); + hz440->value(pars->Pfixedfreq); + + fixedfreqetdial->value(pars->PfixedfreqET); + + int k=pars->PCoarseDetune/1024;if (k>=8) k-=16; + octave->value(k); + + detunetype->value(pars->PDetuneType-1); + + k=pars->PCoarseDetune%1024;if (k>=512) k-=1024; + coarsedet->value(k); + + filtere->value(pars->PGlobalFilterEnabled); + if (pars->PGlobalFilterEnabled==0) globalfiltergroup->deactivate(); + else globalfiltergroup->activate(); + filtere->show(); + globalfiltergroup->redraw(); + + stereo->value(pars->Pstereo); + filterstages->value(pars->Pnumstages); + magtype->value(pars->Phmagtype); + start->value(pars->Pstart); + + ampenv->refresh(); + bandwidthenvelopegroup->refresh(); + freqenvelopegroup->refresh(); + filterui->refresh(); + filterenv->refresh(); } SUBnoteUI::SUBnoteUI(SUBnoteParameters *parameters) { pars=parameters; -make_window(); + make_window(); } SUBnoteUI::~SUBnoteUI() { //for (int i=0;ihide(); -delete(SUBparameters); + SUBparameters->hide(); + delete(SUBparameters); } diff --git a/plugins/zynaddsubfx/src/UI/SeqUI.cc b/plugins/zynaddsubfx/src/UI/SeqUI.cc index 5e66aea3b..d48fd4de6 100644 --- a/plugins/zynaddsubfx/src/UI/SeqUI.cc +++ b/plugins/zynaddsubfx/src/UI/SeqUI.cc @@ -89,8 +89,8 @@ Fl_Double_Window* SeqUI::make_window() { SeqUI::SeqUI(Master *master_) { master=master_; - -make_window(); + + make_window(); } void SeqUI::show() { diff --git a/plugins/zynaddsubfx/src/UI/VirKeyboard.cc b/plugins/zynaddsubfx/src/UI/VirKeyboard.cc index 193e1dc7c..8e6d2eee8 100644 --- a/plugins/zynaddsubfx/src/UI/VirKeyboard.cc +++ b/plugins/zynaddsubfx/src/UI/VirKeyboard.cc @@ -19,175 +19,175 @@ VirKeys::VirKeys(int x,int y, int w, int h, const char *label):Fl_Box(x,y,w,h,la void VirKeys::init(Master *master_) { master=master_; -for (int i=0;i=0){//white keys - if (pressed[i]==0) fl_color(250,240,230); - else fl_color(FL_BLUE); - fl_rectf(ox+(kv+7*noct)*SIZE_WHITE+3,oy+ly*3/5+2, - SIZE_WHITE-4,ly*2/5-3); - } else {//black keys - kv=keyspos[(i+1)%12]; - if (pressed[i]==0) fl_color(FL_BLACK); - else fl_color(FL_BLUE); - fl_rectf(ox+(kv+7*noct)*SIZE_WHITE-SIZE_BLACK/2+2,oy+2, - SIZE_BLACK-3,ly*3/5-5); + + if (damage()!=1){ + fl_color(250,240,230); + fl_rectf(ox,oy,lx,ly); + + fl_color(FL_BLACK); + fl_line(ox,oy,ox+lx,oy); + fl_line(ox,oy+ly,ox+lx,oy+ly); + for (i=0;i=0){//white keys + if (pressed[i]==0) fl_color(250,240,230); + else fl_color(FL_BLUE); + fl_rectf(ox+(kv+7*noct)*SIZE_WHITE+3,oy+ly*3/5+2, + SIZE_WHITE-4,ly*2/5-3); + } else {//black keys + kv=keyspos[(i+1)%12]; + if (pressed[i]==0) fl_color(FL_BLACK); + else fl_color(FL_BLUE); + fl_rectf(ox+(kv+7*noct)*SIZE_WHITE-SIZE_BLACK/2+2,oy+2, + SIZE_BLACK-3,ly*3/5-5); + }; + }; } int VirKeys::handle(int event) { int i; -int ly=h(); -int x_=Fl::event_x()-x(); -int y_=Fl::event_y()-y(); -if ( (x_<0)&&(x_>w()) && (y_<0)&&(y_>h())){ - return(0); -}; - - -if ((event==FL_PUSH)||(event==FL_DRAG)||(event==FL_RELEASE)){ - int kpos=-1; + int ly=h(); + int x_=Fl::event_x()-x(); + int y_=Fl::event_y()-y(); + if ( (x_<0)&&(x_>w()) && (y_<0)&&(y_>h())){ + return(0); + }; - if (y_>ly*3/5){//white keys - int pos=x_/SIZE_WHITE; - if (pos<0) return(1); - for (i=0;i<12;i++) { - if (pos%7==keyspos[i]) { - kpos=pos/7*12+i; - break; - }; - }; - } else {//black keys - int pos=(x_+SIZE_WHITE/2)/SIZE_WHITE; - if (pos<0) return(1); - for (i=1;i<12;i++) { - if (pos%7==-keyspos[i]) { - kpos=pos/7*12+i; - break; - }; - }; - }; - - if ((kpos!=-1)&&((event==FL_PUSH)||(event==FL_DRAG))&& - (Fl::event_shift()==0)) { - presskey(kpos,1,1); - }; - - if ((event==FL_PUSH)&&(Fl::event_shift()!=0)) { - if (pressed[kpos]==0) presskey(kpos,0,1); - else relasekey(kpos,1); - }; - if ((event==FL_RELEASE)&&(Fl::event_shift()==0)) - relaseallkeys(1); - take_focus(); -}; - - -const int *keysoct1=keysoct1qwerty; -const int *keysoct2=keysoct2qwerty; - -if (config.cfg.VirKeybLayout==2) { - keysoct1=keysoct1dw; - keysoct2=keysoct2dw; -}else if (config.cfg.VirKeybLayout==3) { - keysoct1=keysoct1qwertz; - keysoct2=keysoct2qwertz; -}else if (config.cfg.VirKeybLayout==4) { - keysoct1=keysoct1az; - keysoct2=keysoct2az; -}; - -if ((event==FL_KEYDOWN)||(event==FL_KEYUP)){ - int key=Fl::event_key(); - int kpos=-1; - for (i=0;keysoct1[i]!=0;i++) if (key==keysoct1[i]) kpos=i+12*keyoct1; - for (i=0;keysoct2[i]!=0;i++) if (key==keysoct2[i]) kpos=i+12*keyoct2; - - - - - if (kpos==-1) return(0); - if ((event==FL_KEYUP) && (Fl::event_key(key)==0) && (Fl::get_key(key)!=0)) return(0); - if (event==FL_KEYDOWN) presskey(kpos,0,2); - else relasekey(kpos,2); -}; - -return(1); + + if ((event==FL_PUSH)||(event==FL_DRAG)||(event==FL_RELEASE)){ + int kpos=-1; + + if (y_>ly*3/5){//white keys + int pos=x_/SIZE_WHITE; + if (pos<0) return(1); + for (i=0;i<12;i++) { + if (pos%7==keyspos[i]) { + kpos=pos/7*12+i; + break; + }; + }; + } else {//black keys + int pos=(x_+SIZE_WHITE/2)/SIZE_WHITE; + if (pos<0) return(1); + for (i=1;i<12;i++) { + if (pos%7==-keyspos[i]) { + kpos=pos/7*12+i; + break; + }; + }; + }; + + if ((kpos!=-1)&&((event==FL_PUSH)||(event==FL_DRAG))&& + (Fl::event_shift()==0)) { + presskey(kpos,1,1); + }; + + if ((event==FL_PUSH)&&(Fl::event_shift()!=0)) { + if (pressed[kpos]==0) presskey(kpos,0,1); + else relasekey(kpos,1); + }; + if ((event==FL_RELEASE)&&(Fl::event_shift()==0)) + relaseallkeys(1); + take_focus(); + }; + + + const int *keysoct1=keysoct1qwerty; + const int *keysoct2=keysoct2qwerty; + + if (config.cfg.VirKeybLayout==2) { + keysoct1=keysoct1dw; + keysoct2=keysoct2dw; + }else if (config.cfg.VirKeybLayout==3) { + keysoct1=keysoct1qwertz; + keysoct2=keysoct2qwertz; + }else if (config.cfg.VirKeybLayout==4) { + keysoct1=keysoct1az; + keysoct2=keysoct2az; + }; + + if ((event==FL_KEYDOWN)||(event==FL_KEYUP)){ + int key=Fl::event_key(); + int kpos=-1; + for (i=0;keysoct1[i]!=0;i++) if (key==keysoct1[i]) kpos=i+12*keyoct1; + for (i=0;keysoct2[i]!=0;i++) if (key==keysoct2[i]) kpos=i+12*keyoct2; + + + + + if (kpos==-1) return(0); + if ((event==FL_KEYUP) && (Fl::event_key(key)==0) && (Fl::get_key(key)!=0)) return(0); + if (event==FL_KEYDOWN) presskey(kpos,0,2); + else relasekey(kpos,2); + }; + + return(1); } void VirKeys::presskey(int nk,int exclusive,int type) { //Exclusive means that multiple keys can be pressed at once -//when the user uses the shift key -if (nk>=N_OCT*12) return; -if ((nk<0)&&(exclusive==0)) { - relaseallkeys(type); - return; -}; -if (nk<0) return; -if (pressed[nk]!=0) return;//the key is already pressed - -if (exclusive!=0) relaseallkeys(type); -pressed[nk]=type; - -damage(1); -float vel=midivel; -if (rndvelocity!=0){ - vel=midivel*(127.0-rndvelocity)/127.0+RND*rndvelocity; -}; - -pthread_mutex_lock(&master->mutex); - master->NoteOn(midich,nk+midioct*12,(int)vel); -pthread_mutex_unlock(&master->mutex); + //when the user uses the shift key + if (nk>=N_OCT*12) return; + if ((nk<0)&&(exclusive==0)) { + relaseallkeys(type); + return; + }; + if (nk<0) return; + if (pressed[nk]!=0) return;//the key is already pressed + + if (exclusive!=0) relaseallkeys(type); + pressed[nk]=type; + + damage(1); + float vel=midivel; + if (rndvelocity!=0){ + vel=midivel*(127.0-rndvelocity)/127.0+RND*rndvelocity; + }; + + pthread_mutex_lock(&master->mutex); + master->NoteOn(midich,nk+midioct*12,(int)vel); + pthread_mutex_unlock(&master->mutex); } void VirKeys::relasekey(int nk,int type) { if ((nk<0)||(nk>=N_OCT*12)) return; -if (pressed[nk]==0) return;//the key is not pressed -if ((type!=0)&&(pressed[nk]!=type)) return; - -pressed[nk]=0; - - -damage(1); - -pthread_mutex_lock(&master->mutex); - master->NoteOff(midich,nk+12*midioct); -pthread_mutex_unlock(&master->mutex); + if (pressed[nk]==0) return;//the key is not pressed + if ((type!=0)&&(pressed[nk]!=type)) return; + + pressed[nk]=0; + + + damage(1); + + pthread_mutex_lock(&master->mutex); + master->NoteOff(midich,nk+12*midioct); + pthread_mutex_unlock(&master->mutex); } void VirKeys::relaseallkeys(int type) { @@ -482,8 +482,8 @@ Fl_Double_Window* VirKeyboard::make_window() { VirKeyboard::VirKeyboard(Master *master_) { master=master_; -midictl=75; -make_window(); + midictl=75; + make_window(); } VirKeyboard::~VirKeyboard() { diff --git a/plugins/zynaddsubfx/src/UI/WidgetPDial.cc b/plugins/zynaddsubfx/src/UI/WidgetPDial.cc index dde9e8854..05e31b89c 100644 --- a/plugins/zynaddsubfx/src/UI/WidgetPDial.cc +++ b/plugins/zynaddsubfx/src/UI/WidgetPDial.cc @@ -6,65 +6,65 @@ TipWin::TipWin():Fl_Menu_Window(1,1) { strcpy(tip, "X.XX"); -set_override(); -end(); + set_override(); + end(); } void TipWin::draw() { draw_box(FL_BORDER_BOX, 0, 0, w(), h(), Fl_Color(175)); - fl_color(FL_BLACK); - fl_font(labelfont(), labelsize()); - if(textmode) - fl_draw(text, 3, 3, w()-6, h()-6, Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_WRAP)); - else - fl_draw(tip, 3, 3, w()-6, h()-6, Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_WRAP)); + fl_color(FL_BLACK); + fl_font(labelfont(), labelsize()); + if(textmode) + fl_draw(text, 3, 3, w()-6, h()-6, Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_WRAP)); + else + fl_draw(tip, 3, 3, w()-6, h()-6, Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_WRAP)); } void TipWin::value(float f) { sprintf(tip, "%.2f", f); -textmode=false; - // Recalc size of window - fl_font(labelfont(), labelsize()); - int W = w(), H = h(); - fl_measure(tip, W, H, 0); - W += 8; - size(W, H); - redraw(); + textmode=false; + // Recalc size of window + fl_font(labelfont(), labelsize()); + int W = w(), H = h(); + fl_measure(tip, W, H, 0); + W += 8; + size(W, H); + redraw(); } void TipWin::setText(const char * c) { strncpy(text, c, max_tooltip_len-1); -text[max_tooltip_len-1] = 0; -textmode=true; - // Recalc size of window - fl_font(labelfont(), labelsize()); - int W = w(), H = h(); - fl_measure(text, W, H, 0); - W += 8; - size(W, H); - redraw(); + text[max_tooltip_len-1] = 0; + textmode=true; + // Recalc size of window + fl_font(labelfont(), labelsize()); + int W = w(), H = h(); + fl_measure(text, W, H, 0); + W += 8; + size(W, H); + redraw(); } void TipWin::setTextmode() { textmode=true; - // Recalc size of window - fl_font(labelfont(), labelsize()); - int W = w(), H = h(); - fl_measure(text, W, H, 0); - W += 8; - size(W, H); - redraw(); + // Recalc size of window + fl_font(labelfont(), labelsize()); + int W = w(), H = h(); + fl_measure(text, W, H, 0); + W += 8; + size(W, H); + redraw(); } WidgetPDial::WidgetPDial(int x,int y, int w, int h, const char *label):Fl_Dial(x,y,w,h,label) { callback(value_cb, (void*)this); -Fl_Group *save = Fl_Group::current(); -tipwin = new TipWin(); -tipwin->hide(); -Fl_Group::current(save); -oldvalue=0.0; -pos=false; -textset=false; + Fl_Group *save = Fl_Group::current(); + tipwin = new TipWin(); + tipwin->hide(); + Fl_Group::current(save); + oldvalue=0.0; + pos=false; + textset=false; } WidgetPDial::~WidgetPDial() { @@ -73,131 +73,131 @@ WidgetPDial::~WidgetPDial() { int WidgetPDial::handle(int event) { double dragsize,v,min=minimum(),max=maximum(); -int my; - -switch (event){ -case FL_PUSH: - oldvalue=value(); -case FL_DRAG: - if(!pos){ - tipwin->position(Fl::event_x_root(), Fl::event_y_root()+20); - pos=true; - } - tipwin->value(value()); - tipwin->show(); - my=-(Fl::event_y()-y()-h()/2); - - dragsize=200.0; - if (Fl::event_state(FL_BUTTON1)==0) dragsize*=10; - v=oldvalue+my/dragsize*(max-min); - if (vmax) v=max; - - //printf("%d %g %g\n",my,v,oldvalue); - value(v); - value_damage(); - if (this->when()!=0) do_callback(); - return(1); - break; -case FL_ENTER: - if(textset){ - if(!pos){ - tipwin->position(Fl::event_x_root(), Fl::event_y_root()+20); - pos=true; - } - tipwin->setTextmode(); - tipwin->show(); - return(1);} - break; -case FL_HIDE: -case FL_LEAVE: - tipwin->hide(); - pos=false; - break; -case FL_RELEASE: - tipwin->hide(); - pos=false; - if (this->when()==0) do_callback(); - return(1); - break; -}; -return(0); + int my; + + switch (event){ + case FL_PUSH: + oldvalue=value(); + case FL_DRAG: + if(!pos){ + tipwin->position(Fl::event_x_root(), Fl::event_y_root()+20); + pos=true; + } + tipwin->value(value()); + tipwin->show(); + my=-(Fl::event_y()-y()-h()/2); + + dragsize=200.0; + if (Fl::event_state(FL_BUTTON1)==0) dragsize*=10; + v=oldvalue+my/dragsize*(max-min); + if (vmax) v=max; + + //printf("%d %g %g\n",my,v,oldvalue); + value(v); + value_damage(); + if (this->when()!=0) do_callback(); + return(1); + break; + case FL_ENTER: + if(textset){ + if(!pos){ + tipwin->position(Fl::event_x_root(), Fl::event_y_root()+20); + pos=true; + } + tipwin->setTextmode(); + tipwin->show(); + return(1);} + break; + case FL_HIDE: + case FL_LEAVE: + tipwin->hide(); + pos=false; + break; + case FL_RELEASE: + tipwin->hide(); + pos=false; + if (this->when()==0) do_callback(); + return(1); + break; + }; + return(0); } void WidgetPDial::drawgradient(int cx,int cy,int sx,double m1,double m2) { for (int i=(int)(m1*sx);i<(int)(m2*sx);i++){ - double tmp=1.0-pow(i*1.0/sx,2.0); - pdialcolor(140+(int) (tmp*90),140+(int)(tmp*90),140+(int) (tmp*100)); - fl_arc(cx+sx/2-i/2,cy+sx/2-i/2,i,i,0,360); -}; + double tmp=1.0-pow(i*1.0/sx,2.0); + pdialcolor(140+(int) (tmp*90),140+(int)(tmp*90),140+(int) (tmp*100)); + fl_arc(cx+sx/2-i/2,cy+sx/2-i/2,i,i,0,360); + }; } void WidgetPDial::draw() { int cx=x(),cy=y(),sx=w(),sy=h(); - - -//clears the button face -pdialcolor(190,190,200); -fl_pie(cx-1,cy-1,sx+2,sy+2,0,360); - -//Draws the button face (gradinet) -drawgradient(cx,cy,sx,0.5,1.0); - -double val=(value()-minimum())/(maximum()-minimum()); - -//draws the scale -pdialcolor(220,220,250); -double a1=angle1(),a2=angle2(); -for (int i=0;i<12;i++){ - double a=-i/12.0*360.0-val*(a2-a1)-a1; - fl_pie(cx,cy,sx,sy,a+270-3,a+3+270); -}; - -drawgradient(cx,cy,sx,0.0,0.75); - -//draws the value -double a=-(a2-a1)*val-a1; - - - - - -//draws the max and min points -pdialcolor(0,100,200); -int xp=(int)(cx+sx/2.0+sx/2.0*sin(angle1()/180.0*3.141592)); -int yp=(int)(cy+sy/2.0+sy/2.0*cos(angle1()/180.0*3.141592)); -fl_pie(xp-2,yp-2,4,4,0,360); - -xp=(int)(cx+sx/2.0+sx/2.0*sin(angle2()/180.0*3.141592)); -yp=(int)(cy+sy/2.0+sy/2.0*cos(angle2()/180.0*3.141592)); -fl_pie(xp-2,yp-2,4,4,0,360); - - - - - -fl_push_matrix(); - - fl_translate(cx+sx/2,cy+sy/2); - fl_rotate(a-90.0); - - fl_translate(sx/2,0); - - - fl_begin_polygon(); - pdialcolor(0,0,0); - fl_vertex(-10,-4); - fl_vertex(-10,4); - fl_vertex(0,0); - fl_end_polygon(); - - -fl_pop_matrix(); + + + //clears the button face + pdialcolor(190,190,200); + fl_pie(cx-1,cy-1,sx+2,sy+2,0,360); + + //Draws the button face (gradinet) + drawgradient(cx,cy,sx,0.5,1.0); + + double val=(value()-minimum())/(maximum()-minimum()); + + //draws the scale + pdialcolor(220,220,250); + double a1=angle1(),a2=angle2(); + for (int i=0;i<12;i++){ + double a=-i/12.0*360.0-val*(a2-a1)-a1; + fl_pie(cx,cy,sx,sy,a+270-3,a+3+270); + }; + + drawgradient(cx,cy,sx,0.0,0.75); + + //draws the value + double a=-(a2-a1)*val-a1; + + + + + + //draws the max and min points + pdialcolor(0,100,200); + int xp=(int)(cx+sx/2.0+sx/2.0*sin(angle1()/180.0*3.141592)); + int yp=(int)(cy+sy/2.0+sy/2.0*cos(angle1()/180.0*3.141592)); + fl_pie(xp-2,yp-2,4,4,0,360); + + xp=(int)(cx+sx/2.0+sx/2.0*sin(angle2()/180.0*3.141592)); + yp=(int)(cy+sy/2.0+sy/2.0*cos(angle2()/180.0*3.141592)); + fl_pie(xp-2,yp-2,4,4,0,360); + + + + + + fl_push_matrix(); + + fl_translate(cx+sx/2,cy+sy/2); + fl_rotate(a-90.0); + + fl_translate(sx/2,0); + + + fl_begin_polygon(); + pdialcolor(0,0,0); + fl_vertex(-10,-4); + fl_vertex(-10,4); + fl_vertex(0,0); + fl_end_polygon(); + + + fl_pop_matrix(); } void WidgetPDial::pdialcolor(int r,int g,int b) { if (active_r()) fl_color(r,g,b); - else fl_color(160-(160-r)/3,160-(160-b)/3,160-(160-b)/3); + else fl_color(160-(160-r)/3,160-(160-b)/3,160-(160-b)/3); } void WidgetPDial::value_cb2() { @@ -206,10 +206,10 @@ void WidgetPDial::value_cb2() { void WidgetPDial::value_cb(Fl_Widget*, void*data) { WidgetPDial *val = (WidgetPDial*)data; - val->value_cb2(); + val->value_cb2(); } void WidgetPDial::tooltip(const char * c) { tipwin->setText(c); -textset=true; + textset=true; }