Arduino STK  4.6.2
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  virtual bool isOpen( void ) { return file_.isOpen(); };
116 
118  virtual 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  virtual void fileRead( StkFrames& buffer, unsigned long startFrame, bool doNormalize );
179 
180  FileRead file_;
181  bool finished_;
182  bool interpolate_;
183  bool int2floatscaling_;
184  bool chunking_;
185  StkFloat time_;
186  StkFloat rate_;
187  unsigned long fileSize_;
188  unsigned long chunkThreshold_;
189  unsigned long chunkSize_;
190  long chunkPointer_;
191 
192 };
193 
194 inline StkFloat FileWvIn :: lastOut( unsigned int channel )
195 {
196 #if defined(_STK_DEBUG_)
197  if ( channel >= data_.channels() ) {
198  oStream_ << "FileWvIn::lastOut(): channel argument and soundfile data are incompatible!";
199  handleError( StkError::FUNCTION_ARGUMENT );
200  }
201 #endif
202 
203  if ( finished_ ) return 0.0;
204  return lastFrame_[channel];
205 }
206 
207 } // stk namespace
208 
209 #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 bool isOpen(void)
Query whether a file is open.
Definition: FileWvIn.h:115
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 bool isFinished(void) const
Query whether reading is complete.
Definition: FileWvIn.h:118
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.
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:194
~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.
An STK class to handle vectorized audio data.
Definition: Stk.h:287
unsigned int channels(void) const
Return the number of channels represented by the data.
Definition: Stk.h:415
StkFloat dataRate(void) const
Return the sample rate associated with the StkFrames data.
Definition: Stk.h:432
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:8