87template <
typename T =
int16_t>
143 LOGE(
"buffer has no memory");
158 LOGE(
"buffer has no memory");
204template <
typename T =
int16_t>
249 bool peek(T &result) {
return false; }
258 LOGE(
"buffer has no memory");
319 int read_pointer_int180 = 0;
321 read_pointer_int180 = read_pointer_int - (
buffer_size / 2);
323 read_pointer_int180 = read_pointer_int + (
buffer_size / 2);
326 float read_sample = (float)
buffer[read_pointer_int];
327 float read_sample_180 = (float)
buffer[read_pointer_int180];
374template <
typename T =
int16_t>
426 if (
buffer.size() == 0)
return false;
470 int read_pos_int = read_pos;
472 T value2 =
getValue(read_pos_int + 1);
476 if (value2 < value1) {
482 float offset_in = read_pos - read_pos_int;
483 LOGD(
"read_pos=%f read_pos_int=%d, offset_in=%f", read_pos, read_pos_int,
486 abs(value2 - value1);
487 float offset_result = offset_in * diff_result;
488 float result = offset_result + value1;
489 LOGD(
"interpolate %d %d -> %f -> %f", value1, value2, offset_result,
518 bool v_incrementing = v2 - v1 >= 0;
520 if (
incrementing && v_incrementing && value1 >= v1 && value1 <= v2) {
524 if (!
incrementing && !v_incrementing && value1 <= v1 && value1 >= v2) {
551 LOGD(
"handleReadWriteOverrun write_pos=%d read_pos_int=%d",
write_pos,
557 int pos = read_pos_int + j;
563 float diff_value = abs(v1 - v2);
566 if (diff_value > 0) {
567 fraction = diff_last_value / diff_value;
577 LOGD(
"handleReadWriteOverrun -> read_pos pos=%d pos_float=%f", pos,
584 LOGW(
"phase allign failed: maybe the buffer is too small")
614template <
typename T,
class BufferT>
669 size_t write(
const uint8_t *data,
size_t len)
override {
670 LOGD(
"PitchShiftOutput::write %d bytes", (
int)len);
676 int sample_count = len /
sizeof(T);
678 for (
int j = 0; j < sample_count; j += channels) {
680 for (
int ch = 0; ch < channels; ch++) {
681 value += p_in[j + ch];
688 LOGD(
"PitchShiftOutput %f -> %d", value, (
int)out_value);
689 T out_array[channels];
690 for (
int ch = 0; ch < channels; ch++) {
691 out_array[ch] = out_value;
693 result +=
p_out->
write((uint8_t *)out_array,
sizeof(T) * channels);
#define LOGW(...)
Definition AudioLoggerIDF.h:29
#define TRACED()
Definition AudioLoggerIDF.h:31
#define LOGD(...)
Definition AudioLoggerIDF.h:27
#define LOGE(...)
Definition AudioLoggerIDF.h:30
#define assert(T)
Definition avr.h:10
virtual size_t write(const uint8_t *data, size_t len)
Definition Arduino.h:120