12# define USE_VARIANTS (__cplusplus >= 201703L)
44 LOGI(
"addEffect -> Number of effects: %d", (
int)
size());
61 for (
int j=0;j<
size();j++){
94template <
class GeneratorT>
105 for (
int j=0;j<copy.
size();j++){
108 LOGI(
"Number of effects %d -> %d", copy.
size(), this->size());
119 setInput(* (
new GeneratorT(input, channels, volume)));
155 LOGI(
"addEffect -> Number of effects: %d",
size());
164 for (
int j=0; j<
size; j++){
165 sample =
effects[j]->process(sample);
297 T* samples = (T*) data;
299 for (
int f=0;f<frames;f++){
303 for (
int j=0; j<chain.
size(); j++){
304 sample = chain[j]->process(sample);
318 size_t write(
const uint8_t *data,
size_t len)
override {
329 for (
int f=0;f<frames;f++){
330 const T* p_buffer = ((
const T*)data) + (f*
info.
channels);
333 T sample = p_buffer[ch];
335 for (
int j=0; j<chain.
size(); j++){
336 sample = chain[j]->process(sample);
342 size_t written_samples = 0;
344 written_samples = writeDataT<T, Stream>(
p_io, out, total_samples);
346 written_samples = writeDataT<T, Print>(
p_print, out, total_samples);
348 return written_samples *
sizeof(T);
352 if (
p_io==
nullptr)
return 0;
371 LOGI(
"addEffect -> Number of effects: %d", (
int)
size());
392 LOGE(
"Invalid channel %d or begin() not yet called", channel);
466#if USE_VARIANTS || defined(DOXYGEN)
520 std::visit( [
this](
auto&& e) {
return e.setOutput(*
p_print);},
variant );
522 if (
p_io !=
nullptr) {
523 std::visit( [
this](
auto&& e) {
return e.setStream(*
p_io);},
variant );
525 return std::visit( [
this](
auto&& e) {
return e.begin(
info);},
variant );
529 std::visit( [](
auto&& e) {e.end();},
variant );
553 return std::visit( [data, len](
auto&& e) {
return e.readBytes(data, len);},
variant );
560 size_t write(
const uint8_t *data,
size_t len)
override {
561 return std::visit( [data, len](
auto&& e) {
return e.write(data, len);},
variant );
565 return std::visit( [](
auto&& e) {
return e.available();},
variant );
569 return std::visit( [](
auto&& e) {
return e.availableForWrite();},
variant );
579 std::visit( [effect](
auto&& e) {e.addEffect(effect);},
variant );
589 std::visit( [channel, effect](
auto&& e) {e.addEffect(channel, effect);},
variant );
594 std::visit( [](
auto&& e) {e.clear();},
variant );
599 return std::visit( [](
auto&& e) {
return e.size();},
variant );
604 return std::visit( [idx](
auto&& e) {
return e[idx];},
variant );
609 return std::visit( [
id](
auto&& e) {
return e.findEffect(
id);},
variant );
619 return std::visit( [](
auto&& e) {
return e.channelCount();},
variant );
#define TRACEI()
Definition AudioLoggerIDF.h:32
#define TRACED()
Definition AudioLoggerIDF.h:31
#define LOGI(...)
Definition AudioLoggerIDF.h:28
#define LOGE(...)
Definition AudioLoggerIDF.h:30
#define assert(T)
Definition avr.h:10
virtual int availableForWrite()
Definition Arduino.h:128
virtual size_t readBytes(uint8_t *data, size_t len)
Definition Arduino.h:140
virtual int available()
Definition Arduino.h:139