Home   Information   Classes   Download   Usage   Mail List   Requirements   Links   Tutorial


WvIn.h

00001 /***************************************************/
00037 /***************************************************/
00038 
00039 #if !defined(__WVIN_H)
00040 #define __WVIN_H
00041 
00042 // Files larger than CHUNK_THRESHOLD will be copied into memory
00043 // in CHUNK_SIZE increments, rather than completely loaded into
00044 // a buffer at once.
00045 
00046 #define CHUNK_THRESHOLD 5000000  // 5 Mb
00047 #define CHUNK_SIZE 1024          // sample frames
00048 
00049 #include "Stk.h"
00050 #include <stdio.h>
00051 
00052 class WvIn : public Stk
00053 {
00054 public:
00056   WvIn();
00057 
00059 
00063   WvIn( const char *fileName, bool raw = FALSE, bool doNormalize = TRUE );
00064 
00066   virtual ~WvIn();
00067 
00069 
00073   void openFile( const char *fileName, bool raw = FALSE, bool doNormalize = TRUE );
00074 
00076   void closeFile(void);
00077 
00079   void reset(void);
00080 
00082 
00088   void normalize(void);
00089 
00091 
00097   void normalize(MY_FLOAT peak);
00098 
00100   unsigned long getSize(void) const;
00101 
00103   unsigned int getChannels(void) const;
00104 
00106 
00111   MY_FLOAT getFileRate(void) const;
00112 
00114   bool isFinished(void) const;
00115 
00117 
00120   void setRate(MY_FLOAT aRate);
00121 
00123   virtual void addTime(MY_FLOAT aTime);
00124 
00126 
00132   void setInterpolate(bool doInterpolate);
00133 
00135   virtual MY_FLOAT lastOut(void) const;
00136 
00138 
00141   virtual MY_FLOAT tick(void);
00142 
00144 
00147   virtual MY_FLOAT *tick(MY_FLOAT *vector, unsigned int vectorSize);
00148 
00150   virtual const MY_FLOAT *lastFrame(void) const;
00151 
00153 
00156   virtual const MY_FLOAT *tickFrame(void);
00157 
00159 
00162   virtual MY_FLOAT *tickFrame(MY_FLOAT *frameVector, unsigned int frames);
00163 
00164 protected:
00165 
00166   // Initialize class variables.
00167   void init( void );
00168 
00169   // Read file data.
00170   virtual void readData(unsigned long index);
00171 
00172   // Get STK RAW file information.
00173   bool getRawInfo( const char *fileName );
00174 
00175   // Get WAV file header information.
00176   bool getWavInfo( const char *fileName );
00177 
00178   // Get SND (AU) file header information.
00179   bool getSndInfo( const char *fileName );
00180 
00181   // Get AIFF file header information.
00182   bool getAifInfo( const char *fileName );
00183 
00184   // Get MAT-file header information.
00185   bool getMatInfo( const char *fileName );
00186 
00187   char msg[256];
00188   FILE *fd;
00189   MY_FLOAT *data;
00190   MY_FLOAT *lastOutput;
00191   bool chunking;
00192   bool finished;
00193   bool interpolate;
00194   bool byteswap;
00195   unsigned long fileSize;
00196   unsigned long bufferSize;
00197   unsigned long dataOffset;
00198   unsigned int channels;
00199   long chunkPointer;
00200   STK_FORMAT dataType;
00201   MY_FLOAT fileRate;
00202   MY_FLOAT gain;
00203   MY_FLOAT time;
00204   MY_FLOAT rate;
00205 };
00206 
00207 #endif // defined(__WVIN_H)

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