95 size_t readBytes(uint8_t* data,
size_t len)
override {
97 for (
int i = 0; i < len; i++) {
127 virtual size_t write(
const uint8_t* data,
size_t len)
override {
128 for (
int i = 0; i < len; i++) {
162 LOGE(
"Invalid channel: %d", channel);
165 return freq[channel];
217 LOGD(
"detectFrequencyForChannel: %d / len: %u", ch, (
unsigned int)len);
224 size_t min_lag = sample_rate / 1000;
225 size_t max_lag = sample_rate / 50;
228 LOGD(
"lag min/max: %u / %u", (
unsigned)min_lag, (
unsigned)max_lag);
230 float max_corr = 0.0f;
232 for (
size_t lag = min_lag; lag < max_lag; ++lag) {
235 sum += samples[i * channels] * samples[(i + lag) * channels];
237 if (sum > max_corr) {
243 LOGD(
"best_lag: %u / max_corr: %f", (
unsigned)best_lag, max_corr);
245 if (best_lag == 0)
return 0.0f;
246 return (
float)sample_rate / best_lag;
320 detect<int16_t>((int16_t*)data, len /
sizeof(int16_t));
326 detect<int32_t>((int32_t*)data, len /
sizeof(int32_t));
338 virtual size_t write(
const uint8_t* data,
size_t len)
override {
341 detect<int16_t>((int16_t*)data, len /
sizeof(int16_t));
347 detect<int32_t>((int32_t*)data, len /
sizeof(int32_t));
363 LOGE(
"Invalid channel: %d", channel);
366 return states[channel].freq;
420 if (samples[i] <= 0 && samples[i +
info.
channels] > 0) {
421 if (state.
count > 0) {
#define LOGD(...)
Definition AudioLoggerIDF.h:27
#define LOGE(...)
Definition AudioLoggerIDF.h:30
#define DEFAULT_BUFFER_SIZE
Definition avr.h:20
virtual int availableForWrite()
Definition Arduino.h:128
virtual size_t write(const uint8_t *data, size_t len)
Definition Arduino.h:120
virtual size_t readBytes(uint8_t *data, size_t len)
Definition Arduino.h:140
virtual int available()
Definition Arduino.h:139