/***************************************************/ /*! \class FMVoices \brief STK singing FM synthesis instrument. This class implements 3 carriers and a common modulator, also referred to as algorithm 6 of the TX81Z. \code Algorithm 6 is : /->1 -\ 4-|-->2 - +-> Out \->3 -/ \endcode Control Change Numbers: - Vowel = 2 - Spectral Tilt = 4 - LFO Speed = 11 - LFO Depth = 1 - ADSR 2 & 4 Target = 128 The basic Chowning/Stanford FM patent expired in 1995, but there exist follow-on patents, mostly assigned to Yamaha. If you are of the type who should worry about this (making money) worry away. by Perry R. Cook and Gary P. Scavone, 1995 - 2005. */ /***************************************************/ #ifndef STK_FMVOICES_H #define STK_FMVOICES_H #include "FM.h" class FMVoices : public FM { public: //! Class constructor. /*! An StkError will be thrown if the rawwave path is incorrectly set. */ FMVoices(); //! Class destructor. ~FMVoices(); //! Set instrument parameters for a particular frequency. virtual void setFrequency(StkFloat frequency); //! Start a note with the given frequency and amplitude. void noteOn(StkFloat frequency, StkFloat amplitude); //! Perform the control change specified by \e number and \e value (0.0 - 128.0). virtual void controlChange(int number, StkFloat value); protected: StkFloat computeSample( void ); int currentVowel_; StkFloat tilt_[3]; StkFloat mods_[3]; }; #endif