{
   "labels" : [
      "generative"
   ],
   "code" : "/*\r\nRequires SC3-plugins:\r\nJPverb\r\nWaveLoss\r\nGreyhole\r\n*/\r\n\r\n(\r\nNdef(\\n, {\r\n\r\n\t//var lfo = A2K.kr(HenonC.ar(1));\r\n\t//var lfo = A2K.kr(StandardL.ar([1,3]));\r\n\tvar lfo1 = LFPulse.kr(1/16).range(1/2,1);\r\n\tvar lfo = min(LFTri.kr([lfo1/2, lfo1/3], mul: 3).tanh, LFDNoise1.kr(lfo1));\r\n\r\n\tvar in = lfo.range(0, 11).round;\r\n\t// Kumoi scale\r\n\tvar scale = [\r\n\t\t\\s0.kr(1),\r\n\t\t\\s1.kr(0),\r\n\t\t\\s2.kr(1),\r\n\t\t\\s3.kr(1),\r\n\t\t\\s4.kr(0),\r\n\t\t\\s5.kr(1),\r\n\t\t\\s6.kr(0),\r\n\t\t\\s7.kr(1),\r\n\t\t\\s8.kr(0),\r\n\t\t\\s9.kr(1),\r\n\t\t\\s10.kr(0),\r\n\t\t\\s11.kr(0)\r\n\t];\r\n\r\n\tvar inscale = Select.kr(in, scale);\r\n\tvar semi = in * inscale;\r\n\r\n\tvar trig = Changed.kr(semi);\r\n\tvar trig2 = PulseDivider.kr(trig, 3);\r\n\tvar midi = TChoose.kr(trig2, \\root.kr(60) + [0, 12, 24]) + (semi) * (inscale > 0);\r\n\r\n\tvar env = Decay2.kr(in:trig * (inscale > 0), decayTime:lfo1);\r\n\tvar freq = midi.midicps;\r\n\tvar sig = SinOscFB.ar(freq.lag(0.01) * [1, 1.01], feedback: SinOsc.kr(0.1).range(0.3,0.7)) * env;\r\n\r\n\tsig = RLPF.ar(sig, env.range(880, 2200), 0.3);\r\n\tsig = XFade2.ar(sig, JPverb.ar(HPF.ar(sig, 100), t60:1, size:3), 0);\r\n\tsig = XFade2.ar(sig, WaveLoss.ar(sig), -0.1);\r\n\tsig = XFade2.ar(sig, Greyhole.ar(sig), -0.75);\r\n\r\n\tsig * 0.2;\r\n\r\n}).play;\r\n)\r\n\r\n\r\n/////////////////////////\r\n// randomly change the scale\r\n// (Kumoi scale sounds nice)\r\n(\r\nvar vals = Array.fill(12, 0);\r\nvar scale = Scale.choose(size:[5,7].choose, pitchesPerOctave:12);\r\nscale.name.postln;\r\nscale.degrees.do({arg val;\r\n\tvals[val] = 1;\r\n});\r\nvals.do({arg val, i;\r\n\tvar key = (\\s ++ i).asSymbol;\r\n\tNdef(\\n).set(key, val);\r\n});\r\n)",
   "is_private" : null,
   "id" : "1-59j",
   "name" : "generative melody",
   "author" : "david_morgan",
   "ancestor_list" : [],
   "description" : ""
}
