00001 // 00002 // DLine.h -- an Interpolating Delay Line 00003 // See the copyright notice and acknowledgment of authors in the file COPYRIGHT 00004 // 00005 // This is a typical circular buffer with one writer and multiple readers (tap instances) 00006 00007 #ifndef CSL_DelayLine_H 00008 #define CSL_DelayLine_H 00009 00010 #include "CSL_Core.h" 00011 #include "RingBuffer.h" 00012 00013 namespace csl { 00014 00018 00019 class DelayLine : public Effect { 00020 public: 00021 DelayLine(unsigned maxDelayInSamples); 00022 00023 float delayTime(); 00024 unsigned delayLength(); 00025 00026 float setDelayTime(float delayInMiliseconds); 00027 unsigned setDelayLength(unsigned delayInSamples); 00028 // void setInterpolationKind(); 00029 00030 void nextBuffer(Buffer &output) throw(CException); 00031 00032 protected: 00033 RingBuffer mRingBuffer; 00034 unsigned mMaxDelayInSamples; 00035 unsigned mTotalDelayInSamples; 00036 00037 }; 00038 00039 } 00040 00041 #endif
1.5.8