*** empty log message ***
[chuck-blob.git] / exile / v1 / examples / otf_04.ck
blobf02374375cece63cea24747c07f1a354af9e96dc
1 //----------------------------|
2 // on-the-fly synchronization
3 // adapted from Perry's ChucK Drummin' + Ge's sine poops
4 //
5 // authors: Perry Cook (prc@cs.princeton.edu)
6 //          Ge Wang (gewang@cs.princeton.edu)
7 // --------------------|          
8 // add one by one into VM (in pretty much any order):
9 // 
10 // terminal-1%> chuck --loop
11 // ---
12 // terminal-2%> chuck + otf_01.ck
13 // (anytime later)
14 // terminal-2%> chuck + otf_02.ck
15 // (etc...)
16 //--------------------------------------|
18 // this synchronizes to period
19 .5::second => dur T;
20 T - (now % T) => now;
22 // one period offset
23 T => now;
25 // construct the patch
26 sndbuf buf => gain g => dac;
27 "data/snare-hop.wav" => buf.read;
28 .6 => g.gain;
30 // where we actually want to start
31 100 => int where;
33 // time loop
34 while( true )
36     std.rand2f(.8,.9) => buf.gain;
38     if( std.randf() > -.5 )
39     {
40         where => buf.pos;
41         2::T => now;
42     }
43     else
44     {
45         where => buf.pos;
46         .75::T => now;
47         .8 => buf.gain;
48         where => buf.pos;
49         1.25::T => now;
50     }