*** empty log message ***
[chuck-blob.git] / v2 / examples / stk / band-o-matic.ck
blob3870b4a5b1a97a98044d55730e12fcc9eca4389f
1 // banded waveguide sample
3 // the patch
4 BandedWG band => JCRev r => dac;
6 // presets
7 0.95 => band.gain;
8 1 => band.preset;
9 Std.mtof( ( 21 + Std.rand2(0,3) * 12 + 7 ) ) => band.freq;
10 .8 => r.gain;
11 .1 => r.mix;
13 // scale
14 [ 0, 2, 4, 7, 9 ] @=> int scale[];
16 // our main time loop
17 while( true )
18 {    
19     Std.rand2f( 0.1, 0.9 ) => band.bowRate;
20     Std.rand2f( 0.2, 0.35 ) => band.bowPressure;
21     Std.rand2f( 0.6, 0.8 ) => band.startBowing;
23     if( Std.randf() > 0.7 )
24     { 1000::ms => now; }
25     else if( Std.randf() > .7 )
26     { 500::ms => now; }
27     else if( Std.randf() > 0.2 )
28     { .250::second => now; }
29     else
30     {
31         0 => int i;
32         4 * Std.rand2( 1, 4 ) => int pick;
33         0 => int pick_dir;
34         0.0 => float pluck;
35         Std.rand2f( 50.0, 200.0 ) => float d;
37         for( ; i < pick; 1 +=> i )
38         {
39             Std.rand2f(.4,.6) + i*.35/pick => pluck;
40             pluck + 0.1 * pick_dir => band.pluck;
41             !pick_dir => pick_dir;
42             d::ms => now;
43         }
44     }
46     if ( Std.randf() > 0.2 )
47     { 
48         1::second => now;
49         0.001 => band.stopBowing;
50         0.5::second *  Std.rand2(1,3) => now;
52         // scale
53         scale[Std.rand2(0, scale.cap()-1)] => int freq;
54         Std.mtof( 21 + Std.rand2(0,5) * 12 + freq ) => band.freq;
55         if ( Std.randf() > 0.7 ) 
56             Std.rand2(0,3) => band.preset;
57     }