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

  1. /******************************************/
  2. /*  Bowed String model ala Smith          */
  3. /* after McIntyre, Schumacher, Woodhouse  */
  4. /*  by Perry Cook, 1995-96                */
  5. /*                                        */
  6. /*  This is a waveguide model, and thus   */
  7. /*  relates to various Stanford Univ.     */
  8. /*  and possibly Yamaha and other patents.*/
  9. /*                                        */
  10. /*   Controls:    CONTROL1 = bowPressure  */
  11. /*                CONTROL2 = bowPosition  */
  12. /*          CONTROL3 = vibrFreq     */
  13. /*          MOD_WHEEL= vibrGain     */
  14. /*                      */
  15. /******************************************/
  16.  
  17. #if !defined(__Bowed_h)
  18. #define __Bowed_h
  19.  
  20. #include "Instrmnt.h"
  21. #include "DLineL.h"
  22. #include "BowTabl.h"
  23. #include "OnePole.h"
  24. #include "BiQuad.h"
  25. #include "RawLoop.h"
  26. #include "ADSR.h"
  27.  
  28. class Bowed : public Instrmnt
  29. {
  30.   protected:  
  31.     DLineL *neckDelay;
  32.     DLineL *bridgeDelay;
  33.     BowTabl *bowTabl;
  34.     OnePole *reflFilt;
  35.     BiQuad *bodyFilt;
  36.     RawLoop *vibr;
  37.     ADSR *adsr;
  38.     MY_FLOAT maxVelocity;
  39.     MY_FLOAT baseDelay;
  40.     MY_FLOAT vibrGain;
  41.     MY_FLOAT betaRatio;
  42.   public:
  43.     Bowed(MY_FLOAT lowestFreq);
  44.     ~Bowed();
  45.     void clear();
  46.     void startBowing(MY_FLOAT amplitude,MY_FLOAT rate);
  47.     void stopBowing(MY_FLOAT rate);
  48.     virtual void noteOn(MY_FLOAT freq, MY_FLOAT amp);
  49.     virtual void noteOff(MY_FLOAT amp);
  50.     virtual void setFreq(MY_FLOAT frequency);
  51.     void setVibrato(MY_FLOAT amount);
  52.     virtual void controlChange(int number, MY_FLOAT value);
  53.     virtual MY_FLOAT tick();
  54. };
  55.  
  56. #endif
  57.