LMMS
Loading...
Searching...
No Matches
gverbdsp.h
Go to the documentation of this file.
1
2#ifndef GVERBDSP_H
3#define GVERBDSP_H
4
5#include "../ladspa-util.h"
6
7typedef struct {
8 int size;
9 int idx;
10 float *buf;
12
13typedef struct {
14 int size;
15 float coeff;
16 int idx;
17 float *buf;
19
20typedef struct {
21 float damping;
22 float delay;
23} ty_damper;
24
25ty_diffuser *diffuser_make(int, float);
28//float diffuser_do(ty_diffuser *, float);
29
33//void damper_set(ty_damper *, float);
34//float damper_do(ty_damper *, float);
35
39//float fixeddelay_read(ty_fixeddelay *, int);
40//void fixeddelay_write(ty_fixeddelay *, float);
41
42int isprime(int);
43int nearest_prime(int, float);
44
45static inline float diffuser_do(ty_diffuser *p, float x)
46{
47 float y,w;
48
49 w = x - p->buf[p->idx]*p->coeff;
50 w = flush_to_zero(w);
51 y = p->buf[p->idx] + w*p->coeff;
52 p->buf[p->idx] = w;
53 p->idx = (p->idx + 1) % p->size;
54 return(y);
55}
56
57static inline float fixeddelay_read(ty_fixeddelay *p, int n)
58{
59 int i;
60
61 i = (p->idx - n + p->size) % p->size;
62 return(p->buf[i]);
63}
64
65static inline void fixeddelay_write(ty_fixeddelay *p, float x)
66{
67 p->buf[p->idx] = x;
68 p->idx = (p->idx + 1) % p->size;
69}
70
71static inline void damper_set(ty_damper *p, float damping)
72{
73 p->damping = damping;
74}
75
76static inline float damper_do(ty_damper *p, float x)
77{
78 float y;
79
80 y = x*(1.0-p->damping) + p->delay*p->damping;
81 p->delay = y;
82 return(y);
83}
84
85#endif
UINT_D64 w
Definition inflate.c:942
int y
Definition inflate.c:1588
register unsigned i
Definition inflate.c:1575
unsigned x[BMAX+1]
Definition inflate.c:1586
void diffuser_flush(ty_diffuser *)
Definition gverbdsp.c:54
void fixeddelay_free(ty_fixeddelay *)
Definition gverbdsp.c:92
int nearest_prime(int, float)
Definition gverbdsp.c:115
void diffuser_free(ty_diffuser *)
Definition gverbdsp.c:48
void damper_flush(ty_damper *)
Definition gverbdsp.c:74
static float damper_do(ty_damper *p, float x)
Definition gverbdsp.h:76
static void damper_set(ty_damper *p, float damping)
Definition gverbdsp.h:71
ty_diffuser * diffuser_make(int, float)
Definition gverbdsp.c:34
ty_damper * damper_make(float)
Definition gverbdsp.c:59
static float diffuser_do(ty_diffuser *p, float x)
Definition gverbdsp.h:45
int isprime(int)
Definition gverbdsp.c:103
void fixeddelay_flush(ty_fixeddelay *)
Definition gverbdsp.c:98
void damper_free(ty_damper *)
Definition gverbdsp.c:69
static void fixeddelay_write(ty_fixeddelay *p, float x)
Definition gverbdsp.h:65
ty_fixeddelay * fixeddelay_make(int)
Definition gverbdsp.c:79
static float fixeddelay_read(ty_fixeddelay *p, int n)
Definition gverbdsp.h:57
static float flush_to_zero(float f)
Definition ladspa-util.h:66
Definition gverbdsp.h:20
float delay
Definition gverbdsp.h:22
float damping
Definition gverbdsp.h:21
Definition gverbdsp.h:13
int size
Definition gverbdsp.h:14
float coeff
Definition gverbdsp.h:15
float * buf
Definition gverbdsp.h:17
int idx
Definition gverbdsp.h:16
Definition gverbdsp.h:7
int idx
Definition gverbdsp.h:9
int size
Definition gverbdsp.h:8
float * buf
Definition gverbdsp.h:10
int n
Definition crypt.c:458
uch * p
Definition crypt.c:594