Home   Information   Classes   Download   Usage   Mail List   Requirements   Links   FAQ   Tutorial


FileWvIn.h
1 #ifndef STK_FILEWVIN_H
2 #define STK_FILEWVIN_H
3 
4 #include "WvIn.h"
5 #include "FileRead.h"
6 
7 namespace stk {
8 
9 /***************************************************/
50 /***************************************************/
51 
52 class FileWvIn : public WvIn
53 {
54 public:
56  FileWvIn( unsigned long chunkThreshold = 1000000, unsigned long chunkSize = 1024 );
57 
59 
63  FileWvIn( std::string fileName, bool raw = false, bool doNormalize = true,
64  unsigned long chunkThreshold = 1000000, unsigned long chunkSize = 1024,
65  bool doInt2FloatScaling = true );
66 
68  ~FileWvIn( void );
69 
71 
81  virtual void openFile( std::string fileName, bool raw = false, bool doNormalize = true, bool doInt2FloatScaling = true );
82 
84  virtual void closeFile( void );
85 
87  virtual void reset( void );
88 
90 
94  virtual void normalize( void );
95 
97 
101  virtual void normalize( StkFloat peak );
102 
104  virtual unsigned long getSize( void ) const { return fileSize_; };
105 
107 
112  virtual StkFloat getFileRate( void ) const { return data_.dataRate(); };
113 
115  bool isOpen( void ) { return file_.isOpen(); };
116 
118  bool isFinished( void ) const { return finished_; };
119 
121 
124  virtual void setRate( StkFloat rate );
125 
127 
130  virtual void addTime( StkFloat time );
131 
133 
139  void setInterpolate( bool doInterpolate ) { interpolate_ = doInterpolate; };
140 
142 
151  StkFloat lastOut( unsigned int channel = 0 );
152 
154 
163  virtual StkFloat tick( unsigned int channel = 0 );
164 
166 
173  virtual StkFrames& tick( StkFrames& frames, unsigned int channel = 0 );
174 
175 protected:
176 
177  void sampleRateChanged( StkFloat newRate, StkFloat oldRate );
178 
179  FileRead file_;
180  bool finished_;
181  bool interpolate_;
182  bool int2floatscaling_;
183  bool chunking_;
184  StkFloat time_;
185  StkFloat rate_;
186  unsigned long fileSize_;
187  unsigned long chunkThreshold_;
188  unsigned long chunkSize_;
189  long chunkPointer_;
190 
191 };
192 
193 inline StkFloat FileWvIn :: lastOut( unsigned int channel )
194 {
195 #if defined(_STK_DEBUG_)
196  if ( channel >= data_.channels() ) {
197  oStream_ << "FileWvIn::lastOut(): channel argument and soundfile data are incompatible!";
198  handleError( StkError::FUNCTION_ARGUMENT );
199  }
200 #endif
201 
202  if ( finished_ ) return 0.0;
203  return lastFrame_[channel];
204 }
205 
206 } // stk namespace
207 
208 #endif

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