#ifndef FX_ECHO_H #define FX_ECHO_H #include #include #ifdef __cplusplus extern "C" { #endif #define FX_ECHO_SAMPLE_RATE 48000U #define FX_ECHO_MAX_DELAY_MS 1000U #define FX_ECHO_BUFFER_SIZE (FX_ECHO_SAMPLE_RATE * FX_ECHO_MAX_DELAY_MS / 1000U) typedef struct { bool enabled; float delay_ms; /* 0 a FX_ECHO_MAX_DELAY_MS */ float feedback; /* 0.0 a <1.0 */ float mix; /* 0.0 (sec) a 1.0 (100% repetitions) */ } FxEchoParams; typedef struct { int16_t buffer[FX_ECHO_BUFFER_SIZE]; uint32_t write_idx; } FxEchoState; void FxEcho_Init(FxEchoState *state, FxEchoParams *params); float FxEcho_Process(FxEchoState *state, const FxEchoParams *params, float input); #ifdef __cplusplus } #endif #endif /* FX_ECHO_H */