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
STK audio file input class.
Definition: FileRead.h:42
bool isOpen(void)
Returns true if a file is currently open.
STK audio file input class.
Definition: FileWvIn.h:53
FileWvIn(unsigned long chunkThreshold=1000000, unsigned long chunkSize=1024)
Default constructor.
virtual StkFloat getFileRate(void) const
Return the input file sample rate in Hz (not the data read rate).
Definition: FileWvIn.h:112
void setInterpolate(bool doInterpolate)
Turn linear interpolation on/off.
Definition: FileWvIn.h:139
virtual unsigned long getSize(void) const
Return the file size in sample frames.
Definition: FileWvIn.h:104
virtual void normalize(StkFloat peak)
Normalize data to a maximum of +-peak.
virtual StkFrames & tick(StkFrames &frames, unsigned int channel=0)
Fill the StkFrames object with computed sample frames, starting at the specified channel and return t...
virtual void openFile(std::string fileName, bool raw=false, bool doNormalize=true, bool doInt2FloatScaling=true)
Open the specified file and load its data.
bool isOpen(void)
Query whether a file is open.
Definition: FileWvIn.h:115
virtual void setRate(StkFloat rate)
Set the data read rate in samples. The rate can be negative.
virtual void normalize(void)
Normalize data to a maximum of +-1.0.
virtual void addTime(StkFloat time)
Increment the read pointer by time samples.
virtual void reset(void)
Clear outputs and reset time (file) pointer to zero.
StkFloat lastOut(unsigned int channel=0)
Return the specified channel value of the last computed frame.
Definition: FileWvIn.h:193
~FileWvIn(void)
Class destructor.
virtual StkFloat tick(unsigned int channel=0)
Compute a sample frame and return the specified channel value.
virtual void closeFile(void)
Close a file if one is open.
FileWvIn(std::string fileName, bool raw=false, bool doNormalize=true, unsigned long chunkThreshold=1000000, unsigned long chunkSize=1024, bool doInt2FloatScaling=true)
Overloaded constructor for file input.
bool isFinished(void) const
Query whether reading is complete.
Definition: FileWvIn.h:118
An STK class to handle vectorized audio data.
Definition: Stk.h:276
unsigned int channels(void) const
Return the number of channels represented by the data.
Definition: Stk.h:404
StkFloat dataRate(void) const
Return the sample rate associated with the StkFrames data.
Definition: Stk.h:421
static void handleError(const char *message, StkError::Type type)
Static function for error reporting and handling using c-strings.
STK audio input abstract base class.
Definition: WvIn.h:20
The STK namespace.
Definition: ADSR.h:6

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