1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
ix!();

use crate::AbstractBlitter;

pub fn new_integrator_hpf(samplerate_inv: f32) -> f32 {
    let x = 1.0 - 2.0 * 20.0 * samplerate_inv;
    x * x
}

impl AbstractBlitter {

    pub fn new(srunit: & SampleRateHandle) -> Self {
        Self {
            oscbuffer_l:          Align16(A1d::<f32>::zeros( OB_LENGTH + FIR_IPOL_N )),
            oscbuffer_r:          Align16(A1d::<f32>::zeros( OB_LENGTH + FIR_IPOL_N )),
            dcbuffer:             Align16(A1d::<f32>::zeros( OB_LENGTH + FIR_IPOL_N )),
            osc_out_l:            unsafe{ z128![] },
            osc_out_2l:           unsafe{ z128![] },
            osc_out_r:            unsafe{ z128![] },
            osc_out_2r:           unsafe{ z128![] },
            integrator_hpf:       new_integrator_hpf(srunit.samplerate_inv()),
            pitchmult:            0.0,
            pitchmult_inv:        0.0,
            n_unison:             0,
            bufpos:               0,
            out_attenuation:      0.0,
            out_attenuation_inv:  0.0,
            detune_bias:          0.0,
            detune_offset:        0.0,
            oscstate:             A1d::<f32>::zeros(MAX_UNISON),
            syncstate:            A1d::<f32>::zeros(MAX_UNISON),
            rate:                 A1d::<f32>::zeros(MAX_UNISON),
            driftlfo:             A1d::<f32>::zeros(MAX_UNISON),
            driftlfo2:            A1d::<f32>::zeros(MAX_UNISON),
            pan_l:                A1d::<f32>::zeros(MAX_UNISON),
            pan_r:                A1d::<f32>::zeros(MAX_UNISON),
            state:                A1d::<i32>::zeros(MAX_UNISON),
        }
    }
}