00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef SUBSYNTH_ISTREAM_CONVERTER_MODULE_H
00033 #define SUBSYNTH_ISTREAM_CONVERTER_MODULE_H
00034
00035 #include <map>
00036 #include "syn/Stream/AudioIStreamPtr.h"
00037 #include "syn/Core/SampleBuffer.h"
00038 #include "syn/Core/SampleBufferQueue.h"
00039 #include "syn/Core/Module.h"
00040 #include "syn/Core/Terminal.h"
00041 #include "syn/Core/Terminal.h"
00042
00043 namespace syn
00044 {
00052 class IStreamModule : public Module
00053 {
00054 public:
00056 IStreamModule();
00057
00059 virtual ~IStreamModule();
00060
00062 virtual void update();
00063
00065 virtual bool open();
00066
00068 virtual bool isOpen();
00069
00071 virtual void close();
00072
00074 virtual Module* clone() const
00075 {
00076 IStreamModule* mod = new IStreamModule;
00077
00078 assert( false && "broken" );
00079 mod->trigger( mTrigger );
00080 return mod;
00081 }
00082
00086 virtual void getParam( const std::string& key, MultivariateType& value )
00087 {
00088 }
00089
00091 virtual void setParam( const std::string& key, const MultivariateType& value )
00092 {
00093 }
00095
00096 public:
00098 void setStream( AudioIStreamPtr& istream );
00099
00104 void trigger( float t = -1 );
00105
00107 void release();
00108
00109 private:
00110 TerminalPtr mAmplitudeControlInput;
00111 TerminalPtr mPitchControlInput, mTriggerControlInput;
00112 TerminalPtr mMonoAudioOutput;
00113
00114 AudioIStreamPtr mStream;
00115 bool mTrigger;
00116 SampleBuffer1f* mWriteBuf;
00117
00119
00120
00122
00123 };
00124 }
00125 #endif