*** empty log message ***
[chuck-blob.git] / examples / voic-o-form.ck
blob9c9e3890069e93f28751a7b58f94546d5a2a822d
1 // music for replicants
3 VoicForm voc=> JCRev r => Echo a => Echo b => Echo c => dac;
5 220.0 => voc.freq;
6 0.95 => voc.gain;
7 .8 => r.gain;
8 .2 => r.mix;
9 1000::ms => a.max => b.max => c.max;
10 750::ms => a.delay => b.delay => c.delay;
11 .50 => a.mix => b.mix => c.mix;
13 // shred to modulate the mix
14 fun void vecho_shred( )
16     0.0 => float decider;
17     0.0 => float mix;
18     0.0 => float old;
19     0.0 => float inc;
20     0 => int n;
22     // time loop
23     while( true )
24     {
25         std.rand2f(0.0,1.0) => decider;
26         if( decider < .3 ) 0.0 => mix;
27         else if( decider < .6 ) .08 => mix;
28         else if( decider < .8 ) .5 => mix;
29         else .15 => mix;
31         // find the increment
32         (mix-old)/1000.0 => inc;
33         1000 => n;
34         while( n-- )
35         {
36             old + inc => old;
37             old => a.mix => b.mix => c.mix;
38             1::ms => now;
39         }
40         mix => old;
41         std.rand2(2,6)::second => now;
42     }
45 // let echo shred go
46 spork ~ vecho_shred();
47 0.5 => voc.loudness;
48 0.01 => voc.vibratoGain;
49 // our main loop
50 while( true )
52     2 * std.rand2( 0,2 ) => int bphon;
53     bphon => voc.setPhoneme;
54     std.rand2f( 0.6, 0.8 ) => voc.noteOn;
56     if( std.randf() > 0.7 )
57     { 1000::ms => now; }
58     else if( std.randf() > .7 )
59     { 500::ms => now; }
60     else if( std.randf() > -0.8 )
61     { .250::second => now; }
62     else
63     {
64         0 => int i;
65         4 * std.rand2( 1, 4 ) => int pick;
66         0 => int pick_dir;
67         0.0 => float pluck;
69         for( ; i < pick; i++ )
70         {
71             bphon + 1 * pick_dir => voc.setPhoneme;
72             std.rand2f(.4,.6) + (float)i*.035 => pluck;
73             pluck + 0.0 * (float)pick_dir => voc.noteOn;
74             !pick_dir => pick_dir;
75             250::ms => now;
76         }
77     }
79     // pentatonic
80     2 * std.rand2( 0, 4 ) => int freq;
81     if( freq == 6 ) 7 => freq;
82     if( freq == 8 ) 9 => freq;
83     std.mtof( (float)( 45 + std.rand2(0,2) * 12 + freq ) ) => voc.freq;