*** empty log message ***
[chuck-blob.git] / examples / sixty.ck
blob030f35cf1421a118f1d6e256d359b898bdcf7a4e
1 // oscillator demo
2 // - philipd
4 // control oscillators - send to blackhole
5 sinosc modw => blackhole;
6 phasor x => blackhole; 
8 0.125 => modw.freq;
9 60.0 => x.freq;
11 // audio signals
12 x => sinosc s    => Envelope se => dac;
13 x => triosc t    => Envelope te => dac; 
14 t => sinosc ts   => Envelope tse => dac;
15 ts => triosc tst => Envelope tste => dac;
16 x => pulseosc p  => Envelope pe => dac;
17 x => sawosc w    => Envelope we => dac;
18 x => sqrosc q    => Envelope qe => dac;
20 // oscillator sync mode
21 2 => s.sync;     // 2 = sync to input
22 2 => t.sync;
23 2 => ts.sync;
24 2 => tst.sync;
25 2 => p.sync;
26 2 => w.sync;
27 2 => q.sync;
29 // pulse width
30 .25 => p.width;
32 // envelope time
33 0.1 => se.time => te.time => tse.time => tste.time => 
34        pe.time => we.time => qe.time;
36 // pulse width modulation
37 fun void vary()
39     while ( true )
40     {
41         modw.last => t.width;
42         modw.last => p.width;
43         modw.last => w.width;
44         1::ms => now;
45     }
48 // go forth...
49 spork ~vary();
51 // alternate the envelopes
52 0 => int c; 
53 while ( true )
55     if ( c % 7 == 0 ) { 1.0 => se.target; 0.0 => qe.target;}
56     if ( c % 7 == 1 ) { 1.0 => te.target; 0.0 => se.target;}
57     if ( c % 7 == 2 ) { 1.0 => tse.target; 0.0 => te.target;} 
58     if ( c % 7 == 3 ) { 1.0 => tste.target; 0.0 => tse.target;} 
59     if ( c % 7 == 4 ) { 1.0 => pe.target; 0.0 => tste.target;}
60     if ( c % 7 == 5 ) { 1.0 => we.target; 0.0 => pe.target;}
61     if ( c % 7 == 6 ) { 1.0 => qe.target; 0.0 => we.target;}
62     c++;
63     1::second => now;