0
1
mirror of https://github.com/radio95-rnt/fm95.git synced 2026-02-26 19:23:51 +01:00
Files
fm95/dsp/delay.c
2026-02-15 14:03:47 +01:00

25 lines
588 B
C

#include <stdlib.h>
#include <string.h>
#include "delay.h"
void init_delay_line(delay_line_t *dl, uint32_t delay_samples) {
dl->delay = delay_samples;
dl->idx = 0;
dl->buffer = calloc(delay_samples, sizeof(float));
}
float delay_line(delay_line_t *dl, float in) {
float out = dl->buffer[dl->idx]; // read delayed sample
dl->buffer[dl->idx] = in; // write new input
dl->idx++;
if (dl->idx >= dl->delay) dl->idx = 0;
return out;
}
void exit_delay_line(delay_line_t *dl) {
if(dl->buffer != NULL) free(dl->buffer);
dl->buffer = NULL;
}