zynaddsubfx

ZynAddSubFX open source synthesizer
Log | Files | Refs | Submodules | LICENSE

commit 18be147b7e5ce77f966b74e9b99f06c448538151
parent e09475c83ba671d0802c3a144289d8b897657d56
Author: fundamental <mark.d.mccurry@gmail.com>
Date:   Tue,  6 Aug 2013 15:13:43 -0400

Remove Backend Pointers From ADnoteUI

Well, it sure is not pretty or anywhere near 100% correct, but it does run and
most things seem to talk to the right parameters.

TODO:
- A few ports still need to get defined on the backend
- A few widgets need to get updated s.t. they are rebased properly
- The oscillgen view needs to be unbroken
- Testing testing testing

Diffstat:
Msrc/UI/ADnoteUI.fl | 102++++++++++++++++++++++++++++++-------------------------------------------------
Msrc/UI/PartUI.fl | 19+++++++++----------
2 files changed, 48 insertions(+), 73 deletions(-)

diff --git a/src/UI/ADnoteUI.fl b/src/UI/ADnoteUI.fl @@ -167,15 +167,13 @@ o->redraw();} Function {ADvoicelistitem(int x,int y, int w, int h, const char *label=0):Fl_Osc_Group(x,y,w,h,label)} {open } { code {assert(osc); - nvoice=0; -pars=NULL;} {} + nvoice=0;} {} } - Function {init(ADnoteParameters *parameters,int nvoice_, std::string loc_, Fl_Osc_Interface *osc_)} {open + Function {init(int nvoice_, std::string loc_, Fl_Osc_Interface *osc_)} {open } { code {assert(osc_); assert(!loc_.empty()); -pars=parameters; nvoice=nvoice_; loc = loc_; make_window(); @@ -187,14 +185,11 @@ end();} {} code {if (voiceenabled->value()==0) voicelistitemgroup->deactivate(); else voicelistitemgroup->activate(); detunevalueoutput->do_callback(); -noiselabel->do_callback(); ADnoteVoiceListItem->redraw();} {} } Function {~ADvoicelistitem()} {} { code {ADnoteVoiceListItem->hide();} {} } - decl {ADnoteParameters *pars;} {private local - } decl {int nvoice;} {private local } decl {Fl_Oscilloscope *oscil;} {private local @@ -342,25 +337,24 @@ o->redraw();} delete(oscedit); int nv=nvoice; -if (pars->VoicePar[nvoice].PextFMoscil>=0) - nv=pars->VoicePar[nvoice].PextFMoscil; +if (extFMoscil->value()>=0) + nv=extFMoscil->value(); oscedit=new OscilEditor(true, loc+"mod-oscil/", osc_i);} xywh {700 380 55 15} box THIN_UP_BOX labelfont 1 labelsize 11 - code0 {if (pars->VoicePar[nvoice].PextFMoscil>=0) o->labelcolor(FL_BLUE);} + code0 {/*if (extFMoscil->value()>=0) o->labelcolor(FL_BLUE);*/} } Fl_Slider {} { label Phase - callback {pars->VoicePar[nvoice].PFMoscilphase=64-(int)o->value(); -oscFM->phase=64-(int) o->value(); + callback {oscFM->phase=64-(int) o->value(); fmoscil->redraw();} xywh {645 415 105 15} type {Horz Knob} box NO_BOX labelsize 10 align 5 minimum -64 maximum 63 step 1 - code0 {o->value(64-pars->VoicePar[nvoice].PFMoscilphase);} + code0 {o->init("PFMoscilphase", 'c');} + class Fl_Osc_Slider } - Fl_Choice {} { + Fl_Choice extFMoscil { label Use - callback {pars->VoicePar[nvoice].PextFMoscil=(int)o->value()-1; -if ((int) o->value() != 0) { + callback {if ((int) o->value() != 0) { oscFM->init(false); changeFMoscilbutton->labelcolor(FL_BLUE); } else { @@ -371,13 +365,13 @@ voiceFMparametersgroup->redraw();} open xywh {560 410 75 20} down_box BORDER_BOX labelsize 10 textfont 1 textsize 10 code0 {o->add("Internal");} code1 {char tmp[50]; for (int i=0;i<nvoice;i++) {sprintf(tmp,"ExtM.%2d",i+1);o->add(tmp);};} - code3 {o->value(pars->VoicePar[nvoice].PextFMoscil+1);} + code3 {o->init("PextFMoscil",1);} + class Fl_Osc_Choice } {} } Fl_Choice {} { label {External Mod.} - callback {pars->VoicePar[nvoice].PFMVoice=(int)o->value()-1; -if ((int) o->value() != 0) { + callback {if ((int) o->value() != 0) { modoscil->deactivate(); modfrequency->deactivate(); } else { @@ -388,8 +382,9 @@ voiceFMparametersgroup->redraw();} open xywh {635 40 85 20} down_box BORDER_BOX labelsize 10 align 5 textfont 1 textsize 10 code0 {o->add("OFF");} code1 {char tmp[50]; for (int i=0;i<nvoice;i++) {sprintf(tmp,"ExtMod.%2d",i+1);o->add(tmp);};} - code2 {o->value(pars->VoicePar[nvoice].PFMVoice+1);} + code2 {o->init("PFMVoice",-1);} code3 {if ((int) o->value() != 0) {modoscil->deactivate();modfrequency->deactivate();}} + class Fl_Osc_Choice } {} } Fl_Choice {} { @@ -482,9 +477,8 @@ o->redraw();} } Fl_Value_Output detunevalueoutput { label Detune - callback {o->value(getdetune((pars->VoicePar[nvoice].PDetuneType==0)?(pars->GlobalPar.PDetuneType) : (pars->VoicePar[nvoice].PDetuneType),0,pars->VoicePar[nvoice].PDetune)*pars->getBandwidthDetuneMultiplier());} + callback {//o->value(getdetune((pars->VoicePar[nvoice].PDetuneType==0)?(pars->GlobalPar.PDetuneType) : (pars->VoicePar[nvoice].PDetuneType),0,pars->VoicePar[nvoice].PDetune)*pars->getBandwidthDetuneMultiplier());} xywh {10 287 45 15} labelsize 10 align 5 minimum -5000 maximum 5000 step 0.01 textfont 1 textsize 10 - code0 {o->value(getdetune((pars->VoicePar[nvoice].PDetuneType==0)?(pars->GlobalPar.PDetuneType) : (pars->VoicePar[nvoice].PDetuneType),0,pars->VoicePar[nvoice].PDetune)*pars->getBandwidthDetuneMultiplier());} } Fl_Check_Button {} { label 440Hz @@ -512,7 +506,7 @@ o->redraw();} Fl_Group voiceoscil { xywh {80 390 445 145} box THIN_DOWN_BOX color 32 selection_color 71 labelcolor 179 code0 {osc=new Fl_Oscilloscope(o->x(),o->y(),o->w(),o->h(),"");} - code1 {voiceoscil->base = loc;voiceoscil->ext="oscil/";//int nv=nvoice; if (pars->VoicePar[nvoice].Pextoscil>=0) nv=pars->VoicePar[nvoice].Pextoscil;} + code1 {voiceoscil->base = loc;voiceoscil->ext="oscil/";//int nv=nvoice; if (extoscil->value()>=0) nv=extoscil->value();} code2 {voiceoscil->osc = osc_i;} code3 {osc->parent(voiceoscil); osc->init(false);} class Fl_Osc_Group @@ -521,12 +515,12 @@ o->redraw();} label Change callback {delete oscedit; int nv=nvoice; - if(pars->VoicePar[nvoice].Pextoscil>=0) - nv=pars->VoicePar[nvoice].Pextoscil; + if(extoscil->value()>=0) + nv=extoscil->value(); oscedit=new OscilEditor(true,loc+"oscil/", osc_i);} xywh {5 490 65 20} box THIN_UP_BOX labelfont 1 labelsize 11 - code0 {if (pars->VoicePar[nvoice].Pextoscil>=0) o->labelcolor(FL_BLUE);} + code0 {/*if (extoscil->value()>=0) o->labelcolor(FL_BLUE);*/} } Fl_Box {} { label {Voice Oscillator} @@ -546,10 +540,9 @@ voiceoscil->redraw();} code0 {o->init("Presonance");} class Fl_Osc_Check } - Fl_Choice {} { + Fl_Choice extoscil { label {Use Oscil.} - callback {pars->VoicePar[nvoice].Pextoscil=(int)o->value()-1; -if ((int) o->value() != 0) { + callback {if ((int) o->value() != 0) { osc->init(false); changevoiceoscilbutton->labelcolor(FL_BLUE); } else { @@ -562,7 +555,8 @@ voiceonbutton->redraw();} open xywh {5 470 65 15} down_box BORDER_BOX labelsize 10 align 5 textfont 1 textsize 10 code0 {o->add("Internal");} code1 {char tmp[50]; for (int i=0;i<nvoice;i++) {sprintf(tmp,"Ext.%2d",i+1);o->add(tmp);};} - code3 {o->value(pars->VoicePar[nvoice].Pextoscil+1);} + code3 {o->init("Pextoscil",1);} + class Fl_Osc_Choice } {} Fl_Group {} {open xywh {5 540 515 45} box UP_FRAME @@ -688,7 +682,7 @@ o->redraw();} Fl_Group voicefilterenvgroup { label {ADSynth Voice - Filter Envelope} open xywh {250 115 275 70} box FLAT_BOX color 51 align 144 - code0 {o->init(//pars->VoicePar[nvoice].FilterEnvelope, + code0 {o->init( ENV_ADSR_FILTER, osc_i, loc, "FilterEnvelope/");} class EnvelopeUI } {} @@ -724,8 +718,7 @@ o->redraw();} } {} Fl_Choice {} { callback {if (o->value()==0) voicemodegroup->activate(); - else voicemodegroup->deactivate(); -noiselabel->do_callback();} + else voicemodegroup->deactivate();} tooltip {Oscillator Type (sound/noise)} xywh {5 515 65 20} down_box BORDER_BOX labelsize 10 textfont 1 textsize 10 code0 {o->init("Type");} class Fl_Osc_Choice @@ -767,9 +760,13 @@ bypassfiltercheckbutton->redraw();} } Fl_Box noiselabel { label {White Noise} - callback {if (pars->VoicePar[nvoice].Type==0) o->hide(); else o->show();} xywh {150 430 300 65} labelfont 1 labelsize 50 labelcolor 7 - code0 {if (pars->VoicePar[nvoice].Type==0) o->hide(); else o->show();} + } + Fl_Check_Button {} { + callback {if (o->value()==0) noiselabel->hide(); else noiselabel->show();} + xywh {0 0 0 0} + code0 {o->init("Type");} + class Fl_Osc_Check } } Fl_Check_Button voiceonbutton { @@ -785,14 +782,12 @@ o->redraw();} } Function {ADvoiceUI(int x,int y, int w, int h, const char *label=0):Fl_Group(x,y,w,h,label)} {} { code {nvoice=0; -pars=NULL; oscedit=NULL;} {} } - Function {init(ADnoteParameters *parameters,int nvoice_, std::string loc_, Fl_Osc_Interface *osc_)} {open + Function {init(int nvoice_, std::string loc_, Fl_Osc_Interface *osc_)} {open } { code {assert(osc_); assert(!loc_.empty()); -pars=parameters; nvoice=nvoice_; loc=loc_+"voice"+to_s(nvoice)+"/"; base = loc_; @@ -816,8 +811,6 @@ ADnoteVoiceParameters->rebase(base+"voice"+to_s(nvoice)+"/");} {selected } decl {int nvoice;} {private local } - decl {ADnoteParameters *pars;} {private local - } decl {OscilEditor *oscedit;} {private local } decl {Fl_Oscilloscope *osc;} {private local @@ -896,16 +889,12 @@ class ADnoteUI {open : {public PresetsUI_} } {} Fl_Dial {} { label relBW - callback {pars->GlobalPar.PBandwidth=(int) o->value(); - -pars->getBandwidthDetuneMultiplier(); - -for (int i=0;i<NUM_VOICES;i++){ + callback {for (int i=0;i<NUM_VOICES;i++){ voicelistitem[i]->refreshlist(); };} tooltip {Bandwidth - how the relative fine detune of the voice are changed} xywh {505 295 25 25} box ROUND_UP_BOX labelsize 10 align 1 maximum 127 step 1 - code0 {o->value(pars->GlobalPar.PBandwidth);} - class WidgetPDial + code0 {o->init("PBandwidth");} + class Fl_Osc_Dial } } Fl_Group {} { @@ -1050,7 +1039,7 @@ resui->resonancewindow->show();} } Fl_Group advoice {open xywh {0 0 765 585} - code0 {o->init(pars,nvoice,loc, osc);} + code0 {o->init(nvoice,loc, osc);} code1 {o->show();} class ADvoiceUI } {} @@ -1062,16 +1051,6 @@ resui->resonancewindow->show();} Fl_Counter currentvoicecounter { label {Current Voice} callback {nvoice=(int)o->value()-1; -/* -advoice->hide(); -ADnoteVoice->remove(advoice); -delete advoice; -advoice=new ADvoiceUI(0,0,765,585); -ADnoteVoice->add(advoice); -advoice->init(pars,nvoice,loc+"voice"+to_s(nvoice)+"/", osc); -advoice->show(); -ADnoteVoice->redraw(); -*/ advoice->change_voice(nvoice);} xywh {10 590 130 25} type Simple labelfont 1 align 8 minimum 0 maximum 2 step 1 value 1 textfont 1 textsize 13 code0 {o->bounds(1,NUM_VOICES);} @@ -1131,17 +1110,16 @@ advoice->change_voice(nvoice);} } { Fl_Pack {} {open xywh {0 20 620 210} - code0 {o->begin();for (int i=0;i<NUM_VOICES;i++){voicelistitem[i]=new ADvoicelistitem(0,0,620,25,"");voicelistitem[i]->init(pars,i,loc+"voice"+to_s(i)+"/",osc);}o->end();} + code0 {o->begin();for (int i=0;i<NUM_VOICES;i++){voicelistitem[i]=new ADvoicelistitem(0,0,620,25,"");voicelistitem[i]->init(i,loc+"voice"+to_s(i)+"/",osc);}o->end();} } {} } } } - Function {ADnoteUI(ADnoteParameters *parameters, std::string loc_, Fl_Osc_Interface *osc_)} {open + Function {ADnoteUI(std::string loc_, Fl_Osc_Interface *osc_)} {open } { code {assert(osc_); assert(!loc_.empty()); -pars=parameters; nvoice=0; resui=new ResonanceUI(osc_, loc_+"global/Reson/"); loc=loc_; @@ -1174,8 +1152,6 @@ for (int i=0;i<NUM_VOICES;i++) voicelistitem[i]->refreshlist(); resui->refresh(); currentvoicecounter->do_callback();} {} } - decl {ADnoteParameters *pars;} {private local - } decl {ResonanceUI *resui;} {private local } decl {int nvoice;} {private local diff --git a/src/UI/PartUI.fl b/src/UI/PartUI.fl @@ -1084,9 +1084,9 @@ keylimitlist->value(val);} {selected }; if (kititem!=lastkititem){ - if (adnoteui!=NULL) delete (adnoteui); - if (subnoteui!=NULL) delete (subnoteui); - if (padnoteui!=NULL) delete (padnoteui); + delete adnoteui; + delete subnoteui; + delete padnoteui; adnoteui=NULL;subnoteui=NULL;padnoteui=NULL; lastkititem=kititem; @@ -1094,15 +1094,13 @@ if (kititem!=lastkititem){ if (kititem<0) return; if (part->kit[kititem].adpars) - adnoteui=new ADnoteUI(part->kit[kititem].adpars, loc+"kit"+to_s(kititem)+"/adpars/", osc); + adnoteui=new ADnoteUI(loc+"kit"+to_s(kititem)+"/adpars/", osc); if (part->kit[kititem].subpars) subnoteui=new SUBnoteUI(osc, loc+"kit"+to_s(kititem)+"/subpars/"); if (part->kit[kititem].padpars) { - char buffer[1024]; - snprintf(buffer, 1024, "%skit%d/padpars/", part_path.c_str(), kititem); - padnoteui=new PADnoteUI(buffer, osc); + padnoteui=new PADnoteUI(loc+"kit"+to_s(kititem)+"/padpars", osc); } }; @@ -1114,9 +1112,10 @@ if ((engine==1)&&(subnoteui!=NULL)) subnoteui->SUBparameters->show(); if ((engine==2)&&(adnoteui!=NULL)) padnoteui->padnotewindow->show();} {} } Function {~PartUI()} {} { - code {if (adnoteui!=NULL) delete (adnoteui); -if (subnoteui!=NULL) delete (subnoteui); -if (padnoteui!=NULL) delete (padnoteui); + code { +delete adnoteui; +delete subnoteui; +delete padnoteui; partgroup->hide(); //delete(partgroup);