00001
00032
00033
00034 #ifndef STK_FILEWVIN_H
00035 #define STK_FILEWVIN_H
00036
00037 #include "WvIn.h"
00038 #include "FileRead.h"
00039 #include "qthread.h"
00040 #include "qobject.h"
00041 #include "qmutex.h"
00042 class FileWvIn : public QObject, public QThread, public WvIn
00043 {
00044 Q_OBJECT
00045 public:
00047 FileWvIn( unsigned long chunkThreshold = 1000000, unsigned long chunkSize = 7000 );
00048
00050
00054 FileWvIn( std::string fileName, bool raw = false, bool doNormalize = true,
00055 unsigned long chunkThreshold = 1000000, unsigned long chunkSize = 7000 );
00056
00057 FileWvIn( bool loop, std::string fileName, bool raw = false, bool doNormalize = true,
00058 unsigned long chunkThreshold = 1000000, unsigned long chunkSize = 7000 );
00059
00061 virtual ~FileWvIn();
00062
00064
00073 void openFile( std::string fileName, bool raw = false, bool doNormalize = true );
00074
00076 void closeFile( void );
00077
00079 void reset( void );
00080
00082
00086 void normalize( void );
00087
00089
00093 void normalize( StkFloat peak );
00094
00096 unsigned long getSize( void ) const { return data_.frames(); };
00097
00099
00104 StkFloat getFileRate( void ) const { return data_.dataRate(); };
00105
00107 bool isFinished( void ) const { return finished_; };
00108
00110
00113 void setRate( StkFloat rate );
00114
00116
00119 virtual void addTime( StkFloat time );
00120
00122
00128 void setInterpolate( bool doInterpolate ) { interpolate_ = doInterpolate; };
00129
00130 StkFloat lastOut( void );
00131
00132
00133 void loadFrames( void );
00134 virtual void run ();
00135 bool _loop;
00136 bool file_loop;
00137 double _gain;
00138 void setLoop(bool l) {file_loop = l;};
00139 void setGain( double g) {_gain = g;};
00140 bool data1old;
00141 bool data2old;
00142 QMutex mutex;
00143 StkFrames data1;
00144 StkFrames data2;
00145
00146 int ptr;
00147 public slots:
00148 void go ();
00149 void stop ();
00150 void join ();
00151
00152 protected:
00153
00154 virtual void computeFrame( void );
00155
00156 FileRead file_;
00157 bool finished_;
00158 bool interpolate_;
00159 bool normalizing_;
00160 bool chunking_;
00161 StkFloat time_;
00162 StkFloat rate_;
00163 unsigned long chunkThreshold_;
00164 unsigned long chunkSize_;
00165 long chunkPointer_;
00166
00167 };
00168
00169 #endif