// Sine with vibrato Class, uses // Simple tabulated sine LFO // compute and fill table only once // P. Cook, March 2013 class LFO extends Chugen { 256 => int VECT; float sine[VECT]; 0.01 => float myFreq; 0.0 => float count; for (0 => int i; i < VECT; i++) Math.sin(2*pi/VECT*i) => sine[i]; fun float tick(float input) { // here we ignore the input myFreq +=> count; while (count >= VECT) VECT -=> count; count $ int => int counter; return sine[counter]; } fun void freq(float aFreq) { aFreq * VECT / 44100.0 => myFreq; } } class WigglySine extends Chubgraph { Step stp => Gain frq => SinOsc s => dac; LFO lfo => frq; 1.0 => stp.next; 6.0 => lfo.freq; 0.05 => lfo.gain; 2 => s.sync; 300.0 => frq.gain; fun float freq( float f) { f => frq.gain; } } WigglySine ws; 300.0 => ws.freq; 1.0 :: second => now; 400.0 => ws.freq; 1.0 :: second => now; 500.0 => ws.freq; 1.0 :: second => now;