diff options
author | Nil Geisweiller <a-lin@sourceforge.net> | 2010-11-14 07:41:38 +0000 |
---|---|---|
committer | Nil Geisweiller <a-lin@sourceforge.net> | 2010-11-14 07:41:38 +0000 |
commit | 2a079213ac507ab4866d9e27c5cf86ddcb7a3c6d (patch) | |
tree | 1b31e3bd10a3937c0eb249407530d00c7de4c1e5 /muse2/synti/deicsonze2/deicsonzepreset.h | |
parent | 17d8ce85ca5ee2a3b3e0b3c9c8af745da8117e40 (diff) |
see ChangeLog
Diffstat (limited to 'muse2/synti/deicsonze2/deicsonzepreset.h')
-rw-r--r-- | muse2/synti/deicsonze2/deicsonzepreset.h | 567 |
1 files changed, 0 insertions, 567 deletions
diff --git a/muse2/synti/deicsonze2/deicsonzepreset.h b/muse2/synti/deicsonze2/deicsonzepreset.h deleted file mode 100644 index 3c005c8d..00000000 --- a/muse2/synti/deicsonze2/deicsonzepreset.h +++ /dev/null @@ -1,567 +0,0 @@ -//=========================================================================== -// -// DeicsOnze an emulator of the YAMAHA DX11 synthesizer -// -// Version 0.5.5 -// -// deicsonzepreset.h -// -// -// Copyright (c) 2004-2006 Nil Geisweiller -// -// -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// 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 for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -// 02111-1307, USA or point your web browser to http://www.gnu.org. -//=========================================================================== - -#ifndef __DEICSONZEPRESET_H -#define __DEICSONZEPRESET_H - -#include <string> -#include <vector> - -#include <qdom.h> - -#include "muse/xml.h" - -#define NBROP 4 //do not change -#define MAXCHARTAG 64 - -#define PROG_NBR 128 -#define LBANK_NBR 128 -#define HBANK_NBR 128 - -//--------------------------------------------------------- -// define strings of the parameter names for load save and ctrl interface -// number of ctrl -// following the internal DX11 organization (c.f T81Z manual) -//--------------------------------------------------------- -#define CTRLOFFSET 0x100 -#define DECAPAR1 13 -#define ARSTR "AR" -#define ARLONGSTR "AttackRate" -#define CTRL_AR 0+CTRLOFFSET -#define MAXAR 31 -#define D1RSTR "D1R" -#define D1RLONGSTR "Decay1Rate" -#define CTRL_D1R 1+CTRLOFFSET -#define MAXD1R 31 -#define D2RSTR "D2R" -#define D2RLONGSTR "Decay2Rate" -#define CTRL_D2R 2+CTRLOFFSET -#define MAXD2R 31 -#define RRSTR "RR" -#define RRLONGSTR "ReleaseRate" -#define CTRL_RR 3+CTRLOFFSET -#define MAXRR 15 -#define D1LSTR "D1L" -#define D1LLONGSTR "Decay1Level" -#define CTRL_D1L 4+CTRLOFFSET -#define MAXD1L 15 -#define LSSTR "LS" -#define LSLONGSTR "LevelScaling" -#define CTRL_LS 5+CTRLOFFSET -#define MAXLS 99 -#define RSSTR "RS" -#define RSLONGSTR "RateScaling" -#define CTRL_RS 6+CTRLOFFSET -#define MAXRS 3 -#define EBSSTR "EBS" -#define EBSLONGSTR "EGBiasSensitivity" -#define CTRL_EBS 7+CTRLOFFSET -#define MAXEBS 7 -#define AMESTR "AME" -#define AMELONGSTR "AmplitudeModulationEnable" -#define CTRL_AME 8+CTRLOFFSET -#define KVSSTR "KVS" -#define KVSLONGSTR "KeyVelocitySensitivity" -#define CTRL_KVS 9+CTRLOFFSET -#define MAXKVS 7 -#define OUTSTR "OUT" -#define OUTLONGSTR "OperatorOutputLevel" -#define CTRL_OUT 10+CTRLOFFSET -#define MAXOUT 99 -#define RATIOSTR "Ratio" -#define RATIOLONGSTR "Ratio" -#define CTRL_RATIO 11+CTRLOFFSET -#define MAXRATIO 64 -#define DETSTR "DET" -#define DETLONGSTR "Detune" -#define CTRL_DET 12+CTRLOFFSET -#define MAXDET 3 -#define ALGSTR "ALG" -#define ALGLONGSTR "Algorithm" -#define CTRL_ALG 52+CTRLOFFSET -#define MAXALG 7 -#define FEEDBACKSTR "Feedback" -#define CTRL_FEEDBACK 53+CTRLOFFSET -#define MAXFEEDBACK 7 -#define SPEEDSTR "Speed" -#define SPEEDLONGSTR "LFOSpeed" -#define CTRL_SPEED 54+CTRLOFFSET -#define MAXSPEED 99 -#define DELAYSTR "Delay" //TODO LFOD -#define DELAYLONGSTR "LFODelay" -#define CTRL_DELAY 55+CTRLOFFSET -#define MAXDELAY 99 -#define PMODDEPTHSTR "PModDepth" -#define PMODDEPTHLONGSTR "PitchModulationDepth" -#define CTRL_PMODDEPTH 56+CTRLOFFSET -#define MAXPMODDEPTH 99 -#define AMODDEPTHSTR "AModDepth" -#define AMODDEPTHLONGSTR "AmplitudeModulationDepth" -#define CTRL_AMODDEPTH 57+CTRLOFFSET -#define MAXAMODDEPTH 99 -#define SYNCSTR "Sync" -#define SYNCLONGSTR "LFOSync" -#define CTRL_SYNC 58+CTRLOFFSET -#define WAVESTR "Wave" -#define WAVELONGSTR "LFOWave" -#define CTRL_WAVE 59+CTRLOFFSET -#define MAXWAVE 3 -#define PMODSENSSTR "PModSens" -#define PMODSENSLONGSTR "PitchModulationSensitivity" -#define CTRL_PMODSENS 60+CTRLOFFSET -#define MAXPMODSENS 7 -#define AMSSTR "AMS" -#define AMSLONGSTR "AmplitudeModulationSensitivity" -#define CTRL_AMS 61+CTRLOFFSET -#define MAXAMS 3 -#define TRANSPOSESTR "Transpose" -#define CTRL_TRANSPOSE 62+CTRLOFFSET -#define MAXTRANSPOSE 24 -#define POLYMODESTR "PolyMode" -#define CTRL_POLYMODE 63+CTRLOFFSET -#define PBENDRANGESTR "PBendRange" -#define PBENDRANGELONGSTR "PitchBendRange" -#define CTRL_PBENDRANGE 64+CTRLOFFSET -#define MAXPBENDRANGE 12 -#define PORTAMODESTR "PortaMode" -#define PORTAMODELONGSTR "PortamentoMode" -#define CTRL_PORTAMODE 65+CTRLOFFSET -#define PORTATIMESTR "PortaTime" -#define PORTATIMELONGSTR "PortamentoTime" -#define CTRL_PORTATIME 66+CTRLOFFSET -#define MAXPROTATIME 99 -#define FCVOLUMESTR "FCVolume" -#define FCVOLUMELONGSTR "FootControllerVolume" -#define CTRL_FCVOLUME 67+CTRLOFFSET -#define MAXFCVOLUME 99 -#define FSWSTR "FSW" -#define FSWLONGSTR "FootSwitch" -#define CTRL_FSW 68+CTRLOFFSET -#define MAXFSW 99 -#define MWPITCHSTR "MWPitch" -#define MWPITCHLONGSTR "ModulationWheelPitch" -#define CTRL_MWPITCH 71+CTRLOFFSET -#define MAXMWPITCH 99 -#define MWAMPLITUDESTR "MWAmplitude" -#define MWAMPLITUDELONGSTR "ModulationWheelAmplitude" -#define CTRL_MWAMPLITUDE 72+CTRLOFFSET -#define MAXMWAMPLITUDE 99 -#define BCPITCHSTR "BCPitch" -#define BCPITCHLONGSTR "BreathControlPitch" -#define CTRL_BCPITCH 73+CTRLOFFSET -#define MAXBCPITCH 99 -#define BCAMPLITUDESTR "BCAmplitude" -#define BCAMPLITUDELONGSTR "BreathControlAmplitude" -#define CTRL_BCAMPLITUDE 74+CTRLOFFSET -#define MAXBCAMPLITUDE 99 -#define BCPITCHBIASSTR "BCPitchBias" -#define BCPITCHBIASLONGSTR "BreathControlPitchBias" -#define CTRL_BCPITCHBIAS 75+CTRLOFFSET -#define MAXBCPITCHBIAS 50 -#define BCEGBIASSTR "BCEGBias" -#define BCEGBIASLONGSTR "BreathControlEGBias" -#define CTRL_BCEGBIAS 76+CTRLOFFSET -#define MAXBCEGBIAS 99 -#define MIDATTACK 64 -#define ATPITCHSTR "ATPitch" -#define ATPITCHLONGSTR "AfterTouchPitch" -#define CTRL_ATPITCH 77+CTRLOFFSET -#define MAXATPITCH 99 -#define ATAMPLITUDESTR "ATAmplitude" -#define ATAMPLITUDELONGSTR "AfterTouchAmplitude" -#define CTRL_ATAMPLITUDE 78+CTRLOFFSET -#define MAXATAMPLITUDE 99 -#define ATPITCHBIASSTR "ATPitchBias" -#define ATPITCHBIASLONGSTR "AfterTouchPitchBias" -#define CTRL_ATPITCHBIAS 79+CTRLOFFSET -#define MAXATPITCHBIAS 50 -#define ATEGBIASSTR "ATEGBias" -#define ATEGBIASLONGSTR "AfterTouchEGBias" -#define CTRL_ATEGBIAS 80+CTRLOFFSET -#define MAXATEGBIAS 99 -#define PR1STR "PR1" -#define PR1LONGSTR "PitchRateEG1" -#define CTRL_PR1 81+CTRLOFFSET -#define MAXPR 99 -#define PR2STR "PR2" -#define PR2LONGSTR "PitchRateEG2" -#define CTRL_PR2 82+CTRLOFFSET -#define PR3STR "PR3" -#define PR3LONGSTR "PitchRateEG3" -#define CTRL_PR3 83+CTRLOFFSET -#define PL1STR "PL1" -#define PL1LONGSTR "PitchLevelEG1" -#define CTRL_PL1 84+CTRLOFFSET -#define MAXPL 99 -#define PL2STR "PL2" -#define PL2LONGSTR "PitchLevelEG2" -#define CTRL_PL2 85+CTRLOFFSET -#define PL3STR "PL3" -#define PL3LONGSTR "PitchLevelEG3" -#define CTRL_PL3 86+CTRLOFFSET -#define DECAPAR2 5 -#define FIXSTR "FIX" -#define FIXLONGSTR "FixedFrequency" -#define CTRL_FIX 100+CTRLOFFSET -#define FIXRANGESTR "FixRange" -#define FIXRANGELONGSTR "FixedFrequencyRange" -#define CTRL_FIXRANGE 101+CTRLOFFSET -#define MAXFIXRANGE 255 -#define OSWSTR "OSW" -#define OSWLONGSTR "OperatorWaveform" -#define CTRL_OSW 103+CTRLOFFSET -#define MAXOSW 7 -#define SHFTSTR "SHFT" -#define SHFTLONGSTR "EGShift" -#define CTRL_SHFT 104+CTRLOFFSET -#define MAXSHFT 3 -#define REVERBRATESTR "ReverbRate" -#define CTRL_REVERBRATE 120+CTRLOFFSET -#define MAXREVERBRATE 7 -#define FCPITCHSTR "FCPitch" -#define FCPITCHLONGSTR "FootControllerPitch" -#define CTRL_FCPITCH 121+CTRLOFFSET -#define MAXFCPITCH 99 -#define FCAMPLITUDESTR "FCAmplitude" -#define FCAMPLITUDELONGSTR "FootControllerAmplitude" -#define CTRL_FCAMPLITUDE 122+CTRLOFFSET -#define MAXFCAMPLITUDE 99 -#define CHANNELPANSTR "ChannelPan" -#define CTRL_CHANNELPAN 123+CTRLOFFSET -#define MAXCHANNELPAN 127 -#define CHANNELDETUNESTR "ChannelDetune" -#define CTRL_CHANNELDETUNE 124+CTRLOFFSET -#define MAXCHANNELDETUNE 63 -#define CHANNELVOLUMESTR "ChannelVolume" -#define CTRL_CHANNELVOLUME 125+CTRLOFFSET -#define MAXCHANNELVOLUME 255 -#define FINEBRIGHTNESSSTR "FineBrightness" -#define CTRL_FINEBRIGHTNESS 126+CTRLOFFSET -#define MAXFINEBRIGHTNESS 4095 -#define MIDFINEBRIGHTNESS (MAXFINEBRIGHTNESS+1)/2 -#define BRIGHTNESSSTR "Brightness" -#define MAXBRIGHTNESS 127 -#define MIDBRIGHTNESS 64 -#define MAXMODULATION 127 -#define MODULATIONSTR "Modulation" -#define ATTACKSTR "Attack" -#define MAXATTACK 127 -#define MIDATTACK 64 -#define RELEASESTR "Attack" -#define MAXRELEASE 127 -#define MIDRELEASE 64 -#define NBRVOICESSTR "NumberOfVoices" -#define MINNBRVOICES 1 -#define CTRL_NBRVOICES 127+CTRLOFFSET -#define CHANNELENABLESTR "ChannelEnable" -#define MAXCHANNELENABLE 1 -#define MINCHANNELENABLE 0 -#define CTRL_CHANNELENABLE 128+CTRLOFFSET - -class Preset; -class Subcategory; -class Category; -class Set; - -//--------------------------------------------------------- -// Algorithm -//--------------------------------------------------------- - -enum Algorithm { - FIRST, // Op 0 modulated by Op 1 modulated by Op 2 modulated by Op3 - SECOND, // Op 0 modulated by Op 1 modulated by both Op 2 and Op 3 - THIRD, // Op 0 modulated by both Op 3 and Op 1 modulated by Op 2 - FOURTH, // Op 0 modulated by both Op 1 and Op 2 modulated by Op 3 - FIFTH, // (Op 0 modulated by Op 1) add to (Op 2 modulated by Op 3) - SIXTH, // addition of the three Op 0, 1, 2 all modulated by Op 3 - SEVENTH, // addition of the three Op 0, 1, 2 with 2 modulated by Op3 - EIGHTH // addition of the four Op 0, 1, 2, 3 -}; - -//--------------------------------------------------------- -// Wave of the low frequency modulation -//--------------------------------------------------------- -enum Wave { - SAWUP, - SQUARE, - TRIANGL, - SHOLD -}; - -//--------------------------------------------------------- -// Lfo, low frequency modulation -//--------------------------------------------------------- -struct Lfo { - Wave wave; - unsigned char speed; //0 to 99 - unsigned char delay; //0 to 99 - unsigned char pModDepth; //0 to 99 - unsigned char aModDepth; //0 to 99 - bool sync; -}; - -//--------------------------------------------------------- -// Sensitivity -// of the frequency and amplitude of the lfo -// and the key velocity -//--------------------------------------------------------- -struct Sensitivity { - unsigned char pitch; //0 to 7 - unsigned char amplitude; //0 to 3 - bool ampOn[NBROP]; - unsigned char egBias[NBROP]; //O to 7 - unsigned char keyVelocity[NBROP]; //0 to 7 -}; - -//--------------------------------------------------------- -// Frequency -//--------------------------------------------------------- -struct Frequency { - double ratio; - bool isFix; //if isFix no ratio but frequency - double freq; -}; - -//--------------------------------------------------------- -// OscWave -//--------------------------------------------------------- -enum OscWave { - W1, //sine wave - W2, //sine² relative - W3, //half sine - W4, //half sine² relative - W5, - W6, - W7, - W8 -}; - -enum egShiftValue {VOF, V48, V24, V12}; - -//--------------------------------------------------------- -// Eg -// Envelope -//--------------------------------------------------------- -struct Eg { - unsigned char ar; //0 to 31 speed attack - unsigned char d1r; //0 to 31 speed decay - unsigned char d1l; //0 to 15 level sustain - unsigned char d2r; //0 to 31 speed of sustain - unsigned char rr; //1 to 15 - egShiftValue egShift; -}; - -//--------------------------------------------------------- -// PitchEg -//--------------------------------------------------------- -struct PitchEg { - unsigned char pr1;//0 to 99 - unsigned char pr2;//0 to 99 - unsigned char pr3;//0 to 99 - unsigned char pl1;//0 to 99 - unsigned char pl2;//0 to 99 - unsigned char pl3;//0 to 99 -}; - -//--------------------------------------------------------- -// Scaling -//--------------------------------------------------------- -struct Scaling { - unsigned char rate[NBROP];//0 to 3 - unsigned char level[NBROP];//0 to 99 -}; - -//--------------------------------------------------------- -// Mode -//--------------------------------------------------------- -enum Mode { - POLY, - MONO -}; - -//--------------------------------------------------------- -// Portamento -//--------------------------------------------------------- -enum Portamento { - FINGER, - FULL -}; - -//--------------------------------------------------------- -// FootSw -//--------------------------------------------------------- -enum FootSw { - POR, - SUS -}; -//--------------------------------------------------------- -// Function -//--------------------------------------------------------- -struct Function { - int transpose; - Mode mode; - unsigned char pBendRange;//0 to 12 - Portamento portamento; - unsigned char portamentoTime;//0 to 99 - FootSw footSw; - unsigned char fcVolume;//0 to 99 - unsigned char fcPitch;//0 to 99 - unsigned char fcAmplitude;//0 to 99 - unsigned char mwPitch;//0 to 99 - unsigned char mwAmplitude;//0 to 99 - unsigned char bcPitch;//0 to 99 - unsigned char bcAmplitude;//0 to 99 - signed char bcPitchBias;//-50 to 50 - unsigned char bcEgBias;//0 to 99 - unsigned char atPitch;//0 to 99 - unsigned char atAmplitude;//0 to 99 - signed char atPitchBias;//-50 to 50 - unsigned char atEgBias;//0 to 99 - signed char reverbRate;//O=off, 1 to 7 -}; - -//--------------------------------------------------------- -// Preset class -//--------------------------------------------------------- - -class Preset { - public: - Subcategory* _subcategory; //subcategory parent - bool _isUsed; //false if the preset has never been used or modified, - //in this case the preset is not going to be - //save with the project - //Attributes - Algorithm algorithm; - unsigned char feedback; //0 to 7 - Lfo lfo; - Sensitivity sensitivity; - Frequency frequency[NBROP]; - OscWave oscWave[NBROP]; - signed char detune[NBROP]; //-3 to 3 - Eg eg[NBROP]; - PitchEg pitchEg; - unsigned char outLevel[NBROP]; //0 to 99 - Scaling scaling; - Function function; - //int globalDetune; //-31 to 31 //now to the channel - std::string name; - //unsigned char modulation; //0 to 127 - int prog; //0 to 127 - //Methods - void printPreset(); - void initPreset(); - void readPreset(QDomNode qdn); - void writePreset(Xml* xml, bool onlyUsed); - void linkSubcategory(Subcategory* sub); - void merge(Preset* p); //copy the data of p in the preset - void setIsUsed(bool b); //set flag _isUsed and transmit in the parents - void getHBankLBankProg(int* h, int* l, int* p); //return the hbank, lbank and prog of the preset - //Constructor destructor - Preset(); - Preset(Subcategory* sub); - Preset(Subcategory* sub, int prog); - ~Preset(); -}; - -//--------------------------------------------------------------- -// Bank, organized by a tree of category, subcategory, preset -//--------------------------------------------------------------- -class Subcategory { - public: - Category* _category;//parent category - bool _isUsed; //false if the subcategory has never been used or modified, - //in this case the subcategory is not going to be - //save with the project - std::string _subcategoryName; - int _lbank; //0 to 127 - std::vector<Preset*> _presetVector; - Preset* findPreset(int prog); - void readSubcategory(QDomNode subNode); - void writeSubcategory(Xml* xml, bool onlyUsed); - void printSubcategory(); - void linkCategory(Category* cat); - void unlink(); - bool isFreeProg(int prog); - int firstFreeProg(); - void merge(Preset*); - //Constructor destructor - Subcategory(); - Subcategory(Category* cat); - Subcategory(const std::string name); - Subcategory(Category* cat, const std::string name, int lbank); - ~Subcategory(); -}; - -class Category { - public: - Set* _set;//parent set - bool _isUsed; //false if the category has never been used or modified, - //in this case the category is not going to be - //save with the project - std::string _categoryName; - int _hbank; //0 to 127 - std::vector<Subcategory*> _subcategoryVector; - Subcategory* findSubcategory(int lbank); - Preset* findPreset(int lbank, int prog); - void readCategory(QDomNode catNode); - void writeCategory(Xml* xml, bool onlyUsed); - void printCategory(); - void linkSet(Set* s); - void unlink(); - bool isFreeLBank(int lbank); - int firstFreeLBank(); //return -1 if no free - void merge(Subcategory*); - //Constructor Destructor - Category(); - Category(Set* s); - Category(Set* s,const std::string name, int hbank); - ~Category(); -}; - -class Set { - public: - std::string _setName; - std::vector<Category*> _categoryVector; - Preset* findPreset(int hbank, int lbank, int prog); - Subcategory* findSubcategory(int hbank, int lbank); - Category* findCategory(int hbank); - void readSet(QDomNode setNode); - void writeSet(Xml* xml, bool onlyUsed); - void printSet(); - bool isFreeHBank(int hbank); - int firstFreeHBank(); - void merge(Category*); - //Constructor Destructor - Set(const std::string name){_setName=name;} - ~Set() { - while(!_categoryVector.empty()) delete(*_categoryVector.begin()); - } -}; - -#endif /* __DEICSONZE_H */ |