Home   Information   Classes   Download   Usage   Mail List   Requirements   Links   FAQ   Tutorial


FileLoop.h
1 #ifndef STK_FILELOOP_H
2 #define STK_FILELOOP_H
3 
4 #include "FileWvIn.h"
5 
6 namespace stk {
7 
8 /***************************************************/
24 /***************************************************/
25 
26 class FileLoop : protected FileWvIn
27 {
28  public:
30  FileLoop( unsigned long chunkThreshold = 1000000, unsigned long chunkSize = 1024 );
31 
33  FileLoop( std::string fileName, bool raw = false, bool doNormalize = true,
34  unsigned long chunkThreshold = 1000000, unsigned long chunkSize = 1024 );
35 
37  ~FileLoop( void );
38 
40 
49  void openFile( std::string fileName, bool raw = false, bool doNormalize = true );
50 
52  void closeFile( void ) { FileWvIn::closeFile(); };
53 
55  void reset( void ) { FileWvIn::reset(); };
56 
58  unsigned int channelsOut( void ) const { return data_.channels(); };
59 
61 
65  void normalize( void ) { FileWvIn::normalize( 1.0 ); };
66 
68 
72  void normalize( StkFloat peak ) { FileWvIn::normalize( peak ); };
73 
75  unsigned long getSize( void ) const { return data_.frames(); };
76 
78 
83  StkFloat getFileRate( void ) const { return data_.dataRate(); };
84 
86 
89  void setRate( StkFloat rate );
90 
92 
98  void setFrequency( StkFloat frequency ) { this->setRate( file_.fileSize() * frequency / Stk::sampleRate() ); };
99 
101  void addTime( StkFloat time );
102 
104 
109  void addPhase( StkFloat angle );
110 
112 
117  void addPhaseOffset( StkFloat angle );
118 
120 
129  StkFloat lastOut( unsigned int channel = 0 ) { return FileWvIn::lastOut( channel ); };
130 
132 
141  StkFloat tick( unsigned int channel = 0 );
142 
144 
153  StkFrames& tick( StkFrames& frames );
154 
155  protected:
156 
157  StkFrames firstFrame_;
158  StkFloat phaseOffset_;
159 
160 };
161 
162 } // stk namespace
163 
164 #endif

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