Home   Information   Classes   Download   Usage   Mail List   Requirements   Links   Tutorial


BlowHole.h

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.