Home Information Classes Download Usage Mail List Requirements Links FAQ Tutorial

# Plucked.h

    00001 #ifndef STK_PLUCKED_H
    00002 #define STK_PLUCKED_H
    00003
    00004 #include "Instrmnt.h"
    00005 #include "DelayA.h"
    00006 #include "OneZero.h"
    00007 #include "OnePole.h"
    00008 #include "Noise.h"
    00009
    00010 namespace stk {
    00011
    00012 /***************************************************/
    00029 /***************************************************/
    00030
    00031 class Plucked : public Instrmnt
    00032 {
    00033  public:
    00035   Plucked( StkFloat lowestFrequency );
    00036
    00038   ~Plucked( void );
    00039
    00041   void clear( void );
    00042
    00044   void setFrequency( StkFloat frequency );
    00045
    00047   void pluck( StkFloat amplitude );
    00048
    00050   void noteOn( StkFloat frequency, StkFloat amplitude );
    00051
    00053   void noteOff( StkFloat amplitude );
    00054
    00056   StkFloat tick( unsigned int channel = 0 );
    00057
    00058  protected:
    00059
    00060   DelayA   delayLine_;
    00061   OneZero  loopFilter_;
    00062   OnePole  pickFilter_;
    00063   Noise    noise_;
    00064   StkFloat loopGain_;
    00065   unsigned long length_;
    00066
    00067 };
    00068
    00069 inline StkFloat Plucked :: tick( unsigned int )
    00070 {
    00071   // Here's the whole inner loop of the instrument!!
    00072   return lastFrame_[0] = 3.0 * delayLine_.tick( loopFilter_.tick( delayLine_.lastOut() * loopGain_ ) );
    00073 }
    00074
    00075 } // stk namespace
    00076
    00077 #endif
    00078

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