Home   Information   Classes   Download   Usage   Mail List   Requirements   Links   FAQ   Tutorial


FileWvIn.h

00001 #ifndef STK_FILEWVIN_H
00002 #define STK_FILEWVIN_H
00003 
00004 #include "WvIn.h"
00005 #include "FileRead.h"
00006 
00007 namespace stk {
00008 
00009 /***************************************************/
00040 /***************************************************/
00041 
00042 class FileWvIn : public WvIn
00043 {
00044 public:
00046   FileWvIn( unsigned long chunkThreshold = 1000000, unsigned long chunkSize = 1024 );
00047 
00049 
00053   FileWvIn( std::string fileName, bool raw = false, bool doNormalize = true,
00054             unsigned long chunkThreshold = 1000000, unsigned long chunkSize = 1024 );
00055 
00057   ~FileWvIn( void );
00058 
00060 
00069   virtual void openFile( std::string fileName, bool raw = false, bool doNormalize = true );
00070 
00072   virtual void closeFile( void );
00073 
00075   virtual void reset( void );
00076 
00078 
00082   virtual void normalize( void );
00083 
00085 
00089   virtual void normalize( StkFloat peak );
00090 
00092   virtual unsigned long getSize( void ) const { return data_.frames(); };
00093 
00095 
00100   virtual StkFloat getFileRate( void ) const { return data_.dataRate(); };
00101 
00103   bool isFinished( void ) const { return finished_; };
00104 
00106 
00109   virtual void setRate( StkFloat rate );
00110 
00112 
00115   virtual void addTime( StkFloat time );
00116 
00118 
00124   void setInterpolate( bool doInterpolate ) { interpolate_ = doInterpolate; };
00125 
00127 
00136   StkFloat lastOut( unsigned int channel = 0 );
00137 
00139 
00148   virtual StkFloat tick( unsigned int channel = 0 );
00149 
00151 
00159   virtual StkFrames& tick( StkFrames& frames );
00160 
00161 protected:
00162 
00163   void sampleRateChanged( StkFloat newRate, StkFloat oldRate );
00164 
00165   FileRead file_;
00166   bool finished_;
00167   bool interpolate_;
00168   bool normalizing_;
00169   bool chunking_;
00170   StkFloat time_;
00171   StkFloat rate_;
00172   unsigned long chunkThreshold_;
00173   unsigned long chunkSize_;
00174   long chunkPointer_;
00175 
00176 };
00177 
00178 inline StkFloat FileWvIn :: lastOut( unsigned int channel )
00179 {
00180 #if defined(_STK_DEBUG_)
00181   if ( channel >= data_.channels() ) {
00182     errorString_ << "FileWvIn::lastOut(): channel argument and soundfile data are incompatible!";
00183     handleError( StkError::FUNCTION_ARGUMENT );
00184   }
00185 #endif
00186 
00187   if ( finished_ ) return 0.0;
00188   return lastFrame_[channel];
00189 }
00190 
00191 } // stk namespace
00192 
00193 #endif

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