23#ifndef __CALF_LOUDNESS_H
24#define __CALF_LOUDNESS_H
29#define M_PI 3.14159265358979323846264338327
56 bq1.set_bilinear(0, 0, 1, f1*f1, 2 * f1, 1);
57 bq2.set_bilinear(1, 0, 0, f2*f3, f2 + f3, 1);
58 bq3.set_bilinear(0, 0, 1, f4*f4, 2 * f4, 1);
63 float gc = 1.0 / gain1kHz;
113 float i,
j,
k,
g,a0,a1,a2,b1,b2,tau1,tau2,tau3;
135 i = 1.f / (2.f *
M_PI * tau1);
136 j = 1.f / (2.f *
M_PI * tau2);
137 k = 1.f / (2.f *
M_PI * tau3);
143 i = 1.f / (2.f *
M_PI * tau1);
144 j = 1.f / (2.f *
M_PI * tau2);
145 k = 1.f / (2.f *
M_PI * tau3);
151 i = 1.f / (2.f *
M_PI * tau1);
152 j = 1.f / (2.f *
M_PI * tau2);
153 k = 1.f / (2.f *
M_PI * tau3);
159 i = 1.f / (2.f *
M_PI * tau1);
160 j = 1.f / (2.f *
M_PI * tau2);
161 k = 1.f / (2.f *
M_PI * tau3);
176 float tau = (
type == 7 ? 0.000050 : 0.000075);
177 float f = 1.0 / (2 *
M_PI * tau);
178 float nyq = sr * 0.5f;
179 float gain = sqrt(1.0 + nyq * nyq / (
f *
f));
180 float cfreq = sqrt((gain - 1.0) *
f *
f);
183 q = pow((sr / 3269.0) + 19.5, -0.25);
185 q = pow((sr / 4750.0) + 19.5, -0.25);
187 r1.set_highshelf_rbj(cfreq,
q, 1.f / gain, sr);
189 r1.set_highshelf_rbj(cfreq,
q, gain, sr);
196 a0 = (2.f*
t+
j*
t*
t)*
g;
198 a2 = (-2.f*
t+
j*
t*
t)*
g;
199 b1 = (-8.f+2.f*
i*
k*
t*
t)*
g;
202 g = 1.f / (2.f*
t+
j*
t*
t);
204 a1 = (-8.f+2.f*
i*
k*
t*
t)*
g;
207 b2 = (-2.f*
t+
j*
t*
t)*
g;
214 float gain1kHz = coeffs.
freq_gain(1000.0, sr);
216 float gc = 1.0 / gain1kHz;
217 r1.a0 = coeffs.
a0 * gc;
218 r1.a1 = coeffs.
a1 * gc;
219 r1.a2 = coeffs.
a2 * gc;
226 float cutfreq = std::min(0.45f * sr, 21000.f);
227 brickw.set_lp_rbj(cutfreq, 0.707f, sr, 1.f);
CAdPlugDatabase::CRecord::RecordType type
Definition adplugdb.cpp:93
biquad_d2 bq1
Definition loudness.h:37
biquad_d2 bq3
Definition loudness.h:37
void set(float sr)
Set sample rate (updates filter coefficients).
Definition loudness.h:46
void reset()
Reset state to zero.
Definition loudness.h:78
biquad_d2 bq2
Definition loudness.h:37
float process(float sample)
Produce one output sample from one input sample.
Definition loudness.h:40
void sanitize()
Reset to zero if at risk of denormals.
Definition loudness.h:70
float freq_gain(float freq, float sr)
Gain and a given frequency.
Definition loudness.h:86
double b2
Definition biquad.h:52
double a0
Definition biquad.h:52
double a2
Definition biquad.h:52
float freq_gain(float freq, float sr) const
Definition biquad.h:321
double b1
Definition biquad.h:52
static double unwarpf(float t, float sr)
convert analog filter time constant to digital counterpart
Definition biquad.h:205
double a1
Definition biquad.h:52
void set_bilinear_direct(double aa0, double aa1, double aa2, double ab1, double ab2)
set digital filter parameters directly
Definition biquad.h:226
void set(float sr, int mode, int type)
Set sample rate (updates filter coefficients).
Definition loudness.h:111
biquad_d2 brickw
Definition loudness.h:96
bool use_brickw
Definition loudness.h:97
float freq_gain(float freq, float sr) const
Gain and a given frequency.
Definition loudness.h:245
void sanitize()
Reset to zero if at risk of denormals.
Definition loudness.h:232
float process(float sample)
Produce one output sample from one input sample.
Definition loudness.h:105
riaacurve()
Definition loudness.h:99
biquad_d2 r1
Definition loudness.h:95
void reset()
Reset state to zero.
Definition loudness.h:239
#define M_PI
Definition compat.h:149
struct huft * t
Definition inflate.c:943
register unsigned k
Definition inflate.c:946
register unsigned j
Definition inflate.c:1576
int g
Definition inflate.c:1573
register unsigned i
Definition inflate.c:1575
unsigned f
Definition inflate.c:1572
JHUFF_TBL long freq[]
Definition jchuff.h:50
png_structrp int mode
Definition png.h:1139
signed int sample
Definition tap_dynamics_m.c:41
register uch * q
Definition fileio.c:817