{
   "author" : "TatriX",
   "name" : "Sunday's patch & shader: Value Noise",
   "ancestor_list" : [],
   "description" : "",
   "labels" : [],
   "is_private" : null,
   "id" : "1-5ih",
   "code" : "(\r\nNdef(\\valuenoise, {\r\n    var sig = 0;\r\n    var note = Demand.kr(Impulse.kr(1/8), 0, Dseq([0, 12, 0, 10, 0], inf));\r\n    var freq = (110 + (24 + note).midicps).lag(1/2);\r\n\r\n    var trig = Impulse.kr(1) + Impulse.kr(1/9, 1/2);\r\n    var dm = SinOsc.ar(\r\n        freq: Env.perc(0, 0.01).kr(0, trig).exprange(freq*4, freq/4),\r\n        mul: 0.5*Env.perc(0.01, 0.5).kr(0, trig),\r\n    ) + BPF.ar(WhiteNoise.ar(Env.perc(0, 0.01, 0.1).kr(0, trig)), 6000);\r\n\r\n    var hh = BPF.ar(WhiteNoise.ar(\r\n        0.03 * Env.perc(0, 1/8 + SinOsc.kr(1, mul: 1/12)).kr(0, Impulse.kr(4))\r\n    ), 9000);\r\n\r\n    var noise = PinkNoise.ar(\r\n        LFTri.kr([3, 3.01]).range(0.2, 0.01)\r\n        * LFPulse.kr(3).lag(0.1)\r\n        * LFTri.kr(1/4)\r\n    );\r\n\r\n    var offset = Demand.kr(Impulse.kr(1/2), 0, Dseq([5, 6, 4], inf));\r\n    var shift = LFPulse.kr(1/20).range(4, 2);\r\n    var glass = SinOsc.ar(\r\n        freq: freq*[4, offset, 12] / shift,\r\n        mul: 0.7 * Env.perc(0.01, 0.2).kr(0, Impulse.kr(5/2)),\r\n    ).sum!2;\r\n\r\n    var bass = SinOsc.ar(freq, mul: 0.5 * LFTri.kr(1/4).range(0.5, 1));\r\n    bass = bass * SinOsc.ar(freq * 2 * SinOsc.ar(freq/4));\r\n    bass = RLPF.ar(bass, LFTri.kr(1/3, 2).exprange(freq/2, freq*4), 0.9);\r\n    bass = (bass * 4).tanh * 0.5;\r\n    bass = LPF.ar(bass, freq*2);\r\n\r\n    bass = Pan2.ar(bass);\r\n    bass = bass.blend(NHHall.ar(HPF.ar(bass, freq*2), 3), 1/4);\r\n\r\n    glass = (glass * 10).tanh * 0.15 * LFTri.kr(1/8);\r\n    glass = LPF.ar(glass, 6000);\r\n    glass = glass.blend([\r\n        CombL.ar(glass[0], 1, 3/4 + SinOsc.kr(1).range(0.01, 0.02)),\r\n        CombL.ar(glass[1], 1, 4/4),\r\n    ]);\r\n    glass = glass.blend(NHHall.ar(glass, 2 + LFTri.kr(1/4).range(0, 4)), 1/6);\r\n    glass = Rotate2.ar(glass[0], glass[1], SinOsc.kr(1/2));\r\n\r\n    noise = noise.blend(NHHall.ar(noise));\r\n\r\n    dm = (dm * 3).tanh * 0.5;\r\n    dm = dm.blend(CombL.ar(dm, 1, 1/4, 2), 1/4);\r\n\r\n    hh = hh.blend(CombL.ar(hh, 1, [1/9, 1/3], 2), 1/4);\r\n    hh = Rotate2.ar(hh[0], hh[1], LFTri.kr(1/4));\r\n\r\n    if (true) {\r\n        bass = bass * Env.asr().delay(0).kr;\r\n        dm = dm * Env.asr().delay(0).kr;\r\n        hh = hh * Env.asr().delay(4).kr;\r\n        noise = noise * Env.asr().delay(10).kr;\r\n        glass = glass * Env.asr(4, curve: 8).delay(12).kr;\r\n    };\r\n\r\n    sig = sig + bass;\r\n    sig = sig + glass;\r\n    sig = sig + noise;\r\n    sig = sig + dm;\r\n    sig = sig + hh;\r\n\r\n    sig = Limiter.ar(sig);\r\n}).play;\r\n)"
}
