4#include "AudioStreams.h"
68 this->config = config;
69 this->sample_count = 0;
73 coeff = 2.0f * cos(omega);
86 float s0 = sample + coeff * s1 - s2;
99 magnitude_squared = real * real + imag * imag;
100 magnitude = sqrt(magnitude_squared);
128 bool isDetected(
float threshold)
const {
return magnitude > threshold; }
138 magnitude_squared = 0.0f;
163 int sample_count = 0;
166 float magnitude = 0.0f;
167 float magnitude_squared = 0.0f;
239 for (
int i = 0; i < info.
channels; i++) {
264 int channel,
float frequency,
float magnitude,
void*
ref)) {
280 size_t write(
const uint8_t* data,
size_t len)
override {
281 if (
p_print ==
nullptr)
return 0;
287 if (
p_print ==
nullptr)
return len;
290 return p_print->write(data, len);
280 size_t write(
const uint8_t* data,
size_t len)
override {
…}
308 size_t result =
p_stream->readBytes(data, len);
327 if (channel >= 0 && channel <
detectors.size()) {
328 return detectors[channel].getMagnitude();
343 if (channel >= 0 && channel <
detectors.size()) {
381 float magnitude,
void*
ref) =
nullptr;
394 if (channel >= 0 && channel <
detectors.size()) {
395 float magnitude =
detectors[channel].getMagnitude();
397 float frequency =
detectors[channel].getTargetFrequency();
418 template <
typename T>
421 const T* samples =
reinterpret_cast<const T*
>(data);
422 size_t num_samples = data_len /
sizeof(T);
424 for (
size_t i = 0; i < num_samples; i++) {
428 int channel = i % channels;
429 if (
detectors[channel].processSample(normalized)) {
446 if (value > 1.0f)
return 1.0f;
447 if (value < -1.0f)
return -1.0f;
473 processSamplesOfType<uint8_t>(data, data_len, channels);
476 processSamplesOfType<int16_t>(data, data_len, channels);
479 processSamplesOfType<int24_t>(data, data_len, channels);
482 processSamplesOfType<int32_t>(data, data_len, channels);