commit 69da34cca193e20f693a75aefc08cd01598bc97a
parent 139137f85ff5421383d3aea8f150c371c471685d
Author: paulnasca <paulnasca>
Date: Sat, 7 Feb 2004 11:58:58 +0000
*** empty log message ***
Diffstat:
28 files changed, 361 insertions(+), 176 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -525,5 +525,5 @@
05 Feb 2004 - Se salveaza toti parametrii in XML
06 Feb 2004 - Adaugat salvarea de instrument in XML
- Adaugat export la bank intr-un director XML si decis ca bank-ul sa fie un director cu mai multe fisiere xml de forma XXXX-nume.xml sau XXXX-nume.xml.gz
-
+07 Feb 2004 - adaugat functii de initializare si renuntat la masterdefaultbuf si instrumentdefaultbuf (adica salvarea la inceput si incarcarea bufferelor cu instrumentele prestabilite)
diff --git a/src/Effects/EffectMgr.C b/src/Effects/EffectMgr.C
@@ -35,14 +35,21 @@ EffectMgr::EffectMgr(int insertion_,pthread_mutex_t *mutex_){
efxoutl[i]=0.0;
efxoutr[i]=0.0;
};
+
+ defaults();
};
+
EffectMgr::~EffectMgr(){
if (efx!=NULL) delete (efx);
delete (efxoutl);
delete (efxoutr);
};
+void EffectMgr::defaults(){
+ changeeffect(0);
+};
+
/*
* Change the effect
*/
diff --git a/src/Effects/EffectMgr.h b/src/Effects/EffectMgr.h
@@ -41,9 +41,11 @@ class EffectMgr{
public:
EffectMgr(int insertion_,pthread_mutex_t *mutex_);
~EffectMgr();
+
void saveloadbuf(Buffer *buf);
- void add2XML(XMLwrapper *xml);
+ void add2XML(XMLwrapper *xml);
+ void defaults();
void out(REALTYPE *smpsl,REALTYPE *smpsr);
diff --git a/src/Misc/Master.C b/src/Misc/Master.C
@@ -28,7 +28,6 @@
#include <sys/types.h>
Master::Master(){
- int npart,nefx;
swaplr=0;
pthread_mutex_init(&mutex,NULL);
@@ -43,7 +42,6 @@ Master::Master(){
ksoundbuffersamplelow=0.0;
oldsamplel=0.0;oldsampler=0.0;
shutup=0;
- vuresetpeaks();
for (int npart=0;npart<NUM_MIDI_PARTS;npart++) {
vuoutpeakpart[npart]=1e-9;
fakepeakpart[npart]=0;
@@ -54,26 +52,45 @@ Master::Master(){
audiooutr[i]=0.0;
};
- for (npart=0;npart<NUM_MIDI_PARTS;npart++){
+ for (int npart=0;npart<NUM_MIDI_PARTS;npart++)
part[npart]=new Part(µtonal,fft,&mutex);
- part[npart]->Prcvchn=npart%NUM_MIDI_CHANNELS;
+
+
+
+ //Insertion Effects init
+ for (int nefx=0;nefx<NUM_INS_EFX;nefx++)
+ insefx[nefx]=new EffectMgr(1,&mutex);
+
+ //System Effects init
+ for (int nefx=0;nefx<NUM_SYS_EFX;nefx++) {
+ sysefx[nefx]=new EffectMgr(0,&mutex);
};
- partonoff(0,1);//enable the first part
+
+ defaults();
+};
+
+void Master::defaults(){
volume=1.0;
setPvolume(80);
setPkeyshift(64);
+
+ for (int npart=0;npart<NUM_MIDI_PARTS;npart++){
+ part[npart]->defaults();
+ part[npart]->Prcvchn=npart%NUM_MIDI_CHANNELS;
+ };
- //Insertion Effects init
- for (nefx=0;nefx<NUM_INS_EFX;nefx++) {
- insefx[nefx]=new EffectMgr(1,&mutex);
+ partonoff(0,1);//enable the first part
+
+ for (int nefx=0;nefx<NUM_INS_EFX;nefx++) {
+ insefx[nefx]->defaults();
Pinsparts[nefx]=-1;
};
-
+
//System Effects init
- for (nefx=0;nefx<NUM_SYS_EFX;nefx++) {
- sysefx[nefx]=new EffectMgr(0,&mutex);
- for (npart=0;npart<NUM_MIDI_PARTS;npart++){
+ for (int nefx=0;nefx<NUM_SYS_EFX;nefx++) {
+ sysefx[nefx]->defaults();
+ for (int npart=0;npart<NUM_MIDI_PARTS;npart++){
if (nefx==0) setPsysefxvol(npart,nefx,64);
else setPsysefxvol(npart,nefx,0);
};
@@ -82,19 +99,6 @@ Master::Master(){
};
sysefx[0]->changeeffect(1);
-
-
- //save all parameters to "masterdefaults" Buffer (I need later when I clear all parameters)
- //this has to be after the master initialisation
- masterdefaultsbuf.resetbuffer();
- masterdefaultsbuf.changeminimal(0);//save all parameters, even disabled
- masterdefaultsbuf.changemode(1);
- this->saveloadbuf(&masterdefaultsbuf);
- //save all instrument patameters
- instrumentdefaultsbuf.resetbuffer();
- instrumentdefaultsbuf.changeminimal(0);
- instrumentdefaultsbuf.changemode(1);
- part[0]->saveloadbuf(&instrumentdefaultsbuf,1);
};
/*
@@ -698,8 +702,7 @@ void Master::exportbankasxmldirectory(const char *directory){
mkdir(directory,S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
for (int slot=0;slot<128;slot++){
- instrumentdefaultsbuf.changemode(0);
- tmppart->saveloadbuf(&instrumentdefaultsbuf,1);
+ tmppart->defaults();
bank.loadfromslot(slot,&slbuf);
slbuf.changemode(0);
tmppart->saveloadbuf(&slbuf,1);
diff --git a/src/Misc/Master.h b/src/Misc/Master.h
@@ -51,6 +51,8 @@ class Master{
//this adds the parameters to the XML data
void add2XML(XMLwrapper *xml);
+ void defaults();
+
//Midi IN
void NoteOn(unsigned char chan,unsigned char note,unsigned char velocity);
diff --git a/src/Misc/Microtonal.C b/src/Misc/Microtonal.C
@@ -29,10 +29,10 @@
Microtonal::Microtonal(){
Pname=new unsigned char[MICROTONAL_MAX_NAME_LEN];
Pcomment=new unsigned char[MICROTONAL_MAX_NAME_LEN];
- reset();
+ defaults();
};
-void Microtonal::reset(){
+void Microtonal::defaults(){
Pinvertupdown=0;
Pinvertupdowncenter=60;
octavesize=12;
diff --git a/src/Misc/Microtonal.h b/src/Misc/Microtonal.h
@@ -36,7 +36,7 @@ class Microtonal{
public:
Microtonal();
~Microtonal();
- void reset();
+ void defaults();
REALTYPE getnotefreq(int note,int keyshift);
diff --git a/src/Misc/Part.C b/src/Misc/Part.C
@@ -36,52 +36,27 @@ Part::Part(Microtonal *microtonal_,FFTwrapper *fft_, pthread_mutex_t *mutex_){
tmpoutr=new REALTYPE [SOUND_BUFFER_SIZE];
for (int n=0;n<NUM_KIT_ITEMS;n++){
- kit[n].Penabled=0;kit[n].Pmuted=0;
- kit[n].Pminkey=0;kit[n].Pmaxkey=127;
- kit[n].Padenabled=0;kit[n].Psubenabled=0;
kit[n].Pname=new unsigned char [PART_MAX_NAME_LEN];
- for (int i=0;i<PART_MAX_NAME_LEN;i++) kit[n].Pname[i]='\0';
- kit[n].Psendtoparteffect=0;
kit[n].adpars=NULL;kit[n].subpars=NULL;
};
- kit[0].Penabled=1;
+
kit[0].adpars=new ADnoteParameters(fft);
kit[0].subpars=new SUBnoteParameters();
- ADPartParameters=kit[0].adpars;
- SUBPartParameters=kit[0].subpars;
+// ADPartParameters=kit[0].adpars;
+// SUBPartParameters=kit[0].subpars;
//Part's Insertion Effects init
- for (int nefx=0;nefx<NUM_PART_EFX;nefx++) {
+ for (int nefx=0;nefx<NUM_PART_EFX;nefx++)
partefx[nefx]=new EffectMgr(1,mutex);
- Pefxroute[nefx]=0;//route to next effect
- };
for (int n=0;n<NUM_PART_EFX+1;n++) {
partfxinputl[n]=new REALTYPE [SOUND_BUFFER_SIZE];
partfxinputr[n]=new REALTYPE [SOUND_BUFFER_SIZE];
};
- //parameters setup
- Penabled=0;
- Pminkey=0;
- Pmaxkey=127;
- Pnoteon=1;
- Ppolymode=1;
- setPvolume(96);
- Pkeyshift=64;
- Prcvchn=0;
- setPpanning(64);
- Pvelsns=64;
- Pveloffs=64;
- Pkeylimit=15;
- Pkitmode=0;
- Pdrummode=0;
killallnotes=0;
oldfreq=-1.0;
- PADnoteenabled=1;
- PSUBnoteenabled=0;
-
int i,j;
for (i=0;i<POLIPHONY;i++){
partnote[i].status=KEY_OFF;
@@ -94,18 +69,66 @@ Part::Part(Microtonal *microtonal_,FFTwrapper *fft_, pthread_mutex_t *mutex_){
partnote[i].time=0;
};
cleanup();
+
Pname=new unsigned char [PART_MAX_NAME_LEN];
- for (i=0;i<PART_MAX_NAME_LEN;i++) Pname[i]='\0';
+
+ oldvolumel=oldvolumer=0.5;
+ lastnote=-1;disablekitloading=0;
+
+
+ defaults();
+};
+
+void Part::defaults(){
+ Penabled=0;
+ Pminkey=0;
+ Pmaxkey=127;
+ Pnoteon=1;
+ Ppolymode=1;
+ setPvolume(96);
+ Pkeyshift=64;
+ Prcvchn=0;
+ setPpanning(64);
+ Pvelsns=64;
+ Pveloffs=64;
+ Pkeylimit=15;
+ defaultsinstrument();
+};
+
+void Part::defaultsinstrument(){
+ memset(Pname,0,PART_MAX_NAME_LEN);
info.Ptype=0;
memset(info.Pauthor,0,MAX_INFO_TEXT_SIZE+1);
memset(info.Pcomments,0,MAX_INFO_TEXT_SIZE+1);
+
+ PADnoteenabled=1;
+ PSUBnoteenabled=0;
- oldvolumel=oldvolumer=0.5;
- lastnote=-1;disablekitloading=0;
+ Pkitmode=0;
+ Pdrummode=0;
+
+ for (int n=0;n<NUM_KIT_ITEMS;n++){
+ kit[n].Penabled=0;kit[n].Pmuted=0;
+ kit[n].Pminkey=0;kit[n].Pmaxkey=127;
+ kit[n].Padenabled=0;kit[n].Psubenabled=0;
+ memset(kit[n].Pname,0,PART_MAX_NAME_LEN);
+ kit[n].Psendtoparteffect=0;
+ setkititemstatus(n,0);
+ };
+ kit[0].Penabled=1;
+ kit[0].Padenabled=1;
+ setkititemstatus(0,1);
+
+ for (int nefx=0;nefx<NUM_PART_EFX;nefx++) {
+ partefx[nefx]->defaults();
+ Pefxroute[nefx]=0;//route to next effect
+ };
+
};
+
/*
* Cleanup the part
*/
@@ -212,8 +235,8 @@ void Part::NoteOn(unsigned char note,unsigned char velocity,int masterkeyshift){
partnote[pos].itemsplaying=0;
if (Pkitmode==0){//init the notes for the "normal mode"
partnote[pos].kititem[0].sendtoparteffect=0;
- if (PADnoteenabled!=0) partnote[pos].kititem[0].adnote=new ADnote(ADPartParameters,&ctl,notebasefreq,vel,portamento,note);
- if (PSUBnoteenabled!=0) partnote[pos].kititem[0].subnote=new SUBnote(SUBPartParameters,&ctl,notebasefreq,vel,portamento,note);
+ if (PADnoteenabled!=0) partnote[pos].kititem[0].adnote=new ADnote(kit[0].adpars,&ctl,notebasefreq,vel,portamento,note);
+ if (PSUBnoteenabled!=0) partnote[pos].kititem[0].subnote=new SUBnote(kit[0].subpars,&ctl,notebasefreq,vel,portamento,note);
if ((PADnoteenabled!=0)||(PSUBnoteenabled!=0)) partnote[pos].itemsplaying++;
} else {//init the notes for the "kit mode"
for (int item=0;item<NUM_KIT_ITEMS;item++){
@@ -304,10 +327,10 @@ void Part::SetController(unsigned int type,int par){
setPvolume(Pvolume);//update the volume
setPpanning(Ppanning);//update the panning
- ADPartParameters->GlobalPar.Reson->
+ kit[0].adpars->GlobalPar.Reson->
sendcontroller(C_resonance_center,1.0);
- ADPartParameters->GlobalPar.Reson->
+ kit[0].adpars->GlobalPar.Reson->
sendcontroller(C_resonance_bandwidth,1.0);
//more update to add here if I add controllers
break;
@@ -315,12 +338,12 @@ void Part::SetController(unsigned int type,int par){
break;
case C_resonance_center:
ctl.setresonancecenter(par);
- ADPartParameters->GlobalPar.Reson->
+ kit[0].adpars->GlobalPar.Reson->
sendcontroller(C_resonance_center,ctl.resonancecenter.relcenter);
break;
case C_resonance_bandwidth:
ctl.setresonancebw(par);
- ADPartParameters->GlobalPar.Reson->
+ kit[0].adpars->GlobalPar.Reson->
sendcontroller(C_resonance_bandwidth,ctl.resonancebandwidth.relbw);
break;
};
@@ -640,7 +663,7 @@ void Part::saveloadbufkititem(Buffer *buf,unsigned char item,int saveitem0){
break;
case 0xA0: if (buf->getmode()!=0){//saving
if ((buf->getminimal()!=0)&&(kit[item].Padenabled==0)) break;
- if ((item==0)&&(saveitem0==0)) break;//the first item parameters are already saved (as ADPartParameters)
+ if ((item==0)&&(saveitem0==0)) break;//the first item parameters are already saved (as kit[0].adpars)
if (kit[item].adpars==NULL) break;
buf->rwbyte(&npar);
};
@@ -648,7 +671,7 @@ void Part::saveloadbufkititem(Buffer *buf,unsigned char item,int saveitem0){
break;
case 0xA1: if (buf->getmode()!=0){//saving
if ((buf->getminimal()!=0)&&(kit[item].Psubenabled==0)) break;
- if ((item==0)&&(saveitem0==0)) break;//the first item parameters are already saved (as SUBPartParameters)
+ if ((item==0)&&(saveitem0==0)) break;//the first item parameters are already saved (as kit[0].subpars)
if (kit[item].subpars==NULL) break;
buf->rwbyte(&npar);
};
@@ -815,12 +838,12 @@ void Part::saveloadbuf(Buffer *buf,int instrumentonly){
case 0xC0: if ((buf->getminimal()!=0) && (buf->getmode()!=0)
&& (PADnoteenabled==0)) break;
if (buf->getmode()!=0) buf->rwbyte(&npar);
- ADPartParameters->saveloadbuf(buf);
+ kit[0].adpars->saveloadbuf(buf);
break;
case 0xC1: if ((buf->getminimal()!=0) && (buf->getmode()!=0)
&& (PSUBnoteenabled==0)) break;
if (buf->getmode()!=0) buf->rwbyte(&npar);
- SUBPartParameters->saveloadbuf(buf);
+ kit[0].adpars->saveloadbuf(buf);
break;
case 0xD0: if (buf->getmode()!=0) {
if (instrumentonly!=2){
diff --git a/src/Misc/Part.h b/src/Misc/Part.h
@@ -63,14 +63,18 @@ class Part{
void add2XML(XMLwrapper *xml);
void add2XMLinstrument(XMLwrapper *xml);
+
+ void defaults();
+ void defaultsinstrument();
+
void saveloadbufkititem(Buffer *buf,unsigned char item,int saveitem0);
void swapcopyitem(int item1,int item2,int mode);
void cleanup();
- ADnoteParameters *ADPartParameters;
- SUBnoteParameters *SUBPartParameters;
+// ADnoteParameters *ADPartParameters;
+// SUBnoteParameters *SUBPartParameters;
//the part's kit
struct {
diff --git a/src/Misc/Util.h b/src/Misc/Util.h
@@ -37,12 +37,6 @@ extern REALTYPE VelF(REALTYPE velocity,unsigned char scaling);
//Buffer used for Save/Load
extern Buffer slbuf;
-//this is used to store all parameters at start of program and reload when I need to clear all data (eg. before loading master parameters)
-extern Buffer masterdefaultsbuf;
-
-//this is used to store the default instrument settings (necessary when the instrument is cleared)
-extern Buffer instrumentdefaultsbuf;
-
//the buffer used as clipboard
extern Buffer clipboardbuf;
diff --git a/src/Params/ADnoteParameters.C b/src/Params/ADnoteParameters.C
@@ -27,25 +27,43 @@
#include "ADnoteParameters.h"
ADnoteParameters::ADnoteParameters(FFTwrapper *fft_){
- int nvoice;
fft=fft_;
+
+ GlobalPar.FreqEnvelope=new EnvelopeParams(0,0);
+ GlobalPar.FreqEnvelope->ASRinit(64,50,64,60);
+ GlobalPar.FreqLfo=new LFOParams(70,0,64,0,0,0,0,0);
+
+ GlobalPar.AmpEnvelope=new EnvelopeParams(64,1);
+ GlobalPar.AmpEnvelope->ADSRinit_dB(0,40,127,25);
+ GlobalPar.AmpLfo=new LFOParams(80,0,64,0,0,0,0,1);
+
+ GlobalPar.GlobalFilter=new FilterParams(2,94,40);
+ GlobalPar.FilterEnvelope=new EnvelopeParams(0,1);
+ GlobalPar.FilterEnvelope->ADSRinit_filter(64,40,64,70,60,64);
+ GlobalPar.FilterLfo=new LFOParams(80,0,64,0,0,0,0,2);
+ GlobalPar.Reson=new Resonance();
+
+ for (int nvoice=0;nvoice<NUM_VOICES;nvoice++) EnableVoice(nvoice);
+
+ defaults();
+};
+
+void ADnoteParameters::defaults(){
//Default Parameters
/* Frequency Global Parameters */
GlobalPar.PStereo=1;//stereo
GlobalPar.PDetune=8192;//zero
GlobalPar.PCoarseDetune=0;
GlobalPar.PDetuneType=1;
- GlobalPar.FreqEnvelope=new EnvelopeParams(0,0);
- GlobalPar.FreqEnvelope->ASRinit(64,50,64,60);
- GlobalPar.FreqLfo=new LFOParams(70,0,64,0,0,0,0,0);
+ GlobalPar.FreqEnvelope->defaults();
+ GlobalPar.FreqLfo->defaults();
/* Amplitude Global Parameters */
GlobalPar.PVolume=90;
GlobalPar.PPanning=64;//center
GlobalPar.PAmpVelocityScaleFunction=64;
- GlobalPar.AmpEnvelope=new EnvelopeParams(64,1);
- GlobalPar.AmpEnvelope->ADSRinit_dB(0,40,127,25);
- GlobalPar.AmpLfo=new LFOParams(80,0,64,0,0,0,0,1);
+ GlobalPar.AmpEnvelope->defaults();
+ GlobalPar.AmpLfo->defaults();
GlobalPar.PPunchStrength=0;
GlobalPar.PPunchTime=60;
GlobalPar.PPunchStretch=64;
@@ -54,13 +72,12 @@ ADnoteParameters::ADnoteParameters(FFTwrapper *fft_){
/* Filter Global Parameters*/
GlobalPar.PFilterVelocityScale=64;
GlobalPar.PFilterVelocityScaleFunction=64;
- GlobalPar.GlobalFilter=new FilterParams(2,94,40);
- GlobalPar.FilterEnvelope=new EnvelopeParams(0,1);
- GlobalPar.FilterEnvelope->ADSRinit_filter(64,40,64,70,60,64);
- GlobalPar.FilterLfo=new LFOParams(80,0,64,0,0,0,0,2);
- GlobalPar.Reson=new Resonance();
+ GlobalPar.GlobalFilter->defaults();
+ GlobalPar.FilterEnvelope->defaults();
+ GlobalPar.FilterLfo->defaults();
+ GlobalPar.Reson->defaults();
- for (nvoice=0;nvoice<NUM_VOICES;nvoice++){
+ for (int nvoice=0;nvoice<NUM_VOICES;nvoice++){
VoicePar[nvoice].Enabled=0;
VoicePar[nvoice].Type=0;
VoicePar[nvoice].Pfixedfreq=0;
@@ -88,7 +105,7 @@ ADnoteParameters::ADnoteParameters(FFTwrapper *fft_){
VoicePar[nvoice].PFilterLfoEnabled=0;
VoicePar[nvoice].PFMEnabled=0;
- //I use the internal oscillator intern (-1)
+ //I use the internal oscillator (-1)
VoicePar[nvoice].PFMVoice=-1;
VoicePar[nvoice].PFMVolume=90;
@@ -99,20 +116,33 @@ ADnoteParameters::ADnoteParameters(FFTwrapper *fft_){
VoicePar[nvoice].PFMFreqEnvelopeEnabled=0;
VoicePar[nvoice].PFMAmpEnvelopeEnabled=0;
VoicePar[nvoice].PFMVelocityScaleFunction=64;
-
- EnableVoice(nvoice);
+
+ VoicePar[nvoice].OscilSmp->defaults();
+ VoicePar[nvoice].FMSmp->defaults();
+
+ VoicePar[nvoice].AmpEnvelope->defaults();
+ VoicePar[nvoice].AmpLfo->defaults();
+
+ VoicePar[nvoice].FreqEnvelope->defaults();
+ VoicePar[nvoice].FreqLfo->defaults();
+
+ VoicePar[nvoice].VoiceFilter->defaults();
+ VoicePar[nvoice].FilterEnvelope->defaults();
+ VoicePar[nvoice].FilterLfo->defaults();
+
+ VoicePar[nvoice].FMFreqEnvelope->defaults();
+ VoicePar[nvoice].FMAmpEnvelope->defaults();
};
VoicePar[0].Enabled=1;
};
+
/*
* Init the voice parameters
*/
void ADnoteParameters::EnableVoice(int nvoice){
VoicePar[nvoice].OscilSmp=new OscilGen(fft,GlobalPar.Reson);
VoicePar[nvoice].FMSmp=new OscilGen(fft,NULL);
- VoicePar[nvoice].OscilSmp->prepare();
- VoicePar[nvoice].FMSmp->prepare();
VoicePar[nvoice].AmpEnvelope=new EnvelopeParams(64,1);
VoicePar[nvoice].AmpEnvelope->ADSRinit_dB(0,100,127,100);
diff --git a/src/Params/ADnoteParameters.h b/src/Params/ADnoteParameters.h
@@ -258,19 +258,18 @@ class ADnoteParameters{
ADnoteVoiceParam VoicePar[NUM_VOICES];
void add2XML(XMLwrapper *xml);
- void add2XMLvoice(XMLwrapper *xml,int nvoice);
+ void defaults();
void saveloadbuf(Buffer *buf);
void saveloadbufvoice(Buffer *buf,unsigned char nvoice);
void copypastevoice(int n,int what);
private:
-
-
-
void EnableVoice(int nvoice);
void KillVoice(int nvoice);
FFTwrapper *fft;
+
+ void add2XMLvoice(XMLwrapper *xml,int nvoice);
};
#endif
diff --git a/src/Params/Controller.C b/src/Params/Controller.C
@@ -25,6 +25,14 @@
#include <stdio.h>
Controller::Controller(){
+ defaults();
+ resetall();
+};
+
+Controller::~Controller(){
+};
+
+void Controller::defaults(){
setpitchwheelbendrange(200);//2 halftones
expression.receive=1;
panning.depth=64;
@@ -52,10 +60,6 @@ Controller::Controller(){
initportamento(440.0,440.0);
setportamento(0);
- resetall();
-};
-
-Controller::~Controller(){
};
void Controller::resetall(){
diff --git a/src/Params/Controller.h b/src/Params/Controller.h
@@ -36,6 +36,7 @@ class Controller{
void saveloadbuf(Buffer *buf);
void add2XML(XMLwrapper *xml);
+ void defaults();
//Controllers functions
void setpitchwheel(int value);
diff --git a/src/Params/EnvelopeParams.C b/src/Params/EnvelopeParams.C
@@ -43,6 +43,8 @@ EnvelopeParams::EnvelopeParams(unsigned char Penvstretch_,unsigned char Pforcedr
Pforcedrelease=Pforcedrelease_;
Pfreemode=1;
Plinearenvelope=0;
+
+ store2defaults();
};
EnvelopeParams::~EnvelopeParams(){
@@ -63,6 +65,8 @@ void EnvelopeParams::ADSRinit(char A_dt,char D_dt,char S_val,char R_dt){
PA_dt=A_dt;PD_dt=D_dt;PS_val=S_val;PR_dt=R_dt;
Pfreemode=0;
converttofree();
+
+ store2defaults();
};
void EnvelopeParams::ADSRinit_dB(char A_dt,char D_dt,char S_val,char R_dt){
@@ -70,6 +74,8 @@ void EnvelopeParams::ADSRinit_dB(char A_dt,char D_dt,char S_val,char R_dt){
PA_dt=A_dt;PD_dt=D_dt;PS_val=S_val;PR_dt=R_dt;
Pfreemode=0;
converttofree();
+
+ store2defaults();
};
void EnvelopeParams::ASRinit(char A_val,char A_dt,char R_val,char R_dt){
@@ -78,6 +84,7 @@ void EnvelopeParams::ASRinit(char A_val,char A_dt,char R_val,char R_dt){
Pfreemode=0;
converttofree();
+ store2defaults();
};
void EnvelopeParams::ADSRinit_filter(char A_val,char A_dt,char D_val,char D_dt,char R_dt,char R_val){
@@ -85,6 +92,7 @@ void EnvelopeParams::ADSRinit_filter(char A_val,char A_dt,char D_val,char D_dt,c
PA_val=A_val;PA_dt=A_dt;PD_val=D_val;PD_dt=D_dt;PR_dt=R_dt;PR_val=R_val;
Pfreemode=0;
converttofree();
+ store2defaults();
};
void EnvelopeParams::ASRinit_bw(char A_val,char A_dt,char R_val,char R_dt){
@@ -92,7 +100,7 @@ void EnvelopeParams::ASRinit_bw(char A_val,char A_dt,char R_val,char R_dt){
PA_val=A_val;PA_dt=A_dt;PR_val=R_val;PR_dt=R_dt;
Pfreemode=0;
converttofree();
-
+ store2defaults();
};
/*
@@ -127,6 +135,8 @@ void EnvelopeParams::converttofree(){
};
+
+
/*
* Save or load the parameters to/from the buffer
*/
@@ -230,3 +240,33 @@ void EnvelopeParams::add2XML(XMLwrapper *xml){
+void EnvelopeParams::defaults(){
+ Penvstretch=Denvstretch;
+ Pforcedrelease=Dforcedrelease;
+ Plinearenvelope=Dlinearenvelope;
+ PA_dt=DA_dt;
+ PD_dt=DD_dt;
+ PR_dt=DR_dt;
+ PA_val=DA_val;
+ PD_val=DD_val;
+ PS_val=DS_val;
+ PR_val=DR_val;
+ Pfreemode=0;
+ converttofree();
+};
+
+void EnvelopeParams::store2defaults(){
+ Denvstretch=Penvstretch;
+ Dforcedrelease=Pforcedrelease;
+ Dlinearenvelope=Plinearenvelope;
+ DA_dt=PA_dt;
+ DD_dt=PD_dt;
+ DR_dt=PR_dt;
+ DA_val=PA_val;
+ DD_val=PD_val;
+ DS_val=PS_val;
+ DR_val=PR_val;
+};
+
+
+
diff --git a/src/Params/EnvelopeParams.h b/src/Params/EnvelopeParams.h
@@ -43,7 +43,7 @@ class EnvelopeParams{
void saveloadbuf(Buffer *buf);
void add2XML(XMLwrapper *xml);
-
+ void defaults();
REALTYPE getdt(char i);
@@ -60,6 +60,8 @@ class EnvelopeParams{
unsigned char PA_dt,PD_dt,PR_dt,
PA_val,PD_val,PS_val,PR_val;
+
+
int Envmode;// 1 for ADSR parameters (linear amplitude)
// 2 for ADSR_dB parameters (dB amplitude)
// 3 for ASR parameters (frequency LFO)
@@ -67,6 +69,16 @@ class EnvelopeParams{
// 5 for ASR_bw parameters (bandwidth parameters)
private:
+ void store2defaults();
+
+ /* Default parameters */
+ unsigned char Denvstretch;
+ unsigned char Dforcedrelease;
+ unsigned char Dlinearenvelope;
+ unsigned char DA_dt,DD_dt,DR_dt,
+ DA_val,DD_val,DS_val,DR_val;
+
+
};
diff --git a/src/Params/FilterParams.C b/src/Params/FilterParams.C
@@ -26,9 +26,22 @@
#include "FilterParams.h"
FilterParams::FilterParams(unsigned char Ptype_,unsigned char Pfreq_,unsigned char Pq_){
- Ptype=Ptype_;
- Pfreq=Pfreq_;
- Pq=Pq_;
+ Dtype=Ptype_;
+ Dfreq=Pfreq_;
+ Dq=Pq_;
+
+ defaults();
+};
+
+FilterParams::~FilterParams(){
+};
+
+
+void FilterParams::defaults(){
+ Ptype=Dtype;
+ Pfreq=Dfreq;
+ Pq=Dq;
+
Pstages=0;
Pfreqtrack=64;
Pgain=64;
@@ -45,8 +58,7 @@ FilterParams::FilterParams(unsigned char Ptype_,unsigned char Pfreq_,unsigned c
};
Psequencesize=3;
- for (int i=0;i<FF_MAX_SEQUENCE;i++)
- Psequence[i].nvowel=i%FF_MAX_VOWELS;
+ for (int i=0;i<FF_MAX_SEQUENCE;i++) Psequence[i].nvowel=i%FF_MAX_VOWELS;
Psequencestretch=40;
Psequencereversed=0;
@@ -55,10 +67,6 @@ FilterParams::FilterParams(unsigned char Ptype_,unsigned char Pfreq_,unsigned c
Pvowelclearness=64;
};
-FilterParams::~FilterParams(){
-};
-
-
/*
* Parameter control
*/
diff --git a/src/Params/FilterParams.h b/src/Params/FilterParams.h
@@ -34,6 +34,7 @@ class FilterParams{
void saveloadbuf(Buffer *buf);
void add2XML(XMLwrapper *xml);
+ void defaults();
REALTYPE getfreq();
@@ -81,6 +82,10 @@ class FilterParams{
REALTYPE getformantq(unsigned char q);
private:
+ //stored default parameters
+ unsigned char Dtype;
+ unsigned char Dfreq;
+ unsigned char Dq;
};
#endif
diff --git a/src/Params/LFOParams.C b/src/Params/LFOParams.C
@@ -28,21 +28,33 @@
int LFOParams::time;
LFOParams::LFOParams(char Pfreq_,char Pintensity_,char Pstartphase_, char PLFOtype_,char Prandomness_, char Pdelay_,char Pcontinous_,char fel_){
- Pfreq=Pfreq_;
- Pintensity=Pintensity_;
- Pstartphase=Pstartphase_;
- PLFOtype=PLFOtype_;
- Prandomness=Prandomness_;
- Pdelay=Pdelay_;
- Pcontinous=Pcontinous_;
- Pfreqrand=0;
+ Dfreq=Pfreq_;
+ Dintensity=Pintensity_;
+ Dstartphase=Pstartphase_;
+ DLFOtype=PLFOtype_;
+ Drandomness=Prandomness_;
+ Ddelay=Pdelay_;
+ Dcontinous=Pcontinous_;
fel=fel_;
time=0;
+
+ defaults();
};
LFOParams::~LFOParams(){
};
+void LFOParams::defaults(){
+ Pfreq=Dfreq;
+ Pintensity=Dintensity;
+ Pstartphase=Dstartphase;
+ PLFOtype=DLFOtype;
+ Prandomness=Drandomness;
+ Pdelay=Ddelay;
+ Pcontinous=Dcontinous;
+ Pfreqrand=0;
+};
+
/*
* Save or load the parameters to/from the buffer
*/
diff --git a/src/Params/LFOParams.h b/src/Params/LFOParams.h
@@ -36,6 +36,8 @@ class LFOParams{
void add2XML(XMLwrapper *xml);
+ void defaults();//reset parameters to the default parameters
+
/* Parametrii MIDI */
unsigned char Pfreq; // frequency
unsigned char Pintensity; // intensity
@@ -46,10 +48,18 @@ class LFOParams{
unsigned char Pdelay; // delay (0=off)
unsigned char Pcontinous; // 1 if LFO is continous
-
int fel;//what kind is the LFO (0 - frequency, 1 - amplitude, 2 - filter)
static int time;//is used by Pcontinous parameter
private:
+ /* Default parameters */
+ unsigned char Dfreq;
+ unsigned char Dintensity;
+ unsigned char Dstartphase;
+ unsigned char DLFOtype;
+ unsigned char Drandomness;
+ unsigned char Ddelay;
+ unsigned char Dcontinous;
+
};
diff --git a/src/Params/SUBnoteParameters.C b/src/Params/SUBnoteParameters.C
@@ -25,6 +25,22 @@
#include <stdio.h>
SUBnoteParameters::SUBnoteParameters(){
+ AmpEnvelope=new EnvelopeParams(64,1);
+ AmpEnvelope->ADSRinit_dB(0,40,127,25);
+ FreqEnvelope=new EnvelopeParams(64,0);
+ FreqEnvelope->ASRinit(30,50,64,60);
+ BandWidthEnvelope=new EnvelopeParams(64,0);
+ BandWidthEnvelope->ASRinit_bw(100,70,64,60);
+
+ GlobalFilter=new FilterParams(2,80,40);
+ GlobalFilterEnvelope=new EnvelopeParams(0,1);
+ GlobalFilterEnvelope->ADSRinit_filter(64,40,64,70,60,64);
+
+ defaults();
+};
+
+
+void SUBnoteParameters::defaults(){
PVolume=96;
PPanning=64;
PAmpVelocityScaleFunction=90;
@@ -50,21 +66,20 @@ SUBnoteParameters::SUBnoteParameters(){
};
Phmag[0]=127;
- AmpEnvelope=new EnvelopeParams(64,1);
- AmpEnvelope->ADSRinit_dB(0,40,127,25);
- FreqEnvelope=new EnvelopeParams(64,0);
- FreqEnvelope->ASRinit(30,50,64,60);
- BandWidthEnvelope=new EnvelopeParams(64,0);
- BandWidthEnvelope->ASRinit_bw(100,70,64,60);
-
PGlobalFilterEnabled=0;
- GlobalFilter=new FilterParams(2,80,40);
PGlobalFilterVelocityScale=64;
PGlobalFilterVelocityScaleFunction=64;
- GlobalFilterEnvelope=new EnvelopeParams(0,1);
- GlobalFilterEnvelope->ADSRinit_filter(64,40,64,70,60,64);
+
+ AmpEnvelope->defaults();
+ FreqEnvelope->defaults();
+ BandWidthEnvelope->defaults();
+ GlobalFilter->defaults();
+ GlobalFilterEnvelope->defaults();
+
};
+
+
SUBnoteParameters::~SUBnoteParameters(){
delete (AmpEnvelope);
delete (FreqEnvelope);
@@ -264,4 +279,3 @@ void SUBnoteParameters::add2XML(XMLwrapper *xml){
-
diff --git a/src/Params/SUBnoteParameters.h b/src/Params/SUBnoteParameters.h
@@ -35,7 +35,9 @@ class SUBnoteParameters{
~SUBnoteParameters();
void saveloadbuf(Buffer *buf);
+
void add2XML(XMLwrapper *xml);
+ void defaults();
//Parameters
//AMPLITUDE PARAMETRERS
diff --git a/src/Synth/OscilGen.C b/src/Synth/OscilGen.C
@@ -29,14 +29,27 @@
#include "../Misc/Util.h"
OscilGen::OscilGen(FFTwrapper *fft_,Resonance *res_){
- int i;
-
fft=fft_;
- oscilFFTfreqs=new REALTYPE[OSCIL_SIZE];
-
res=res_;
+ oscilFFTfreqs=new REALTYPE[OSCIL_SIZE];
+
+ basefuncFFTfreqsQ=NULL;
+ basefuncFFTfreqs=NULL;
+ outoscilFFTfreqs=NULL;
+
+ defaults();
+};
+
+OscilGen::~OscilGen(){
+ if (basefuncFFTfreqs!=NULL) delete [] basefuncFFTfreqs;
+ if (basefuncFFTfreqsQ!=NULL) delete [] basefuncFFTfreqsQ;
+ delete [] oscilFFTfreqs;
+};
+
+
+void OscilGen::defaults(){
oldbasefunc=0;oldbasepar=64;oldhmagtype=0;oldwaveshapingfunction=0;oldwaveshaping=64,oldnormalizemethod=0;
- for (i=0;i<MAX_AD_HARMONICS;i++){
+ for (int i=0;i<MAX_AD_HARMONICS;i++){
hmag[i]=0.0;
hphase[i]=0.0;
Phmag[i]=64;
@@ -60,19 +73,19 @@ OscilGen::OscilGen(FFTwrapper *fft_,Resonance *res_){
Pamprandpower=64;
Pamprandtype=0;
- basefuncFFTfreqsQ=NULL;
- basefuncFFTfreqs=NULL;
- outoscilFFTfreqs=NULL;
+ if (basefuncFFTfreqsQ!=NULL) {
+ delete(basefuncFFTfreqsQ);
+ basefuncFFTfreqsQ=NULL;
+ };
+ if (basefuncFFTfreqs!=NULL){
+ delete(basefuncFFTfreqs);
+ basefuncFFTfreqs=NULL;
+ };
- for (i=0;i<OSCIL_SIZE;i++) oscilFFTfreqs[i]=0.0;
+ for (int i=0;i<OSCIL_SIZE;i++) oscilFFTfreqs[i]=0.0;
oscilprepared=0;
oldfilterpars=0;oldsapars=0;
-};
-
-OscilGen::~OscilGen(){
- if (basefuncFFTfreqs!=NULL) delete [] basefuncFFTfreqs;
- if (basefuncFFTfreqsQ!=NULL) delete [] basefuncFFTfreqsQ;
- delete [] oscilFFTfreqs;
+ prepare();
};
/*
diff --git a/src/Synth/OscilGen.h b/src/Synth/OscilGen.h
@@ -52,7 +52,7 @@ class OscilGen{
void saveloadbuf(Buffer *buf);
void add2XML(XMLwrapper *xml);
-
+ void defaults();
//Parameters
diff --git a/src/Synth/Resonance.C b/src/Synth/Resonance.C
@@ -27,6 +27,14 @@
#include <stdio.h>
Resonance::Resonance(){
+ defaults();
+};
+
+Resonance::~Resonance(){
+};
+
+
+void Resonance::defaults(){
Penabled=0;
PmaxdB=20;
Pcenterfreq=64;//1 kHz
@@ -38,10 +46,6 @@ Resonance::Resonance(){
for (int i=0;i<N_RES_POINTS;i++) Prespoints[i]=64;
};
-Resonance::~Resonance(){
-};
-
-
/*
* Set a point of resonance function with a value
*/
diff --git a/src/Synth/Resonance.h b/src/Synth/Resonance.h
@@ -41,7 +41,7 @@ class Resonance{
void saveloadbuf(Buffer *buf);
void add2XML(XMLwrapper *xml);
-
+ void defaults();
REALTYPE getfreqpos(REALTYPE freq);
REALTYPE getfreqx(REALTYPE x);
diff --git a/src/UI/BankUI.fl b/src/UI/BankUI.fl
@@ -261,8 +261,7 @@ if ((what==1)&&(mode==2)){//save(write) to slot
if ((what==1)&&(mode==1)&&(!bank->emptyslot(slot))){//Reads from slot
pthread_mutex_lock(&master->mutex);
- instrumentdefaultsbuf.changemode(0);
- master->part[*npart]->saveloadbuf(&instrumentdefaultsbuf,1);
+ master->part[*npart]->defaultsinstrument();
bank->loadfromslot(slot,&slbuf);
slbuf.changemode(0);
master->part[*npart]->saveloadbuf(&slbuf,1);
diff --git a/src/UI/MasterUI.fl b/src/UI/MasterUI.fl
@@ -404,9 +404,7 @@ updatepanel();}
delete microtonalui;
pthread_mutex_lock(&master->mutex);
- masterdefaultsbuf.changemode(0);
- master->saveloadbuf(&masterdefaultsbuf);
- master->microtonal.reset();
+ master->defaults();
pthread_mutex_unlock(&master->mutex);
npartcounter->do_callback();
@@ -436,12 +434,13 @@ if (result==0) {
pthread_mutex_lock(&master->mutex);
//clear all parameters, first
- masterdefaultsbuf.changemode(0);
- master->saveloadbuf(&masterdefaultsbuf);
- master->part[0]->Penabled=0;
+
+ master->defaults();
+
//load the data
master->saveloadbuf(&slbuf);
pthread_mutex_unlock(&master->mutex);
+
npartcounter->do_callback();
syseffnocounter->do_callback();
inseffnocounter->do_callback();
@@ -495,7 +494,7 @@ if (result==0) {
slbuf.changemode(0);
pthread_mutex_lock(&master->mutex);
- master->microtonal.reset();
+ master->microtonal.defaults();
master->microtonal.saveloadbuf(&slbuf);
pthread_mutex_unlock(&master->mutex);
@@ -565,7 +564,7 @@ pthread_mutex_lock(&master->mutex);
master->part[npart]->saveXML(filename);
pthread_mutex_unlock(&master->mutex);
-updatepanel();} selected
+updatepanel();}
xywh {20 20 100 20} divider
}
menuitem {} {
@@ -573,9 +572,7 @@ updatepanel();} selected
callback {if (fl_ask("Clear instrument's parameters ?")){
int npart=(int)npartcounter->value();
pthread_mutex_lock(&master->mutex);
- instrumentdefaultsbuf.changemode(0);
- master->part[npart]->disablekitloading=0;
- master->part[npart]->saveloadbuf(&instrumentdefaultsbuf,1);
+ master->part[npart]->defaultsinstrument();
pthread_mutex_unlock(&master->mutex);
npartcounter->do_callback();
@@ -596,8 +593,8 @@ if (result==0) {
int npart=(int)npartcounter->value();
//clear all instrument parameters, first
- instrumentdefaultsbuf.changemode(0);
- master->part[npart]->saveloadbuf(&instrumentdefaultsbuf,1);
+ master->part[npart]->defaultsinstrument();
+
//load the instr. parameters
master->part[npart]->saveloadbuf(&slbuf,1);
pthread_mutex_unlock(&master->mutex);
@@ -607,7 +604,7 @@ if (result==0) {
else fl_alert("Error: Could not load the file.");
};
-updatepanel();}
+updatepanel();} selected
xywh {20 20 100 20}
}
menuitem {} {