commit f14e22535c971c9e83c444e351b64eb95dc00d3a
parent 36f2b1f238748b3113576d543f708f0e3dfcba6e
Author: paulnasca <paulnasca>
Date: Tue, 24 Aug 2004 15:26:55 +0000
*** empty log message ***
Diffstat:
36 files changed, 8 insertions(+), 2740 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -701,5 +701,6 @@
- Makefile-ul modificat, a.i. make-ul sa se opreasca in caz de eroare
- Terminat managerul de preset-uri
23 Aug 2004 - Adaugata posibilitatea de a se vedea direct din lista cu bancile de instrumente
+24 Aug 2004 - Inlaturat complet suportul pentru formatele *.mas_zyn, *.ins_zyn, *.bnk_zyn si *.scl_zyn
\ No newline at end of file
diff --git a/src/Effects/EffectMgr.C b/src/Effects/EffectMgr.C
@@ -241,66 +241,6 @@ void EffectMgr::setdryonly(bool value){
dryonly=value;
};
-
-/*
- * Save or load the parameters to/from the buffer
- */
-void EffectMgr::saveloadbuf(Buffer *buf){
- unsigned char npar,p,n,tmp;
-
-#ifdef DEBUG_BUFFER
- fprintf(stderr,"%s","\n( EffectPparameters) \n");
-#endif
-
- tmp=0xfe;
- buf->rwbyte(&tmp);//if tmp!=0xfe error
-
-
- for (n=0x80;n<0xf0;n++){
- if (buf->getmode()==0) {
- buf->rwbyte(&npar);
- n=0;//force a loop until the end of parameters (0xff)
- } else npar=n;
-
- if (npar==0xff) break;
-
- switch (npar){
- case 0x80: p=geteffect();
- buf->rwbytepar(n,&p);
- if (buf->getmode()==0) {
- changeeffect(p);
- for (n=0;n<128;n++){
- seteffectpar_nolock(n,0);
- };
- };
- break;
- case 0x81: if (buf->getmode()!=0) {
- for (unsigned char np=0;np<0x7f;np++){
- p=geteffectpar(np);
- if (p==0) continue;//do not save parameters if they are zero
- buf->rwbyte(&npar);
- buf->rwbyte(&np);
- buf->rwbyte(&p);
- };
- } else {
- unsigned char np;
- buf->rwbyte(&np);
- buf->rwbyte(&p);
- seteffectpar_nolock(np,p);
- };
- break;
- case 0x82: if (efx!=NULL) buf->rwbytepar(n,&(efx->Ppreset));
- break;
- };
- };
-
-
- if (buf->getmode()!=0) {
- unsigned char tmp=0xff;
- buf->rwbyte(&tmp);
- };
-};
-
void EffectMgr::add2XML(XMLwrapper *xml){
xml->addpar("type",geteffect());
diff --git a/src/Effects/EffectMgr.h b/src/Effects/EffectMgr.h
@@ -34,7 +34,6 @@
#include "Distorsion.h"
#include "EQ.h"
#include "DynamicFilter.h"
-#include "../Misc/Buffer.h"
#include "../Misc/XMLwrapper.h"
#include "../Params/FilterParams.h"
#include "../Params/Presets.h"
@@ -45,8 +44,6 @@ class EffectMgr:public Presets{
EffectMgr(int insertion_,pthread_mutex_t *mutex_);
~EffectMgr();
- void saveloadbuf(Buffer *buf);
-
void add2XML(XMLwrapper *xml);
void defaults();
void getfromXML(XMLwrapper *xml);
diff --git a/src/Misc/Bank.h b/src/Misc/Bank.h
@@ -35,7 +35,6 @@
#define MAX_NUM_BANKS 400
-
class Bank{
public:
Bank();
diff --git a/src/Misc/Buffer.C b/src/Misc/Buffer.C
@@ -1,277 +0,0 @@
-//this file/class is obsolete and should be removed
-
-/*
- ZynAddSubFX - a software synthesizer
-
- Buffer.C - A buffer used to save/load parameters
- Copyright (C) 2002-2004 Nasca Octavian Paul
- Author: Nasca Octavian Paul
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of version 2 of the GNU General Public License
- as published by the Free Software Foundation.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License (version 2) for more details.
-
- You should have received a copy of the GNU General Public License (version 2)
- along with this program; if not, write to the Free Software Foundation,
- Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-*/
-
-#include <stdio.h>
-#include "Buffer.h"
-
-Buffer::Buffer(){
- mode=1;
- minimal=0;
- datak=datasize=0;
- data=firstdata=NULL;
-};
-
-Buffer::~Buffer(){
- resetbuffer();
-};
-
-/*
- * Get or set byte to/from buffer (depends on the mode)
- */
-void Buffer::rwbyte(unsigned char *b){
- if (data==NULL){//first time
- data=new list;
- firstdata=data;
- for (int i=0;i<BUFFER_CHUNK_SIZE;i++)
- data->d[i]=0xff;
- datak=0;
- data->next=NULL;
- };
-
- if (mode==0) *b=data->d[datak];
- else {
- data->d[datak]=*b;
- datasize++;
- };
-
- datak++;
-
- if (datak>=BUFFER_CHUNK_SIZE) {
- if (mode==0) {//read from the buffer
- if (data->next!=NULL) data=data->next;
- else {
- *b=0xff;
- for (int i=0;i<BUFFER_CHUNK_SIZE;i++) data->d[i]=0xff;
- };
- } else {//write to the buffer
- list *tmp=new list;
- tmp->next=NULL;
- for (int i=0;i<BUFFER_CHUNK_SIZE;i++)
- tmp->d[i]=0xff;
- data->next=tmp;
- data=tmp;
- };
- datak=0;
- };
-
-#ifdef DEBUG_BUFFER
- if (*b<16) fprintf(stderr,"0");
- fprintf(stderr,"[%d]%x ",mode,*b);
-// fprintf(stderr,"%x ",*b);
-// if (*b==0xff) fprintf(stderr,"*");
- fflush(stderr);
-#endif
-};
-
-/*
- * Get or set byte to/from buffer (depends on the mode)
- * Also get the byte with parameter number.
- */
-void Buffer::rwbytepar(unsigned char npar,unsigned char *b){
- if (mode!=0) rwbyte(&npar);
- rwbyte(b);
- if (mode==0) *b &= 0x7f;
-#ifdef DEBUG_BUFFER
- fprintf(stderr," ");
-#endif
-};
-
-
-/*
- * Get or set word to/from buffer (depends on the mode)
- */
-void Buffer::rwword(unsigned short int *s){
- unsigned char b1,b2;
- b1= *s/128;
- b2= *s%128;
- rwbyte(&b1);
- rwbyte(&b2);
- if (mode==0) *s=b1*128+b2;
-
-#ifdef DEBUG_BUFFER
- fprintf(stderr," ");
-#endif
-};
-
-/*
- * Get or set word to/from buffer (depends on the mode)
- * Also get the parameter number.
- */
-void Buffer::rwwordpar(unsigned char npar,unsigned short int *s){
- if (mode!=0) rwbyte(&npar);
- rwword(s);
-
-#ifdef DEBUG_BUFFER
- fprintf(stderr," ");
-#endif
-};
-
-/*
- * Get or set word to/from buffer (depends on the mode)
- * Also get the parameter number.
- * Wrap if the word is less than 0.
- */
-void Buffer::rwwordparwrap(unsigned char npar,short int *s){
- unsigned short int tmp;
- if (mode!=0) rwbyte(&npar);
-
- if (getmode()!=0) {
- tmp=(0x4000+ *s)%0x4000;
- rwword(&tmp);
- } else {
- rwword(&tmp);
- *s =tmp;
- if (tmp>0x2000) *s=(signed short int)tmp-0x4000;
- };
-
-#ifdef DEBUG_BUFFER
- fprintf(stderr," ");
-#endif
-};
-
-
-/*
- * Reset the buffer
- */
-void Buffer::resetbuffer(){
- datak=0;
- datasize=0;
- data=firstdata;
-
- if (data==NULL) return;
- while (data->next!=NULL){
- list *tmp=data;
- data=data->next;
- delete(tmp);
- };
-
- delete(data);
- data=firstdata=NULL;
-
-};
-
-/*
- * Change the mode: 0 => the buffer becomes a read buffer
- other value => the buffer becomes a write buffer
- */
-void Buffer::changemode(int mode){
-
-// fprintf(stderr,"ch %d %d \n",this->mode,mode);
- if (mode!=0) resetbuffer();
- else {
- datak=0;
- data=firstdata;
- };
- this->mode=mode;
-#ifdef DEBUG_BUFFER
- fprintf(stderr,"\n\n-=CHANGING MODE (%d)=-\n\n",mode);
-#endif
-};
-
-/*
- * Get the mode of the buffer (0=read, other value=write)
- */
-int Buffer::getmode(){
- return(this->mode);
-};
-
-/*
- * Change the "minimal" value of the buffer
- * If it is different than 0, the program will not save into the buffer
- * unused data (like disabled parts..)
- */
-void Buffer::changeminimal(int minimal){
- this->minimal=minimal;
-};
-
-/*
- * Get the "minimal" mode
- */
-int Buffer::getminimal(){
- return(this->minimal);
-};
-
-
-/*
- * skip if there are data that are saved on "better" specifications
- * (eg. a part or a voice that are higher
- * than the number of theese suported by the program)
- * This is used if you load some data with an older version of the program
- */
-void Buffer::skipbranch(){
- unsigned char tmp=0,k=1;
- int found0xfe=0;
- do {
- this->rwbyte(&tmp);
- if (tmp==0xfe) {
- k++;
- found0xfe=1;
- };
- if (tmp==0xff) k--;
- } while ((k>1)||(found0xfe==0));
-};
-
-/*
- * Dumps all data from the buffer (used to save to file)
- */
-void Buffer::getalldata(int n,unsigned char *d){
-#ifdef DEBUG_BUFFER
- fprintf(stderr,"\n\n-= GET ALL DATA=-\n\n");
-#endif
- int tmpmode=mode,tmpdatak=datak;
- list *tmpdata=data;
- mode=0;//read
- datak=0;
- data=firstdata;
-
- for (int k=0;k<n;k++) rwbyte(&d[k]);
-
- mode=tmpmode;
- datak=tmpdatak;
- data=tmpdata;
-};
-
-/*
- * Dumps all data to the buffer (used to load file)
- */
-void Buffer::putalldata(int n,unsigned char *d){
-#ifdef DEBUG_BUFFER
- fprintf(stderr,"\n\n-= DUMP ALL DATA=-\n\n");
-#endif
- resetbuffer();
-
- mode=1;//write
- for (int k=0;k<n;k++) rwbyte(&d[k]);
- datak=0;
- datasize=n;
-};
-
-/*
- * Get the size of the data stored in the buffer (used by save/load to/from file)
- */
-int Buffer::getsize(){
- return(datasize);
-};
-
-
diff --git a/src/Misc/Buffer.h b/src/Misc/Buffer.h
@@ -1,63 +0,0 @@
-/*
- ZynAddSubFX - a software synthesizer
-
- Buffer.h - A buffer used to save/load parameters
- Copyright (C) 2002-2004 Nasca Octavian Paul
- Author: Nasca Octavian Paul
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of version 2 of the GNU General Public License
- as published by the Free Software Foundation.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License (version 2) for more details.
-
- You should have received a copy of the GNU General Public License (version 2)
- along with this program; if not, write to the Free Software Foundation,
- Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-*/
-
-#ifndef BUFFER_H
-#define BUFFER_H
-#include "../globals.h"
-
-//#define DEBUG_BUFFER
-
-class Buffer{
-#define BUFFER_CHUNK_SIZE 1000
- public:
- Buffer();
- ~Buffer();
- int getmode();
- int getminimal();
- void changeminimal(int minimal);
- void changemode(int mode);
- void rwbyte(unsigned char *b);//read or write byte
- void rwbytepar(unsigned char npar,unsigned char *b);//read or write a parameter
-
- void rwword(unsigned short int *s);//read or write word
- void rwwordpar(unsigned char npar,unsigned short int *s);
- void rwwordparwrap(unsigned char npar,short int *s);
- void skipbranch();
- void resetbuffer();
-
- int getsize();
- void getalldata(int n,unsigned char *d);
- void putalldata(int n,unsigned char *d);
-
- private:
-
- struct list{
- unsigned char d[BUFFER_CHUNK_SIZE];
- struct list *next;
- } *data,*firstdata;
-
- int datak,datasize;
- int mode;//0 - read, 1 write
- int minimal;//If it is different than 0, the program will not save into the buffer unused data (like disabled parts..)
-};
-
-#endif
diff --git a/src/Misc/Makefile b/src/Misc/Makefile
@@ -1,6 +1,6 @@
include ../Makefile.inc
-objects=Bank.o OldBank.o Buffer.o Master.o Microtonal.o Part.o Util.o Config.o Dump.o XMLwrapper.o
+objects=Bank.o Master.o Microtonal.o Part.o Util.o Config.o Dump.o XMLwrapper.o
all: $(objects)
diff --git a/src/Misc/Master.C b/src/Misc/Master.C
@@ -535,188 +535,6 @@ void Master::vuresetpeaks(){
};
-/*
- * Get the effect volume for the system effect
- */
-void Master::saveloadbuf(Buffer *buf){
- unsigned char npar,n,tmp;
-
-#ifdef DEBUG_BUFFER
- fprintf(stderr,"\n\n\n\n( MASTER parameters) \n");
- if (buf->getmode()==1)fprintf(stderr,"\nTest LOAD\n");
- else fprintf(stderr,"\nTest SAVE\n");
-#endif
-
- tmp=0xfe;
- buf->rwbyte(&tmp);//if tmp!=0xfe error
-
- for (n=0x80;n<0xf0;n++){
- if (buf->getmode()==0) {
- buf->rwbyte(&npar);
- n=0;//force a loop until the end of parameters (0xff)
- } else npar=n;
- if (npar==0xff) break;
-
- switch(npar){
- //Master
- case 0x80: buf->rwbytepar(n,&Pvolume);
- if (buf->getmode()==0) setPvolume(Pvolume);
- break;
- case 0x81: buf->rwbytepar(n,&Pkeyshift);
- if (buf->getmode()==0) setPkeyshift(Pkeyshift);
- break;
- case 0xA0: if (buf->getmode()!=0) {//save the Parts
- for (unsigned char npart=0;npart<NUM_MIDI_PARTS;npart++){
- if ((buf->getminimal()!=0) && (part[npart]->Penabled==0)) continue;
- buf->rwbyte(&npar);
- buf->rwbyte(&npart);//Write the number of part
- part[npart]->saveloadbuf(buf,0);
- };
- } else {//load the Part
- unsigned char npart;
- buf->rwbyte(&npart);
- if (npart<NUM_MIDI_PARTS) {
- part[npart]->disablekitloading=0;
- part[npart]->saveloadbuf(buf,0);
- } else buf->skipbranch();
- };
- break;
- case 0xB0: if (buf->getmode()!=0) {//SYSTEM EFFECTS
- for (unsigned char neffect=0;neffect<NUM_SYS_EFX;neffect++){
- buf->rwbyte(&npar);
- buf->rwbyte(&neffect);
- sysefx[neffect]->saveloadbuf(buf);
- };
- } else {
- unsigned char neffect;
- buf->rwbyte(&neffect);
- if (neffect<NUM_SYS_EFX) sysefx[neffect]->saveloadbuf(buf);
- else buf->skipbranch();
- };
- break;
- case 0xB1: if (buf->getmode()!=0) {//Part send to System Effects
- for (unsigned char neffect=0;neffect<NUM_SYS_EFX;neffect++){
- for (unsigned char npart=0;npart<NUM_MIDI_PARTS;npart++){
- buf->rwbyte(&npar);
- buf->rwbyte(&npart);
- buf->rwbyte(&neffect);
- buf->rwbyte(&Psysefxvol[neffect][npart]);
- };
- };
- } else {
- unsigned char neffect,npart;
- buf->rwbyte(&npart);
- buf->rwbyte(&neffect);
- if ((npart<NUM_MIDI_PARTS) && (neffect<NUM_SYS_EFX)){
- buf->rwbyte(&tmp);
- setPsysefxvol(npart,neffect,tmp);
- } else buf->rwbyte(&tmp);
- };
- break;
- case 0xB2: if (buf->getmode()!=0) {//System Effect send to System Effect
- for (unsigned char neff1=0;neff1<NUM_SYS_EFX;neff1++){
- for (unsigned char neff2=0;neff2<NUM_SYS_EFX;neff2++){
- buf->rwbyte(&npar);
- buf->rwbyte(&neff1);
- buf->rwbyte(&neff2);
- buf->rwbyte(&Psysefxsend[neff1][neff2]);
- };
- };
- } else {
- unsigned char neff1,neff2;
- buf->rwbyte(&neff1);
- buf->rwbyte(&neff2);
- if ((neff1<NUM_SYS_EFX) && (neff2<NUM_SYS_EFX)){
- buf->rwbyte(&tmp);
- setPsysefxsend(neff1,neff2,tmp);
- } else buf->rwbyte(&tmp);
- };
- break;
- case 0xC0: if (buf->getmode()!=0) {//INSERTION EFFECTS
- for (unsigned char neffect=0;neffect<NUM_INS_EFX;neffect++){
- buf->rwbyte(&npar);
- buf->rwbyte(&neffect);
- insefx[neffect]->saveloadbuf(buf);
- };
- } else {
- unsigned char neffect;
- buf->rwbyte(&neffect);
- if (neffect<NUM_INS_EFX) insefx[neffect]->saveloadbuf(buf);
- else buf->skipbranch();
- };
- break;
- case 0xC1: if (buf->getmode()!=0) {
- for (unsigned int neffect=0;neffect<NUM_INS_EFX;neffect++){
- buf->rwbyte(&npar);
- buf->rwwordparwrap(neffect,&Pinsparts[neffect]);
- };
- } else {
- unsigned char neffect;
- buf->rwbyte(&neffect);
- buf->rwwordparwrap(npar,&Pinsparts[neffect]);
- if (Pinsparts[neffect]>=NUM_MIDI_PARTS) Pinsparts[neffect]=-1;
- };
- break;
- case 0xD0: if (buf->getmode()!=0) buf->rwbyte(&npar);
- microtonal.saveloadbuf(buf);
- break;
- case 0xE0: buf->rwbytepar(n,&ctl.NRPN.receive);
- break;
-
- };
- };
-
-
- if (buf->getmode()!=0) {
- unsigned char tmp=0xff;
- buf->rwbyte(&tmp);
- };
-};
-
-void Master::exportbankasxmldirectory(const char *bankfilename){
- char filename[1000],directory[1000],nostr[10];
- Part *tmppart=new Part(µtonal,fft,&mutex);
- tmppart->Penabled=1;
-
-
- int pos=strlen(bankfilename)-20;
- if (pos<0) pos=0;
- snprintf(directory,1000,"export-%s",&bankfilename[pos]);
- for (int i=0;i<(int)strlen(directory);i++){
- if ((directory[i]=='/')||(directory[i]=='\\')||(directory[i]=='.'))
- directory[i]='_';
- };
-
-
-#ifdef OS_WINDOWS
- mkdir(directory);
-#else
- mkdir(directory,S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-#endif
- for (int slot=0;slot<128;slot++){
- tmppart->defaults();
- oldbank.loadfilebank(bankfilename);
- oldbank.loadfromslot(slot,&slbuf);
- slbuf.changemode(0);
- tmppart->saveloadbuf(&slbuf,1);
- snprintf((char *)tmppart->kit[0].Pname,PART_MAX_NAME_LEN,"%s",oldbank.getname(slot));
- snprintf((char *)tmppart->Pname,PART_MAX_NAME_LEN,"%s",oldbank.getname(slot));
- if (oldbank.emptyslot(slot)) continue;
-
- snprintf(nostr,10,"%4d",slot+1);
- for (int i=0;i<(int)strlen(nostr);i++) if (nostr[i]==' ') nostr[i]='0';
-
- snprintf(filename,1000,"%s/%s-%s.xiz",directory,nostr,oldbank.getname(slot));
- printf("%s\n",filename);
- tmppart->saveXML(filename);
- };
-
- bank.loadbank(directory);
-
- delete (tmppart);
-};
-
-
void Master::applyparameters(){
for (int npart=0;npart<NUM_MIDI_PARTS;npart++){
diff --git a/src/Misc/Master.h b/src/Misc/Master.h
@@ -27,11 +27,9 @@
#include "../globals.h"
#include "../Effects/EffectMgr.h"
#include "Part.h"
-#include "../Misc/Buffer.h"
#include "../Output/Recorder.h"
#include "Microtonal.h"
-#include "OldBank.h"
#include "Bank.h"
#include "Dump.h"
#include "../Seq/Sequencer.h"
@@ -43,9 +41,6 @@ class Master{
Master();
~Master();
- void saveloadbuf(Buffer *buf);
- void exportbankasxmldirectory(const char *bankfilename);
-
//saves all settings to a XML file
//returns 0 for ok or <0 if there is an error
int saveXML(char *filename);
@@ -126,7 +121,6 @@ class Master{
//other objects
Microtonal microtonal;
- OldBank oldbank;
Bank bank;
FFTwrapper *fft;
diff --git a/src/Misc/Microtonal.C b/src/Misc/Microtonal.C
@@ -384,186 +384,6 @@ int Microtonal::loadkbm(const char *filename){
};
-/*
- * Save or load the parameters to/from the buffer
- */
-void Microtonal::saveloadbuf(Buffer *buf){
- unsigned char npar,n,tmp;
-
-#ifdef DEBUG_BUFFER
- fprintf(stderr,"\n( Microtonal parameters) \n");
-#endif
-
- tmp=0xfe;
- buf->rwbyte(&tmp);//if tmp!=0xfe error
-
-
- for (n=0x80;n<0xf0;n++){
- if (buf->getmode()==0) {
- buf->rwbyte(&npar);
- n=0;//force a loop until the end of parameters (0xff)
- } else npar=n;
- if (npar==0xff) break;
-
- switch(npar){
- //Microtonal parameters
- case 0x80: buf->rwbytepar(n,&Penabled);
- break;
- case 0x81: buf->rwbytepar(n,&Pinvertupdown);
- break;
- case 0x82: buf->rwbytepar(n,&Pinvertupdowncenter);
- break;
- case 0x83: buf->rwbytepar(n,&PAnote);
- break;
- case 0x84: if (buf->getmode()!=0){
- buf->rwbyte(&npar);
- unsigned short int freqint=(unsigned short int) floor(PAfreq);
- if (freqint>16383) freqint=16383;
- buf->rwword(&freqint);
- unsigned short int freqmod=(unsigned short int)(fmod(PAfreq,1.0)*10000.0);
- buf->rwword(&freqmod);
- } else {
- unsigned short int freqint;
- buf->rwword(&freqint);
- unsigned short int freqmod;
- buf->rwword(&freqmod);
- PAfreq=freqint+freqmod/10000.0;
- };
- break;
- case 0x85: if ((buf->getmode()!=0) && (buf->getminimal()!=0) && (Penabled==0)) break;
- buf->rwbytepar(n,&Pscaleshift);
- break;
- case 0x86: if (buf->getmode()!=0){
- if ((Penabled==0) && (buf->getminimal()!=0)) break;
- for (unsigned char k=0;k<octavesize;k++){
- buf->rwbyte(&npar);
- tmp=0;buf->rwbyte(&tmp);//need in the future if the octave will be >127 keys
- buf->rwbyte(&k);
- buf->rwbyte(&octave[k].type);
- unsigned int x=octave[k].x1;
- tmp=x/16384;buf->rwbyte(&tmp);
- tmp=(x%16384)/128;buf->rwbyte(&tmp);
- tmp=x%128;buf->rwbyte(&tmp);
- x=octave[k].x2;
- tmp=x/16384;buf->rwbyte(&tmp);
- tmp=(x%16384)/128;buf->rwbyte(&tmp);
- tmp=x%128;buf->rwbyte(&tmp);
- };
- } else {
- buf->rwbyte(&tmp); //need in the future for octacesize>127
- unsigned char k;
- buf->rwbyte(&k);
- if (k>=MAX_OCTAVE_SIZE) k=MAX_OCTAVE_SIZE;
- buf->rwbyte(&octave[k].type);
- unsigned int x=0;
- buf->rwbyte(&tmp);x=tmp*(int) 16384;
- buf->rwbyte(&tmp);x+=tmp*(int) 128;
- buf->rwbyte(&tmp);x+=tmp;
- octave[k].x1=x;
- buf->rwbyte(&tmp);x=tmp*(int) 16384;
- buf->rwbyte(&tmp);x+=tmp*(int) 128;
- buf->rwbyte(&tmp);x+=tmp;
- octave[k].x2=x;
-
- if (octave[k].type==1) {
- octave[k].tuning=pow(2.0
- ,(octave[k].x1+octave[k].x2/(REALTYPE)1e6)/1200.0);
- };
- if (octave[k].type==2) {
- if (octave[k].x2==0) octave[k].x2=1;
- octave[k].tuning=octave[k].x1/(REALTYPE) octave[k].x2;
- };
-
- };
- break;
- case 0x87: if ((buf->getmode()!=0) && (buf->getminimal()!=0) && (Penabled==0)) break;
- buf->rwbytepar(n,&octavesize);
- break;
- case 0x88: if (buf->getmode()!=0){
- if ((Penabled==0) && (buf->getminimal()!=0)) break;
- buf->rwbyte(&npar);
- int k=strlen((char *)Pname);
- if (k>MICROTONAL_MAX_NAME_LEN-2) {
- k=MICROTONAL_MAX_NAME_LEN-2;
- };
- Pname[k]='\0';
- for (int i=0;i<k+1;i++){
- unsigned char tmp=Pname[i];
- buf->rwbyte(&tmp);
- };
- } else {
- unsigned char k=0,tmp=1;
- while ((tmp!=0)&&(k<=MICROTONAL_MAX_NAME_LEN-2)){
- buf->rwbyte(&tmp);
- Pname[k++]=tmp;
- };
- Pname[k]='\0';
- };
- break;
- case 0x89: if (buf->getmode()!=0){
- if ((Penabled==0) && (buf->getminimal()!=0)) break;
- buf->rwbyte(&npar);
- int k=strlen((char *)Pcomment);
- if (k>MICROTONAL_MAX_NAME_LEN-2) {
- k=MICROTONAL_MAX_NAME_LEN-2;
- };
- Pcomment[k]='\0';
- for (int i=0;i<k+1;i++){
- unsigned char tmp=Pcomment[i];
- buf->rwbyte(&tmp);
- };
- } else {
- unsigned char k=0,tmp=1;
- while ((tmp!=0)&&(k<=MICROTONAL_MAX_NAME_LEN-2)){
- buf->rwbyte(&tmp);
- Pcomment[k++]=tmp;
- };
- Pcomment[k]='\0';
- };
- break;
- case 0x90: if ((buf->getmode()!=0) && (buf->getminimal()!=0) && (Penabled==0)) break;
- buf->rwbytepar(n,&Pmappingenabled);
- break;
- case 0x91: if ((buf->getmode()!=0) && (buf->getminimal()!=0) && ((Penabled==0)||(Pmappingenabled==0))) break;
- buf->rwbytepar(n,&Pfirstkey);
- break;
- case 0x92: if ((buf->getmode()!=0) && (buf->getminimal()!=0) && ((Penabled==0)||(Pmappingenabled==0))) break;
- buf->rwbytepar(n,&Plastkey);
- break;
- case 0x93: if ((buf->getmode()!=0) && (buf->getminimal()!=0) && ((Penabled==0)||(Pmappingenabled==0))) break;
- buf->rwbytepar(n,&Pmiddlenote);
- break;
- case 0x94: if (buf->getmode()!=0){
- if ((buf->getminimal()!=0) && ((Penabled==0)||(Pmappingenabled==0))) break;
- buf->rwbyte(&npar);
- buf->rwbyte(&Pmapsize);
- for (unsigned char k=0;k<Pmapsize;k++){
- unsigned short int tmp=16383;//-1
- if (Pmapping[k]>=0) tmp=Pmapping[k];
- buf->rwword(&tmp);
- };
- } else {
- buf->rwbyte(&Pmapsize);
- for (unsigned char k=0;k<Pmapsize;k++){
- unsigned short int tmp;
- buf->rwword(&tmp);
- if (tmp!=16383) Pmapping[k]=tmp;
- else Pmapping[k]=-1;
- };
- };
- break;
- case 0x95: buf->rwbytepar(n,&Pglobalfinedetune);
- break;
-
- };
- };
-
- if (buf->getmode()!=0) {
- unsigned char tmp=0xff;
- buf->rwbyte(&tmp);
- };
-};
-
void Microtonal::add2XML(XMLwrapper *xml){
xml->addparstr("name",(char *) Pname);
diff --git a/src/Misc/Microtonal.h b/src/Misc/Microtonal.h
@@ -24,7 +24,6 @@
#define MICROTONAL_H
#include "../globals.h"
-#include "Buffer.h"
#include "XMLwrapper.h"
#define MAX_OCTAVE_SIZE 128
@@ -86,8 +85,6 @@ class Microtonal{
unsigned char *Pname;
unsigned char *Pcomment;
- void saveloadbuf(Buffer *buf);
-
void add2XML(XMLwrapper *xml);
void getfromXML(XMLwrapper *xml);
int saveXML(char *filename);
diff --git a/src/Misc/OldBank.C b/src/Misc/OldBank.C
@@ -1,350 +0,0 @@
-//this file/class is obsolete and should be removed
-
-/*
- ZynAddSubFX - a software synthesizer
-
- OldBank.h - Instrument OldBank (Obsolete)
- Copyright (C) 2002-2004 Nasca Octavian Paul
- Author: Nasca Octavian Paul
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of version 2 of the GNU General Public License
- as published by the Free Software Foundation.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License (version 2) for more details.
-
- You should have received a copy of the GNU General Public License (version 2)
- along with this program; if not, write to the Free Software Foundation,
- Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-*/
-
-#include "OldBank.h"
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <errno.h>
-
-OldBank::OldBank(){
- bankfilename=NULL;bankfiletitle=NULL;lock=1;
- ZERO(&defaultinsname,PART_MAX_NAME_LEN);
- snprintf(defaultinsname,PART_MAX_NAME_LEN,"%s"," ");
- for (int i=0;i<128;i++){
- ZERO(&ins[i].name[0],PART_MAX_NAME_LEN);
- ins[i].size=0;
- ins[i].data=NULL;
- };
-};
-
-OldBank::~OldBank(){
- savefile();
-};
-
-
-/*
- * Get the name of an instrument from the bank
- */
-char *OldBank::getname (unsigned char ninstrument){
- if (emptyslot(ninstrument)) return (&defaultinsname[0]);
- return(&ins[ninstrument].name[0]);
-};
-
-/*
- * Get the numbered name of an instrument from the bank
- */
-char *OldBank::getnamenumbered (unsigned char ninstrument){
- if (ninstrument>=128) return(&tmpinsname[0][0]);
- ZERO(&tmpinsname[ninstrument][0],PART_MAX_NAME_LEN+15);
- snprintf(&tmpinsname[ninstrument][0],PART_MAX_NAME_LEN,"%d. %s",ninstrument+1,getname(ninstrument));
- return(&tmpinsname[ninstrument][0]);
-};
-
-/*
- * Changes the name of an instrument
- */
-void OldBank::setname(unsigned char ninstrument,const char *newname){
- if (emptyslot(ninstrument)) return;
- strncpy(&ins[ninstrument].name[0],newname,PART_MAX_NAME_LEN-1);
- ins[ninstrument].name[PART_MAX_NAME_LEN-1]='\0';//just in case
- getnamenumbered (ninstrument);
-};
-
-/*
- * Check if there is no instrument on a slot from the bank
- */
-int OldBank::emptyslot(unsigned char ninstrument){
- if (ninstrument>=128) return(1);
- if (ins[ninstrument].data==NULL) return (1);
- else return(0);
-};
-
-/*
- * Removes the instrument from the bank
- */
-void OldBank::clearslot(unsigned char ninstrument){
- if (ninstrument>=128) return;
- ins[ninstrument].name[0]='\0';
- ins[ninstrument].size=0;
- if (ins[ninstrument].data!=NULL) delete (ins[ninstrument].data);
- ins[ninstrument].data=NULL;
-};
-
-/*
- * Save the instrument to a slot (the instrument is stored in a buffer who was filled
- * with instrument parameters)
- */
-void OldBank::savetoslot(unsigned char ninstrument,const char *name,Buffer *buf){
- if (ninstrument>=128) return;
- clearslot(ninstrument);
- ins[ninstrument].size=buf->getsize();
- ins[ninstrument].data=new unsigned char [buf->getsize()];
- buf->getalldata(buf->getsize(),ins[ninstrument].data);
- setname(ninstrument,name);
- savefile();
-};
-
-/*
- * Loads the instrument from the bank to a buffer (who will be "dumped" to instrument parameters)
- */
-void OldBank::loadfromslot(unsigned char ninstrument,Buffer *buf){
- if (emptyslot(ninstrument)!=0) return;
- buf->putalldata(ins[ninstrument].size,ins[ninstrument].data);
- buf->changemode(0);
-};
-
-/*
- * Loads the bank from the current file
- */
-int OldBank::loadfile(){
- int file;
-
- file=open(bankfilename,O_RDONLY|O_BINARY,00444+00222);
- if (file==-1) return(2);//something went wrong (access denied,..etc.)
-
- //Load the id.
- char id[2];
- read(file,&id,2);
- if ((id[0]!='N')||(id[1]!='P')) {
- close(file);
- return(3);//invalid data
- };
-
- //Load the format descriptor
- unsigned char fmt; //0x00..0x7f
- read(file,&fmt,1);
- unsigned char type=fmt%0x10;
- if (type!=3){
- close(file);
- return(4);//the data is loaded as something wrong (eg. a master is loaded as a instrument)
- };
- //coding=fmt/0x10;
-
- //load the crc
- unsigned char CRC; //0x00..0x7f
- read(file,&CRC,1);
- //if (CRC!=0){};CHECK IF IT IS OK
-
- //get the meta_data - this has to be changed in future
- unsigned short int metadatasize;
- read (file,&metadatasize,2);
- char tmp[2];
- read (file,&tmp[0],2);
-
- int err=0,ni=0;
- do {
- clearslot(ni);
- //get the slot number (used only to see if there is a error)
- unsigned char slotnr;
- read (file,&slotnr,1);
- if (slotnr!=ni){
- err=1;
- break;
- };
- //get the name
- unsigned char namesize;
- read (file,&namesize,1);
- ZERO(&ins[ni].name[0],PART_MAX_NAME_LEN);//????????
- read (file,&ins[ni].name[0],namesize);
- //get the data
- unsigned int datasize;
- read (file,&datasize,4);
- if (datasize!=0){
- ins[ni].data=new unsigned char [datasize];
- ins[ni].size=datasize;
- for (unsigned int i=0;i<datasize;i++) ins[ni].data[i]=0xff;//if the file data will be not loaded (because of some error), the data is filled with "Buffer exit codes"
- if (read (file,&ins[ni].data[0],datasize)==-1) {
- err=1;
- break;
- };
- };
- //get the meta_data - this has to be changed in future
- unsigned short int metadatasize;
- read (file,&metadatasize,2);
- char tmp[2];
- read (file,&tmp[0],2);
-
- ni++;
- } while ((err==0)&&(ni<128));
-
- if (err!=0) {
- fprintf(stderr,"The bank file is corrupt.\n");
- if (ni<128) clearslot(ni);
- };
- close(file);
- return(0);
-};
-
-/*
- * Saves the bank to the current file
- */
-int OldBank::savefile(){
- int file;
- if (lock!=0) return(2);
- file=open(bankfilename,O_CREAT|O_WRONLY|O_TRUNC|O_BINARY,00444+00222);//overwrite if the file exists
- if (file==-1) return(2);//something went wrong (access denied,..etc.)
-
- //Save the id.
- char id[2]; id[0]='N';id[1]='P';
- write(file,&id,2);
-
- //Save the format descriptor (for future formats)
- unsigned char type=3,//bank
- coding=0;//the encoding (Raw, 7 bit encoding,compressed) (0x00..0x07)
- unsigned char fmt=type+coding*0x10; //0x00..0x7f
- write(file,&fmt,1);
-
- //Save the CRC or 0 for no CRC
- unsigned char CRC=0;//todo, if I do the CRC I do: crc=1+crc % 127;!
- write (file,&CRC,1);
-
- //write the bank meta_data buffer (for future versions)
- unsigned short int metadatasize=2;
- write (file,&metadatasize,2);
- char tmp[2]; tmp[0]=0xfe;tmp[1]=0xff;
- write (file,&tmp[0],metadatasize);
-
- //Save the data
- for (int ni=0;ni<128;ni++){
- //write the slot number (used only to see if there is a error)
- unsigned char slotnr=ni;
- write (file,&slotnr,1);
- //write the instrument name
- unsigned char namesize=strlen(ins[ni].name);
- if (namesize>=PART_MAX_NAME_LEN) namesize=PART_MAX_NAME_LEN;
- write (file,&namesize,1);
- write (file,&ins[ni].name[0],namesize);
- //write the instrument data
- unsigned int datasize=ins[ni].size;
- write (file,&datasize,4);
- write (file,&ins[ni].data[0],datasize);
- //write the instrument meta_data buffer (for future versions)
- unsigned short int metadatasize=2;
- write (file,&metadatasize,2);
- char tmp[2]; tmp[0]=0xfe;tmp[1]=0xff;
- write (file,&tmp[0],metadatasize);
- };
-
- close(file);
- return(0);
-};
-
-
-/*
- * Change the current bank filename
- */
-void OldBank::changebankfilename(const char *newbankfilename,int ro){
- if (bankfilename!=NULL) delete(bankfilename);
- bankfilename=new char [strlen(newbankfilename)+2];
- ZERO(bankfilename,(int) strlen(newbankfilename)+2);
- sprintf(bankfilename,"%s",newbankfilename);
-
- if (bankfiletitle!=NULL) delete(bankfiletitle);
- bankfiletitle=new char [strlen(newbankfilename)+50];
- ZERO(bankfiletitle,(int) strlen(newbankfilename)+50);
- if (ro==0) sprintf(bankfiletitle,"OldBank: %s",newbankfilename);
- else sprintf(bankfiletitle,"OldBank: (LOCKED) %s",newbankfilename);
-};
-
-/*
- * Load a bank from a file and makes it current
- */
-int OldBank::loadfilebank(const char *newbankfilename){
- int file,err=0;
- if (bankfilename!=NULL) savefile();//save the current bank
- file=open(newbankfilename,O_RDWR|O_BINARY);
- if (file==-1) err=1;
- close(file);
- if (err!=0){
- file=open(newbankfilename,O_RDONLY|O_BINARY);
- if (file==-1) err=2;
- close(file);
- };
- if (err==2) return(2);//the file cannot be opened
-
- if (err==0) {
- changebankfilename(newbankfilename,0);
- lock=0;
- } else {
- changebankfilename(newbankfilename,1);
- lock=1;
- };
-
- if (loadfile()!=0) {
- lock=1;
- return(2);//something went wrong
- };
- if (err==0) return(0);//ok
- else return(1);//the file is openend R/O
-};
-
-/*
- * Save the bank to a file and makes it current
- */
-int OldBank::savefilebank(const char *newbankfilename, int overwrite){
- int file;
- if (overwrite==0) file=open(newbankfilename,O_CREAT|O_EXCL|O_WRONLY|O_BINARY,00444+00222);
- else file=open(newbankfilename,O_CREAT|O_WRONLY|O_TRUNC|O_BINARY,00444+00222);//overwrite if the file exists
- if (file==-1) {
- if (errno==EEXIST) return(1);//file exists already
- else return(2);//Access Denied or any other problem
- };
- lock=0;
- changebankfilename(newbankfilename,0);
- savefile();
- return(0);
-};
-
-/*
- * Makes a new bank, put it on a file and makes it current bank
- */
-int OldBank::newfilebank(const char *newbankfilename, int overwrite){
- int file;
- savefile();//saves the current bank before changing the file
- if (overwrite==0) file=open(newbankfilename,O_CREAT|O_EXCL|O_WRONLY|O_BINARY,00444+00222);
- else file=open(newbankfilename,O_CREAT|O_WRONLY|O_TRUNC|O_BINARY,00444+00222);//overwrite if the file exists
- if (file==-1) {
- if (errno==EEXIST) return(1);//file exists already
- else return(2);//Access Denied or any other problem
- };
- lock=0;
- changebankfilename(newbankfilename,0);
- for (int i=0;i<128;i++) clearslot(i);
- savefile();
- return(0);
-};
-
-/*
- * Check if the bank is locked (i.e. the file opened was readonly)
- */
-int OldBank::locked(){
- return(lock);
-};
-
diff --git a/src/Misc/OldBank.h b/src/Misc/OldBank.h
@@ -1,62 +0,0 @@
-/*
- ZynAddSubFX - a software synthesizer
-
- Bank.C - Instrument Bank
- Copyright (C) 2002-2004 Nasca Octavian Paul
- Author: Nasca Octavian Paul
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of version 2 of the GNU General Public License
- as published by the Free Software Foundation.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License (version 2) for more details.
-
- You should have received a copy of the GNU General Public License (version 2)
- along with this program; if not, write to the Free Software Foundation,
- Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-*/
-
-#ifndef OLD_BANK_H
-#define OLD_BANK_H
-
-#include "../globals.h"
-#include "Buffer.h"
-
-class OldBank{
- public:
- OldBank();
- ~OldBank();
- char *getname(unsigned char ninstrument);
- char *getnamenumbered(unsigned char ninstrument);
- void setname(unsigned char ninstrument,const char *newname);
- int emptyslot(unsigned char ninstrument);
- void clearslot(unsigned char ninstrument);
- void savetoslot(unsigned char ninstrument,const char *name,Buffer *buf);
- void loadfromslot(unsigned char ninstrument,Buffer *buf);
- int loadfilebank(const char *newbankfilename);
- int savefilebank(const char *newbankfilename,int overwrite);
- int newfilebank(const char *newbankfilename,int overwrite);
-
- char *bankfiletitle; //this is shown on the UI of the bank (the title of the window)
- int locked();
- private:
- void changebankfilename(const char *newbankfilename,int ro);
- int savefile();
- int loadfile();
-
- int lock;
- char *bankfilename;
- char defaultinsname[PART_MAX_NAME_LEN],tmpinsname[128][PART_MAX_NAME_LEN+20];
- struct insstuct{
- char name[PART_MAX_NAME_LEN];
- unsigned int size;
- unsigned char *data;
- } ins[128];
-};
-
-#endif
-
diff --git a/src/Misc/Part.C b/src/Misc/Part.C
@@ -629,319 +629,6 @@ void Part::setkititemstatus(int kititem,int Penabled_){
-
-void Part::saveloadbufkititem(Buffer *buf,unsigned char item,int saveitem0){
- unsigned char npar,n,tmp;
-// int fmon,min,fmexton;//fmon is 0 if there is no need to save the FM parameters
-
-#ifdef DEBUG_BUFFER
- fprintf(stderr,"\n\n( Part paramete kit item %d) \n",item);
-#endif
-
- tmp=0xfe;
- buf->rwbyte(&tmp);//if tmp!=0xfe error
-
-
- if (item>=NUM_KIT_ITEMS){//too big kit item
- buf->skipbranch();
- return;
- };
-
- for (n=0x80;n<0xF0;n++){
- if (buf->getmode()==0) {
- buf->rwbyte(&npar);
- n=0;//force a loop until the end of parameters (0xff)
- } else npar=n;
- if (npar==0xff) break;
-
- switch(npar){
- case 0x81: buf->rwbytepar(n,&kit[item].Pmuted);
- break;
- case 0x82: buf->rwbytepar(n,&kit[item].Pminkey);
- break;
- case 0x83: buf->rwbytepar(n,&kit[item].Pmaxkey);
- break;
- case 0x84: buf->rwbytepar(n,&kit[item].Psendtoparteffect);
- break;
- case 0x90: buf->rwbytepar(n,&kit[item].Padenabled);
- break;
- case 0x91: buf->rwbytepar(n,&kit[item].Psubenabled);
- 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 kit[0].adpars)
- if (kit[item].adpars==NULL) break;
- buf->rwbyte(&npar);
- };
- kit[item].adpars->saveloadbuf(buf);
- 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 kit[0].subpars)
- if (kit[item].subpars==NULL) break;
- buf->rwbyte(&npar);
- };
-
- kit[item].subpars->saveloadbuf(buf);
- break;
- case 0xB0: if (buf->getmode()!=0) {
- buf->rwbyte(&npar);
- int k=strlen( (char *) kit[item].Pname);
- if (k>PART_MAX_NAME_LEN-2) {
- k=PART_MAX_NAME_LEN-2;
- };
- kit[item].Pname[k]='\0';
- for (int i=0;i<k+1;i++){
- unsigned char tmp=kit[item].Pname[i];
- buf->rwbyte(&tmp);
- };
- } else {
- unsigned char k=0,tmp=1;
- while ((tmp!=0)&&(k<=PART_MAX_NAME_LEN-2)){
- buf->rwbyte(&tmp);
- kit[item].Pname[k++]=tmp;
- };
- kit[item].Pname[k]='\0';
- };
-
- };
- };
-
- if (buf->getmode()!=0) {
- unsigned char tmp=0xff;
- buf->rwbyte(&tmp);
- };
-
-};
-
-/*
- * Save or load the parameters to/from the buffer
- */
-void Part::saveloadbuf(Buffer *buf,int instrumentonly){
- unsigned char npar,n,tmp;
-
-#ifdef DEBUG_BUFFER
- fprintf(stderr,"\n( Part parameters) \n");
-#endif
-
- tmp=0xfe;
- buf->rwbyte(&tmp);//if tmp!=0xfe error
-
-
-
- if ((buf->getmode()==0)&&(disablekitloading==0)){//clears all kit items
- for (int item=0;item<NUM_KIT_ITEMS;item++) {
- if (item>0) setkititemstatus(item,0);
- kit[item].Pmuted=0;
- kit[item].Pminkey=0;kit[item].Pmaxkey=127;
- kit[item].Padenabled=0;kit[item].Psubenabled=0;
- kit[item].Psendtoparteffect=0;
- for (int i=0;i<PART_MAX_NAME_LEN;i++) kit[item].Pname[i]='\0';
- };
- };
-
- for (n=0x80;n<0xf0;n++){
- if (buf->getmode()==0) {
- buf->rwbyte(&npar);
- n=0;//force a loop until the end of parameters (0xff)
- } else npar=n;
- if (npar==0xff) break;
-
- switch(npar){
- //Part parameters
- case 0x80: if (instrumentonly!=0) break;
- buf->rwbytepar(n,&Penabled);
- if (buf->getmode()==0) cleanup();
- break;
- case 0x81: if (instrumentonly!=0) break;
- buf->rwbytepar(n,&Pvolume);
- if (buf->getmode()==0) setPvolume(Pvolume);
- break;
- case 0x82: if (instrumentonly!=0) break;
- buf->rwbytepar(n,&Ppanning);
- if (buf->getmode()==0) setPpanning(Ppanning);
- break;
- case 0x83: if (instrumentonly!=0) break;
- buf->rwbytepar(n,&Pvelsns);
- break;
- case 0x84: if (instrumentonly!=0) break;
- buf->rwbytepar(n,&Pveloffs);
- break;
- case 0x85: if (instrumentonly!=0) break;
- buf->rwbytepar(n,&Pkeyshift);
- break;
- case 0x86: if (instrumentonly!=0) break;
- buf->rwbytepar(n,&Prcvchn);
- break;
- case 0x87: if (instrumentonly!=0) break;
- buf->rwbytepar(n,&Pnoteon);
- break;
- case 0x88: if (instrumentonly!=0) break;
- buf->rwbytepar(n,&Pminkey);
- break;
- case 0x89: if (instrumentonly!=0) break;
- buf->rwbytepar(n,&Pmaxkey);
- break;
- case 0x8A: if (instrumentonly!=0) break;
- buf->rwbytepar(n,&Ppolymode);
- break;
- case 0x8B: if (instrumentonly!=0) break;
- buf->rwbytepar(n,&Pkeylimit);
- break;
- //Instrument data
- case 0xB0: buf->rwbytepar(n,&kit[0].Padenabled);
- break;
- case 0xB1: buf->rwbytepar(n,&kit[0].Psubenabled);
- break;
- case 0xB2: tmp=0;
- if ((disablekitloading!=0)&&(buf->getmode()==0))
- buf->rwbytepar(n,&tmp);
- else buf->rwbytepar(n,&Pkitmode);
- break;
- case 0xB3: buf->rwbytepar(n,&Pdrummode);
- break;
- case 0xB8: buf->rwbytepar(n,&info.Ptype);
- break;
- case 0xB9: if (buf->getmode()!=0) {
- buf->rwbyte(&npar);
- int k=strlen( (char *) info.Pauthor);
- if (k>MAX_INFO_TEXT_SIZE-1) {
- k=MAX_INFO_TEXT_SIZE-1;
- };
- info.Pauthor[k]='\0';
- for (int i=0;i<k+1;i++){
- unsigned char tmp=info.Pauthor[i];
- if (tmp>127) tmp=127;
- buf->rwbyte(&tmp);
- };
- } else {
- unsigned char k=0,tmp=1;
- while ((tmp!=0)&&(k<=MAX_INFO_TEXT_SIZE-1)){
- buf->rwbyte(&tmp);
- info.Pauthor[k++]=tmp;
- };
- info.Pauthor[k]='\0';
- };
- break;
- case 0xBA: if (buf->getmode()!=0) {
- buf->rwbyte(&npar);
- int k=strlen( (char *) info.Pcomments);
- if (k>MAX_INFO_TEXT_SIZE-1) {
- k=MAX_INFO_TEXT_SIZE-1;
- };
- info.Pcomments[k]='\0';
- for (int i=0;i<k+1;i++){
- unsigned char tmp=info.Pcomments[i];
- if (tmp>127) tmp=127;
- buf->rwbyte(&tmp);
- };
- } else {
- unsigned char k=0,tmp=1;
- while ((tmp!=0)&&(k<=MAX_INFO_TEXT_SIZE-1)){
- buf->rwbyte(&tmp);
- info.Pcomments[k++]=tmp;
- };
- info.Pcomments[k]='\0';
- };
- break;
- case 0xC0: if ((buf->getminimal()!=0) && (buf->getmode()!=0)
- && (kit[0].Padenabled==0)) break;
- if (buf->getmode()!=0) buf->rwbyte(&npar);
- kit[0].adpars->saveloadbuf(buf);
- break;
- case 0xC1: if ((buf->getminimal()!=0) && (buf->getmode()!=0)
- && (kit[0].Psubenabled==0)) break;
- if (buf->getmode()!=0) buf->rwbyte(&npar);
- kit[0].subpars->saveloadbuf(buf);
- break;
- case 0xD0: if (buf->getmode()!=0) {
- if (instrumentonly!=2){
- buf->rwbyte(&npar);
- int k=strlen( (char *) Pname);
- if (k>PART_MAX_NAME_LEN-2) {
- k=PART_MAX_NAME_LEN-2;
- };
- Pname[k]='\0';
- for (int i=0;i<k+1;i++){
- unsigned char tmp=Pname[i];
- buf->rwbyte(&tmp);
- };
- };
- } else {
- unsigned char k=0,tmp=1;
- while ((tmp!=0)&&(k<=PART_MAX_NAME_LEN-2)){
- buf->rwbyte(&tmp);
- Pname[k++]=tmp;
- };
- Pname[k]='\0';
- };
- break;
- case 0xE0: if (instrumentonly!=0) break;
- if (buf->getmode()!=0) buf->rwbyte(&npar);
- ctl.saveloadbuf(buf);
- break;
- case 0xE1: if (buf->getmode()!=0) {//PART INSERTION EFFECTS
- for (unsigned char neffect=0;neffect<NUM_PART_EFX;neffect++){
- buf->rwbyte(&npar);
- buf->rwbyte(&neffect);
- partefx[neffect]->saveloadbuf(buf);
- };
- } else {
- unsigned char neffect;
- buf->rwbyte(&neffect);
- if (neffect<NUM_PART_EFX) partefx[neffect]->saveloadbuf(buf);
- else buf->skipbranch();
- };
- break;
- //Kit Parameters
- case 0xE2: if (buf->getmode()!=0) {//save
- if (Pkitmode==0) break;
- for (unsigned char item=0;item<NUM_KIT_ITEMS;item++){
- if (kit[item].Penabled==0) continue;
- buf->rwbyte(&npar);
- buf->rwbyte(&item);//Write the item's number
- saveloadbufkititem(buf,item,0);
- };
- } else {//load
- if (disablekitloading!=0) {
- buf->skipbranch();
- break;
- };
- unsigned char item;
- buf->rwbyte(&item);
- if (item<NUM_KIT_ITEMS){
- setkititemstatus(item,1);
- saveloadbufkititem(buf,item,0);
- } else buf->skipbranch();
- };
- break;
- case 0xE3: if (buf->getmode()!=0) {//part insertion effect routing
- for (unsigned char neffect=0;neffect<NUM_PART_EFX;neffect++){
- buf->rwbyte(&npar);
- buf->rwbyte(&neffect);
- buf->rwbyte(&Pefxroute[neffect]);
- };
- } else {
- unsigned char neffect;
- buf->rwbyte(&neffect);
- if (neffect<NUM_PART_EFX) {
- buf->rwbyte(&Pefxroute[neffect]);
- if (Pefxroute[neffect]==127) Pefxroute[neffect]=1;
- } else buf->rwbyte(&neffect);//this line just throw away the byte
- };
- break;
- };
- };
-
-
- if (buf->getmode()!=0) {
- unsigned char tmp=0xff;
- buf->rwbyte(&tmp);
- };
-
-};
-
-
void Part::add2XMLinstrument(XMLwrapper *xml){
xml->beginbranch("INFO");
xml->addparstr("name",(char *)Pname);
diff --git a/src/Misc/Part.h b/src/Misc/Part.h
@@ -55,7 +55,6 @@ class Part{
/* The synthesizer part output */
void ComputePartSmps();//Part output
- void saveloadbuf(Buffer *buf,int instrumentonly);
//instrumentonly: 0 - save all, 1 - save only instrumnet, 2 - save only instrument without the name(used in bank)
@@ -75,9 +74,6 @@ class Part{
void getfromXML(XMLwrapper *xml);
void getfromXMLinstrument(XMLwrapper *xml);
-
- void saveloadbufkititem(Buffer *buf,unsigned char item,int saveitem0);
-
void cleanup();
// ADnoteParameters *ADPartParameters;
@@ -128,7 +124,7 @@ class Part{
REALTYPE *partoutl;//Left channel output of the part
REALTYPE *partoutr;//Right channel output of the part
- REALTYPE *partfxinputl[NUM_PART_EFX+1],*partfxinputr[NUM_PART_EFX+1];//Left and right signal that pass thru part effects; partfxinputl/r[NUM_PART_EFX] is for "no effect" buffer
+ REALTYPE *partfxinputl[NUM_PART_EFX+1],*partfxinputr[NUM_PART_EFX+1];//Left and right signal that pass thru part effects; partfxinput l/r [NUM_PART_EFX] is for "no effect" buffer
enum NoteStatus{KEY_OFF,KEY_PLAYING,KEY_RELASED_AND_SUSTAINED,KEY_RELASED};
diff --git a/src/Misc/Util.C b/src/Misc/Util.C
@@ -35,11 +35,6 @@ int SAMPLE_RATE=44100;
int SOUND_BUFFER_SIZE=256;
int OSCIL_SIZE=512;
-Buffer slbuf;//the Buffer used for save/load parameters to/from disk
-
-Buffer masterdefaultsbuf;//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)
-Buffer instrumentdefaultsbuf;//this is used to store all instrument parameters at start of program and reload when I need to clear all data (eg. before loading instrument parameters)
-Buffer clipboardbuf;//buffer used for the clipboard
Config config;
REALTYPE *denormalkillbuf;
@@ -95,104 +90,6 @@ REALTYPE getdetune(unsigned char type,unsigned short int coarsedetune,unsigned s
};
-
-
-/*
- * Save buffer to file
- */
-int savebufferfile(Buffer *buf,const char *filename,int overwrite,int whatIsave){
- unsigned char *data=NULL;
- int n,file=0;
-
- n=buf->getsize();
- data=new unsigned char[n+1];
- buf->getalldata(n,data);
-
- if (overwrite==0) file=open(filename,O_CREAT|O_EXCL|O_WRONLY|O_BINARY,00444+00222);
- else file=open(filename,O_CREAT|O_WRONLY|O_TRUNC|O_BINARY,00444+00222);//overwrite if the file exists
- if (file==-1) {
- if (errno==EEXIST) return(1);//file exists already
- else return(2);//Access Denied or any other problem
- };
-
- //Save the id.
- char id[2]; id[0]='N';id[1]='P';
- write(file,&id,2);
-
- //Save the format descriptor (for future formats)
- unsigned char type=whatIsave,//what the data represents? ( Master/Effect/Voice 0x00..0x0f)
- coding=0;//the encoding (Raw, 7 bit encoding,compressed) (0x00..0x07)
- unsigned char fmt=type+coding*0x10; //0x00..0x7f
- write(file,&fmt,1);
-
- //Save the CRC or 0 for no CRC
- unsigned CRC=0;//todo, if I do the CRC I do: crc=1+crc % 127;!
- write (file,&CRC,1);
-
- //Save the data
- int result=write(file,data,n);
- if (result== -1) return(2);
- close(file);
-
- delete (data);
- return(0);//OK
-};
-
-/*
- * Load the buffer from the file
- */
-int loadbufferfile(Buffer *buf,const char *filename,int whatIload){
- int n=512,file=0,result,i;
- unsigned char b=0;
- unsigned char *data=new unsigned char[n];
-
- buf->resetbuffer();
- buf->changemode(1);
-
- file=open(filename,O_RDONLY|O_BINARY,00444+00222);
-
- if (file==-1) {
- return(2);//Access Denied or any other problem
- };
-
- //Load the id.
- char id[2];
- read(file,&id,2);
- if ((id[0]!='N')||(id[1]!='P')) {
- close(file);
- return(3);//invalid data
- };
-
- //Load the format descriptor
- unsigned char fmt; //0x00..0x7f
- read(file,&fmt,1);
- unsigned char type=fmt%0x10;
- if (type!=whatIload){
- close(file);
- return(4);//the data is loaded as something wrong (eg. a master is loaded as a instrument)
- };
-// coding=fmt/0x10;
-
- //load the crc
- unsigned char CRC; //0x00..0x7f
- read(file,&CRC,1);
-// if (CRC!=0){};CHECK IF IT IS OK
-
- //Load the data
- do {
- result=read(file,data,n);
- for (i=0;i<result;i++){
- b=data[i];
- buf->rwbyte(&b);//I need to write the data to a buffer and process it according to a format
- };
- } while (result!=0);
-
- if (result== -1) return(2);
- close(file);
- delete(data);
- return(0);//OK
-};
-
bool fileexists(char *filename){
struct stat tmp;
int result=stat(filename,&tmp);
diff --git a/src/Misc/Util.h b/src/Misc/Util.h
@@ -25,7 +25,6 @@
#include <pthread.h>
#include "../globals.h"
-#include "Buffer.h"
#include "Microtonal.h"
#include "../DSP/FFTwrapper.h"
#include "Config.h"
@@ -33,16 +32,6 @@
//Velocity Sensing function
extern REALTYPE VelF(REALTYPE velocity,unsigned char scaling);
-//Buffer used for Save/Load
-extern Buffer slbuf;
-
-//the buffer used as clipboard
-extern Buffer clipboardbuf;
-
-extern int savebufferfile(Buffer *buf,const char *filename,int overwrite,int whatIsave);
-extern int loadbufferfile(Buffer *buf,const char *filename,int whatIload);
-//whatIsave and whatIload are 0 for Master,1 Voice,2 for Microtonal...
-
bool fileexists(char *filename);
#define N_DETUNE_TYPES 4 //the number of detune types
diff --git a/src/Misc/XMLwrapper.C b/src/Misc/XMLwrapper.C
@@ -84,7 +84,7 @@ XMLwrapper::XMLwrapper(){
node=root=mxmlNewElement(tree,"ZynAddSubFX-data");
mxmlElementSetAttr(root,"version-major","1");
- mxmlElementSetAttr(root,"version-minor","0");
+ mxmlElementSetAttr(root,"version-minor","1");
//make the empty branch that will contain the information parameters
info=addparams0("INFORMATION");
diff --git a/src/Params/ADnoteParameters.C b/src/Params/ADnoteParameters.C
@@ -213,309 +213,6 @@ ADnoteParameters::~ADnoteParameters(){
};
-/*
- * Save or load the voice parameters to/from the buffer
- */
-void ADnoteParameters::saveloadbufvoice(Buffer *buf,unsigned char nvoice){
- unsigned char npar,n,tmp;
- int fmon,min,fmexton;//fmon is 0 if there is no need to save the FM parameters
-
-#ifdef DEBUG_BUFFER
- fprintf(stderr,"\n\n( ADnoteParameters VOICE %d) \n",nvoice);
-#endif
-
- tmp=0xfe;
- buf->rwbyte(&tmp);//if tmp!=0xfe error
-
-
- if (nvoice>=NUM_VOICES){//too big voice
- buf->skipbranch();
- return;
- };
-
- if ((buf->getminimal()!=0) && (buf->getmode()!=0)) min=1; else min=0;
- if (min && (VoicePar[nvoice].PFMEnabled==0)) fmon=1; else fmon=0;
- if (min && (VoicePar[nvoice].PFMVoice!= -1)) fmexton=1; else fmexton=0;
-
- for (n=0x80;n<0xF0;n++){
- if (buf->getmode()==0) {
- buf->rwbyte(&npar);
- n=0;//force a loop until the end of parameters (0xff)
- } else npar=n;
- if (npar==0xff) break;
-
- switch(npar){
- //Misc Voice Parameters
- case 0x80: buf->rwbytepar(n,&VoicePar[nvoice].Enabled);
- break;
- case 0x81: buf->rwbytepar(n,&VoicePar[nvoice].PDelay);
- break;
- case 0x82: buf->rwbytepar(n,&VoicePar[nvoice].PPanning);
- break;
- case 0x83: buf->rwbytepar(n,&VoicePar[nvoice].Poscilphase);
- break;
- case 0x84: buf->rwwordparwrap(n,&VoicePar[nvoice].Pextoscil);
- if (VoicePar[nvoice].Pextoscil>nvoice-1) VoicePar[nvoice].Pextoscil=-1;
- break;
- case 0x85: if ((VoicePar[nvoice].Pextoscil!= -1) && (min)) break;
- if (buf->getmode()!=0) buf->rwbyte(&npar);
- VoicePar[nvoice].OscilSmp->saveloadbuf(buf);
- break;
- case 0x86: buf->rwbytepar(n,&VoicePar[nvoice].Presonance);
- break;
- case 0x87: buf->rwbytepar(n,&VoicePar[nvoice].Type);
- break;
- //Amplitude Global Parameters
- case 0x90: buf->rwbytepar(n,&VoicePar[nvoice].PVolume);
- break;
- case 0x91: buf->rwbytepar(n,&VoicePar[nvoice].PAmpVelocityScaleFunction);
- break;
- case 0x92: buf->rwbytepar(n,&VoicePar[nvoice].PAmpEnvelopeEnabled);
- break;
- case 0x93: buf->rwbytepar(n,&VoicePar[nvoice].PAmpLfoEnabled);
- break;
- case 0x94: buf->rwbytepar(n,&VoicePar[nvoice].PVolumeminus);
- break;
- case 0x98: if ((min) && (VoicePar[nvoice].PAmpLfoEnabled==0)) break;
- if (buf->getmode()!=0) buf->rwbyte(&npar);
- VoicePar[nvoice].AmpLfo->saveloadbuf(buf);
- break;
- case 0x99: if ((min) && (VoicePar[nvoice].PAmpEnvelopeEnabled==0)) break;
- if (buf->getmode()!=0) buf->rwbyte(&npar);
- VoicePar[nvoice].AmpEnvelope->saveloadbuf(buf);
- break;
-
-
- //Frequency Voice Parameters
- case 0xA0: buf->rwwordpar(n,&VoicePar[nvoice].PDetune);
- break;
- case 0xA1: buf->rwwordpar(n,&VoicePar[nvoice].PCoarseDetune);
- break;
- case 0xA2: buf->rwbytepar(n,&VoicePar[nvoice].PFreqEnvelopeEnabled);
- break;
- case 0xA3: buf->rwbytepar(n,&VoicePar[nvoice].PFreqLfoEnabled);
- break;
- case 0xA4: buf->rwbytepar(n,&VoicePar[nvoice].PDetuneType);
- break;
- case 0xA5: buf->rwbytepar(n,&VoicePar[nvoice].Pfixedfreq);
- break;
- case 0xA6: buf->rwbytepar(n,&VoicePar[nvoice].PfixedfreqET);
- break;
- case 0xA8: if ((min) && (VoicePar[nvoice].PFreqLfoEnabled==0)) break;
- if (buf->getmode()!=0) buf->rwbyte(&npar);
- VoicePar[nvoice].FreqLfo->saveloadbuf(buf);
- break;
- case 0xA9: if ((min) && (VoicePar[nvoice].PFreqEnvelopeEnabled==0)) break;
- if (buf->getmode()!=0) buf->rwbyte(&npar);
- VoicePar[nvoice].FreqEnvelope->saveloadbuf(buf);
- break;
-
- //Filter Voice Parameters
- case 0xB0: buf->rwbytepar(n,&VoicePar[nvoice].PFilterEnabled);
- break;
- case 0xB1: buf->rwbytepar(n,&VoicePar[nvoice].PFilterEnvelopeEnabled);
- break;
- case 0xB2: buf->rwbytepar(n,&VoicePar[nvoice].PFilterLfoEnabled);
- break;
- case 0xB3: buf->rwbytepar(n,&VoicePar[nvoice].Pfilterbypass);
- break;
- case 0xB8: if ((min) && (VoicePar[nvoice].PFilterEnabled==0)) break;
- if (buf->getmode()!=0) buf->rwbyte(&npar);
- VoicePar[nvoice].VoiceFilter->saveloadbuf(buf);
- break;
- case 0xB9: if ((min) && ((VoicePar[nvoice].PFilterEnabled==0) || (VoicePar[nvoice].PFilterLfoEnabled==0))) break;
- if (buf->getmode()!=0) buf->rwbyte(&npar);
- VoicePar[nvoice].FilterLfo->saveloadbuf(buf);
- break;
- case 0xBA: if ((min) && ((VoicePar[nvoice].PFilterEnabled==0) || (VoicePar[nvoice].PFilterEnvelopeEnabled==0))) break;
- if (buf->getmode()!=0) buf->rwbyte(&npar);
- VoicePar[nvoice].FilterEnvelope->saveloadbuf(buf);
- break;
-
- //FM Voice Parameters
- case 0xC0: buf->rwbytepar(n,&VoicePar[nvoice].PFMEnabled);
- break;
- case 0xC1: if (fmon) break;
- buf->rwwordparwrap(n,&VoicePar[nvoice].PFMVoice);
- if (VoicePar[nvoice].PFMVoice>nvoice-1) VoicePar[nvoice].PFMVoice=-1;
- break;
- case 0xC2: if ((fmon)||(fmexton)) break;
- buf->rwbytepar(n,&VoicePar[nvoice].PFMoscilphase);
- break;
- case 0xC3: if (fmon) break;
- buf->rwwordparwrap(n,&VoicePar[nvoice].PextFMoscil);
- if (VoicePar[nvoice].PextFMoscil>nvoice-1) VoicePar[nvoice].PextFMoscil=-1;
- break;
- case 0xC4: if (fmon) break;
- buf->rwbytepar(n,&VoicePar[nvoice].PFMVolume);
- break;
- case 0xC5: if (fmon) break;
- buf->rwbytepar(n,&VoicePar[nvoice].PFMVolumeDamp);
- break;
- case 0xC6: if (fmon) break;
- buf->rwbytepar(n,&VoicePar[nvoice].PFMVelocityScaleFunction);
- break;
- case 0xC7: if ((fmon)||(fmexton)) break;
- buf->rwwordpar(n,&VoicePar[nvoice].PFMDetune);
- break;
- case 0xC8: if ((fmon)||(fmexton)) break;
- buf->rwwordpar(n,&VoicePar[nvoice].PFMCoarseDetune);
- break;
- case 0xC9: if (fmon) break;
- buf->rwbytepar(n,&VoicePar[nvoice].PFMAmpEnvelopeEnabled);
- break;
- case 0xCA: if ((fmon)||(fmexton)) break;
- buf->rwbytepar(n,&VoicePar[nvoice].PFMFreqEnvelopeEnabled);
- break;
- case 0xCB: if (fmon) break;
- buf->rwbytepar(n,&VoicePar[nvoice].PFMDetuneType);
- break;
- case 0xD0: if ((fmon) || (fmexton)) break;
- if ((VoicePar[nvoice].PextFMoscil!= -1) && (min)) break;
- if (buf->getmode()!=0) buf->rwbyte(&npar);
- VoicePar[nvoice].FMSmp->saveloadbuf(buf);
- break;
- case 0xD1: if (fmon) break;
- if ((VoicePar[nvoice].PFMAmpEnvelopeEnabled==0) && (min)) break;
- if (buf->getmode()!=0) buf->rwbyte(&npar);
- VoicePar[nvoice].FMAmpEnvelope->saveloadbuf(buf);
- break;
- case 0xD2: if ((fmon)||(fmexton)) break;
- if ((VoicePar[nvoice].PFMFreqEnvelopeEnabled==0) && (min)) break;
- if (buf->getmode()!=0) buf->rwbyte(&npar);
- VoicePar[nvoice].FMFreqEnvelope->saveloadbuf(buf);
- break;
-
- };
- };
-
- if (buf->getmode()!=0) {
- unsigned char tmp=0xff;
- buf->rwbyte(&tmp);
- };
-
-
-
-};
-
-/*
- * Save or load the parameters to/from the buffer
- */
-void ADnoteParameters::saveloadbuf(Buffer *buf){
- unsigned char npar,n,tmp;
-
-#ifdef DEBUG_BUFFER
- fprintf(stderr,"\n( ADnoteParameters Global) \n");
-#endif
-
- tmp=0xfe;
- buf->rwbyte(&tmp);//if tmp!=0xfe error
-
-
- if (buf->getmode()==0){
- for (unsigned int nvoice=0;nvoice<NUM_VOICES;nvoice++){
- VoicePar[nvoice].Enabled=0;
- };
- };
-
- for (n=0x80;n<0xF0;n++){
- if (buf->getmode()==0) {
- buf->rwbyte(&npar);
- n=0;//force a loop until the end of parameters (0xff)
- } else npar=n;
- if (npar==0xff) break;
-
- switch(npar){
- //Misc Global Parameters
- case 0x80: buf->rwbytepar(n,&GlobalPar.PStereo);
- break;
- case 0x81: buf->rwbytepar(n,&GlobalPar.PPanning);
- break;
- case 0x82: if (buf->getmode()!=0) buf->rwbyte(&npar);
- GlobalPar.Reson->saveloadbuf(buf);
- break;
- //Amplitude Global Parameters
- case 0x90: buf->rwbytepar(n,&GlobalPar.PVolume);
- if (buf->getmode()==0) GlobalPar.PVolume=(int) (GlobalPar.PVolume*0.85);
- break;
- case 0x91: buf->rwbytepar(n,&GlobalPar.PAmpVelocityScaleFunction);
- break;
- case 0x92: buf->rwbytepar(n,&GlobalPar.PPunchStrength);
-// break; do not try to correct this by adding break... Other things will go wrong
- case 0x93: buf->rwbytepar(n,&GlobalPar.PPunchTime);
-// break; do not try to correct this by adding break... Other things will go wrong
- case 0x94: buf->rwbytepar(n,&GlobalPar.PPunchStretch);
-// break; do not try to correct this by adding break... Other things will go wrong
- case 0x95: buf->rwbytepar(n,&GlobalPar.PPunchVelocitySensing);
-// break; do not try to correct this by adding break... Other things will go wrong
- case 0x98: if (buf->getmode()!=0) buf->rwbyte(&npar);
- GlobalPar.AmpLfo->saveloadbuf(buf);
- break;
- case 0x99: if (buf->getmode()!=0) buf->rwbyte(&npar);
- GlobalPar.AmpEnvelope->saveloadbuf(buf);
- break;
-
-
- //Frequency Global Parameters
- case 0xA0: buf->rwwordpar(n,&GlobalPar.PDetune);
- break;
- case 0xA1: buf->rwwordpar(n,&GlobalPar.PCoarseDetune);
- break;
- case 0xA2: buf->rwbytepar(n,&GlobalPar.PDetuneType);
- break;
- case 0xA8: if (buf->getmode()!=0) buf->rwbyte(&npar);
- GlobalPar.FreqLfo->saveloadbuf(buf);
- break;
- case 0xA9: if (buf->getmode()!=0) buf->rwbyte(&npar);
- GlobalPar.FreqEnvelope->saveloadbuf(buf);
- break;
-
-
- //Filter Global Parameters
- case 0xB0: buf->rwbytepar(n,&GlobalPar.PFilterVelocityScale);
- break;
- case 0xB1: buf->rwbytepar(n,&GlobalPar.PFilterVelocityScaleFunction);
- break;
- case 0xB8: if (buf->getmode()!=0) buf->rwbyte(&npar);
- GlobalPar.GlobalFilter->saveloadbuf(buf);
- break;
- case 0xB9: if (buf->getmode()!=0) buf->rwbyte(&npar);
- GlobalPar.FilterLfo->saveloadbuf(buf);
- break;
- case 0xBA: if (buf->getmode()!=0) buf->rwbyte(&npar);
- GlobalPar.FilterEnvelope->saveloadbuf(buf);
- break;
-
- //Voices Parameters
- case 0xC0: if (buf->getmode()!=0) {
- for (unsigned char nvoice=0;nvoice<NUM_VOICES;nvoice++){
- int mustbesaved=0;
- for (int i=0;i<NUM_VOICES;i++){
- if ((VoicePar[i].Pextoscil!=1)||(VoicePar[i].PextFMoscil!=1))
- mustbesaved=1;
- };
- if ((buf->getminimal()!=0) && (VoicePar[nvoice].Enabled==0) &&
- (mustbesaved!=0)) continue;
- buf->rwbyte(&npar);
- buf->rwbyte(&nvoice);//Write the number of voice
- saveloadbufvoice(buf,nvoice);
- };
- } else {
- unsigned char nvoice;
- buf->rwbyte(&nvoice);
- saveloadbufvoice(buf,nvoice);
- };
- break;
-
- };
- };
-
-
- if (buf->getmode()!=0) {
- unsigned char tmp=0xff;
- buf->rwbyte(&tmp);
- };
-};
void ADnoteParameters::add2XMLsection(XMLwrapper *xml,int n){
diff --git a/src/Params/ADnoteParameters.h b/src/Params/ADnoteParameters.h
@@ -265,9 +265,6 @@ class ADnoteParameters:public Presets{
void add2XML(XMLwrapper *xml);
void getfromXML(XMLwrapper *xml);
- void saveloadbuf(Buffer *buf);
- void saveloadbufvoice(Buffer *buf,unsigned char nvoice);
-
private:
void defaults(int n);//n is the nvoice
diff --git a/src/Params/Controller.C b/src/Params/Controller.C
@@ -245,77 +245,6 @@ void Controller::setparameternumber(unsigned int type,int value){
};
-/*
- * Save or load the parameters to/from the buffer
- */
-void Controller::saveloadbuf(Buffer *buf){
- unsigned char npar,n,tmp;
-
-#ifdef DEBUG_BUFFER
- fprintf(stderr,"\n( Controller parameters) \n");
-#endif
-
- tmp=0xfe;
- buf->rwbyte(&tmp);//if tmp!=0xfe error
-
-
- for (n=0x80;n<0xf0;n++){
- if (buf->getmode()==0) {
- buf->rwbyte(&npar);
- n=0;//force a loop until the end of parameters (0xff)
- } else npar=n;
- if (npar==0xff) break;
-
- switch(npar){
- //Controller parameters
- case 0x80: buf->rwwordparwrap(n,&pitchwheel.bendrange);
- break;
- case 0x81: buf->rwbytepar(n,&expression.receive);
- break;
- case 0x82: buf->rwbytepar(n,&panning.depth);
- break;
- case 0x83: buf->rwbytepar(n,&filtercutoff.depth);
- break;
- case 0x84: buf->rwbytepar(n,&filterq.depth);
- break;
- case 0x85: buf->rwbytepar(n,&bandwidth.depth);
- break;
- case 0x86: buf->rwbytepar(n,&modwheel.depth);
- break;
- case 0x87: buf->rwbytepar(n,&fmamp.receive);
- break;
- case 0x88: buf->rwbytepar(n,&volume.receive);
- break;
- case 0x89: buf->rwbytepar(n,&sustain.receive);
- break;
- case 0x8A: buf->rwbytepar(n,&portamento.receive);
- break;
- case 0x8B: buf->rwbytepar(n,&portamento.time);
- break;
- case 0x8C: buf->rwbytepar(n,&portamento.pitchthresh);
- break;
- case 0x8D: buf->rwbytepar(n,&portamento.pitchthreshtype);
- break;
- case 0x8E: buf->rwbytepar(n,&portamento.portamento);
- break;
- case 0x8F: buf->rwbytepar(n,&resonancecenter.depth);
- break;
- case 0x90: buf->rwbytepar(n,&resonancebandwidth.depth);
- break;
- case 0x91: buf->rwbytepar(n,&modwheel.exponential);
- break;
- case 0x92: buf->rwbytepar(n,&portamento.updowntimestretch);
- break;
- };
- };
-
-
- if (buf->getmode()!=0) {
- unsigned char tmp=0xff;
- buf->rwbyte(&tmp);
- };
-};
-
void Controller::add2XML(XMLwrapper *xml){
xml->addpar("pitchwheel_bendrange",pitchwheel.bendrange);
diff --git a/src/Params/Controller.h b/src/Params/Controller.h
@@ -25,7 +25,6 @@
#define CONTROLLER_H
#include "../globals.h"
-#include "../Misc/Buffer.h"
#include "../Misc/XMLwrapper.h"
class Controller{
@@ -33,7 +32,6 @@ class Controller{
Controller();
~Controller();
void resetall();
- void saveloadbuf(Buffer *buf);
void add2XML(XMLwrapper *xml);
void defaults();
diff --git a/src/Params/EnvelopeParams.C b/src/Params/EnvelopeParams.C
@@ -141,83 +141,6 @@ void EnvelopeParams::converttofree(){
-/*
- * Save or load the parameters to/from the buffer
- */
-void EnvelopeParams::saveloadbuf(Buffer *buf){
- unsigned char npar,n,tmp,np;
-
-#ifdef DEBUG_BUFFER
- fprintf(stderr,"\n( Envelope parameters) \n");
-#endif
-
- tmp=0xfe;
- buf->rwbyte(&tmp);//if tmp!=0xfe error
-
- if (Envmode==1) Plinearenvelope=1;
-
- for (n=0x80;n<0xF0;n++){
- if (buf->getmode()==0) {
- buf->rwbyte(&npar);
- n=0;//force a loop until the end of parameters (0xff)
- } else npar=n;
- if (npar==0xff) break;
-
- switch(npar){
- //Envelope parameters
- case 0x80: buf->rwbytepar(n,&Pfreemode);
- break;
- case 0x81: buf->rwbytepar(n,&Penvstretch);
- break;
- case 0x82: buf->rwbytepar(n,&Pforcedrelease);
- break;
- case 0x83: buf->rwbytepar(n,&Penvpoints);
- break;
- case 0x84: buf->rwbytepar(n,&Penvsustain);
- break;
- case 0x85: buf->rwbytepar(n,&Plinearenvelope);
- break;
- case 0x90: if (buf->getmode()!=0){
- for (np=0;np<Penvpoints;np++){
- buf->rwbytepar(n,&np);
- buf->rwbyte(&Penvdt[np]);
- buf->rwbyte(&Penvval[np]);
- };
- } else {
- buf->rwbytepar(np,&np);
- if (np<MAX_ENVELOPE_POINTS){//for safety
- buf->rwbyte(&Penvdt[np]);
- buf->rwbyte(&Penvval[np]);
- } else{
- buf->rwbyte(&tmp);
- buf->rwbyte(&tmp);
- };
- };
- break;
- case 0xA0: buf->rwbytepar(n,&PA_dt);
- break;
- case 0xA1: buf->rwbytepar(n,&PD_dt);
- break;
- case 0xA2: buf->rwbytepar(n,&PR_dt);
- break;
- case 0xA3: buf->rwbytepar(n,&PA_val);
- break;
- case 0xA4: buf->rwbytepar(n,&PD_val);
- break;
- case 0xA5: buf->rwbytepar(n,&PS_val);
- break;
- case 0xA6: buf->rwbytepar(n,&PR_val);
- break;
- };
- };
-
- if (Pfreemode==0) converttofree();
- if (buf->getmode()!=0) {
- unsigned char tmp=0xff;
- buf->rwbyte(&tmp);
- };
-};
-
void EnvelopeParams::add2XML(XMLwrapper *xml){
xml->addparbool("free_mode",Pfreemode);
xml->addpar("env_points",Penvpoints);
diff --git a/src/Params/EnvelopeParams.h b/src/Params/EnvelopeParams.h
@@ -24,7 +24,6 @@
#define ENVELOPE_PARAMS_H
#include "../globals.h"
-#include "../Misc/Buffer.h"
#include "../Misc/XMLwrapper.h"
#include "Presets.h"
@@ -41,11 +40,9 @@ class EnvelopeParams:public Presets{
void ADSRinit_filter(char A_val,char A_dt,char D_val,char D_dt,char R_dt,char R_val);
void ASRinit_bw(char A_val,char A_dt,char R_val,char R_dt);
void converttofree();
- void saveloadbuf(Buffer *buf);
void add2XML(XMLwrapper *xml);
void defaults();
-
void getfromXML(XMLwrapper *xml);
REALTYPE getdt(char i);
diff --git a/src/Params/FilterParams.C b/src/Params/FilterParams.C
@@ -247,112 +247,6 @@ REALTYPE FilterParams::getformantq(unsigned char q){
};
-/*
- * Save or load the parameters to/from the buffer
- */
-void FilterParams::saveloadbuf(Buffer *buf){
- unsigned char npar,n,tmp;
-
-#ifdef DEBUG_BUFFER
- fprintf(stderr,"\n( Filter parameters) \n");
-#endif
-
- tmp=0xfe;
- buf->rwbyte(&tmp);//if tmp!=0xfe error
-
- for (n=0x80;n<0xf0;n++){
- if (buf->getmode()==0) {
- buf->rwbyte(&npar);
- n=0;//force a loop until the end of parameters (0xff)
- } else npar=n;
- if (npar==0xff) break;
-
- switch(npar){
- //FILTER parameters
- case 0x80: buf->rwbytepar(n,&Ptype);
- break;
- case 0x81: buf->rwbytepar(n,&Pfreq);
- break;
- case 0x82: buf->rwbytepar(n,&Pq);
- break;
- case 0x83: buf->rwbytepar(n,&Pstages);
- break;
- case 0x84: buf->rwbytepar(n,&Pfreqtrack);
- break;
- case 0x85: buf->rwbytepar(n,&Pcategory);
- break;
- case 0x86: buf->rwbytepar(n,&Pgain);
- break;
- //Formant Filter Parameters
- case 0xA0: buf->rwbytepar(n,&Pnumformants);
- break;
- case 0xA1: buf->rwbytepar(n,&Pformantslowness);
- break;
- case 0xA2: buf->rwbytepar(n,&Pvowelclearness);
- break;
- case 0xA3: buf->rwbytepar(n,&Pcenterfreq);
- break;
- case 0xA4: buf->rwbytepar(n,&Poctavesfreq);
- break;
- case 0xA8: if (buf->getmode()!=0) {//save the formants of the vowels
- for (unsigned char nvowel=0;nvowel<FF_MAX_VOWELS;nvowel++){
- for (unsigned char nformant=0;nformant<FF_MAX_FORMANTS;nformant++){
- buf->rwbyte(&npar);
- buf->rwbyte(&nvowel);
- buf->rwbyte(&nformant);
- buf->rwbyte(&Pvowels[nvowel].formants[nformant].freq);
- buf->rwbyte(&Pvowels[nvowel].formants[nformant].amp);
- buf->rwbyte(&Pvowels[nvowel].formants[nformant].q);
- };
- };
- } else {
- unsigned char nvowel,nformant;
- buf->rwbyte(&nvowel);
- buf->rwbyte(&nformant);
- if ((nvowel<FF_MAX_VOWELS) && (nformant<FF_MAX_FORMANTS)){
- buf->rwbyte(&Pvowels[nvowel].formants[nformant].freq);
- buf->rwbyte(&Pvowels[nvowel].formants[nformant].amp);
- buf->rwbyte(&Pvowels[nvowel].formants[nformant].q);
- } else {
- buf->rwbyte(&tmp);
- buf->rwbyte(&tmp);
- buf->rwbyte(&tmp);
- };
- };
- break;
-
- //Formant Filter Parameters (sequence)
- case 0xB0: buf->rwbytepar(n,&Psequencesize);
- break;
- case 0xB1: buf->rwbytepar(n,&Psequencestretch);
- break;
- case 0xB2: buf->rwbytepar(n,&Psequencereversed);
- break;
- case 0xB3: buf->rwbytepar(n,&Psequencesize);
- break;
- case 0xB8: if (buf->getmode()!=0){//sequence values
- for (unsigned char nseq=0;nseq<Psequencesize;nseq++){
- buf->rwbytepar(n,&nseq);
- buf->rwbyte(&Psequence[nseq].nvowel);
- };
- } else {
- unsigned char nseq;
- buf->rwbytepar(n,&nseq);
- if (nseq<FF_MAX_SEQUENCE){//for safety
- buf->rwbyte(&Psequence[nseq].nvowel);
- } else buf->rwbyte(&tmp);
- };
- break;
- };
- };
-
-
- if (buf->getmode()!=0) {
- unsigned char tmp=0xff;
- buf->rwbyte(&tmp);
- };
-};
-
void FilterParams::add2XMLsection(XMLwrapper *xml,int n){
int nvowel=n;
diff --git a/src/Params/FilterParams.h b/src/Params/FilterParams.h
@@ -24,7 +24,6 @@
#define FILTER_PARAMS_H
#include "../globals.h"
-#include "../Misc/Buffer.h"
#include "../Misc/XMLwrapper.h"
#include "Presets.h"
@@ -32,7 +31,6 @@ class FilterParams:public Presets{
public:
FilterParams(unsigned char Ptype_,unsigned char Pfreq,unsigned char Pq_);
~FilterParams();
- void saveloadbuf(Buffer *buf);
void add2XML(XMLwrapper *xml);
void add2XMLsection(XMLwrapper *xml,int n);
diff --git a/src/Params/LFOParams.C b/src/Params/LFOParams.C
@@ -64,58 +64,6 @@ void LFOParams::defaults(){
Pstretch=64;
};
-/*
- * Save or load the parameters to/from the buffer
- */
-void LFOParams::saveloadbuf(Buffer *buf){
- unsigned char npar,n,tmp;
-
-#ifdef DEBUG_BUFFER
- fprintf(stderr,"\n( LFO parameters) \n");
-#endif
-
- tmp=0xfe;
- buf->rwbyte(&tmp);//if tmp!=0xfe error
-
- unsigned char freq=(int) (Pfreq*127.0);
-
- for (n=0x80;n<0xf0;n++){
- if (buf->getmode()==0) {
- buf->rwbyte(&npar);
- n=0;//force a loop until the end of parameters (0xff)
- } else npar=n;
- if (npar==0xff) break;
-
- switch(npar){
- //LFO parameters
- case 0x80: buf->rwbytepar(n,&freq);
- break;
- case 0x81: buf->rwbytepar(n,&Pintensity);
- break;
- case 0x82: buf->rwbytepar(n,&Pstartphase);
- break;
- case 0x83: buf->rwbytepar(n,&PLFOtype);
- break;
- case 0x84: buf->rwbytepar(n,&Prandomness);
- break;
- case 0x85: buf->rwbytepar(n,&Pdelay);
- break;
- case 0x86: buf->rwbytepar(n,&Pcontinous);
- break;
- case 0x87: buf->rwbytepar(n,&Pfreqrand);
- break;
- case 0x88: buf->rwbytepar(n,&Pstretch);
- break;
- };
- };
-
- Pfreq=freq/127.0;
-
- if (buf->getmode()!=0) {
- unsigned char tmp=0xff;
- buf->rwbyte(&tmp);
- };
-};
void LFOParams::add2XML(XMLwrapper *xml){
xml->addparreal("freq",Pfreq);
diff --git a/src/Params/LFOParams.h b/src/Params/LFOParams.h
@@ -23,7 +23,6 @@
#ifndef LFO_PARAMS_H
#define LFO_PARAMS_H
-#include "../Misc/Buffer.h"
#include "../Misc/XMLwrapper.h"
#include "Presets.h"
@@ -32,8 +31,6 @@ class LFOParams:public Presets{
LFOParams(char Pfreq_,char Pintensity_,char Pstartphase_, char PLFOtype_,char Prandomness_, char Pdelay_,char Pcontinous,char fel_);
~LFOParams();
- void saveloadbuf(Buffer *buf);
-
void add2XML(XMLwrapper *xml);
void defaults();
void getfromXML(XMLwrapper *xml);
diff --git a/src/Params/SUBnoteParameters.C b/src/Params/SUBnoteParameters.C
@@ -90,123 +90,6 @@ SUBnoteParameters::~SUBnoteParameters(){
};
-/*
- * Save or load the parameters to/from the buffer
- */
-void SUBnoteParameters::saveloadbuf(Buffer *buf){
- unsigned char npar,n,nharmonic,tmp;
-
-#ifdef DEBUG_BUFFER
- fprintf(stderr,"\n( SUBnotePparameters) \n");
-#endif
-
- tmp=0xfe;
- buf->rwbyte(&tmp);//if tmp!=0xfe error
-
-
- if (buf->getmode()==0){
- for (nharmonic=0;nharmonic<MAX_SUB_HARMONICS;nharmonic++){
- Phmag[nharmonic]=0;
- Phrelbw[nharmonic]=64;
- };
- };
-
- for (n=0x80;n<0xf0;n++){
- if (buf->getmode()==0) {
- buf->rwbyte(&npar);
- n=0;//force a loop until the end of parameters (0xff)
- } else npar=n;
- if (npar==0xff) break;
-
- switch(npar){
- //Misc Parameters
- case 0x80: buf->rwbytepar(n,&Pstereo);
- break;
- case 0x81: buf->rwbytepar(n,&PPanning);
- break;
- case 0x82: buf->rwbytepar(n,&Phmagtype);
- break;
- case 0x83: if (buf->getmode()!=0){
- for (nharmonic=0;nharmonic<MAX_SUB_HARMONICS;nharmonic++){
- if (Phmag[nharmonic]==0) continue;
- buf->rwbytepar(n,&nharmonic);
- buf->rwbyte(&Phmag[nharmonic]);
- buf->rwbyte(&Phrelbw[nharmonic]);
- };
- } else {
- buf->rwbytepar(n,&nharmonic);
- if (nharmonic<MAX_SUB_HARMONICS){//for safety
- buf->rwbyte(&Phmag[nharmonic]);
- buf->rwbyte(&Phrelbw[nharmonic]);
- } else{
- buf->rwbyte(&tmp);
- buf->rwbyte(&tmp);
- };
- };
- break;
- case 0x84: buf->rwbytepar(n,&Pnumstages);
- break;
- case 0x85: buf->rwbytepar(n,&Pstart);
- break;
- //Amplitude Parameters
- case 0x90: buf->rwbytepar(n,&PVolume);
- break;
- case 0x91: buf->rwbytepar(n,&PAmpVelocityScaleFunction);
- break;
- case 0x98: if (buf->getmode()!=0) buf->rwbyte(&npar);
- AmpEnvelope->saveloadbuf(buf);
- break;
- //Frequency Parameters
- case 0xA0: buf->rwwordpar(n,&PDetune);
- break;
- case 0xA1: buf->rwwordpar(n,&PCoarseDetune);
- break;
- case 0xA2: buf->rwbytepar(n,&PDetuneType);
- break;
- case 0xA3: buf->rwbytepar(n,&Pbandwidth);
- break;
- case 0xA4: buf->rwbytepar(n,&Pbwscale);
- break;
- case 0xA5: buf->rwbytepar(n,&PFreqEnvelopeEnabled);
- break;
- case 0xA6: buf->rwbytepar(n,&PBandWidthEnvelopeEnabled);
- break;
- case 0xA7: buf->rwbytepar(n,&Pfixedfreq);
- break;
- case 0xA8: if ((buf->getminimal()!=0) && (buf->getmode()!=0)
- && (PFreqEnvelopeEnabled==0)) break;
- if (buf->getmode()!=0) buf->rwbyte(&npar);
- FreqEnvelope->saveloadbuf(buf);
- break;
- case 0xA9: if ((buf->getminimal()!=0) && (buf->getmode()!=0)
- && (PBandWidthEnvelopeEnabled==0)) break;
- if (buf->getmode()!=0) buf->rwbyte(&npar);
- BandWidthEnvelope->saveloadbuf(buf);
- break;
- case 0xAA: buf->rwbytepar(n,&PfixedfreqET);
- break;
- //Filter Parameters
- case 0xB0: buf->rwbytepar(n,&PGlobalFilterEnabled);
- break;
- case 0xB1: buf->rwbytepar(n,&PGlobalFilterVelocityScale);
- break;
- case 0xB2: buf->rwbytepar(n,&PGlobalFilterVelocityScaleFunction);
- break;
- case 0xB8: if (buf->getmode()!=0) buf->rwbyte(&npar);
- GlobalFilter->saveloadbuf(buf);
- break;
- case 0xB9: if (buf->getmode()!=0) buf->rwbyte(&npar);
- GlobalFilterEnvelope->saveloadbuf(buf);
- break;
- };
- };
-
-
- if (buf->getmode()!=0) {
- unsigned char tmp=0xff;
- buf->rwbyte(&tmp);
- };
-};
void SUBnoteParameters::add2XML(XMLwrapper *xml){
diff --git a/src/Params/SUBnoteParameters.h b/src/Params/SUBnoteParameters.h
@@ -24,7 +24,6 @@
#define SUB_NOTE_PARAMETERS_H
#include "../globals.h"
-#include "../Misc/Buffer.h"
#include "../Misc/XMLwrapper.h"
#include "EnvelopeParams.h"
#include "FilterParams.h"
@@ -35,8 +34,6 @@ class SUBnoteParameters:public Presets{
SUBnoteParameters();
~SUBnoteParameters();
- void saveloadbuf(Buffer *buf);
-
void add2XML(XMLwrapper *xml);
void defaults();
void getfromXML(XMLwrapper *xml);
diff --git a/src/Synth/OscilGen.C b/src/Synth/OscilGen.C
@@ -1005,213 +1005,6 @@ void OscilGen::getcurrentbasefunction(REALTYPE *smps){
};
-/*
- * Quantisize and store the base function frequencies (used to save basefunction to buffer)
- */
-void OscilGen::savebasefuncQ(){
- int i;
- short int data;
- REALTYPE x,max;
- max=0.0;
-
- if (basefuncFFTfreqsQ==NULL)
- basefuncFFTfreqsQ=new unsigned short int[OSCIL_SIZE];
- for (i=0;i<OSCIL_SIZE;i++) basefuncFFTfreqsQ[i]=8192;//"8192"=0.0
-
- if (Pcurrentbasefunc==0) return;
-
- for (i=1;i<OSCIL_SIZE;i++)
- if (max<fabs(basefuncFFTfreqs[i])) max=fabs(basefuncFFTfreqs[i]);
- if (max<0.00000001) max=1.0;
-
- for (i=1;i<OSCIL_SIZE/2;i++) {
- //Cosine Component
- x=basefuncFFTfreqs[i]/max;
- if (fabs(x)<0.00001) data=0;// -100dB
- else {
- data=(short int) ((1.0+rap2dB(fabs(x))/100.0)*8191.0);
- if (x<0.0) data=-data;
- };
- basefuncFFTfreqsQ[i*2-1]=data+8192;
-
- //Sine Component
- if (i!=(OSCIL_SIZE/2-1)) {
- x=basefuncFFTfreqs[OSCIL_SIZE-i]/max;
- if (fabs(x)<0.00001) data=0;// -100dB
- else {
- data=(short int) ((1.0+rap2dB(fabs(x))/100.0)*8191.0);
- if (x<0.0) data=-data;
- };
- basefuncFFTfreqsQ[i*2]=data+8192;
- };
- };
-};
-
-/*
- * Load the base function frequencies from quantised data (used to load basefunction from buffer)
- */
-void OscilGen::loadbasefuncQ(){
- short int data,i;
- REALTYPE x;
-
- if (basefuncFFTfreqs==NULL) basefuncFFTfreqs=new REALTYPE[OSCIL_SIZE];
- for (i=0;i<OSCIL_SIZE;i++) basefuncFFTfreqs[i]=0.0;
- if (basefuncFFTfreqsQ==NULL) return;
-
- if (Pcurrentbasefunc==0) basefuncFFTfreqs=new REALTYPE[OSCIL_SIZE];
-
- for (i=0;i<OSCIL_SIZE;i++) basefuncFFTfreqs[i]=0.0;;
-
-
- for (i=1;i<OSCIL_SIZE/2;i++) {
- //Cosine Component
- data=basefuncFFTfreqsQ[i*2-1];
- if (data==8192) x=0.0;
- else {
- x=dB2rap((fabs(data-8192.0)/8192-1.0)*100.0);
- if (data<8192) x=-x;
- };
- basefuncFFTfreqs[i]=x;
-
- //Sine Component
- data=basefuncFFTfreqsQ[i*2];
- if (data==8192) x=0.0;
- else {
- x=dB2rap((fabs(data-8192.0)/8192-1.0)*100.0);
- if (data<8192) x=-x;
- };
- basefuncFFTfreqs[OSCIL_SIZE-i]=x;
-
- };
-
- delete basefuncFFTfreqsQ;
- basefuncFFTfreqsQ=NULL;
- oldbasefunc=Pcurrentbasefunc=127;
- oldbasepar=Pbasefuncpar;
-};
-
-
-/*
- * Save or load the parameters to/from the buffer
- */
-void OscilGen::saveloadbuf(Buffer *buf){
- unsigned char npar,n,nharmonic,tmp;
- unsigned short int nh,tmpw;
-
- int custombasefuncloaded=0;
-#ifdef DEBUG_BUFFER
- fprintf(stderr,"\n( Oscil parameters) \n");
-#endif
-
- tmp=0xfe;
- buf->rwbyte(&tmp);//if tmp!=0xfe error
-
- if (buf->getmode()==0){
- for (nharmonic=0;nharmonic<MAX_AD_HARMONICS;nharmonic++){
- Phmag[nharmonic]=64;
- Phphase[nharmonic]=64;
- };
- };
-
- for (n=0x80;n<0xf0;n++){
- if (buf->getmode()==0) {
- buf->rwbyte(&npar);
- n=0;//force a loop until the end of parameters (0xff)
- } else npar=n;
- if (npar==0xff) break;
-
- switch(npar){
- //Oscil parameters
- case 0x80: buf->rwbytepar(n,&Phmagtype);
- break;
- case 0x81: if (buf->getmode()!=0){
- for (nharmonic=0;nharmonic<MAX_AD_HARMONICS;nharmonic++){
- if (Phmag[nharmonic]!=64) {
- buf->rwbytepar(n,&nharmonic);
- buf->rwbyte(&Phmag[nharmonic]);
- buf->rwbyte(&Phphase[nharmonic]);
- };
- };
- } else {
- buf->rwbytepar(n,&nharmonic);
- if (nharmonic<MAX_AD_HARMONICS){//for safety
- buf->rwbyte(&Phmag[nharmonic]);
- buf->rwbyte(&Phphase[nharmonic]);
- } else {
- buf->rwbyte(&tmp);
- buf->rwbyte(&tmp);
- };
-
- };
- break;
- case 0x82: buf->rwbytepar(n,&Pcurrentbasefunc);
- break;
- case 0x83: buf->rwbytepar(n,&Pbasefuncpar);
- break;
- case 0x84: buf->rwbytepar(n,&Prand);
- break;
- case 0x85: buf->rwbytepar(n,&Pwaveshaping);
- break;
- case 0x86: buf->rwbytepar(n,&Pwaveshapingfunction);
- break;
- case 0x87: if (buf->getmode()!=0){
- if (Pcurrentbasefunc==127){
- savebasefuncQ();
- for (nh=0;nh<OSCIL_SIZE;nh++){
- if (basefuncFFTfreqsQ[nh]!=8192) {
- buf->rwbyte(&n);
- buf->rwword(&nh);
- buf->rwword(&basefuncFFTfreqsQ[nh]);
- };
- };
- };
- } else {
- buf->rwword(&nh);
- if (nh<OSCIL_SIZE){//for safety
- if (basefuncFFTfreqsQ==NULL) {
- basefuncFFTfreqsQ=new unsigned short int[OSCIL_SIZE];
- for (int tmp=0;tmp<OSCIL_SIZE;tmp++) basefuncFFTfreqsQ[tmp]=8192;//"8192"=0.0
- };
- buf->rwword(&basefuncFFTfreqsQ[nh]);
- custombasefuncloaded=1;
- } else {
- buf->rwword(&tmpw);
- };
-
- };
- break;
-// case 0x88: buf->rwbytepar(n,&Pnormalizemethod);
-// break;
- case 0x89: buf->rwbytepar(n,&Pfiltertype);
- break;
- case 0x8A: buf->rwbytepar(n,&Pfilterpar1);
- break;
- case 0x8B: buf->rwbytepar(n,&Pfilterbeforews);
- break;
- case 0x8C: buf->rwbytepar(n,&Psatype);
- break;
- case 0x8D: buf->rwbytepar(n,&Psapar);
- break;
- case 0x8E: buf->rwbytepar(n,&Pamprandtype);
- break;
- case 0x8F: buf->rwbytepar(n,&Pamprandpower);
- break;
- };
- };
-
-
- if (buf->getmode()!=0) {
- unsigned char tmp=0xff;
- buf->rwbyte(&tmp);
- } else {
- if (custombasefuncloaded!=0) {
- loadbasefuncQ();
- };
- prepare();
- };
-};
-
-
void OscilGen::add2XML(XMLwrapper *xml){
xml->addpar("harmonic_mag_type",Phmagtype);
diff --git a/src/Synth/OscilGen.h b/src/Synth/OscilGen.h
@@ -24,7 +24,6 @@
#define OSCIL_GEN_H
#include "../globals.h"
-#include "../Misc/Buffer.h"
#include "../Misc/XMLwrapper.h"
#include "Resonance.h"
#include "../DSP/FFTwrapper.h"
@@ -50,8 +49,6 @@ class OscilGen:public Presets{
void getcurrentbasefunction(REALTYPE *smps);
void useasbase();//convert oscil to base function
- void saveloadbuf(Buffer *buf);
-
void add2XML(XMLwrapper *xml);
void defaults();
void getfromXML(XMLwrapper *xml);
@@ -135,10 +132,6 @@ class OscilGen:public Presets{
void adaptiveharmonic(REALTYPE *freqs,REALTYPE freq);
- //Base function saveto/loadfrom quantised data
- void savebasefuncQ();
- void loadbasefuncQ();
-
//Basic/base functions (Functiile De Baza)
REALTYPE basefunc_pulse(REALTYPE x,REALTYPE a);
REALTYPE basefunc_saw(REALTYPE x,REALTYPE a);
diff --git a/src/Synth/Resonance.C b/src/Synth/Resonance.C
@@ -194,65 +194,6 @@ void Resonance::sendcontroller(MidiControllers ctl,REALTYPE par){
};
-/*
- * Save or load the parameters to/from the buffer
- */
-void Resonance::saveloadbuf(Buffer *buf){
- unsigned char npar,n,tmp;
-
-#ifdef DEBUG_BUFFER
- fprintf(stderr,"\n( Resonance parameters) \n");
-#endif
-
- tmp=0xfe;
- buf->rwbyte(&tmp);//if tmp!=0xfe error
-
-
- for (n=0x80;n<0xf0;n++){
- if (buf->getmode()==0) {
- buf->rwbyte(&npar);
- n=0;//force a loop until the end of parameters (0xff)
- } else npar=n;
- if (npar==0xff) break;
-
- switch(npar){
- //Resonance parameters
- case 0x80: buf->rwbytepar(n,&Penabled);
- break;
- case 0x81: buf->rwbytepar(n,&PmaxdB);
- break;
- case 0x82: buf->rwbytepar(n,&Pcenterfreq);
- break;
- case 0x83: buf->rwbytepar(n,&Poctavesfreq);
- break;
- case 0x85: buf->rwbytepar(n,&Pprotectthefundamental);
- break;
- case 0xA0: if (buf->getmode()!=0){
- if ((buf->getminimal()==0) || (Penabled!=0)){
- unsigned short int tmp2=N_RES_POINTS;
- buf->rwbyte(&npar);
- buf->rwword(&tmp2);
- for (int i=0;i<N_RES_POINTS;i++) buf->rwbyte(&Prespoints[i]);
- };
- } else {
- unsigned short int tmp2;
- buf->rwword(&tmp2);
- for (int i=0;i<tmp2;i++)
- if (i<N_RES_POINTS) buf->rwbyte(&Prespoints[i]);
- else buf->rwbyte(&tmp);
-
-
- };
- break;
- };
- };
-
-
- if (buf->getmode()!=0) {
- unsigned char tmp=0xff;
- buf->rwbyte(&tmp);
- };
-};
void Resonance::add2XML(XMLwrapper *xml){
diff --git a/src/Synth/Resonance.h b/src/Synth/Resonance.h
@@ -39,8 +39,6 @@ class Resonance:public Presets{
void interpolatepeaks(int type);
void randomize(int type);
- void saveloadbuf(Buffer *buf);
-
void add2XML(XMLwrapper *xml);
void defaults();
void getfromXML(XMLwrapper *xml);
diff --git a/src/UI/BankUI.fl b/src/UI/BankUI.fl
@@ -81,15 +81,14 @@ refresh();} {}
if (*nselected==nslot) color(6);
-label(bank->getnamenumbered(nslot));} {selected
- }
+label(bank->getnamenumbered(nslot));} {}
}
decl {int *what,*whatslot,nslot,highlight, *nselected;} {}
decl {void (BankProcess_:: *fnc)(void);} {}
decl {BankProcess_ *bp;} {}
}
-class BankUI {: {public BankProcess_}
+class BankUI {selected : {public BankProcess_}
} {
Function {make_window()} {} {
Fl_Window bankuiwindow {
@@ -185,18 +184,6 @@ refreshmainwindow();}
tooltip {automatically close the bank window if the instrument is loaded} xywh {705 529 60 15} down_box DOWN_BOX labelsize 10
code0 {o->value(config.cfg.BankUIAutoClose);}
}
- Fl_Button {} {
- label {IMPORT from bnk_zyn}
- callback {const char *filename;
-filename=fl_file_chooser("Convert Bank from bnk_zyn file:","(*.bnk_zyn)",NULL,0);
-if (filename==NULL) return;
-
-master->exportbankasxmldirectory(filename);
-
-
-refreshmainwindow();}
- xywh {515 530 105 40} box PLASTIC_UP_BOX color 175 labelfont 1 labelsize 15 labelcolor 0 align 128
- }
Fl_Choice banklist {
callback {int n=o->value();
char *dirname=bank->banks[n].dir;
diff --git a/src/UI/MasterUI.fl b/src/UI/MasterUI.fl
@@ -378,7 +378,7 @@ if (fl_ask("Exit and leave the unsaved data?")) *exitprogram=1;
xywh {188 182 390 465} type Double hide
code0 {setfilelabel(NULL);} non_modal
} {
- Fl_Menu_Bar mastermenu {
+ Fl_Menu_Bar mastermenu {selected
xywh {0 0 690 25}
} {
submenu {} {
@@ -470,42 +470,6 @@ updatepanel();}
xywh {10 10 100 20} divider
}
menuitem {} {
- label {Open MAS_ZYN...}
- callback {const char *filename;
-filename=fl_file_chooser("Open:","(*.mas_zyn)",NULL,0);
-if (filename==NULL) return;
-int result=loadbufferfile(&slbuf,filename,0);
-if (result==0) {
- setfilelabel(filename);
- slbuf.changemode(0);
- delete microtonalui;
- pthread_mutex_lock(&master->mutex);
-
- //clear all parameters, first
-
- master->defaults();
-
- //load the data
- master->saveloadbuf(&slbuf);
- pthread_mutex_unlock(&master->mutex);
-
- 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();
-} else {
- if (result==4) fl_alert("Error: Could not load the file\\nbecause it is not a master file.");
- else fl_alert("Error: Could not load the file.");
-};
-updatepanel();}
- xywh {10 10 100 20} divider
- }
- menuitem {} {
label {&Load Scale Settings...}
callback {char *filename;
filename=fl_file_chooser("Open:","({*.xsz})",NULL,0);
@@ -560,29 +524,6 @@ updatepanel();}
xywh {0 0 100 20} divider
}
menuitem {} {
- label {&Load SCL_ZYN...}
- callback {const char *filename;
-filename=fl_file_chooser("Load:","(*.scl_zyn)",NULL,0);
-if (filename==NULL) return;
-int result=loadbufferfile(&slbuf,filename,2);
-if (result==0) {
- delete microtonalui;
-
- slbuf.changemode(0);
- pthread_mutex_lock(&master->mutex);
- master->microtonal.defaults();
- master->microtonal.saveloadbuf(&slbuf);
- pthread_mutex_unlock(&master->mutex);
-
- microtonalui=new MicrotonalUI(&master->microtonal);
-
- } else {
- if (result==4) fl_alert("Error: Could not load the file\\nbecause it is not a scale file.");
- else fl_alert("Error: Could not load the file.");
- };}
- xywh {45 45 100 20} divider
- }
- menuitem {} {
label {&Settings...}
callback {configui->show();}
xywh {25 25 100 20} divider
@@ -668,32 +609,6 @@ updatepanel();}
xywh {20 20 100 20} divider
}
menuitem {} {
- label {Load INS_ZYN Instrument...}
- callback {const char *filename;
-filename=fl_file_chooser("Load:","(*.ins_zyn)",NULL,0);
-if (filename==NULL) return;
-int result=loadbufferfile(&slbuf,filename,1);
-if (result==0) {
- slbuf.changemode(0);
- pthread_mutex_lock(&master->mutex);
- int npart=(int)npartcounter->value();
-
- //clear all instrument parameters, first
- master->part[npart]->defaultsinstrument();
-
- //load the instr. parameters
- master->part[npart]->saveloadbuf(&slbuf,1);
- pthread_mutex_unlock(&master->mutex);
- npartcounter->do_callback();
- } else {
- if (result==4) fl_alert("Error: Could not load the file\\nbecause it is not an instrument file.");
- else fl_alert("Error: Could not load the file.");
- };
-
-updatepanel();}
- xywh {20 20 100 20}
- }
- menuitem {} {
label {Show Instrument &Bank...}
callback {bankui->show();}
xywh {0 0 100 20} divider
@@ -778,7 +693,7 @@ pthread_mutex_unlock(&master->mutex);}
xywh {0 80 390 160}
} {
Fl_Group {} {
- label {System Effects} open selected
+ label {System Effects} open
xywh {0 100 390 140} box ENGRAVED_FRAME labeltype EMBOSSED_LABEL labelsize 20 align 25
} {
Fl_Counter syseffnocounter {