Home   Information   Classes   Download   Usage   Mail List   Requirements   Links   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 "BiQuad.h"
00021 #include "OnePole.h"
00022 
00023 class Modal : public Instrmnt
00024 {
00025 public:
00027 
00030   Modal( unsigned int modes = 4 );
00031 
00033   virtual ~Modal();
00034 
00036   void clear();
00037 
00039   virtual void setFrequency(StkFloat frequency);
00040 
00042   void setRatioAndRadius(unsigned int modeIndex, StkFloat ratio, StkFloat radius);
00043 
00045   void setMasterGain(StkFloat aGain);
00046 
00048   void setDirectGain(StkFloat aGain);
00049 
00051   void setModeGain(unsigned int modeIndex, StkFloat gain);
00052 
00054   virtual void strike(StkFloat amplitude);
00055 
00057   void damp(StkFloat amplitude);
00058 
00060   void noteOn(StkFloat frequency, StkFloat amplitude);
00061 
00063   void noteOff(StkFloat amplitude);
00064 
00066   virtual StkFloat tick();
00067 
00069   virtual StkFloat *tick(StkFloat *vector, unsigned int vectorSize);
00070 
00072 
00078   virtual StkFrames& tick( StkFrames& frames, unsigned int channel = 1 );
00079 
00081   virtual void controlChange(int number, StkFloat value) = 0;
00082 
00083 protected:  
00084   Envelope envelope_; 
00085   WvIn    *wave_;
00086   BiQuad **filters_;
00087   OnePole  onepole_;
00088   WaveLoop *vibrato_;
00089 
00090   unsigned int nModes_;
00091   std::vector<StkFloat> ratios_;
00092   std::vector<StkFloat> radii_;
00093 
00094   StkFloat vibratoGain_;
00095   StkFloat masterGain_;
00096   StkFloat directGain_;
00097   StkFloat stickHardness_;
00098   StkFloat strikePosition_;
00099   StkFloat baseFrequency_;
00100 };
00101 
00102 #endif

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