// title: chillinoisy // author: vividsnow // description: // background sound inspired by rukano [tweet](http://goo.gl/ttj30) // code: ( var max_spawn = 40; // reduce if get high load var r_prob = 0.5; // prob of field rotation fork { loop { // original rukano tweet: http://goo.gl/ttj30 var len = 16.rrand(3.5); var h = [100,800,3000].choose; play { var sig = Splay.ar({ SinOsc.ar(exprand(60,h),0,0.1) } ! max_spawn.rrand(2), 1, LFGauss.ar(len,1/4.rrand(2.0),0,0,2) ); r_prob.coin.if({ Rotate2.ar(sig[0],sig[1],LFSaw.kr((len/8).rrand(len).reciprocal * [-1,1].choose)) },{ sig }); }; len.wait; }}; fork { loop { var len = 16.rrand(3.5); var top_freq = Array.rand(10, 100, 7000).choose; var ugens = [LFPulse,SinOsc,LFSaw,LFNoise2]; var kind = 0.5.coin.if({ugens},{[ugens.choose]}); // mixed or not play { var sig = Splay.ar({ kind.choose.ar( 0.5.coin.if({ Line.kr( top_freq.linlin(100, 7000, 40, 300).perform(0.5.coin.if({ \exprand },{ \rand }), top_freq), top_freq.linlin(100, 7000, 40, 300).perform(0.5.coin.if({ \exprand },{ \rand }), top_freq), len.rrand(len/4) )},{ top_freq.linlin(100, 7000, 40, 300).perform(0.5.coin.if({ \exprand },{ \rand }), top_freq) } ), mul: 0.5.coin.if({0.05.rrand(0.25)},{Line.kr(0.3.rrand(0), 0.3.rrand(0), (len/4).rrand(len))}) )} ! 5.exprand(max_spawn)) * LFGauss.kr( Line.kr( (1..20).choose.linexp(1, 20, 1/10, 20), (1..20).choose.linexp(1, 20, 1/10, 20), len.rrand(len/4) ), (3,3.2..6).choose.reciprocal, loop: 0.7.coin.binaryValue ) * EnvGen.kr(Env([0,1,0],[0.03.exprand(2), len.rrand(len/2)],[4.rrand(-4)]), doneAction: 2); r_prob.coin.if({ Rotate2.ar(sig[0],sig[1],LFSaw.kr((len/8).rrand(len).reciprocal * [-1,1].choose)) },{ sig }); }; len.postln.wait; }}; fork { loop { var len = 40.rrand(5.0); var ugens = [Klank, DynKlank]; var kind = 0.5.coin.if({ugens},{[ugens.choose]}); // mixed or not play { var sig = LPF.ar( Splay.ar({ kind.choose.ar( `[ Array.perform(0.5.coin.if({\rand},{\exprand}), 10, 60.exprand(300), 18000.rrand(4500)), Array.rand(10, 0.05, 0.25), Array.rand(10, 0, pi), ], Impulse.ar(TExpRand.kr(0.1, 10, Dust.kr((2,4..16).choose/len))), 0.5.coin.if({1},{Line.kr(1, 0.5.rrand(3), 0.5.rrand(len))}) ) } ! 1.exprand(max_spawn)), 2000.rrand(18000), EnvGen.kr( Env( Array.rand(8, 0.2, 0.01).add(0).normalize * 0.1.rrand(0.33), Array.rand(7, 0, 1.0).add(1).normalizeSum * len, Array.rand(8, -4, 4.0) ), doneAction: 2 ) ); r_prob.coin.if({ Rotate2.ar(sig[0],sig[1],LFSaw.kr((len/8).rrand(len).reciprocal * [-1,1].choose)) },{ sig }); }; len.postln.wait; }}; )