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.