EnvelopeModulator.hxx
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _EnvelopeModulator_
00023 #define _EnvelopeModulator_
00024
00025 #include "Processing.hxx"
00026 #include "InPort.hxx"
00027 #include "AudioOutPort.hxx"
00028 #include "AudioInPort.hxx"
00029 #include "Envelope.hxx"
00030 #include "Audio.hxx"
00031
00032 namespace CLAM
00033 {
00034
00035 class EnvModulatorConfig: public ProcessingConfig
00036 {
00037 public:
00038 DYNAMIC_TYPE_USING_INTERFACE (EnvModulatorConfig, 3, ProcessingConfig);
00039 DYN_ATTRIBUTE (0, public, TData, SampleRate);
00040 DYN_ATTRIBUTE (1, public, int, FrameSize);
00041 DYN_ATTRIBUTE (2, public, bool, EnvelopeCompression);
00042 protected:
00043
00044 void DefaultInit(void);
00045 };
00046
00047 class EnvelopeModulator: public Processing
00048 {
00049 public:
00050
00051 InPort<Envelope> InputEnvelope;
00052 InPort<Audio> InputAudio;
00053 OutPort<Audio> Output;
00054
00055 private:
00056 EnvModulatorConfig mConfig;
00057 TTime mDeltaX;
00058 bool mCompress;
00059
00060 TData Compress(TData);
00061
00062 bool ConcreteConfigure(const ProcessingConfig& c);
00063
00064 public:
00065 EnvelopeModulator(const EnvModulatorConfig& c = EnvModulatorConfig());
00066
00067 const char * GetClassName() const {return "EnvelopeModulator";}
00068
00069 const ProcessingConfig &GetConfig() const { return mConfig;}
00070
00071 void Attach(Envelope& env, Audio& inp, Audio& out);
00072
00073 bool Do(void);
00074
00075 bool Do(const Envelope& env, const Audio& inp, Audio& out);
00076
00077 };
00078
00079 }
00080
00081 #endif
00082
00083