Home   Information   Classes   Download   Usage   Mail List   Requirements   Links   Tutorial


BlowHole.h

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.