Optimized Buffer implementation for Pitch Shift. We try to interpolate the samples and restore the phase when the read pointer and write pointer overtake each other.
More...
#include <PitchShift.h>
|
| VariableSpeedRingBuffer (int size=0, float increment=1.0) |
|
virtual T * | address () |
| returns the address of the start of the physical read buffer
|
|
virtual int | available () |
| provides the number of entries that are available to read
|
|
virtual int | availableForWrite () |
| provides the number of entries that are available to write
|
|
void | clear () |
| same as reset
|
|
virtual int | clearArray (int len) |
| Removes the next len entries.
|
|
bool | isEmpty () |
|
virtual bool | isFull () |
| checks if the buffer is full
|
|
virtual float | levelPercent () |
| Returns the level of the buffer in %.
|
|
T | peek () |
| peeks the actual entry from the buffer
|
|
T | read () |
| reads a single value
|
|
virtual int | readArray (T data[], int len) |
| reads multiple values
|
|
int | readFrames (T data[][2], int len) |
| reads multiple values for array of 2 dimensional frames
|
|
template<int rows, int channels> |
int | readFrames (T(&data)[rows][channels]) |
|
void | reset () |
| Reset pointer positions and clear buffer.
|
|
void | resize (int size) |
|
void | setIncrement (float increment) |
|
size_t | size () |
|
bool | write (T sample) |
| write add an entry to the buffer
|
|
virtual int | writeArray (const T data[], int len) |
| Fills the buffer data.
|
|
virtual int | writeArrayOverwrite (const T data[], int len) |
| Fills the buffer data and overwrites the oldest data if the buffer is full.
|
|
|
T | getValue (int pos) |
| provides the value from the buffer: Allows pos > buffer_size
|
|
void | handleReadWriteOverrun (T last_value) |
|
T | interpolate (float read_pos) |
| Calculate exact sample value for float position.
|
|
bool | isMatching (T value1, bool incrementing, T v1, T v2) |
|
void | setWritePos (int pos) |
|
|
Vector< T > | buffer {0} |
|
int | buffer_size |
|
bool | incrementing |
|
T | last_value = 0 |
|
friend | NBuffer< T > |
|
float | read_increment = 0.0 |
|
float | read_pos_float = 0.0 |
|
int | write_pos = 0 |
|
template<typename T>
class audio_tools::VariableSpeedRingBuffer< T >
Optimized Buffer implementation for Pitch Shift. We try to interpolate the samples and restore the phase when the read pointer and write pointer overtake each other.
- Template Parameters
-
◆ handleReadWriteOverrun()
void handleReadWriteOverrun |
( |
T |
last_value | ) |
|
|
inlineprotected |
When the read pointer is overpassing the write pointer or the write pointer is overpassing the read pointer we need to phase shift
◆ isMatching()
bool isMatching |
( |
T |
value1, |
|
|
bool |
incrementing, |
|
|
T |
v1, |
|
|
T |
v2 |
|
) |
| |
|
inlineprotected |
checks if we can fit the last value between 2 existing values in the buffer
The documentation for this class was generated from the following file: