Home Information Classes Download Usage Mail List Requirements Links Tutorial
00001 /***************************************************/ 00034 /***************************************************/ 00035 00036 #ifndef STK_BLOWHOLE_H 00037 #define STK_BLOWHOLE_H 00038 00039 #include "Instrmnt.h" 00040 #include "DelayL.h" 00041 #include "ReedTable.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 00055 BlowHole(StkFloat lowestFrequency); 00056 00058 ~BlowHole(); 00059 00061 void clear(); 00062 00064 void setFrequency(StkFloat frequency); 00065 00067 void setTonehole(StkFloat newValue); 00068 00070 void setVent(StkFloat newValue); 00071 00073 void startBlowing(StkFloat amplitude, StkFloat rate); 00074 00076 void stopBlowing(StkFloat rate); 00077 00079 void noteOn(StkFloat frequency, StkFloat amplitude); 00080 00082 void noteOff(StkFloat amplitude); 00083 00085 StkFloat tick(); 00086 00088 StkFloat *tick(StkFloat *vector, unsigned int vectorSize); 00089 00091 00097 StkFrames& tick( StkFrames& frames, unsigned int channel = 1 ); 00098 00100 void controlChange(int number, StkFloat value); 00101 00102 protected: 00103 DelayL delays_[3]; 00104 ReedTable reedTable_; 00105 OneZero filter_; 00106 PoleZero tonehole_; 00107 PoleZero vent_; 00108 Envelope envelope_; 00109 Noise noise_; 00110 WaveLoop *vibrato_; 00111 unsigned long length_; 00112 StkFloat scatter_; 00113 StkFloat thCoeff_; 00114 StkFloat rhGain_; 00115 StkFloat outputGain_; 00116 StkFloat noiseGain_; 00117 StkFloat vibratoGain_; 00118 00119 }; 00120 00121 #endif
The Synthesis ToolKit in C++ (STK) |
©1995-2004 Perry R. Cook and Gary P. Scavone. All Rights Reserved. |