/*----------------------------------------------------------------------------- © 1999, Steinberg Soft und Hardware GmbH, All Rights Reserved -----------------------------------------------------------------------------*/ #include "audioeffectx.h" #include enum { kTriangle, kSawtooth, kWavetable, kSquare }; enum { kDelay, kFeedBack, kOut, kLFOFreq, kLFODepth, kNumParams }; class ADelay; class ADelayProgram { friend class ADelay; public: ADelayProgram(); ~ADelayProgram() {} private: float fDelay, fFeedBack, fOut, fLFOFreq, fLFODepth; char name[24]; }; class ADelay : public AudioEffectX { public: ADelay(audioMasterCallback audioMaster); ~ADelay(); virtual void process(float **inputs, float **outputs, long sampleframes); virtual void processReplacing(float **inputs, float **outputs, long sampleFrames); virtual void setProgram(long program); virtual void setProgramName(char *name); virtual void getProgramName(char *name); virtual void setParameter(long index, float value); virtual float getParameter(long index); virtual void getParameterLabel(long index, char *label); virtual void getParameterDisplay(long index, char *text); virtual void getParameterName(long index, char *text); virtual float getVu(); virtual void suspend(); private: void calcLFOSamp(); void processCombined(float **inputs, float **outputs, long sampleframes, bool replacing); ADelayProgram *programs; float *buffer; float fDelay, fFeedBack, fOut; float vu; float delay, realDelay; long size; long writeOffset, readOffset; float Pi; // variables relating to the lfo float lfoInc, lfoSamp, fLFOFreq, fLFODepth; long waveform; // variables relating to the wavetable float lfoPhase; float *table; long tableSize; };