arduino-audio-tools
Loading...
Searching...
No Matches
AdaptiveResamplingStream.h
Go to the documentation of this file.
1#pragma once
2
5
6namespace audio_tools {
7
26 public:
39 float stepRangePercent = 5.0f)
40 : resampling_buffer(buffer, stepRangePercent) {
42 }
43
51 }
52
62
70 return begin();
71 }
72
80 size_t write(const uint8_t* data, size_t len) override {
81 return resampling_buffer.writeArray(data, len);
82 }
83
88
96 size_t readBytes(uint8_t* data, size_t len) override {
97 return resampling_buffer.readArray(data, len);
98 }
99
106
112 void setStepRangePercent(float rangePercent) {
114 }
115
124 void setStartFillPercent(float percent) {
126 }
127
131
138
145
152 void setKalmanParameters(float process_noise, float measurement_noise) {
153 resampling_buffer.setKalmanParameters(process_noise, measurement_noise);
154 }
155
163 void setPIDParameters(float p_value, float i_value, float d_value) {
164 resampling_buffer.setPIDParameters(p_value, i_value, d_value);
165 }
166
173 void setMinRecalculateInterval(uint32_t interval_ms) {
175 }
176
183 void setMaxStepChangeRate(float per_second) {
185 }
186
187 protected:
189};
190
191} // namespace audio_tools
A BaseBuffer<uint8_t> that wraps a raw (unresampled) backing buffer and transparently resamples on re...
Definition AdaptiveResamplingBuffer.h:52
void setStepRangePercent(float rangePercent)
Set the allowed resampling range as a percent.
Definition AdaptiveResamplingBuffer.h:434
void setStartFillPercent(float percent)
Defines the fill level (in percent of the backing buffer's capacity) that must be reached once,...
Definition AdaptiveResamplingBuffer.h:83
void setBuffer(BaseBuffer< uint8_t > &buffer)
Set the raw (unresampled) backing buffer.
Definition AdaptiveResamplingBuffer.h:98
void setPIDParameters(float p_value, float i_value, float d_value)
Set the PID controller parameters.
Definition AdaptiveResamplingBuffer.h:471
int readArray(uint8_t data[], int len) override
Definition AdaptiveResamplingBuffer.h:179
bool isPrimed()
Definition AdaptiveResamplingBuffer.h:452
void setMaxStepChangeRate(float per_second)
Maximum rate at which step_size is allowed to change, in (fractional step) units per second - e....
Definition AdaptiveResamplingBuffer.h:417
bool begin()
Initialize the buffer and internal components.
Definition AdaptiveResamplingBuffer.h:117
float levelPercent() override
Current actual fill level of the backing buffer in percent (0-100).
Definition AdaptiveResamplingBuffer.h:253
void end()
End the buffer and release resources.
Definition AdaptiveResamplingBuffer.h:152
void setKalmanParameters(float process_noise, float measurement_noise)
Set the Kalman filter parameters.
Definition AdaptiveResamplingBuffer.h:460
void setMinRecalculateInterval(uint32_t interval_ms)
Minimum time between actual PID/Kalman recomputations, in milliseconds. writeArray() calls recalculat...
Definition AdaptiveResamplingBuffer.h:403
float levelPercentSmoothed()
Get the Kalman-smoothed fill level from the last recalculate() call, in percent.
Definition AdaptiveResamplingBuffer.h:444
void setAudioInfo(AudioInfo info) override
Defines the audio format: needed to correctly interpret and resample the sample frames stored in the ...
Definition AdaptiveResamplingBuffer.h:104
float recalculate()
Recalculate the resampling step size based on buffer fill level. Called automatically by writeArray()...
Definition AdaptiveResamplingBuffer.h:264
int writeArray(const uint8_t data[], int len) override
Definition AdaptiveResamplingBuffer.h:166
An Audio Stream backed by a buffer (queue) which tries to correct jitter and automatically adjusts fo...
Definition AdaptiveResamplingStream.h:25
void setStepRangePercent(float rangePercent)
Set the allowed resampling range as a percent.
Definition AdaptiveResamplingStream.h:112
void setStartFillPercent(float percent)
Defines the fill level (percent) that must be reached once, right after begin(), before any data is r...
Definition AdaptiveResamplingStream.h:124
void setBuffer(BaseBuffer< uint8_t > &buffer)
Set the buffer used for audio data.
Definition AdaptiveResamplingStream.h:49
void setPIDParameters(float p_value, float i_value, float d_value)
Set the PID controller parameters.
Definition AdaptiveResamplingStream.h:163
AdaptiveResamplingStream()
Construct a new AdaptiveResamplingStream object You need to call setBuffer() and setStepRangePercent(...
Definition AdaptiveResamplingStream.h:31
bool isPrimed()
Definition AdaptiveResamplingStream.h:130
size_t readBytes(uint8_t *data, size_t len) override
Read resampled audio data from the buffer.
Definition AdaptiveResamplingStream.h:96
void setMaxStepChangeRate(float per_second)
Set the maximum rate at which step_size is allowed to change. See AdaptiveResamplingBuffer::setMaxSte...
Definition AdaptiveResamplingStream.h:183
bool begin()
Initialize the stream and internal components.
Definition AdaptiveResamplingStream.h:58
AdaptiveResamplingStream(BaseBuffer< uint8_t > &buffer, float stepRangePercent=5.0f)
Construct a new AdaptiveResamplingStream object.
Definition AdaptiveResamplingStream.h:38
size_t write(const uint8_t *data, size_t len) override
Write audio data to the buffer.
Definition AdaptiveResamplingStream.h:80
float levelPercent()
Get the fill level at the last calculation in percent.
Definition AdaptiveResamplingStream.h:144
void end()
End the stream and release resources.
Definition AdaptiveResamplingStream.h:87
void setKalmanParameters(float process_noise, float measurement_noise)
Set the Kalman filter parameters.
Definition AdaptiveResamplingStream.h:152
void setMinRecalculateInterval(uint32_t interval_ms)
Set the minimum time between actual PID/Kalman recomputations. See AdaptiveResamplingBuffer::setMinRe...
Definition AdaptiveResamplingStream.h:173
AdaptiveResamplingBuffer resampling_buffer
Definition AdaptiveResamplingStream.h:188
float levelPercentActual()
Get the current actual buffer fill level in percent.
Definition AdaptiveResamplingStream.h:137
bool begin(AudioInfo info)
Initialize the stream and internal components with the given audio info.
Definition AdaptiveResamplingStream.h:68
float recalculate()
Recalculate the resampling step size based on buffer fill level.
Definition AdaptiveResamplingStream.h:105
virtual void addNotifyAudioChange(AudioInfoSupport &bi)
Adds target to be notified about audio changes.
Definition AudioTypes.h:150
Base class for all Audio Streams. It support the boolean operator to test if the object is ready with...
Definition BaseStream.h:120
AudioInfo info
Definition BaseStream.h:171
virtual void setAudioInfo(AudioInfo newInfo) override
Defines the input AudioInfo.
Definition BaseStream.h:128
virtual AudioInfo audioInfo() override
provides the actual input AudioInfo
Definition BaseStream.h:151
Shared functionality of all buffers.
Definition Buffers.h:23
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition LMSEchoCancellationStream.h:6
Basic Audio information which drives e.g. I2S.
Definition AudioTypes.h:51