39 #ifndef HL_RING_BUFFER_H 40 #define HL_RING_BUFFER_H 42 #include <pa_ringbuffer.h> 44 #include <portaudio.h> 49 #define SAMPLE_RATE (44100) 50 #define FRAMES_PER_BUFFER (512) 51 #define NUM_SECONDS (10) 52 #define NUM_CHANNELS (2) 53 #define NUM_WRITES_PER_BUFFER (4) 57 #define PA_SAMPLE_TYPE paFloat32 59 #define SAMPLE_SILENCE (0.0f) 60 #define PRINTF_S_FORMAT "%.8f" 62 #define PA_SAMPLE_TYPE paInt16 64 #define SAMPLE_SILENCE (0) 65 #define PRINTF_S_FORMAT "%d" 67 #define PA_SAMPLE_TYPE paInt8 69 #define SAMPLE_SILENCE (0) 70 #define PRINTF_S_FORMAT "%d" 72 #define PA_SAMPLE_TYPE paUInt8 73 typedef unsigned char SAMPLE;
74 #define SAMPLE_SILENCE (128) 75 #define PRINTF_S_FORMAT "%d" 78 #define BYTES_TO_SAMPLES(bytes) ((bytes) / (sizeof(SAMPLE))) 79 #define SAMPLES_TO_BYTES(samples) ((samples) * (sizeof(SAMPLE))) 104 static uint32_t nextPowerOf2(uint32_t val)
107 val = (val >> 1) | val;
108 val = (val >> 2) | val;
109 val = (val >> 4) | val;
110 val = (val >> 8) | val;
111 val = (val >> 16) | val;
118 ring_buffer_size_t
read(SAMPLE *data, ring_buffer_size_t maxSamples);
119 ring_buffer_size_t
directRead(ring_buffer_size_t maxSamples,
void **dataPtr1, ring_buffer_size_t *size1,
void **dataPtr2, ring_buffer_size_t *size2);
120 ring_buffer_size_t
write(
const SAMPLE *data, ring_buffer_size_t maxSamples);
127 #endif // END HL_RING_BUFFER_H ring_buffer_size_t read(SAMPLE *data, ring_buffer_size_t maxSamples)
Read up to maxSamples from the ring buffer into the memory pointed to by data.
Definition: HulaRingBuffer.cpp:82
~HulaRingBuffer()
Destructor for the ring buffer.
Definition: HulaRingBuffer.cpp:154
ring_buffer_size_t write(const SAMPLE *data, ring_buffer_size_t maxSamples)
Add data to the ring buffer.
Definition: HulaRingBuffer.cpp:130
HulaRingBuffer(float maxDuration)
Create a new ring buffer.
Definition: HulaRingBuffer.cpp:53
HulaLoop wrapper class for PortAudio ring buffer.
Definition: HulaRingBuffer.h:86
ring_buffer_size_t directRead(ring_buffer_size_t maxSamples, void **dataPtr1, ring_buffer_size_t *size1, void **dataPtr2, ring_buffer_size_t *size2)
Fetch direct pointers to memory within the ring buffer.
Definition: HulaRingBuffer.cpp:101
Wrapper around translation functions for Qt.
Definition: Controller.h:10