3#include "AudioTools/CoreAudio/AudioBasic/KalmanFilter.h"
4#include "AudioTools/CoreAudio/AudioBasic/PIDController.h"
5#include "AudioTools/CoreAudio/AudioStreams.h"
6#include "AudioTools/CoreAudio/ResampleStream.h"
40 float stepRangePercent = 5.0f) {
61 if (p_buffer ==
nullptr)
return false;
62 queue_stream.setBuffer(*p_buffer);
67 float from_step = 1.0 - resample_range;
68 float to_step = 1.0 + resample_range;
69 return pid.begin(1.0, from_step, to_step, p, i, d);
79 size_t write(
const uint8_t* data,
size_t len)
override {
80 if (p_buffer ==
nullptr)
return 0;
81 size_t result = p_buffer->
writeArray(data, len);
91 resample_stream.end();
103 if (p_buffer ==
nullptr)
return 0;
105 return resample_stream.readBytes(data, len);
114 if (p_buffer ==
nullptr)
return step_size;
119 step_size = pid.calculate(50.0, kalman_filter.
calculate());
122 if (read_count++ % 100 == 0) {
123 LOGI(
"step_size: %f", step_size);
137 resample_range = rangePercent / 100.0;
146 if (p_buffer ==
nullptr)
return 0.0f;
164 kalman_filter.
begin(process_noise, measurement_noise);
186 float step_size = 1.0;
187 float resample_range = 0;
189 float i = 0.00000001;
191 float level_percent = 0.0;
192 uint32_t read_count = 0;