{
   "ancestor_list" : [],
   "description" : "An example of iterating randomly filtered pink noise with envelope controls.",
   "name" : "hommage à l'impressionnisme",
   "author" : "prko",
   "code" : "// example 1: Klank with 16 Ringzes:\r\n(\r\nfork{\r\n\tSynthDef(\\aKlank16, {\r\n\t\targ atk, rls,\r\n\t\tfrqs = #[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],\r\n\t\tamps = #[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],\r\n\t\trngs = #[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];\r\n\t\tvar snd, env;\r\n\t\tsnd = Klank.ar(`[frqs, amps, rngs], PinkNoise.ar(1!2));\r\n\t\tenv = EnvGen.kr(Env([0,1,0], [atk, rls], -5), doneAction:2);\r\n\t\tOffsetOut.ar(0, snd * env);\r\n\t}).add;\r\n\r\n\ts.sync;\r\n\r\n\t{\r\n\t\tvar numDo, ptchs, frqs, rngs, amps;\r\n\t\tnumDo = 200;\r\n\t\tptchs = (21, 23..135);\r\n\t\tfrqs = { (ptchs.wchoose(Array.fill(ptchs.size, { |i| (i/ptchs.size*pi).sin }).normalizeSum).midicps) };\r\n\t\tamps = { (-96..-54).choose.dbamp };\r\n\t\trngs = { exprand(1.5, 3.5) };\r\n\t\tnumDo.do{\r\n\t\t\targ i;\r\n\t\t\tvar wait, waitFactor;\r\n\t\t\twait = exprand(0.05, 2.5);\r\n\t\t\twaitFactor = 1; // Array.fill(numDo, { |i| 0.8 + ((numDo/2+i/numDo*pi).sin.abs * 2) })[i];\r\n\r\n\t\t\ts.makeBundle(0.2, {\r\n\t\t\t\tSynth(\\aKlank16, [\r\n\t\t\t\t\t\\atk,[0.01]++(wait*(2.5..5.5)).wchoose([0.3, 0.15, 0.2, 0.15, 0.2]),\r\n\t\t\t\t\t\\rls, wait*(5.5..9.5).choose,\r\n\t\t\t\t\t\\frqs, {frqs.()}.dup(16),\r\n\t\t\t\t\t\\amps, {amps.()}!16,\r\n\t\t\t\t\t\\rngs, {rngs.()}!16\r\n\t\t\t], 1, 0) });\r\n\r\n\t\t\t(waitFactor*wait).wait\r\n\t\t}\r\n\t}.fork\r\n}\r\n)\r\n\r\n\r\n// example 2: Klank with 9 Ringzes(sc posts a warning message when exceeding 9 Ringzes):\r\n(\r\nfork{\r\n\tSynthDef(\\aKlank9, {\r\n\t\targ atk, rls;\r\n\t\tvar snd, env, ptchs, wghts;\r\n\t\tptchs = (21, 23..135);\r\n\t\twghts = Array.fill(ptchs.size, { |i| (i/ptchs.size*pi).sin }).normalizeSum;\r\n\t\tsnd = Klank.ar(\r\n\t\t\t`[\r\n\t\t\t\t{ TWChoose.kr( 1, ptchs.midicps, wghts) }!9,\r\n\t\t\t\t{ Rand(-96, -54).dbamp }!9,\r\n\t\t\t\t{ Rand(1.5, 3.5) }!9\r\n\t\t\t],\r\n\t\t\tPinkNoise.ar(1!2)\r\n\t\t);\r\n\t\tenv = EnvGen.kr(Env([0,1,0], [atk, rls], -5), doneAction:2);\r\n\t\tOffsetOut.ar(0, snd * env);\r\n\t}).add;\r\n\r\n\ts.sync;\r\n\r\n\t{\r\n\t\tvar numDo = 200;\r\n\t\tnumDo.do{\r\n\t\t\targ i;\r\n\t\t\tvar wait, waitFactor;\r\n\t\t\twait = exprand(0.05, 2.5);\r\n\t\t\twaitFactor = 1; // Array.fill(numDo, { |i| 0.8 + ((numDo/2+i/numDo*pi).sin.abs * 2) })[i];\r\n\r\n\t\t\ts.makeBundle(0.2, {\r\n\t\t\t\tSynth(\\aKlank9, [\r\n\t\t\t\t\t\\atk,[0.01]++(wait*(2.5..6.5)).wchoose([0.3, 0.15, 0.2, 0.15, 0.2]),\r\n\t\t\t\t\t\\rls, wait*(5.5..9.5).choose\r\n\t\t\t], 1, 0) });\r\n\r\n\t\t\t(waitFactor*wait).wait\r\n\t\t}\r\n\t}.fork\r\n}\r\n)",
   "is_private" : null,
   "id" : "1-5al",
   "labels" : [
      "piece",
      "quasiinstrumental"
   ]
}
