Home   Information   Classes   Download   Usage   Mail List   Requirements   Links   FAQ   Tutorial


Modal.h

00001 /***************************************************/
00012 /***************************************************/
00013 
00014 #ifndef STK_MODAL_H
00015 #define STK_MODAL_H
00016 
00017 #include "Instrmnt.h"
00018 #include "Envelope.h"
00019 #include "WaveLoop.h"
00020 #include "SineWave.h"
00021 #include "BiQuad.h"
00022 #include "OnePole.h"
00023 
00024 class Modal : public Instrmnt
00025 {
00026 public:
00028 
00031   Modal( unsigned int modes = 4 );
00032 
00034   virtual ~Modal();
00035 
00037   void clear();
00038 
00040   virtual void setFrequency(StkFloat frequency);
00041 
00043   void setRatioAndRadius(unsigned int modeIndex, StkFloat ratio, StkFloat radius);
00044 
00046   void setMasterGain(StkFloat aGain);
00047 
00049   void setDirectGain(StkFloat aGain);
00050 
00052   void setModeGain(unsigned int modeIndex, StkFloat gain);
00053 
00055   virtual void strike(StkFloat amplitude);
00056 
00058   void damp(StkFloat amplitude);
00059 
00061   void noteOn(StkFloat frequency, StkFloat amplitude);
00062 
00064   void noteOff(StkFloat amplitude);
00065 
00067   virtual void controlChange(int number, StkFloat value) = 0;
00068 
00069 protected:
00070 
00071   StkFloat computeSample( void );
00072 
00073   Envelope envelope_; 
00074   FileWvIn *wave_;
00075   BiQuad **filters_;
00076   OnePole  onepole_;
00077   SineWave vibrato_;
00078 
00079   unsigned int nModes_;
00080   std::vector<StkFloat> ratios_;
00081   std::vector<StkFloat> radii_;
00082 
00083   StkFloat vibratoGain_;
00084   StkFloat masterGain_;
00085   StkFloat directGain_;
00086   StkFloat stickHardness_;
00087   StkFloat strikePosition_;
00088   StkFloat baseFrequency_;
00089 };
00090 
00091 #endif

The Synthesis ToolKit in C++ (STK)
©1995-2007 Perry R. Cook and Gary P. Scavone. All Rights Reserved.