{
   "ancestor_list" : [],
   "description" : "Requires sc3-plugins: DFM1, Greyhole, JPverb",
   "name" : "forlorn brownian atmosphere",
   "author" : "david_morgan",
   "id" : "1-57u",
   "is_private" : null,
   "code" : "/*\r\nRequires sc3-plugins: DFM1, Greyhole, JPverb\r\n*/\r\n\r\n///////////////////////////////////////////////\r\n// 1: setup\r\n(\r\nSynthDef(\\s1, {\r\n\r\n\tvar trig = \\trig.tr;\r\n\tvar dur = \\dur.kr(1);\r\n\tvar amp = \\amp.kr(0.1);\r\n\r\n\tvar freq = {\r\n\r\n\t\tvar lag = \\lag.kr(0.0);\r\n\t\tvar freq = \\freq.kr(220).lag(lag);\r\n\t\tvar rate = \\rate.kr(6);\r\n\t\tvar depth = \\depth.kr(0.02);\r\n\t\tvar delay = \\delay.kr(0);\r\n\t\tvar onset = \\onset.kr(0.0);\r\n\t\tvar rateVariation = \\rateVar.kr(0.04);\r\n\t\tvar depthVariation = \\depthVar.kr(0.1);\r\n\t\tvar iphase = 0;\r\n\r\n\t\tVibrato.ar(K2A.ar(freq),\r\n\t\t\trate:rate, depth:depth,\r\n\t\t\tdelay:delay,\r\n\t\t\tonset:onset,\r\n\t\t\trateVariation:rateVariation,\r\n\t\t\tdepthVariation:depthVariation,\r\n\t\t\tiphase:0,\r\n\t\t\ttrig: trig);\r\n\t}.();\r\n\r\n\tvar sig = {\r\n\r\n\t\tvar phase = \\sinphase.kr(0);\r\n\t\tvar pwidth = \\pwidth.kr(0.5);\r\n\t\tvar swidth = \\swidth.kr(0.5);\r\n\t\tvar sin_freq_mul = \\sin_freq_mul.kr(1);\r\n\t\tvar varsaw_freq_mul = \\varsaw_freq_mul.kr(1);\r\n\t\tvar saw_freq_mul = \\saw_freq_mul.kr(1);\r\n\t\tvar pulse_freq_mul = \\pulse_freq_mul.kr(1);\r\n\r\n\t\tvar sin = SinOsc.ar(freq * sin_freq_mul, phase, mul:\\sin_amp.kr(1));\r\n\t\tvar varsaw = VarSaw.ar(freq * varsaw_freq_mul, 0, swidth, mul:\\varsaw_amp.kr(0));\r\n\t\tvar saw = Saw.ar(freq * saw_freq_mul, mul:\\saw_amp.kr(0));\r\n\t\tvar pulse = Pulse.ar(freq * pulse_freq_mul, pwidth, mul:\\pulse_amp.kr(0));\r\n\r\n\t\tMix.ar([sin, varsaw, saw, pulse]);\r\n\r\n\t}.();\r\n\r\n\tvar env = {\r\n\r\n\t\tvar atk = \\atk.kr(0.01);\r\n\t\tvar sus = \\sus.kr(0);\r\n\t\tvar rel = \\rel.kr(0.9);\r\n\r\n\t\tEnv([0, 0, 1, 1, 0],[0, atk, sus, rel], [-4,4] ).kr(gate:trig, timeScale: dur);\r\n\r\n\t}.();\r\n\r\n\tsig = DFM1.ar(sig, freq * \\dfm1_freq_mul.kr(3), \\dfm1_res.kr(0.1));\r\n\r\n\tsig = sig * env * AmpCompA.kr(freq) * amp;\r\n\r\n\tsig = Pan2.ar(sig, \\pan.kr(0));\r\n\r\n\tOut.ar(\\out.kr(0), sig);\r\n\r\n}).add;\r\n\r\n~s1 = NodeProxy.audio;\r\n\r\n~s1[0] = Pmono(\\s1,\r\n\t\\trig, 1,\r\n\r\n\t// rhythm\r\n\t\\delta, 4,\r\n\t\\dur, Pkey(\\delta),\r\n\r\n\t// freq\r\n\t\\octave, Prand([4,5,6], inf),\r\n\t\\degree, Pbrown(0, 4, 1, inf),\r\n\r\n\t// oscs\r\n\t\\sin, 1.0,\r\n\t\\varsaw, 0.5,\r\n\t\\pulse, 0.0,\r\n\t\\saw, 0.0,\r\n\r\n\t\\pwidth, 0.0,\r\n\t\\swidth, 0.0,\r\n\r\n\t// harms\r\n\t\\sin_freq_mul, 1,\r\n\t\\varsaw_freq_mul, 2.0145,\r\n\r\n\t// env\r\n\t\\env_atk, 1,\r\n\t\\env_sus, 1.0,\r\n\t\\env_rel, 2,\r\n\r\n\t// vib\r\n\t\\rate, 5,\r\n\t\\depth, 0.01,\r\n\r\n\t// amp\r\n\t\\amp, 0.1,\r\n\t\\pan, Pwhite(-0.5, 0.5),\r\n\r\n\t\\dfm1_res, Pwhite(0.1, 0.9, inf),\r\n\t\\dfm1_freq_mul, Pwhite(2.0, 4.0, inf),\r\n\r\n\t// controls\r\n\t[\\atk, \\sus, \\rel], Pfunc({arg evt; [evt[\\env_atk], evt[\\env_sus], evt[\\env_rel]].normalizeSum; }).collect(`_),\r\n\t[\\sin_amp, \\varsaw_amp, \\pulse_amp, \\saw_amp], Pfunc({arg evt; [evt[\\sin], evt[\\varsaw], evt[\\pulse], evt[\\saw]].normalizeSum; }).collect(`_),\r\n);\r\n\r\n~s1[20] = \\filter -> {arg in;\r\n\r\n\tin = (in * 0.5) + Greyhole.ar(in * 0.2, modDepth:0.3);\r\n\tin = in + JPverb.ar(in, 2, 0.9, 5, modDepth:1);\r\n\tin;\r\n};\r\n)\r\n\r\n///////////////////////////////////////////////\r\n// 2: play\r\n(\r\nTempoClock.default.tempo_(0.7);\r\n~s1.play(fadeTime:5);\r\n)\r\n\r\n///////////////////////////////////////////////\r\n// 3: stop\r\n~s1.stop(fadeTime:15)",
   "labels" : [
      "generative"
   ]
}
