home *** CD-ROM | disk | FTP | other *** search
- /******************************************/
- /* Maracha (& other shakers) Simulation */
- /* by Perry R. Cook, 1996 */
- /* by Perry Cook, 1995-96 */
- /* */
- /* See ICMC96 paper "PhISM: Percussive */
- /* Synthesis." for more exciting details */
- /******************************************/
-
- #if !defined(__Shaker_h)
- #define __Shaker_h
-
- #include "Instrmnt.h"
- #include "BiQuad.h"
- #include "ADSR.h"
- #include "Noise.h"
-
- class Shaker : public Instrmnt
- {
- protected:
- BiQuad *filter;
- Noise *noise;
- ADSR *envelope;
- long num_beans;
- long wait_time;
- long shake_num;
- long shake_times;
- MY_FLOAT res_freq;
- MY_FLOAT coll_damp;
- MY_FLOAT shake_max;
- MY_FLOAT shake_speed;
- MY_FLOAT shake_damp;
- MY_FLOAT shakeEnergy;
- MY_FLOAT shakeVel;
- MY_FLOAT noiseGain;
- MY_FLOAT gain_norm;
- public:
- Shaker();
- ~Shaker();
- void clear();
- virtual void setFreq(MY_FLOAT frequency);
- void shake(MY_FLOAT amplitude);
- virtual void noteOn(MY_FLOAT freq, MY_FLOAT amp);
- virtual void noteOff(MY_FLOAT amp);
- virtual void controlChange(int number, MY_FLOAT value);
- virtual MY_FLOAT tick();
- };
-
- #endif
-
-