*** empty log message ***
[chuck-blob.git] / v2 / examples / stk / shake-o-matic.ck
blob08d7f2903c2ce56e18cd4c48a6ff09bd72bd08c5
1 //---------------|
2 // shake-o-matic!
3 // by: Ge Wang (gewang@cs.princeton.edu)
4 //     Perry R. Cook (prc@cs.princeton.edu)
5 //------------------|
7 // our patch
8 Shakers shake => JCRev r => dac;
9 // set the gain
10 //.95 => r.gain;
11 // set the reverb mix
12 .025 => r.mix;
14 // our main loop
15 while( true )
17     // frequency..
18     if ( Std.randf() > 0.25 )
19     {
20         Std.rand2( 0, 22 ) => shake.which;
21         Std.mtof( Std.rand2f( 0.0, 128.0 ) ) => shake.freq;
22         Std.rand2f( 0, 128 ) => shake.objects;
23         <<< "instrument #:", shake.which(), shake.freq(), shake.objects() >>>;
24     }
26     // shake it!
27     Std.rand2f( 0.8, 1.3 ) => shake.noteOn;
29     if( Std.randf() > 0.8 )
30     { 500::ms => now; }
31     else if( Std.randf() > .85 )
32     { 250::ms => now; }
33     else if( Std.randf() > -0.9 )
34     { .125::second => now; }
35     else
36     {
37         1 => int i => int pick_dir;
38         // how many times
39         4 * Std.rand2( 1, 5 ) => int pick;
40         0.0 => float pluck;
41         0.7 / pick => float inc;
42         // time loop
43         for( ; i < pick; i++ )
44         {
45             75::ms => now;
46             Std.rand2f(.2,.3) + i*inc => pluck;
47             pluck + -.2 * pick_dir => shake.noteOn;
48             // simulate pluck direction
49             !pick_dir => pick_dir;
50         }
52         // let time pass for final shake
53         75::ms => now;
54     }