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:
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);