356 void clock(
int voice1,
int voice2,
int voice3);
357 void clock(cycle_count delta_t,
int voice1,
int voice2,
int voice3);
445 unsigned short gain[16][1 << 16];
470#if RESID_INLINING || defined(RESID_FILTER_CC)
480 v1 = (voice1*
f.voice_scale_s14 >> 18) +
f.voice_DC;
481 v2 = (voice2*
f.voice_scale_s14 >> 18) +
f.voice_DC;
482 v3 = (voice3*
f.voice_scale_s14 >> 18) +
f.voice_DC;
568 int dVbp =
w0*(
Vhp >> 4) >> 16;
569 int dVlp =
w0*(
Vbp >> 4) >> 16;
580void Filter::clock(cycle_count delta_t,
int voice1,
int voice2,
int voice3)
584 v1 = (voice1*
f.voice_scale_s14 >> 18) +
f.voice_DC;
585 v2 = (voice2*
f.voice_scale_s14 >> 18) +
f.voice_DC;
586 v3 = (voice3*
f.voice_scale_s14 >> 18) +
f.voice_DC;
669 cycle_count delta_t_flt = 3;
674 if (
unlikely(delta_t < delta_t_flt)) {
675 delta_t_flt = delta_t;
683 delta_t -= delta_t_flt;
689 if (delta_t < delta_t_flt) {
690 delta_t_flt = delta_t;
698 int w0_delta_t =
w0*delta_t_flt >> 2;
700 int dVbp = w0_delta_t*(
Vhp >> 4) >> 14;
701 int dVlp = w0_delta_t*(
Vbp >> 4) >> 14;
706 delta_t -= delta_t_flt;
728 ve = (
sample*
f.voice_scale_s14*3 >> 14) +
f.mixer[0];
763 switch (
mix & 0x7f) {
1280 return (
short)(
f.gain[
vol][
f.mixer[offset + Vi]] - (1 << 15));
1286 int tmp = Vi*(
int)
vol >> 4;
1287 if (tmp < -32768) tmp = -32768;
1288 if (tmp > 32767) tmp = 32767;
1289 return (
short)tmp; }
1341 int ak = mf.ak,
bk = mf.bk;
1343 int a =
n + (1 << 7);
1346 if (b_vi < 0) b_vi = 0;
1347 int c =
n*
int(
unsigned(b_vi)*
unsigned(b_vi) >> 12);
1353 int vx = opamp[
x].vx;
1354 int dvx = opamp[
x].dvx;
1359 int vo = vx + (
x << 1) - (1 << 16);
1360 if (vo >= (1 << 16)) {
1367 if (b_vx < 0) b_vx = 0;
1369 if (b_vo < 0) b_vo = 0;
1371 int f =
a*
int(
unsigned(b_vx)*
unsigned(b_vx) >> 12) -
c -
int(
unsigned(b_vo)*
unsigned(b_vo) >> 5);
1373 int df = ((b_vo*(dvx + (1 << 11)) >> 1) - (
a*(b_vx*dvx >> 8))) >> 14;
1535 int kVddt = mf.kVddt;
1538 unsigned int Vgst = kVddt - vx;
1539 unsigned int Vgdt = kVddt - vi;
1540 unsigned int Vgdt_2 = Vgdt*Vgdt;
1543 int n_I_snake = mf.n_snake*(
int(Vgst*Vgst - Vgdt_2) >> 15);
1551 if (Vgs < 0) Vgs = 0;
1553 if (Vgd < 0) Vgd = 0;
1559 vc -= (n_I_snake + n_I_vcr)*
dt;
1572 vx = mf.opamp_rev[(vc >> 15) + (1 << 15)];
1575 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
reg8 sum
Definition filter.h:401
int Vw_bias
Definition filter.h:417
int _1024_div_Q
Definition filter.h:421
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
int _8_div_Q
Definition filter.h:418
reg8 mix
Definition filter.h:402
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)
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 Vbp_vc
Definition filter.h:407
int v2
Definition filter.h:413
int Vbp_x
Definition filter.h:407
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 w0
Definition filter.h:420
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
int vc_max
Definition filter.h:439
unsigned short summer[summer_offset< 5 >::value]
Definition filter.h:444
int bk
Definition filter.h:437
int vc_min
Definition filter.h:438
int vo_N16
Definition filter.h:431
int voice_DC
Definition filter.h:435
unsigned short f0_dac[1<< 11]
Definition filter.h:448
int ak
Definition filter.h:436
int kVddt
Definition filter.h:432
unsigned short opamp_rev[1<< 16]
Definition filter.h:442
int voice_scale_s14
Definition filter.h:434
int n_snake
Definition filter.h:433
unsigned short gain[16][1<< 16]
Definition filter.h:445
unsigned short mixer[mixer_offset< 8 >::value]
Definition filter.h:446
short dvx
Definition filter.h:427
unsigned short vx
Definition filter.h:426
@ value
Definition filter.h:342
@ value
Definition filter.h:336
@ value
Definition filter.h:330
@ value
Definition filter.h:323
@ 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)()