mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-17 06:20:11 +02:00
85 lines
1.6 KiB
C
Executable file
85 lines
1.6 KiB
C
Executable file
|
|
#ifndef GVERBDSP_H
|
|
#define GVERBDSP_H
|
|
|
|
#include "ladspa-util.h"
|
|
|
|
typedef struct {
|
|
int size;
|
|
int idx;
|
|
float *buf;
|
|
} ty_fixeddelay;
|
|
|
|
typedef struct {
|
|
int size;
|
|
float coeff;
|
|
int idx;
|
|
float *buf;
|
|
} ty_diffuser;
|
|
|
|
typedef struct {
|
|
float damping;
|
|
float delay;
|
|
} ty_damper;
|
|
|
|
ty_diffuser *diffuser_make(int, float);
|
|
void diffuser_free(ty_diffuser *);
|
|
void diffuser_flush(ty_diffuser *);
|
|
//float diffuser_do(ty_diffuser *, float);
|
|
|
|
ty_damper *damper_make(float);
|
|
void damper_free(ty_damper *);
|
|
void damper_flush(ty_damper *);
|
|
//void damper_set(ty_damper *, float);
|
|
//float damper_do(ty_damper *, float);
|
|
|
|
ty_fixeddelay *fixeddelay_make(int);
|
|
void fixeddelay_free(ty_fixeddelay *);
|
|
void fixeddelay_flush(ty_fixeddelay *);
|
|
//float fixeddelay_read(ty_fixeddelay *, int);
|
|
//void fixeddelay_write(ty_fixeddelay *, float);
|
|
|
|
int isprime(int);
|
|
int nearest_prime(int, float);
|
|
|
|
static __inline float diffuser_do(ty_diffuser *p, float x)
|
|
{
|
|
float y,w;
|
|
|
|
w = x - p->buf[p->idx]*p->coeff;
|
|
w = flush_to_zero(w);
|
|
y = p->buf[p->idx] + w*p->coeff;
|
|
p->buf[p->idx] = w;
|
|
p->idx = (p->idx + 1) % p->size;
|
|
return(y);
|
|
}
|
|
|
|
static __inline float fixeddelay_read(ty_fixeddelay *p, int n)
|
|
{
|
|
int i;
|
|
|
|
i = (p->idx - n + p->size) % p->size;
|
|
return(p->buf[i]);
|
|
}
|
|
|
|
static __inline void fixeddelay_write(ty_fixeddelay *p, float x)
|
|
{
|
|
p->buf[p->idx] = x;
|
|
p->idx = (p->idx + 1) % p->size;
|
|
}
|
|
|
|
static __inline void damper_set(ty_damper *p, float damping)
|
|
{
|
|
p->damping = damping;
|
|
}
|
|
|
|
static __inline float damper_do(ty_damper *p, float x)
|
|
{
|
|
float y;
|
|
|
|
y = x*(1.0-p->damping) + p->delay*p->damping;
|
|
p->delay = y;
|
|
return(y);
|
|
}
|
|
|
|
#endif
|