Home Information Classes Download Usage Mail List Requirements Links Tutorial
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. |