29 lines
720 B
C
29 lines
720 B
C
#ifndef FX_ECHO_H
|
|
#define FX_ECHO_H
|
|
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
|
|
#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);
|
|
|
|
#endif /* FX_ECHO_H */
|