Home Information Classes Download Usage Mail List Requirements Links Tutorial
00001 /***************************************************/ 00016 /***************************************************/ 00017 00018 #if !defined(__ADSR_H) 00019 #define __ADSR_H 00020 00021 #include "Envelope.h" 00022 00023 class ADSR : public Envelope 00024 { 00025 public: 00026 00028 enum { ATTACK, DECAY, SUSTAIN, RELEASE, DONE }; 00029 00031 ADSR(void); 00032 00034 ~ADSR(void); 00035 00037 void keyOn(void); 00038 00040 void keyOff(void); 00041 00043 void setAttackRate(MY_FLOAT aRate); 00044 00046 void setDecayRate(MY_FLOAT aRate); 00047 00049 void setSustainLevel(MY_FLOAT aLevel); 00050 00052 void setReleaseRate(MY_FLOAT aRate); 00053 00055 void setAttackTime(MY_FLOAT aTime); 00056 00058 void setDecayTime(MY_FLOAT aTime); 00059 00061 void setReleaseTime(MY_FLOAT aTime); 00062 00064 void setAllTimes(MY_FLOAT aTime, MY_FLOAT dTime, MY_FLOAT sLevel, MY_FLOAT rTime); 00065 00067 void setTarget(MY_FLOAT aTarget); 00068 00070 int getState(void) const; 00071 00073 void setValue(MY_FLOAT aValue); 00074 00076 MY_FLOAT tick(void); 00077 00079 MY_FLOAT *tick(MY_FLOAT *vector, unsigned int vectorSize); 00080 00081 protected: 00082 MY_FLOAT attackRate; 00083 MY_FLOAT decayRate; 00084 MY_FLOAT sustainLevel; 00085 MY_FLOAT releaseRate; 00086 }; 00087 00088 #endif
The Synthesis ToolKit in C++ (STK) |
©1995-2004 Perry R. Cook and Gary P. Scavone. All Rights Reserved. |