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