496 enum {
value = summer_offset<
i - 1>
::value + ((2 +
i - 1) << 16) };
535 void clock(
int voice1,
int voice2,
int voice3);
536 void clock(cycle_count delta_t,
int voice1,
int voice2,
int voice3);
615 unsigned short gain[16][1 << 16];
619 unsigned short f0_dac[1 << 11];
642 static unsigned short vcr_kVg[1 << 16];
657#if RESID_INLINING || defined(RESID_FILTER_CC)
667 v1 = (voice1*
f.voice_scale_s14 >> 18) +
f.voice_DC;
668 v2 = (voice2*
f.voice_scale_s14 >> 18) +
f.voice_DC;
669 v3 = (voice3*
f.voice_scale_s14 >> 18) +
f.voice_DC;
761void Filter::clock(cycle_count delta_t,
int voice1,
int voice2,
int voice3)
765 v1 = (voice1*
f.voice_scale_s14 >> 18) +
f.voice_DC;
766 v2 = (voice2*
f.voice_scale_s14 >> 18) +
f.voice_DC;
767 v3 = (voice3*
f.voice_scale_s14 >> 18) +
f.voice_DC;
850 cycle_count delta_t_flt = 3;
855 if (
unlikely(delta_t < delta_t_flt)) {
856 delta_t_flt = delta_t;
864 delta_t -= delta_t_flt;
870 if (
unlikely(delta_t < delta_t_flt)) {
871 delta_t_flt = delta_t;
879 delta_t -= delta_t_flt;
901 ve = (
sample*
f.voice_scale_s14*3 >> 14) +
f.mixer[0];
936 switch (
mix & 0x7f) {
1452 return (
short)(
f.gain[
vol][
f.mixer[offset + Vi]] - (1 << 15));
1519 int ak = mf.ak,
bk = mf.bk;
1521 int a =
n + (1 << 7);
1524 if (b_vi < 0) b_vi = 0;
1525 int c =
n*
int(
unsigned(b_vi)*
unsigned(b_vi) >> 12);
1531 int vx = opamp[
x].vx;
1532 int dvx = opamp[
x].dvx;
1537 int vo = vx + (
x << 1) - (1 << 16);
1538 if (vo >= (1 << 16)) {
1545 if (b_vx < 0) b_vx = 0;
1547 if (b_vo < 0) b_vo = 0;
1549 int f =
a*
int(
unsigned(b_vx)*
unsigned(b_vx) >> 12) -
c -
int(
unsigned(b_vo)*
unsigned(b_vo) >> 5);
1551 int df = ((b_vo*(dvx + (1 << 11)) >> 1) - (
a*(b_vx*dvx >> 8))) >> 14;
1595 int ak = mf.ak,
bk = mf.bk;
1599 double b_vi =
b > vi ? double(
b - vi) : 0.;
1600 double c =
n*(b_vi*b_vi);
1606 int vx = opamp[
x].vx;
1607 int dvx = opamp[
x].dvx;
1612 int vo = vx + (
x << 1) - (1 << 16);
1613 if (vo > (1 << 16) - 1) {
1619 double b_vx =
b > vx ? double(
b - vx) : 0.;
1620 double b_vo =
b > vo ? double(
b - vo) : 0.;
1622 double f =
a*(b_vx*b_vx) -
c - (b_vo*b_vo);
1624 double df = 2.*(b_vo -
a*b_vx)*
double(dvx);
1631 x -=
int(
double(1<<11)*
f/df);
1787 int kVddt = mf.kVddt;
1790 unsigned int Vgst = kVddt - vx;
1791 unsigned int Vgdt = kVddt - vi;
1792 unsigned int Vgdt_2 = Vgdt*Vgdt;
1795 int n_I_snake =
n_snake*(
int(Vgst*Vgst - Vgdt_2) >> 15);
1803 if (Vgs < 0) Vgs = 0;
1805 if (Vgd < 0) Vgd = 0;
1811 vc -= (n_I_snake + n_I_vcr)*
dt;
1824 vx = mf.opamp_rev[(vc >> 15) + (1 << 15)];
1827 return vx + (vc >> 14);
1858 unsigned int Vgst =
nVgt - vx;
1859 unsigned int Vgdt = (vi <
nVgt) ?
nVgt - vi : 0;
1862 int n_I_rfc =
n_dac*(
int(Vgst*Vgst - Vgdt*Vgdt) >> 15);
1868 vx = mf.opamp_rev[(vc >> 15) + (1 << 15)];
1871 return vx + (vc >> 14);
#define unlikely(x)
Definition CarlaDefines.h:163
static float dt(char val)
Definition EnvelopeFreeEdit.cpp:124
uint8_t a
Definition Spc_Cpu.h:141
static const unsigned long mask[]
Definition bitwise.c:31
int v1
Definition filter.h:414
int Vlp
Definition filter.h:408
int solve_integrate_8580(int dt, int vi_t, int &x, int &vc, model_filter_t &mf)
reg8 sum
Definition filter.h:401
int Vw_bias
Definition filter.h:417
int v3
Definition filter.h:412
reg8 filt
Definition filter.h:387
reg8 voice_mask
Definition filter.h:397
static unsigned short vcr_kVg[1<< 16]
Definition filter.h:455
static int n_snake
Definition filter8580new.h:626
reg8 mix
Definition filter.h:402
int n_dac
Definition filter8580new.h:629
int solve_integrate_6581(int dt, int vi_t, int &x, int &vc, model_filter_t &mf)
chip_model sid_model
Definition filter.h:423
void set_chip_model(chip_model model)
int solve_gain_d(opamp_t *opamp, double n, int vi_t, int &x, model_filter_t &mf)
void enable_filter(bool enable)
reg4 vol
Definition filter.h:393
int solve_gain(opamp_t *opamp, int n, int vi_t, int &x, model_filter_t &mf)
static unsigned short vcr_n_Ids_term[1<< 16]
Definition filter.h:456
void clock(cycle_count delta_t, int voice1, int voice2, int voice3)
int Vlp_x
Definition filter.h:409
int ve
Definition filter.h:411
int nVgt
Definition filter8580new.h:634
int Vbp_vc
Definition filter.h:407
int v2
Definition filter.h:413
int Vbp_x
Definition filter.h:407
static int n_param
Definition filter8580new.h:631
int Vlp_vc
Definition filter.h:409
reg12 fc
Definition filter.h:381
bool enabled
Definition filter.h:378
static model_filter_t model_filter[2]
Definition filter.h:458
int Vbp
Definition filter.h:406
reg8 res
Definition filter.h:384
void adjust_filter_bias(double dac_bias)
int Vddt_Vw_2
Definition filter.h:417
friend class SID
Definition filter.h:460
reg4 mode
Definition filter.h:390
void clock(int voice1, int voice2, int voice3)
void set_voice_mask(reg4 mask)
int Vhp
Definition filter.h:405
G bk
Definition inflate.c:1058
register unsigned i
Definition inflate.c:1575
unsigned x[BMAX+1]
Definition inflate.c:1586
unsigned f
Definition inflate.c:1572
static void v2(register WDL_FFT_REAL *a)
Definition fft.c:1099
double x(PointIter p)
Definition spline.h:188
unsigned short summer[summer_offset< 5 >::value]
Definition filter.h:444
int vo_N16
Definition filter.h:431
unsigned short resonance[16][1<< 16]
Definition filter8580new.h:616
unsigned short f0_dac[1<< 11]
Definition filter.h:448
unsigned short opamp_rev[1<< 16]
Definition filter.h:442
unsigned short gain[16][1<< 16]
Definition filter.h:445
unsigned short mixer[mixer_offset< 8 >::value]
Definition filter.h:446
@ value
Definition filter.h:330
@ value
Definition filter.h:317
signed int sample
Definition tap_dynamics_m.c:41
int n
Definition crypt.c:458
return c
Definition crypt.c:175
typedef int(UZ_EXP MsgFn)()