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 #include <stdlib.h>
00006 
00007 namespace stk {
00008 
00009 /***************************************************/
00019 /***************************************************/
00020 
00021 class Noise : public Generator
00022 {
00023 public:
00024 
00026 
00030   Noise( unsigned int seed = 0 );
00031 
00033 
00037   void setSeed( unsigned int seed = 0 );
00038 
00040   StkFloat lastOut( void ) const { return lastFrame_[0]; };
00041 
00043   StkFloat tick( void );
00044 
00046 
00053   StkFrames& tick( StkFrames& frames, unsigned int channel = 0 );
00054 
00055 protected:
00056 
00057 };
00058 
00059 inline StkFloat Noise :: tick( void )
00060 {
00061   return lastFrame_[0] = (StkFloat) ( 2.0 * rand() / (RAND_MAX + 1.0) - 1.0 );
00062 }
00063 
00064 inline StkFrames& Noise :: tick( StkFrames& frames, unsigned int channel )
00065 {
00066 #if defined(_STK_DEBUG_)
00067   if ( channel >= frames.channels() ) {
00068     oStream_ << "Noise::tick(): channel and StkFrames arguments are incompatible!";
00069     handleError( StkError::FUNCTION_ARGUMENT );
00070   }
00071 #endif
00072 
00073   StkFloat *samples = &frames[channel];
00074   unsigned int hop = frames.channels();
00075   for ( unsigned int i=0; i<frames.frames(); i++, samples += hop )
00076     *samples = (StkFloat) ( 2.0 * rand() / (RAND_MAX + 1.0) - 1.0 );
00077 
00078   lastFrame_[0] = *(samples-hop);
00079   return frames;
00080 }
00081 
00082 } // stk namespace
00083 
00084 #endif

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