home *** CD-ROM | disk | FTP | other *** search
/ PC Musician 2000 / PC_Musician_2000.iso / PCMUSIC / NOTATION / SILENCE / SHAKER.H < prev    next >
Encoding:
C/C++ Source or Header  |  1996-07-15  |  1.2 KB  |  51 lines

  1. /******************************************/  
  2. /*  Maracha (& other shakers) Simulation  */
  3. /*  by Perry R. Cook, 1996          */
  4. /*  by Perry Cook, 1995-96                */
  5. /*                                        */
  6. /*  See ICMC96 paper "PhISM: Percussive   */
  7. /*  Synthesis." for more exciting details */
  8. /******************************************/
  9.  
  10. #if !defined(__Shaker_h)
  11. #define __Shaker_h
  12.  
  13. #include "Instrmnt.h" 
  14. #include "BiQuad.h" 
  15. #include "ADSR.h" 
  16. #include "Noise.h" 
  17.  
  18. class Shaker : public Instrmnt
  19. {
  20.   protected:  
  21.     BiQuad *filter;
  22.     Noise *noise;
  23.     ADSR *envelope;
  24.     long num_beans;
  25.     long wait_time;
  26.     long shake_num;
  27.     long shake_times;
  28.     MY_FLOAT res_freq;
  29.     MY_FLOAT coll_damp;
  30.     MY_FLOAT shake_max;
  31.     MY_FLOAT shake_speed;
  32.     MY_FLOAT shake_damp;
  33.     MY_FLOAT shakeEnergy;
  34.     MY_FLOAT shakeVel;
  35.     MY_FLOAT noiseGain;
  36.     MY_FLOAT gain_norm;
  37.   public:
  38.     Shaker();
  39.     ~Shaker();
  40.     void clear();
  41.     virtual void setFreq(MY_FLOAT frequency);
  42.     void shake(MY_FLOAT amplitude);
  43.     virtual void noteOn(MY_FLOAT freq, MY_FLOAT amp);
  44.     virtual void noteOff(MY_FLOAT amp);
  45.     virtual void controlChange(int number, MY_FLOAT value);
  46.     virtual MY_FLOAT tick();
  47. };
  48.  
  49. #endif
  50.  
  51.