{
   "id" : "1-4TU",
   "is_private" : null,
   "code" : "(\r\nvar duration = 60 * 5;\r\nvar freqDrift = { |freq| LFDNoise3.ar(0.2, 0.1, freq.cpsmidi).midicps };\r\nvar masterVolume = -2.dbamp;\r\n\r\nplay {\r\n\tvar rootFreq = freqDrift.(26.midicps);\r\n\tvar gate = EnvGen.ar(Env([0, 1, 1, 0], [0.1, duration, 0.25]), gate: 1, doneAction: 0);\r\n\tvar leveler = LinLin.ar(LFTri.ar(duration.reciprocal, 1), -1, 1, -24, 0).dbamp;\r\n\tvar sig = HPF.ar(\r\n\t\t({ |k|\r\n\t\t\tPan2.ar(({ |i|\r\n\t\t\t\tPulse.ar(\r\n\t\t\t\t\ti * k + 2 / (k + 1) * rootFreq * (i + 1) * 0.0625 * 16,\r\n\t\t\t\t\tLinLin.ar(LFTri.ar(rootFreq * (i + 1) / 1024), -1, 1, 0.5, 0.95)\r\n\t\t\t\t)} ! (k/2 + 1).asInteger).product\r\n\t\t\t\t* (k + 1).reciprocal\r\n\t\t\t\t* LinExp.ar(Blip.ar(\r\n\t\t\t\t\t(k + 5).nthPrime.reciprocal * rootFreq * 0.125, 3), -1, 1, -48.dbamp, 1).neg,\r\n\t\t\t\tLFTri.ar((k + 1).nthPrime * rootFreq / 256)\r\n\t\t\t)\r\n\t\t} ! 16).sum * -12.dbamp,\r\n\t\t40\r\n\t);\r\n\tvar compsig = Compander.ar(\r\n\t\tsig, sig, -48.dbamp, 1, XLine.ar(1, 0.125, duration), mul: Line.ar(0, 36, duration).dbamp\r\n\t);\r\n\tvar final = LeakDC.ar(SinOsc.ar(\r\n\t\trootFreq * 2,\r\n\t\tGVerb.ar(\r\n\t\t\tcompsig.sum,\r\n\t\t\trevtime: 2.5,\r\n\t\t\tdrylevel: 0,\r\n\t\t\tearlyreflevel: 0,\r\n\t\t\ttaillevel: -12.dbamp,\r\n\t\t\tmul: LinExp.ar(LFTri.ar(duration.reciprocal, 1), -1, 1, pi, pi * 0.25),\r\n\t\t\tadd: compsig\r\n\t\t),\r\n\t\tmul: 0.5 * gate,\r\n\t), mul:  leveler);\r\n\tvar verb = GVerb.ar(final.sum, 300, 4.5, drylevel: 0, earlyreflevel: -6.dbamp, taillevel: -12.dbamp, add: final);\r\n\tvar env = DetectSilence.ar(gate + verb, doneAction: 2);\r\n\tverb * masterVolume\r\n};\r\n\r\nplay {\r\n\tvar rootFreq = freqDrift.(Lag.ar(26.midicps * 4 * LinLin.ar(LFTri.ar(duration.reciprocal * 5), -1, 1, 3, 13).floor / LinLin.ar(LFTri.ar(duration.reciprocal * 3), -1, 1, 13, 3).floor, 0.25));\r\n\tvar gate = EnvGen.ar(Env([0, 1, 1, 0], [0.1, duration * 0.9, 0.25]), gate: 1, doneAction: 0);\r\n\tvar leveler = LinLin.ar(LFTri.ar(duration.reciprocal * 15, 2), -1, 1, -72, 6).dbamp;\r\n\tvar sig = HPF.ar(\r\n\t\t({ |k|\r\n\t\t\tPan2.ar(({ |i|\r\n\t\t\t\tPulse.ar(\r\n\t\t\t\t\ti * k + 2 / (k + 1) * rootFreq * (i + 1) * 0.0625 * 16,\r\n\t\t\t\t\tLinLin.ar(LFTri.ar(rootFreq * (i + 1) / 1024), -1, 1, 0.5, 0.95)\r\n\t\t\t\t)} ! (k/2 + 1).asInteger).product\r\n\t\t\t\t* LinExp.ar(Blip.ar(\r\n\t\t\t\t\t(k + 5).nthPrime.reciprocal * rootFreq * 0.125, 3), -1, 1, -48.dbamp, 1).neg,\r\n\t\t\t\tLFTri.ar((k + 1).nthPrime * rootFreq / 256)\r\n\t\t\t)\r\n\t\t} ! 16).sum * -12.dbamp,\r\n\t\t40\r\n\t);\r\n\tvar compsig = Compander.ar(\r\n\t\tsig, sig, -48.dbamp, 1, XLine.ar(1, 0.125, duration), mul: Line.ar(0, 36, duration).dbamp\r\n\t);\r\n\tvar final = LeakDC.ar(SinOsc.ar(\r\n\t\trootFreq * 4,\r\n\t\tGVerb.ar(\r\n\t\t\tcompsig.sum,\r\n\t\t\trevtime: 2.5,\r\n\t\t\tdrylevel: 0,\r\n\t\t\tearlyreflevel: 0,\r\n\t\t\ttaillevel: -12.dbamp,\r\n\t\t\tmul: Line.ar(pi * 2, pi, duration),\r\n\t\t\tadd: compsig\r\n\t\t),\r\n\t\tmul: 0.5 * gate,\r\n\t), mul: leveler * AmpCompA.kr(root: rootFreq * 4));\r\n\tvar verb = GVerb.ar(final.sum, 300, 4.5, drylevel: 0, earlyreflevel: 0.dbamp, taillevel: -24.dbamp, add: final);\r\n\tvar env = DetectSilence.ar(gate + verb, doneAction: 2);\r\n\tverb * -18.dbamp * masterVolume\r\n};\r\n\r\nplay {\r\n\tvar rootFreq = 26.midicps;\r\n\tvar depthMod = LFSaw.kr(0.05).exprange(0.05, 5.0);\r\n\tvar gate = EnvGen.ar(Env([0, 1, 1, 0], [0.1, duration * 0.9, 0.25]), gate: 1, doneAction: 0);\r\n\tvar leveler = LinLin.ar(LFTri.ar(duration.reciprocal, 3), -1, 1, -24, 6).dbamp;\r\n\tvar sig = HPF.ar(\r\n\t\t({ |k|\r\n\t\t\tPan2.ar(({ |i|\r\n\t\t\t\tSinOsc.ar(i * k + 2 / (k + 1) * rootFreq * (i + 1))} ! 4).product\r\n\t\t\t\t* (k+1).reciprocal\r\n\t\t\t\t* LFSaw.kr(\r\n\t\t\t\t\t(k + 5).nthPrime.reciprocal * rootFreq * 0.25, k/7 * 2\r\n\t\t\t\t).exprange(-24.dbamp, 1),\r\n\t\t\t\tLFTri.ar((k + 1).nthPrime * rootFreq)\r\n\t\t\t)\r\n\t\t} ! 16).sum * -18.dbamp,\r\n\t\t40\r\n\t);\r\n\tvar siggap = Amplitude.ar(sig).reciprocal.min(0.0625);\r\n\tvar verb = GVerb.ar(\r\n\t\tsig.sum,\r\n\t\troomsize: [80, 135, 283],\r\n\t\trevtime: depthMod * 2,\r\n\t\tdrylevel: 0,\r\n\t\ttaillevel: 0.dbamp * siggap,\r\n\t\tearlyreflevel: -6.dbamp * siggap,\r\n\t\tadd: sig\r\n\t).sum * leveler * gate;\r\n\tvar env = DetectSilence.ar(verb, doneAction: 2);\r\n\tverb * masterVolume\r\n}\r\n)",
   "labels" : [
      "drone freerun"
   ],
   "ancestor_list" : [],
   "description" : "A free-running oscillator piece. I was hoping the three elements had enough code in common that I could make an elegant generator for them, but not so.",
   "author" : "Tim Walters",
   "name" : "New-Metal Mistress Time"
}
