// Birdies version 0.2 // by Kijjasak Triyanond (kijjaz) - kijjaz@yahoo.com // licence: Attribution-Share Alike 3.0 // You are free: // * to Share — to copy, distribute and transmit the work // * to Remix — to adapt the work // Under the following conditions: // * Attribution. You must attribute the work in the manner specified by the author or licensor // (but not in any way that suggests that they endorse you or your use of the work). // * Share Alike. If you alter, transform, or build upon this work, // you may distribute the resulting work only under the same, similar or a compatible license. 3 => int N; // Birdies Complexity! SinOsc s[N]; Step f[N]; Gain s_FMDepth[N]; Noise n1 => LPF n1_f => HalfRect n1_f_rect => Gain amp_env; n1_f.freq(12); // how often they appear and disappear n1_f.Q(.3); amp_env.op(3); for(int i; i < N; i++) { f[i] => s[i]; if (i < N-1) s[i] => s_FMDepth[i] => s[i + 1]; 2 => s[i].sync; } s[N - 1] => BPF f1 => amp_env => PRCRev rev => dac; 5 => s[N - 1].gain; rev.mix(.1); // reverb mix f1.set(6000, .6); // use this to set bird size / distant while(true) { for(int i; i < N; i++) { // change any of these values create diversities of birds Std.rand2f(1, 10) * i => s[i].freq; (1 + Std.rand2f(1, 5)) * i + Std.rand2f(0, 5) => f[i].next; Std.rand2f(10, 2500) => s_FMDepth[i].gain; } Std.rand2f(100, 1500)::ms => now; // how crowded the forest is }