00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MARSYAS_SOUNDFILESOURCE_H
00020 #define MARSYAS_SOUNDFILESOURCE_H
00021
00022 #include "realvec.h"
00023 #include "AuFileSource.h"
00024 #include "WavFileSource.h"
00025 #include "RawFileSource.h"
00026
00027 #include "CollectionFileSource.h"
00028
00029 #include <cstdio>
00030 #include <cmath>
00031
00032 namespace Marsyas
00033 {
00084 class SoundFileSource: public MarSystem
00085 {
00086 private:
00087 std::string filename_;
00088 mrs_natural sampleSize_;
00089 mrs_natural samplesRead_;
00090 mrs_natural samplesToRead_;
00091 mrs_natural nChannels_;
00092
00093 MarControlPtr ctrl_pos_;
00094 MarControlPtr ctrl_loop_;
00095 MarControlPtr ctrl_hasData_;
00096 MarControlPtr ctrl_lastTickWithData_;
00097 MarControlPtr ctrl_mute_;
00098 MarControlPtr ctrl_advance_;
00099 MarControlPtr ctrl_filename_;
00100 MarControlPtr ctrl_currentlyPlaying_;
00101 MarControlPtr ctrl_previouslyPlaying_;
00102 MarControlPtr ctrl_regression_;
00103 MarControlPtr ctrl_currentLabel_;
00104 MarControlPtr ctrl_previousLabel_;
00105 MarControlPtr ctrl_nLabels_;
00106 MarControlPtr ctrl_labelNames_;
00107 MarControlPtr ctrl_currentHasData_;
00108 MarControlPtr ctrl_currentLastTickWithData_;
00109 MarControlPtr ctrl_currentCollectionNewFile_;
00110 MarControlPtr ctrl_startStable_;
00111
00112 MarControlPtr ctrl_rewindToPos_;
00113
00114 AbsSoundFileSource* src_;
00115
00116 mrs_natural advance_;
00117 std::string prev_ext_;
00118
00119
00120 void addControls();
00121 void myUpdate(MarControlPtr sender);
00122
00123 bool updateCurrDuration;
00124
00125 public:
00126
00127 SoundFileSource(std::string name);
00128 SoundFileSource(const SoundFileSource& a);
00129
00130 ~SoundFileSource();
00131 MarSystem* clone() const;
00132
00133 virtual void myProcess(realvec& in,realvec& out);
00134 virtual bool checkType();
00135 virtual void getHeader();
00136
00137 };
00138
00140
00141
00142
00143
00144
00145 #define SOUNDFILESOURCE_UNDEFINEDFILENAME "defaultfile"
00146
00147 }
00148
00149 #endif