4#include "AudioToolsConfig.h"
5#include "AudioTools/CoreAudio/AudioOutput.h"
6#include "AudioTools/CoreAudio/AudioStreams.h"
105 if (state !=
nullptr)
delete[] state;
137 if (state !=
nullptr)
delete[] state;
144 memset(&state[j], 0,
sizeof(EQSTATE));
174 size_t write(
const uint8_t *data,
size_t len)
override {
176 return p_print->write(data, len);
190 result =
p_stream->readBytes(data, len);
206 const float vsa = (1.0 / 4294967295.0);
245 int16_t *p_dataT = (int16_t *)data;
246 size_t sample_count = len /
sizeof(int16_t);
255 size_t sample_count = len /
sizeof(
int24_t);
263 int32_t *p_dataT = (int32_t *)data;
264 size_t sample_count = len /
sizeof(int32_t);
301 m = es.
sdm3 - (h + l);
350 if (state !=
nullptr)
delete[] state;
364 ConfigEqualizer3Bands &defaultConfig() {
return config(); }
382 if (state !=
nullptr)
delete[] state;
389 memset(&state[j], 0,
sizeof(
EQSTATE));
399 void end()
override {
416 if (channel >= 0 && channel < p_cfg->channels && !
freq_low.empty()) {
421 if (state !=
nullptr) {
422 state[channel].lf = 2 * sin((
float)PI * ((
float)freq_low_val / (
float)
p_cfg->
sample_rate));
423 state[channel].hf = 2 * sin((
float)PI * ((
float)freq_high_val / (
float)
p_cfg->
sample_rate));
433 void setChannelGains(
int channel,
float gain_low_val,
float gain_medium_val,
float gain_high_val) {
435 if (channel >= 0 && channel < p_cfg->channels && !
gain_low.empty()) {
448 if (channel >= 0 && channel < p_cfg->channels && !
freq_low.empty()) {
462 bool getChannelGains(
int channel,
float &gain_low_val,
float &gain_medium_val,
float &gain_high_val) {
463 if (channel >= 0 && channel < p_cfg->channels && !
gain_low.empty()) {
476 size_t write(
const uint8_t *data,
size_t len)
override {
478 return p_print->write(data, len);
492 result =
p_stream->readBytes(data, len);
505 bool is_active =
false;
508 const float vsa = (1.0 / 4294967295.0);
560 for (
int i = 0; i < num_channels; i++) {
573 if (!is_active)
return;
576 int16_t *p_dataT = (int16_t *)data;
577 size_t sample_count = len /
sizeof(int16_t);
586 size_t sample_count = len /
sizeof(
int24_t);
594 int32_t *p_dataT = (int32_t *)data;
595 size_t sample_count = len /
sizeof(int32_t);
613 float sample(
int channel,
float sample_val) {
620 es.f1p0 += (es.lf * (sample_val - es.f1p0)) +
vsa;
621 es.f1p1 += (es.lf * (es.f1p0 - es.f1p1));
622 es.f1p2 += (es.lf * (es.f1p1 - es.f1p2));
623 es.f1p3 += (es.lf * (es.f1p2 - es.f1p3));
628 es.f2p0 += (es.hf * (sample_val - es.f2p0)) +
vsa;
629 es.f2p1 += (es.hf * (es.f2p0 - es.f2p1));
630 es.f2p2 += (es.hf * (es.f2p1 - es.f2p2));
631 es.f2p3 += (es.hf * (es.f2p2 - es.f2p3));
633 h = es.sdm3 - es.f2p3;
636 m = es.sdm3 - (h + l);
646 es.sdm1 = sample_val;