*** empty log message ***
[chuck-blob.git] / exile / v1 / examples / fmsynth.ck
blob890a0b2f9000966e82bfecd03f6c97a5eab47dd4
1 // fm synth "by hand"
2 // to be legit, we should be polling another sinosc (see sixty.ck, pwm.ck)
3 // - pld  06/17/04
5 440.0 => float fc;
6 100.0 => float fm;
7 100.0  => float ampM;
8 0.0 => float frq;
9 0.0 => float t;
11 // the patch
12 sinosc modulation => sinosc carrier => dac;
14 fm => modulation.sfreq;
15 fc => carrier.sfreq;
16 0.5 => carrier.gain;
18 // shred
19 fun void fmloop() {
20     while ( true ) { 
21         fc + ampM * modulation.last => carrier.sfreq;
22         1::samp => now;
23     }
26 spork ~fmloop();
28 // time loop
29 while ( true )
31     120.0 + 120.0 * math.sin( t * 0.2 ) => fm;  //modulate modulators
32     fm => modulation.sfreq;
34     100.0 + 50.0 * math.sin ( t * 0.05 ) => ampM; //modulate mod amplitude.
36     t + 0.001 => t;
37     1::ms => now;