home *** CD-ROM | disk | FTP | other *** search
/ PC Musician 2000 / PC_Musician_2000.iso / PCMUSIC / NOTATION / SILENCE / FLUTE.H < prev    next >
Encoding:
C/C++ Source or Header  |  1996-03-16  |  1.7 KB  |  65 lines

  1. /******************************************/
  2. /*  WaveGuide Flute ala Karjalainen,      */
  3. /*  Smith, Waryznyk, etc.                 */
  4. /*  with polynomial Jet ala Cook          */
  5. /*  by Perry Cook, 1995-96                */
  6. /*                                        */
  7. /*  This is a waveguide model, and thus   */
  8. /*  relates to various Stanford Univ.     */
  9. /*  and possibly Yamaha and other patents.*/
  10. /*                                        */
  11. /*   Controls:    CONTROL1 = jetDelay     */
  12. /*                CONTROL2 = noiseGain    */
  13. /*          CONTROL3 = vibFreq      */
  14. /*          MOD_WHEEL= vibAmt       */
  15. /******************************************/
  16.  
  17. #if !defined(__Flute_h)
  18. #define __Flute_h
  19.  
  20. #include "Instrmnt.h"
  21. #include "JetTabl.h"
  22. #include "DLineL.h"
  23. #include "OnePole.h"
  24. #include "DCBlock.h"
  25. #include "Noise.h"
  26. #include "ADSR.h"
  27. #include "RawLoop.h"
  28.  
  29. class Flute : public Instrmnt
  30. {
  31.   protected:  
  32.     DLineL *jetDelay;
  33.     DLineL *boreDelay;
  34.     JetTabl *jetTable;
  35.     OnePole *filter;
  36.     DCBlock *dcBlock;
  37.     Noise *noise;
  38.     ADSR *adsr;
  39.     RawLoop *vibr;
  40.     MY_FLOAT lastFreq;
  41.     MY_FLOAT maxPressure;
  42.     MY_FLOAT jetRefl;
  43.     MY_FLOAT endRefl;
  44.     MY_FLOAT noiseGain;
  45.     MY_FLOAT vibrGain;
  46.     MY_FLOAT outputGain;
  47.     MY_FLOAT jetRatio;
  48.   public:
  49.     Flute(MY_FLOAT lowestFreq);
  50.     ~Flute();
  51.     void clear();
  52.     void startBlowing(MY_FLOAT amplitude,MY_FLOAT rate);
  53.     void stopBlowing(MY_FLOAT rate);
  54.     virtual void noteOn(MY_FLOAT freq, MY_FLOAT amp);
  55.     virtual void noteOff(MY_FLOAT amp);
  56.     void setJetRefl(MY_FLOAT refl);
  57.     void setEndRefl(MY_FLOAT refl);
  58.     virtual void setFreq(MY_FLOAT frequency);
  59.     virtual MY_FLOAT tick();
  60.     virtual void controlChange(int number, MY_FLOAT value);
  61.     void setJetDelay(MY_FLOAT aLength);
  62. };
  63.  
  64. #endif
  65.