Home Information Classes Download Usage Mail List Requirements Links Tutorial
00001 /***************************************************/ 00034 /***************************************************/ 00035 00036 #if !defined(__BLOWHOLE_H) 00037 #define __BLOWHOLE_H 00038 00039 #include "Instrmnt.h" 00040 #include "DelayL.h" 00041 #include "ReedTabl.h" 00042 #include "OneZero.h" 00043 #include "PoleZero.h" 00044 #include "Envelope.h" 00045 #include "Noise.h" 00046 #include "WaveLoop.h" 00047 00048 class BlowHole : public Instrmnt 00049 { 00050 public: 00052 BlowHole(MY_FLOAT lowestFrequency); 00053 00055 ~BlowHole(); 00056 00058 void clear(); 00059 00061 void setFrequency(MY_FLOAT frequency); 00062 00064 void setTonehole(MY_FLOAT newValue); 00065 00067 void setVent(MY_FLOAT newValue); 00068 00070 void startBlowing(MY_FLOAT amplitude, MY_FLOAT rate); 00071 00073 void stopBlowing(MY_FLOAT rate); 00074 00076 void noteOn(MY_FLOAT frequency, MY_FLOAT amplitude); 00077 00079 void noteOff(MY_FLOAT amplitude); 00080 00082 MY_FLOAT tick(); 00083 00085 void controlChange(int number, MY_FLOAT value); 00086 00087 protected: 00088 DelayL *delays[3]; 00089 ReedTabl *reedTable; 00090 OneZero *filter; 00091 PoleZero *tonehole; 00092 PoleZero *vent; 00093 Envelope *envelope; 00094 Noise *noise; 00095 WaveLoop *vibrato; 00096 long length; 00097 MY_FLOAT scatter; 00098 MY_FLOAT th_coeff; 00099 MY_FLOAT r_th; 00100 MY_FLOAT rh_coeff; 00101 MY_FLOAT rh_gain; 00102 MY_FLOAT outputGain; 00103 MY_FLOAT noiseGain; 00104 MY_FLOAT vibratoGain; 00105 00106 }; 00107 00108 #endif
The Synthesis ToolKit in C++ (STK) |
©1995-2004 Perry R. Cook and Gary P. Scavone. All Rights Reserved. |