Home Information Classes Download Usage Mail List Requirements Links FAQ Tutorial

# Noise.h

    00001 #ifndef STK_NOISE_H
    00002 #define STK_NOISE_H
    00003
    00004 #include "Generator.h"
    00005
    00006 namespace stk {
    00007
    00008 /***************************************************/
    00018 /***************************************************/
    00019
    00020 class Noise : public Generator
    00021 {
    00022 public:
    00023
    00025
    00029   Noise( unsigned int seed = 0 );
    00030
    00032
    00036   void setSeed( unsigned int seed = 0 );
    00037
    00039   StkFloat lastOut( void ) const { return lastFrame_[0]; };
    00040
    00042   StkFloat tick( void );
    00043
    00045
    00052   StkFrames& tick( StkFrames& frames, unsigned int channel = 0 );
    00053
    00054 protected:
    00055
    00056 };
    00057
    00058 inline StkFloat Noise :: tick( void )
    00059 {
    00060   return lastFrame_[0] = (StkFloat) ( 2.0 * rand() / (RAND_MAX + 1.0) - 1.0 );
    00061 }
    00062
    00063 inline StkFrames& Noise :: tick( StkFrames& frames, unsigned int channel )
    00064 {
    00065 #if defined(_STK_DEBUG_)
    00066   if ( channel >= frames.channels() ) {
    00067     errorString_ << "Noise::tick(): channel and StkFrames arguments are incompatible!";
    00068     handleError( StkError::FUNCTION_ARGUMENT );
    00069   }
    00070 #endif
    00071
    00072   StkFloat *samples = &frames[channel];
    00073   unsigned int hop = frames.channels();
    00074   for ( unsigned int i=0; i<frames.frames(); i++, samples += hop )
    00075     *samples = (StkFloat) ( 2.0 * rand() / (RAND_MAX + 1.0) - 1.0 );
    00076
    00077   lastFrame_[0] = *(samples-hop);
    00078   return frames;
    00079 }
    00080
    00081 } // stk namespace
    00082
    00083 #endif

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