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

  1. /*******************************************/
  2. /*  4 Resonance Modal Synthesis Instrument */
  3. /*  by Perry R. Cook, 1995-96              */ 
  4. /*  This instrument contains an excitation */
  5. /*  wavetable, an envelope, and four reso- */
  6. /*  nances (Non-Sweeping BiQuad Filters).  */
  7. /*******************************************/
  8.  
  9. #if !defined(__Modal4_h)
  10. #define __Modal4_h
  11.  
  12. #include "Instrmnt.h"
  13. #include "Envelope.h"
  14. #include "RawWave.h"
  15. #include "RawLoop.h"
  16. #include "BiQuad.h"
  17. #include "OnePole.h"
  18.  
  19. class Modal4 : public Instrmnt
  20. {
  21.   protected:  
  22.     Envelope *envelope; 
  23.     RawWave  *wave;
  24.     BiQuad   *filters[4];
  25.     OnePole  *onepole;
  26.     RawLoop  *vibr;
  27.     MY_FLOAT vibrGain;
  28.     MY_FLOAT masterGain;
  29.     MY_FLOAT directGain;
  30.     MY_FLOAT stickHardness;
  31.     MY_FLOAT strikePosition;
  32.     MY_FLOAT baseFreq;
  33.     MY_FLOAT ratios[4];
  34.     MY_FLOAT resons[4];
  35.   public:
  36.     Modal4();
  37.     ~Modal4();
  38.     void clear();
  39.     virtual void setFreq(MY_FLOAT frequency);
  40.     void setRatioAndReson(int whichOne, MY_FLOAT ratio, MY_FLOAT reson);
  41.     void setMasterGain(MY_FLOAT aGain);
  42.     void setDirectGain(MY_FLOAT aGain);
  43.     void setFiltGain(int whichOne, MY_FLOAT gain);
  44.     virtual void strike(MY_FLOAT amplitude);
  45.     virtual void noteOn(MY_FLOAT freq, MY_FLOAT amp);
  46.     virtual void noteOff(MY_FLOAT amp);
  47.     void damp(MY_FLOAT amplitude);
  48.     virtual void controlChange(int number, MY_FLOAT value);
  49.     virtual MY_FLOAT tick();
  50. };
  51.  
  52. #endif
  53.