1 /***************************************************/ 2 /*! \class ReedTabl 3 \brief STK reed table class. 4 5 This class implements a simple one breakpoint, 6 non-linear reed function, as described by 7 Smith (1986). This function is based on a 8 memoryless non-linear spring model of the reed 9 (the reed mass is ignored) which saturates when 10 the reed collides with the mouthpiece facing. 11 12 See McIntyre, Schumacher, & Woodhouse (1983), 13 Smith (1986), Hirschman, Cook, Scavone, and 14 others for more information. 15 16 by Perry R. Cook and Gary P. Scavone, 1995 - 2002. 17 */ 18 /***************************************************/ 19 20 #if !defined(__REEDTABL_H) 21 #define __REEDTABL_H 22 23 #include "Stk.h" 24 25 class ReedTabl : public Stk 26 { 27 public: 28 //! Default constructor. 29 ReedTabl(); 30 31 //! Class destructor. 32 ~ReedTabl(); 33 34 //! Set the table offset value. 35 /*! 36 The table offset roughly corresponds to the size 37 of the initial reed tip opening (a greater offset 38 represents a smaller opening). 39 */ 40 void setOffset(MY_FLOAT aValue); 41 42 //! Set the table slope value. 43 /*! 44 The table slope roughly corresponds to the reed 45 stiffness (a greater slope represents a harder 46 reed). 47 */ 48 void setSlope(MY_FLOAT aValue); 49 50 //! Return the last output value. 51 MY_FLOAT lastOut() const; 52 53 //! Return the function value for \e input. 54 /*! 55 The function input represents the differential 56 pressure across the reeds. 57 */ 58 MY_FLOAT tick(MY_FLOAT input); 59 60 //! Take \e vectorSize inputs and return the corresponding function values in \e vector. 61 MY_FLOAT *tick(MY_FLOAT *vector, unsigned int vectorSize); 62 63 protected: 64 MY_FLOAT offSet; 65 MY_FLOAT slope; 66 MY_FLOAT lastOutput; 67 68 }; 69 70 #endif 71