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
ix!();

use crate::{
    SineWaveOscillatorParam,
    SineWaveOscillatorParamArrayRT,
};

#[derive(Debug)]
pub struct SineWaveOscillator {
    pub tuner:       TunerHandle,
    pub master_osc:  *mut f32,
    pub params:      SineWaveOscillatorParamArrayRT,
    pub osc_params:  OscillatorParamArrayRT,
    pub out:         OscillatorOut,
    pub sine:        QuadrOsc,
    pub phase:       f64,
    pub driftlfo1:   f32,
    pub driftlfo2:   f32,
    pub fm_depth:    Lag<f64>,
    pub feedback:    Lag<f64>,
    pub lastvalue:   f32,
}

oscillator!    [SineWaveOscillator, SineWaveOscillatorParam];
name!          [SineWaveOscillator,       "oscillator.sine"];
no_op!         [SineWaveOscillator,                SetPitch];
no_op!         [SineWaveOscillator,                AssignFM];
allow_display! [SineWaveOscillator,                    true];