{
   "author" : "ttsesmetzis",
   "name" : "Algorithmic melancholy",
   "ancestor_list" : [],
   "description" : "",
   "labels" : [
      "generative"
   ],
   "id" : "1-4VB",
   "is_private" : null,
   "code" : "(\r\nvar n = 20, baseFreq = 45.midicps;\r\nvar lsin, rsin, arg1, arg2, sig;\r\nvar bus, busIndex, scale, freq, freqIndex, amp;\r\nvar responder;\r\n\r\nscale = Scale.nikriz.ratios * baseFreq;\r\n\r\nbus = Bus.control( s, 2 * n  );\r\nbus.setn( { 1.0.rand2 } ! ( 2 * n ) );\r\nbusIndex = bus.index;\r\n\r\nfreq = Bus.control( s, n );\r\nfreqIndex = freq.index;\r\n\r\nresponder = OSCFunc({ | id |\r\n\tfreq.setAt( id[2] , scale.choose * 1.rrand( 3 ) );\r\n},'/tr', s.addr);\r\n\r\nCmdPeriod.doOnce { [ bus, freq, responder ].free; };\r\n\r\nn.do {|i|\r\n\tfreq.setn( { scale.choose  * rrand( 1, 3) } ! n );\r\n\t{\r\n\t\t#arg1, arg2 = In.kr( 2 * i +  busIndex, 2 );\r\n\r\n\t\t#lsin, rsin = SinOsc.kr( [ arg1, arg2 ], { 2.0.rrand(20.0) } ! 2  * [ arg2, arg1 ] ); \r\n\r\n\t\tsig = Formant.ar( \r\n\t\t\tLFNoise0.kr( 0.05, 2.5, 7) * arg1, \r\n\t\t\targ2,\r\n\t\t\t500.0.rrand(700) \r\n\t\t);\r\n\r\n\t\tReplaceOut.kr( 2 * i  + busIndex, [ rsin, lsin ] );\r\n\r\n\t\tsig = Pluck.ar( \r\n\t\t\tBrownNoise.ar(0.5), \r\n\t\t\tsig, \r\n\t\t\t0.025, \r\n\t\t\tfreq.kr( 1, i ).reciprocal, \r\n\t\t\t3.7\r\n\t\t) * 0.6;\r\n\r\n\t\tamp = Line.kr( dur: rrand( 1.0, 20.0) ) * max( 0, LFNoise1.kr( 0.05, 0.6, 0.4 ) ) ;\r\n\t\tsig =  sig * amp;\r\n\t\tSendTrig.kr( amp <= 0, i, i );\r\n\r\n\t\tPan2.ar( sig, 0.8.rand2 )\r\n\t}.play\r\n}\r\n)"
}
