49#define PORTCOUNT_STEREO 12
55#define MAX_DECAY 10000.0f
56#define MAX_COMB_DELAY 250.0f
57#define MAX_ALLP_DELAY 20.0f
58#define BANDPASS_BWIDTH 1.5f
59#define FREQ_RESP_BWIDTH 3.0f
60#define ENH_STEREO_RATIO 0.998f
63#define FR_R_COMP 0.75f
69 unsigned long buflen,
unsigned long * pos) {
73 outsample = buffer[*pos];
74 buffer[(*pos)++] = insample;
91 unsigned long pos,
unsigned long n) {
93 while (
n + pos >= buflen)
95 return buffer[
n + pos];
108 unsigned long pos,
unsigned long n) {
110 while (
n + pos >= buflen)
112 buffer[
n + pos] = insample;
115#define db2lin(x) ((x) > -90.0f ? powf(10.0f, (x) * 0.05f) : 0.0f)
116#define ABS(x) (x)>0.0f?(x):-1.0f*(x)
117#define LN_2_2 0.34657359f
118#define LIMIT(v,l,u) ((v)<(l)?(l):((v)>(u)?(u):(v)))
120#define BIQUAD_TYPE float
151 bq_t J = pow(10.0f, gain * 0.025f);
153 bq_t a0r = 1.0f / (1.0f + (
g / J));
155 f->b0 = (1.0f + (
g * J)) * a0r;
156 f->b1 = (-2.0f * cw) * a0r;
157 f->b2 = (1.0f - (
g * J)) * a0r;
159 f->a2 = ((
g / J) - 1.0f) * a0r;
164 bq_t sn = sin(omega);
165 bq_t cs = cos(omega);
166 bq_t alpha = sn * sinh(
M_LN2 / 2.0 * bw * omega / sn);
167 const float a0r = 1.0 / (1.0 + alpha);
168 f->b0 = a0r * (1.0 - cs) * 0.5;
169 f->b1 = a0r * (1.0 - cs);
170 f->b2 = a0r * (1.0 - cs) * 0.5;
171 f->a1 = a0r * (2.0 * cs);
172 f->a2 = a0r * (alpha - 1.0);
180 bq_t sn = sin(omega);
181 bq_t cs = cos(omega);
182 bq_t alpha = sn * sinh(
M_LN2 / 2.0 * bw * omega / sn);
183 const float a0r = 1.0 / (1.0 + alpha);
184 f->b0 = a0r * (1.0 + cs) * 0.5;
185 f->b1 = a0r * -(1.0 + cs);
186 f->b2 = a0r * (1.0 + cs) * 0.5;
187 f->a1 = a0r * (2.0 * cs);
188 f->a2 = a0r * (alpha - 1.0);
200 u.y =
f->b0 *
x +
f->b1 *
f->x1 +
f->b2 *
f->x2
201 +
f->a1 *
f->y1 +
f->a2 *
f->y2;
202#ifdef REVERB_CALC_FLOAT
203 if ((
u.y_int & 0x7f800000) == 0)
#define M_LN2
Definition compat.h:146
#define M_PI
Definition compat.h:149
UINT_D64 w
Definition inflate.c:942
int y
Definition inflate.c:1588
int g
Definition inflate.c:1573
struct huft * u[BMAX]
Definition inflate.c:1583
unsigned x[BMAX+1]
Definition inflate.c:1586
unsigned f
Definition inflate.c:1572
float LADSPA_Data
Definition ladspa.h:84
unsigned int uint32_t
Definition mid.cpp:100
Definition tap_reverb.h:276
LADSPA_Data feedback
Definition tap_reverb.h:278
LADSPA_Data delay
Definition tap_reverb.h:277
Definition tap_reverb.h:227
rev_t last_out
Definition tap_reverb.h:234
rev_t * ringbuffer
Definition tap_reverb.h:231
unsigned long * buffer_pos
Definition tap_reverb.h:233
unsigned long buflen
Definition tap_reverb.h:232
float fb_gain
Definition tap_reverb.h:229
float feedback
Definition tap_reverb.h:228
float in_gain
Definition tap_reverb.h:230
Definition tap_reverb.h:270
LADSPA_Data delay
Definition tap_reverb.h:271
LADSPA_Data feedback
Definition tap_reverb.h:272
LADSPA_Data freq_resp
Definition tap_reverb.h:273
Definition tap_reverb.h:216
rev_t * ringbuffer
Definition tap_reverb.h:220
float fb_gain
Definition tap_reverb.h:218
float freq_resp
Definition tap_reverb.h:219
unsigned long buflen
Definition tap_reverb.h:221
float feedback
Definition tap_reverb.h:217
unsigned long * buffer_pos
Definition tap_reverb.h:222
rev_t last_out
Definition tap_reverb.h:224
biquad * filter
Definition tap_reverb.h:223
Definition tap_reverb.h:281
unsigned long num_allps
Definition tap_reverb.h:283
ALLP_DATA allps[MAX_ALLPS]
Definition tap_reverb.h:285
LADSPA_Data bandpass_high
Definition tap_reverb.h:287
LADSPA_Data bandpass_low
Definition tap_reverb.h:286
COMB_DATA combs[MAX_COMBS]
Definition tap_reverb.h:284
unsigned long num_combs
Definition tap_reverb.h:282
Definition tap_reverb.h:240
biquad * high_pass
Definition tap_reverb.h:246
LADSPA_Data * decay
Definition tap_reverb.h:249
LADSPA_Data old_mode
Definition tap_reverb.h:265
LADSPA_Data * input_L
Definition tap_reverb.h:258
ALLP_FILTER * allps
Definition tap_reverb.h:244
LADSPA_Data * mode
Definition tap_reverb.h:256
LADSPA_Data * drylevel
Definition tap_reverb.h:250
LADSPA_Data * stereo_enh
Definition tap_reverb.h:255
LADSPA_Data old_stereo_enh
Definition tap_reverb.h:264
LADSPA_Data * output_R
Definition tap_reverb.h:261
LADSPA_Data * wetlevel
Definition tap_reverb.h:251
LADSPA_Data * combs_en
Definition tap_reverb.h:252
unsigned long num_allps
Definition tap_reverb.h:242
biquad * low_pass
Definition tap_reverb.h:245
LADSPA_Data * output_L
Definition tap_reverb.h:259
unsigned long sample_rate
Definition tap_reverb.h:247
LADSPA_Data * bandpass_en
Definition tap_reverb.h:254
unsigned long num_combs
Definition tap_reverb.h:241
LADSPA_Data * input_R
Definition tap_reverb.h:260
COMB_FILTER * combs
Definition tap_reverb.h:243
LADSPA_Data old_decay
Definition tap_reverb.h:263
LADSPA_Data * allps_en
Definition tap_reverb.h:253
LADSPA_Data run_adding_gain
Definition tap_reverb.h:267
bq_t x2
Definition biquad.h:28
bq_t x1
Definition biquad.h:27
bq_t y1
Definition biquad.h:29
bq_t y2
Definition biquad.h:30
#define BIQUAD_TYPE
Definition biquad.h:13
#define LN_2_2
Definition biquad.h:4
BIQUAD_TYPE bq_t
Definition biquad.h:16
sample rev_t
Definition tap_reverb.c:47
#define MAX_ALLPS
Definition tap_reverb.h:54
static void biquad_init(biquad *f)
Definition tap_reverb.h:136
#define MAX_COMBS
Definition tap_reverb.h:53
static void write_buffer(rev_t insample, rev_t *buffer, unsigned long buflen, unsigned long pos, unsigned long n)
Definition tap_reverb.h:107
static rev_t read_buffer(rev_t *buffer, unsigned long buflen, unsigned long pos, unsigned long n)
Definition tap_reverb.h:90
static void eq_set_params(biquad *f, bq_t fc, bq_t gain, bq_t bw, bq_t fs)
Definition tap_reverb.h:146
static rev_t biquad_run(biquad *f, rev_t x)
Definition tap_reverb.h:193
static void lp_set_params(biquad *f, bq_t fc, bq_t bw, bq_t fs)
Definition tap_reverb.h:162
static void hp_set_params(biquad *f, bq_t fc, bq_t bw, bq_t fs)
Definition tap_reverb.h:177
static rev_t push_buffer(rev_t insample, rev_t *buffer, unsigned long buflen, unsigned long *pos)
Definition tap_reverb.h:68
#define LIMIT(v, l, u)
Definition tap_reverb.h:118
int n
Definition crypt.c:458