#ifndef _AUDIOFX_ENVELOPE_MODULATION_H #define _AUDIOFX_ENVELOPE_MODULATION_H #include #include "samplebuffer_iterators.h" #include "audiofx.h" /** * Virtual base for envelope modulation effects. * @author Rob Coker */ class EFFECT_ENV_MOD : public EFFECT_BASE { public: virtual ~EFFECT_ENV_MOD(void) { } }; /** * Pulse shaped gate * @author Rob Coker */ class EFFECT_PULSE_GATE: public EFFECT_ENV_MOD { SAMPLE_ITERATOR i; float period; float stopTime; float currentTime; float incrTime; public: virtual string name(void) const { return("Pulse Gate"); } virtual string parameter_names(void) const { return("freq-Hz,on-time-%"); } virtual void set_parameter(int param, parameter_type value); virtual parameter_type get_parameter(int param) const; virtual void init(SAMPLE_BUFFER *insample); virtual void process(void); EFFECT_PULSE_GATE (parameter_type freq_Hz = 1.0, parameter_type onTime_percent = 50.0); virtual ~EFFECT_PULSE_GATE(void) { } EFFECT_PULSE_GATE* clone(void) { return new EFFECT_PULSE_GATE(*this); } EFFECT_PULSE_GATE* new_expr(void) { return new EFFECT_PULSE_GATE(); } }; #endif