//how many thangs do we need to become a planet? 4 => int thangs; 27.5 * Math.pow(2.0,(3.0/12.0)) => float oil_sun; 55.0 * Math.pow(2.0,(5.0/12.0)) * 7.0/8.0 => float oil_moon; //is my sun huge? .7 => float sun_is_big; 1.0 - sun_is_big => float moon_is_small; //how big is his main thang? .5 => float dick_sun; .35 => float dick_moon; SinOsc sun_thangs[thangs]; SinOsc moon_thangs[thangs]; Pan2 sun_pans[thangs]; Pan2 moon_pans[thangs]; ADSR sun_adsrs[thangs]; ADSR moon_adsrs[thangs]; for( 0=> int n; n< thangs; n++) { sun_thangs[n] => sun_adsrs[n] => sun_pans[n] => dac; moon_thangs[n] => moon_adsrs[n] => moon_pans[n] => dac; sun_adsrs[n].set( 10::ms, 30::ms, .3, 5::ms); moon_adsrs[n].set( 10::ms, 30::ms, .3, 5::ms); } oil_sun * Std.rand2(16,8) / 8.0 => sun_thangs[0].freq; oil_moon * Std.rand2(16,8) / 8.0 => moon_thangs[0].freq; sun_is_big * dick_sun => sun_pans[0].gain; moon_is_small * dick_moon => moon_pans[0].gain; for( 1=> int n; n< thangs; n++) { sun_is_big * (1.0 - dick_sun)/(thangs-1) => sun_pans[n].gain; moon_is_small * (1.0 - dick_moon)/(thangs-1) => moon_pans[n].gain; } fun void ga() { while(true) { oil_moon * Std.rand2(16,8) / 8.0 => moon_thangs[0].freq; oil_moon * Std.rand2(16,8) / 4.0 => moon_thangs[1].freq; oil_moon * Std.rand2(16,8) / 4.0 => moon_thangs[2].freq; sun_thangs[0].freq() * Std.rand2(16,8) / 2.0 => moon_thangs[3].freq; Std.rand2f(-0.5,0.5) => moon_pans[0].pan; for( 1=> int n; n< thangs; n++) { Std.rand2f(-1.0,1.0) => moon_pans[n].pan; } moon_adsrs[0].keyOn(); 70::ms => now; moon_adsrs[0].keyOff(); 70::ms => now; moon_adsrs[1].keyOn(); moon_adsrs[2].keyOn(); 70::ms => now; moon_adsrs[1].keyOff(); moon_adsrs[2].keyOff(); 70::ms => now; moon_adsrs[3].keyOn(); 70::ms => now; moon_adsrs[3].keyOff(); 70::ms => now; moon_adsrs[1].keyOn(); moon_adsrs[3].keyOn(); 70::ms => now; moon_adsrs[1].keyOff(); moon_adsrs[3].keyOff(); 70::ms => now; moon_adsrs[2].keyOn(); 70::ms => now; moon_adsrs[2].keyOff(); 70::ms => now; 70::ms => now; 70::ms => now; moon_adsrs[0].keyOn(); moon_adsrs[1].keyOn(); moon_adsrs[2].keyOn(); moon_adsrs[3].keyOn(); 70::ms => now; moon_adsrs[0].keyOff(); moon_adsrs[1].keyOff(); moon_adsrs[2].keyOff(); moon_adsrs[3].keyOff(); 70::ms => now; } } fun void pa() { while(true) { oil_sun * Std.rand2(16,8) / 8.0 => sun_thangs[0].freq; oil_sun * Std.rand2(16,8) / 4.0 => sun_thangs[1].freq; oil_sun * Std.rand2(16,8) / 4.0 => sun_thangs[2].freq; moon_thangs[0].freq() * Std.rand2(16,8) / 8.0 => sun_thangs[3].freq; Std.rand2f(-0.5,0.5) => sun_pans[0].pan; for( 1=> int n; n< thangs; n++) { Std.rand2f(-1.0,1.0) => sun_pans[n].pan; } sun_adsrs[0].keyOn(); 155::ms => now; sun_adsrs[0].keyOff(); 155::ms => now; sun_adsrs[1].keyOn(); sun_adsrs[2].keyOn(); 155::ms => now; sun_adsrs[1].keyOff(); sun_adsrs[2].keyOff(); 155::ms => now; sun_adsrs[3].keyOn(); 155::ms => now; sun_adsrs[3].keyOff(); 155::ms => now; 155::ms => now; 155::ms => now; sun_adsrs[0].keyOn(); sun_adsrs[1].keyOn(); sun_adsrs[2].keyOn(); sun_adsrs[3].keyOn(); 155::ms => now; sun_adsrs[0].keyOff(); sun_adsrs[1].keyOff(); sun_adsrs[2].keyOff(); sun_adsrs[3].keyOff(); 155::ms => now; } } spork ~ ga(); spork ~ pa(); while( true ) { 7::second => now; Std.rand2f(45.0,75.0) => oil_sun; Std.rand2f(83.0,113.0) => oil_moon; }