// title: randochestra // author: vividsnow // description: // exploring of morphing cycled envelopes (i.e. kind of grains) as a sound source; give it some tries - there are possibly interesting ones // code: ( Ndef(\ro_v19, { var freq = 40.rrand(90).debug('base freq'); var seed = thisThread.randSeed = 1000000000.rand.debug('seed'); var gen = [LFNoise2,LFNoise0,SinOsc,LFPulse,LFSaw]; var sig = Splay.ar({ var i = 4.exprand(40).asInteger; Median.ar( 3.exprand(18), EnvGen.ar( Env( // wave form [0] ++ Array.fill(i-1, { gen.choose.kr( 0.25.coin.if({ gen.choose.kr(0.01.exprand(0.1)).exprange(0.1,1) }, { 0.1.exprand(1) }), mul: 0.25.coin.if({ gen.choose.kr(0.05.exprand(10)).range(0.1,1) }, { 0.1.rrand(1) }) ) }) ++ [0], Array.rand(i-1, 0.1,1.0).normalizeSum, [[-5.0.rrand(5),\sin].choose] ++ Array.fill(i-2, { [\sin ! 1.rrand(6), -5.0.rrand(5) ! 1.rrand(4)].flat.choose }) ++ [[-5.0.rrand(5),\sin].choose] ).circle, timeScale: Duty.kr( // freq Drand([4,8,16,24], inf), 0, Dwrand([1,2,4,8,16,32,64]*freq, ((14..7) ** 1.rrand(3)).normalizeSum, inf) // octave * 0.75.coin.if({ Duty.kr( // note [Dxrand, Drand].choose.new([0.125,0.25,0.5,1,2,4,6,8,12], inf), 0, Dshuf({ (0..11).choose.midiratio } ! 1.exprand(8), inf) ) }, { (0..11).choose.midiratio }) ).reciprocal ) ) * EnvGen.kr( // rhythm Env.perc( 0.01.exprand(0.4) * 0.25.coin.if({ Duty.kr( // atk Drand([0.5,1,2,4,8,12,16], inf), 0, Dshuf({ [1,2,3,4].choose } ! 1.exprand(8), inf) ) }, { 1 }), 0.1.exprand(4) * 0.75.coin.if({ Duty.kr( // release Drand([0.5,1,2,4,8,12,16], inf), 0, Dshuf({ [1,2,4,8,16].choose.reciprocal } ! 1.exprand(8), inf) ) }, { 1 }), LFNoise2.kr(0.1.exprand(10)).range(0.05,1), // appearance LFNoise2.kr(0.1.exprand(10)).range(-4,4), ).circle ); } ! 3.rrand(9).debug('source')); BHiShelf.ar( GVerb.ar( Rotate2.ar(sig[0], sig[1], Duty.kr(Drand([2,4,8],inf), 0, Drand([-1,1,0],inf)) * LFSaw.kr(0.1.exprand(1))), 40.rrand(150).debug('room') ), LFNoise2.kr(0.1.exprand(0.5)).range(4000,6500), LFNoise2.kr(0.1.exprand(1)).range(1,3), LFNoise2.kr(0.1.exprand(1)).range(-24,-16) ); }).play )