OpenWareLaboratory
InterpolatingCircularFloatBuffer< im > Class Template Reference
Inheritance diagram for InterpolatingCircularFloatBuffer< im >:
Collaboration diagram for InterpolatingCircularFloatBuffer< im >:

Public Member Functions

void clear ()
 
void delay (float *in, float *out, size_t len, float beginDelay, float endDelay)
 Write to buffer and read with a delay that ramps up or down from. More...
 
void delay (float *in, float *out, size_t len, float readDelay)
 Write to buffer and read with a fractional delay. More...
 
void delay (float *in, float *out, size_t len, int delay_samples)
 Write to buffer and read with a delay. More...
 
void delay (float *out, size_t len, float beginDelay, float endDelay)
 Read with a delay that ramps up or down from. More...
 
void delay (float *out, size_t len, float delay)
 Read with a fractional delay. More...
 
size_t getContiguousReadCapacity () const
 
size_t getContiguousWriteCapacity () const
 
float * getData ()
 
size_t getDelay () const
 Get the read index expressed as delay behind the write index. More...
 
float getFractionalDelay ()
 
size_t getReadCapacity () const
 
float * getReadHead ()
 
size_t getReadIndex ()
 
size_t getSize () const
 
size_t getWriteCapacity () const
 
float * getWriteHead ()
 
size_t getWriteIndex ()
 
 InterpolatingCircularFloatBuffer ()
 
 InterpolatingCircularFloatBuffer (float *data, size_t size)
 
bool isEmpty () const
 
bool isFull () const
 
void moveReadHead (int32_t samples)
 
void moveWriteHead (int32_t samples)
 
void overdub (float c)
 
void overdubAt (size_t index, float value)
 
float read ()
 
void read (float *dst, size_t len)
 
void read (float *out, size_t len, float startpos, float rate)
 Interpolated read at fractional rate. More...
 
float readAt (float index)
 Interpolated read at sub-sample index. More...
 
float readAt (float index)
 
float readAt (float index)
 
float readAt (float index)
 
float readAt (float index)
 
float readAt (float index)
 
float readAt (float index)
 
float readAt (size_t index)
 
void reset ()
 
void setAll (const float value)
 
void setData (float *data, size_t len)
 
void setDelay (int samples)
 Set the read index. More...
 
void setReadIndex (size_t pos)
 
void setWriteIndex (size_t pos)
 
void skipUntilLast (char c)
 
void write (float *source, size_t len)
 
void write (float c)
 
void writeAt (float index, float value)
 Interpolated write at sub-sample index. More...
 
void writeAt (size_t index, float value)
 

Static Public Member Functions

static InterpolatingCircularFloatBuffer< im > * create (size_t len)
 
static void destroy (CircularBuffer< float > *obj)
 
static void destroy (InterpolatingCircularFloatBuffer< im > *obj)
 

Protected Attributes

float * data
 
float delay_samples = 0
 
bool empty
 
size_t readpos
 
size_t size
 
size_t writepos
 

Detailed Description

template<InterpolationMethod im = LINEAR_INTERPOLATION>
class InterpolatingCircularFloatBuffer< im >

Definition at line 9 of file InterpolatingCircularBuffer.h.

Constructor & Destructor Documentation

◆ InterpolatingCircularFloatBuffer() [1/2]

template<InterpolationMethod im = LINEAR_INTERPOLATION>
InterpolatingCircularFloatBuffer< im >::InterpolatingCircularFloatBuffer ( )
inline

Definition at line 13 of file InterpolatingCircularBuffer.h.

◆ InterpolatingCircularFloatBuffer() [2/2]

template<InterpolationMethod im = LINEAR_INTERPOLATION>
InterpolatingCircularFloatBuffer< im >::InterpolatingCircularFloatBuffer ( float *  data,
size_t  size 
)
inline

Definition at line 14 of file InterpolatingCircularBuffer.h.

Member Function Documentation

◆ clear()

void CircularBuffer< float , size_t >::clear ( )
inlineinherited

Definition at line 220 of file CircularBuffer.h.

◆ create()

template<InterpolationMethod im = LINEAR_INTERPOLATION>
static InterpolatingCircularFloatBuffer<im>* InterpolatingCircularFloatBuffer< im >::create ( size_t  len)
inlinestatic

◆ delay() [1/5]

template<InterpolationMethod im = LINEAR_INTERPOLATION>
void InterpolatingCircularFloatBuffer< im >::delay ( float *  in,
float *  out,
size_t  len,
float  beginDelay,
float  endDelay 
)
inline

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

Parameters
beginDelayto
endDelay
Note
input buffer length is added to delay times

Definition at line 93 of file InterpolatingCircularBuffer.h.

References InterpolatingCircularFloatBuffer< im >::delay(), and CircularBuffer< float >::write().

◆ delay() [2/5]

template<InterpolationMethod im = LINEAR_INTERPOLATION>
void InterpolatingCircularFloatBuffer< im >::delay ( float *  in,
float *  out,
size_t  len,
float  readDelay 
)
inline

Write to buffer and read with a fractional delay.

Note
input buffer length is added to delay time

Definition at line 66 of file InterpolatingCircularBuffer.h.

References InterpolatingCircularFloatBuffer< im >::delay(), and CircularBuffer< float >::write().

◆ delay() [3/5]

void CircularBuffer< float , size_t >::delay ( float *  in,
float *  out,
size_t  len,
int  delay_samples 
)
inlineinherited

Write to buffer and read with a delay.

Definition at line 182 of file CircularBuffer.h.

◆ delay() [4/5]

template<InterpolationMethod im = LINEAR_INTERPOLATION>
void InterpolatingCircularFloatBuffer< im >::delay ( float *  out,
size_t  len,
float  beginDelay,
float  endDelay 
)
inline

Read with a delay that ramps up or down from.

Parameters
beginDelayto
endDelay

Definition at line 75 of file InterpolatingCircularBuffer.h.

References InterpolatingCircularFloatBuffer< im >::delay_samples, InterpolatingCircularFloatBuffer< im >::readAt(), CircularBuffer< float >::size, and CircularBuffer< float >::writepos.

◆ delay() [5/5]

template<InterpolationMethod im = LINEAR_INTERPOLATION>
void InterpolatingCircularFloatBuffer< im >::delay ( float *  out,
size_t  len,
float  delay 
)
inline

◆ destroy() [1/2]

static void CircularBuffer< float , size_t >::destroy ( CircularBuffer< float > *  obj)
inlinestaticinherited

Definition at line 230 of file CircularBuffer.h.

◆ destroy() [2/2]

template<InterpolationMethod im = LINEAR_INTERPOLATION>
static void InterpolatingCircularFloatBuffer< im >::destroy ( InterpolatingCircularFloatBuffer< im > *  obj)
inlinestatic

◆ getContiguousReadCapacity()

size_t CircularBuffer< float , size_t >::getContiguousReadCapacity ( ) const
inlineinherited

Definition at line 203 of file CircularBuffer.h.

◆ getContiguousWriteCapacity()

size_t CircularBuffer< float , size_t >::getContiguousWriteCapacity ( ) const
inlineinherited

Definition at line 196 of file CircularBuffer.h.

◆ getData()

float * CircularBuffer< float , size_t >::getData ( )
inlineinherited

Definition at line 32 of file CircularBuffer.h.

◆ getDelay()

size_t CircularBuffer< float , size_t >::getDelay ( ) const
inlineinherited

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

Definition at line 175 of file CircularBuffer.h.

◆ getFractionalDelay()

template<InterpolationMethod im = LINEAR_INTERPOLATION>
float InterpolatingCircularFloatBuffer< im >::getFractionalDelay ( )
inline

◆ getReadCapacity()

size_t CircularBuffer< float , size_t >::getReadCapacity ( ) const
inlineinherited

Definition at line 188 of file CircularBuffer.h.

◆ getReadHead()

float * CircularBuffer< float , size_t >::getReadHead ( )
inlineinherited

Definition at line 155 of file CircularBuffer.h.

◆ getReadIndex()

size_t CircularBuffer< float , size_t >::getReadIndex ( )
inlineinherited

Definition at line 147 of file CircularBuffer.h.

◆ getSize()

size_t CircularBuffer< float , size_t >::getSize ( ) const
inlineinherited

Definition at line 28 of file CircularBuffer.h.

◆ getWriteCapacity()

size_t CircularBuffer< float , size_t >::getWriteCapacity ( ) const
inlineinherited

Definition at line 192 of file CircularBuffer.h.

◆ getWriteHead()

float * CircularBuffer< float , size_t >::getWriteHead ( )
inlineinherited

Definition at line 137 of file CircularBuffer.h.

◆ getWriteIndex()

size_t CircularBuffer< float , size_t >::getWriteIndex ( )
inlineinherited

Definition at line 129 of file CircularBuffer.h.

◆ isEmpty()

bool CircularBuffer< float , size_t >::isEmpty ( ) const
inlineinherited

Definition at line 36 of file CircularBuffer.h.

◆ isFull()

bool CircularBuffer< float , size_t >::isFull ( ) const
inlineinherited

Definition at line 40 of file CircularBuffer.h.

◆ moveReadHead()

void CircularBuffer< float , size_t >::moveReadHead ( int32_t  samples)
inlineinherited

Definition at line 159 of file CircularBuffer.h.

◆ moveWriteHead()

void CircularBuffer< float , size_t >::moveWriteHead ( int32_t  samples)
inlineinherited

Definition at line 141 of file CircularBuffer.h.

◆ overdub()

void CircularBuffer< float , size_t >::overdub ( float  c)
inlineinherited

Definition at line 71 of file CircularBuffer.h.

◆ overdubAt()

void CircularBuffer< float , size_t >::overdubAt ( size_t  index,
float  value 
)
inlineinherited

Definition at line 78 of file CircularBuffer.h.

◆ read() [1/3]

float CircularBuffer< float , size_t >::read ( )
inlineinherited

Definition at line 82 of file CircularBuffer.h.

◆ read() [2/3]

void CircularBuffer< float , size_t >::read ( float *  dst,
size_t  len 
)
inlineinherited

Definition at line 91 of file CircularBuffer.h.

◆ read() [3/3]

template<InterpolationMethod im = LINEAR_INTERPOLATION>
void InterpolatingCircularFloatBuffer< im >::read ( float *  out,
size_t  len,
float  startpos,
float  rate 
)
inline

Interpolated read at fractional rate.

Parameters
rateread speed, in samples/sample

Definition at line 35 of file InterpolatingCircularBuffer.h.

References CircularBuffer< float >::empty, InterpolatingCircularFloatBuffer< im >::readAt(), CircularBuffer< float >::readpos, CircularBuffer< float >::size, and CircularBuffer< float >::writepos.

◆ readAt() [1/8]

template<InterpolationMethod im = LINEAR_INTERPOLATION>
float InterpolatingCircularFloatBuffer< im >::readAt ( float  index)

Interpolated read at sub-sample index.

Returns
a value linearly interpolated at a fractional index

Referenced by InterpolatingCircularFloatBuffer< im >::delay(), InterpolatingWavetableOscillator< im >::getSample(), and InterpolatingCircularFloatBuffer< im >::read().

◆ readAt() [2/8]

float InterpolatingCircularFloatBuffer< NO_INTERPOLATION >::readAt ( float  index)

Definition at line 111 of file InterpolatingCircularBuffer.h.

References CircularBuffer< float >::readAt().

◆ readAt() [3/8]

◆ readAt() [4/8]

◆ readAt() [5/8]

◆ readAt() [6/8]

◆ readAt() [7/8]

◆ readAt() [8/8]

float CircularBuffer< float , size_t >::readAt ( size_t  index)
inlineinherited

Definition at line 106 of file CircularBuffer.h.

◆ reset()

void CircularBuffer< float , size_t >::reset ( )
inlineinherited

Definition at line 215 of file CircularBuffer.h.

◆ setAll()

void CircularBuffer< float , size_t >::setAll ( const float  value)
inlineinherited

Definition at line 210 of file CircularBuffer.h.

◆ setData()

void CircularBuffer< float , size_t >::setData ( float *  data,
size_t  len 
)
inlineinherited

Definition at line 23 of file CircularBuffer.h.

◆ setDelay()

void CircularBuffer< float , size_t >::setDelay ( int  samples)
inlineinherited

Set the read index.

Parameters
samplesbehind the write index.

Definition at line 168 of file CircularBuffer.h.

◆ setReadIndex()

void CircularBuffer< float , size_t >::setReadIndex ( size_t  pos)
inlineinherited

Definition at line 151 of file CircularBuffer.h.

◆ setWriteIndex()

void CircularBuffer< float , size_t >::setWriteIndex ( size_t  pos)
inlineinherited

Definition at line 133 of file CircularBuffer.h.

◆ skipUntilLast()

void CircularBuffer< float , size_t >::skipUntilLast ( char  c)
inlineinherited

Definition at line 110 of file CircularBuffer.h.

◆ write() [1/2]

void CircularBuffer< float , size_t >::write ( float *  source,
size_t  len 
)
inlineinherited

Definition at line 52 of file CircularBuffer.h.

◆ write() [2/2]

void CircularBuffer< float , size_t >::write ( float  c)
inlineinherited

Definition at line 44 of file CircularBuffer.h.

◆ writeAt() [1/2]

template<InterpolationMethod im = LINEAR_INTERPOLATION>
void InterpolatingCircularFloatBuffer< im >::writeAt ( float  index,
float  value 
)

Interpolated write at sub-sample index.

Inserts a value linearly interpolated at a fractional index.

◆ writeAt() [2/2]

void CircularBuffer< float , size_t >::writeAt ( size_t  index,
float  value 
)
inlineinherited

Definition at line 67 of file CircularBuffer.h.

Field Documentation

◆ data

float * CircularBuffer< float , size_t >::data
protectedinherited

Definition at line 14 of file CircularBuffer.h.

◆ delay_samples

template<InterpolationMethod im = LINEAR_INTERPOLATION>
float InterpolatingCircularFloatBuffer< im >::delay_samples = 0
protected

◆ empty

bool CircularBuffer< float , size_t >::empty
protectedinherited

Definition at line 18 of file CircularBuffer.h.

◆ readpos

size_t CircularBuffer< float , size_t >::readpos
protectedinherited

Definition at line 17 of file CircularBuffer.h.

◆ size

size_t CircularBuffer< float , size_t >::size
protectedinherited

Definition at line 15 of file CircularBuffer.h.

◆ writepos

size_t CircularBuffer< float , size_t >::writepos
protectedinherited

Definition at line 16 of file CircularBuffer.h.


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