File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -44,6 +44,35 @@ class AntialiasedRampOscillator : public OscillatorTemplate<AntialiasedRampOscil
4444 sample -= polyblep (phase, incr);
4545 return sample;
4646 }
47+ void generate (FloatArray output){
48+ size_t len = output.getSize ();
49+ float blep;
50+ if (phase < incr){ // discontinuity at previous sample
51+ float t = phase / incr;
52+ blep = t+t - t*t - 1 ;
53+ }else {
54+ blep = 0 ;
55+ }
56+ for (size_t i=0 ; i<len; ++i){
57+ float sample = 2 *phase-1 ;
58+ sample -= blep;
59+ phase += incr;
60+ if (phase >= 1 ){
61+ // wrap phase
62+ phase -= 1 ;
63+ // correct current sample
64+ float t = (phase - incr) / incr;
65+ sample -= t*t + t+t + 1 ;
66+ // correct next sample
67+ t = phase / incr;
68+ blep = t+t - t*t - 1 ;
69+ }else {
70+ blep = 0 ;
71+ }
72+ output[i] = sample;
73+ }
74+ }
75+ using OscillatorTemplate<AntialiasedRampOscillator>::generate;
4776};
4877
4978#endif /* __RampOscillator_h */
You can’t perform that action at this time.
0 commit comments