OpenWareLaboratory
FractionalCircularBuffer< T > Class Template Reference

Circular buffer that keeps a delta table of differences for faster fractional delay lines. More...

Inheritance diagram for FractionalCircularBuffer< T >:

Public Member Functions

void clear ()
 
void delay (T *in, T *out, size_t len, float beginDelay, float endDelay)
 Write to buffer and read with a delay that ramps up or down from beginDelay to endDelay. More...
 
void delay (T *in, T *out, size_t len, float delay)
 Write to buffer and read with a delay. More...
 
 FractionalCircularBuffer ()
 
 FractionalCircularBuffer (T *data, T *delta, size_t size)
 
size_t getContiguousReadCapacity ()
 
size_t getContiguousWriteCapacity ()
 
T * getData ()
 
float getDelay ()
 Get the read index expressed as delay behind the write index. More...
 
T * getDelta ()
 
size_t getReadCapacity ()
 
T * getReadHead ()
 
float getReadIndex ()
 
size_t getSize () const
 
size_t getWriteCapacity ()
 
T * getWriteHead ()
 
size_t getWriteIndex ()
 
bool isEmpty () const
 
void moveReadHead (float samples)
 
void moveWriteHead (int samples)
 
read ()
 
void read (T *dst, size_t len)
 
readAt (float index)
 
void reset ()
 
void setAll (const T value)
 
void setDelay (float samples)
 Set the read index. More...
 
void setReadIndex (float pos)
 
void setWriteIndex (size_t pos)
 
void write (T *src, size_t len)
 
void write (T value)
 
void writeAt (size_t index, T value)
 

Static Public Member Functions

static FractionalCircularBuffer< T > * create (size_t len)
 
static void destroy (FractionalCircularBuffer< T > *obj)
 

Protected Member Functions

update (T previous, T current, size_t i)
 Update an entry in the internal data and delta tables. More...
 

Detailed Description

template<typename T = float>
class FractionalCircularBuffer< T >

Circular buffer that keeps a delta table of differences for faster fractional delay lines.

Note that this class requires twice as much buffer space as CircularBuffer.

Definition at line 11 of file FractionalCircularBuffer.h.

Constructor & Destructor Documentation

◆ FractionalCircularBuffer() [1/2]

template<typename T = float>
FractionalCircularBuffer< T >::FractionalCircularBuffer ( )
inline

Definition at line 29 of file FractionalCircularBuffer.h.

◆ FractionalCircularBuffer() [2/2]

template<typename T = float>
FractionalCircularBuffer< T >::FractionalCircularBuffer ( T *  data,
T *  delta,
size_t  size 
)
inline

Definition at line 30 of file FractionalCircularBuffer.h.

Member Function Documentation

◆ clear()

template<typename T = float>
void FractionalCircularBuffer< T >::clear ( )
inline

◆ create()

template<typename T = float>
static FractionalCircularBuffer<T>* FractionalCircularBuffer< T >::create ( size_t  len)
inlinestatic

◆ delay() [1/2]

template<typename T = float>
void FractionalCircularBuffer< T >::delay ( T *  in,
T *  out,
size_t  len,
float  beginDelay,
float  endDelay 
)
inline

Write to buffer and read with a delay that ramps up or down from beginDelay to endDelay.

Definition at line 178 of file FractionalCircularBuffer.h.

References FractionalCircularBuffer< T >::readAt(), FractionalCircularBuffer< T >::setDelay(), and FractionalCircularBuffer< T >::update().

◆ delay() [2/2]

template<typename T = float>
void FractionalCircularBuffer< T >::delay ( T *  in,
T *  out,
size_t  len,
float  delay 
)
inline

◆ destroy()

template<typename T = float>
static void FractionalCircularBuffer< T >::destroy ( FractionalCircularBuffer< T > *  obj)
inlinestatic

Definition at line 251 of file FractionalCircularBuffer.h.

◆ getContiguousReadCapacity()

template<typename T = float>
size_t FractionalCircularBuffer< T >::getContiguousReadCapacity ( )
inline

Definition at line 223 of file FractionalCircularBuffer.h.

◆ getContiguousWriteCapacity()

template<typename T = float>
size_t FractionalCircularBuffer< T >::getContiguousWriteCapacity ( )
inline

Definition at line 216 of file FractionalCircularBuffer.h.

◆ getData()

template<typename T = float>
T* FractionalCircularBuffer< T >::getData ( )
inline

Definition at line 36 of file FractionalCircularBuffer.h.

Referenced by FastFractionalDelayProcessor::destroy().

◆ getDelay()

template<typename T = float>
float FractionalCircularBuffer< T >::getDelay ( )
inline

Get the read index expressed as delay behind the write index.

Definition at line 161 of file FractionalCircularBuffer.h.

◆ getDelta()

template<typename T = float>
T* FractionalCircularBuffer< T >::getDelta ( )
inline

Definition at line 40 of file FractionalCircularBuffer.h.

Referenced by FastFractionalDelayProcessor::destroy().

◆ getReadCapacity()

template<typename T = float>
size_t FractionalCircularBuffer< T >::getReadCapacity ( )
inline

◆ getReadHead()

template<typename T = float>
T* FractionalCircularBuffer< T >::getReadHead ( )
inline

Definition at line 143 of file FractionalCircularBuffer.h.

◆ getReadIndex()

template<typename T = float>
float FractionalCircularBuffer< T >::getReadIndex ( )
inline

Definition at line 135 of file FractionalCircularBuffer.h.

◆ getSize()

template<typename T = float>
size_t FractionalCircularBuffer< T >::getSize ( ) const
inline

Definition at line 32 of file FractionalCircularBuffer.h.

◆ getWriteCapacity()

template<typename T = float>
size_t FractionalCircularBuffer< T >::getWriteCapacity ( )
inline

◆ getWriteHead()

template<typename T = float>
T* FractionalCircularBuffer< T >::getWriteHead ( )
inline

Definition at line 125 of file FractionalCircularBuffer.h.

◆ getWriteIndex()

template<typename T = float>
size_t FractionalCircularBuffer< T >::getWriteIndex ( )
inline

Definition at line 117 of file FractionalCircularBuffer.h.

◆ isEmpty()

template<typename T = float>
bool FractionalCircularBuffer< T >::isEmpty ( ) const
inline

Definition at line 44 of file FractionalCircularBuffer.h.

References abs.

◆ moveReadHead()

template<typename T = float>
void FractionalCircularBuffer< T >::moveReadHead ( float  samples)
inline

◆ moveWriteHead()

template<typename T = float>
void FractionalCircularBuffer< T >::moveWriteHead ( int  samples)
inline

Definition at line 129 of file FractionalCircularBuffer.h.

◆ read() [1/2]

template<typename T = float>
T FractionalCircularBuffer< T >::read ( )
inline

◆ read() [2/2]

template<typename T = float>
void FractionalCircularBuffer< T >::read ( T *  dst,
size_t  len 
)
inline

Definition at line 88 of file FractionalCircularBuffer.h.

◆ readAt()

template<typename T = float>
T FractionalCircularBuffer< T >::readAt ( float  index)
inline

Definition at line 110 of file FractionalCircularBuffer.h.

Referenced by FractionalCircularBuffer< T >::delay().

◆ reset()

template<typename T = float>
void FractionalCircularBuffer< T >::reset ( )
inline

Definition at line 237 of file FractionalCircularBuffer.h.

◆ setAll()

template<typename T = float>
void FractionalCircularBuffer< T >::setAll ( const T  value)
inline

Definition at line 230 of file FractionalCircularBuffer.h.

Referenced by FractionalCircularBuffer< T >::clear().

◆ setDelay()

template<typename T = float>
void FractionalCircularBuffer< T >::setDelay ( float  samples)
inline

Set the read index.

Parameters
samplesbehind the write index.

Definition at line 154 of file FractionalCircularBuffer.h.

References FractionalCircularBuffer< T >::setReadIndex().

Referenced by FractionalCircularBuffer< T >::delay(), and FastFractionalDelayProcessor::process().

◆ setReadIndex()

template<typename T = float>
void FractionalCircularBuffer< T >::setReadIndex ( float  pos)
inline

◆ setWriteIndex()

template<typename T = float>
void FractionalCircularBuffer< T >::setWriteIndex ( size_t  pos)
inline

Definition at line 121 of file FractionalCircularBuffer.h.

◆ update()

template<typename T = float>
T FractionalCircularBuffer< T >::update ( previous,
current,
size_t  i 
)
inlineprotected

Update an entry in the internal data and delta tables.

Definition at line 23 of file FractionalCircularBuffer.h.

Referenced by FractionalCircularBuffer< T >::delay(), FractionalCircularBuffer< T >::write(), and FractionalCircularBuffer< T >::writeAt().

◆ write() [1/2]

template<typename T = float>
void FractionalCircularBuffer< T >::write ( T *  src,
size_t  len 
)
inline

◆ write() [2/2]

template<typename T = float>
void FractionalCircularBuffer< T >::write ( value)
inline

◆ writeAt()

template<typename T = float>
void FractionalCircularBuffer< T >::writeAt ( size_t  index,
value 
)
inline

The documentation for this class was generated from the following file: