{
   "labels" : [
      "pbind",
      "patterns",
      "wobble",
      "dubstep",
      "pmono"
   ],
   "is_private" : null,
   "id" : "1-4Rn",
   "code" : "(\r\nSynthDef(\\sawFilt, { |out = 0, freq = 440, amp = 0.1, gate = 1, cf = 100, wobble = 3, t_bd, t_sd, pw = 0.4|\r\n    var base = Splay.ar(RLPF.ar(Pulse.ar(freq * [0.99,0.5,1.01],pw),cf.lag(0.05),0.3).madd(SinOsc.ar(wobble).range(0.5,4)).sin) * 0.5;\r\n    var env = Linen.kr(gate, attackTime: 0.01, releaseTime: 0.5, doneAction: 2);\r\n    var sig = base;\r\n    var bd = tanh(Ringz.ar(LPF.ar(Trig.ar(t_bd,SampleDur.ir),1000),30,0.5,5).sin*2);\r\n    var sd = tanh(Ringz.ar(LPF.ar(Trig.ar(t_sd,SampleDur.ir),1000),120,0.75,PinkNoise.ar(2!2)).sin*2);\r\n    sd = HPF.ar(sd,60);\r\n    sig = tanh(GVerb.ar(HPF.ar(base * env,30), 70, 11, 0.15)*0.5 + sig + bd + sd);\r\n    Out.ar(out, sig*amp*env);\r\n}).add;\r\n)\r\n\r\n(\r\np = Pproto(\r\n    {\r\n        ~id = (\r\n            type: \\on,\r\n            dur: 0,\r\n            instrument: \\sawFilt,\r\n            amp: 1,\r\n        ).yield[\\id];\r\n        ~type = \\set;\r\n    },\r\n    Ppar([\r\n        Pbind(\r\n            \\args, #[freq],\r\n            \\freq, Pseq([49,47,50,48]-12,inf).midicps,\r\n            \\dur, 4,\r\n        ),\r\n        Pbind(\r\n            \\args, #[cf],\r\n            \\cf, Pseq([100,Prand([700,400,1100],3)],inf),\r\n            \\stutter, Prand([1,2,4,8],inf),\r\n            \\dur, PdurStutter(Pkey(\\stutter)*2, 2),\r\n            // NOTE: also useful is .collect on patterns!\r\n            // \\dur, Prand([1,2,4,8], inf).collect{ |x| (1/x)!(x*2) }.flatten\r\n        ),\r\n        Pbind(\r\n            \\args, #[wobble],\r\n            \\wobble, Pxrand([3,1.5,6],inf),\r\n            \\dur, Prand([2,1],inf),\r\n        ),\r\n        Pbind(\r\n            \\args, #[t_bd],\r\n            \\t_bd, Pseq([1,0,0,1],inf),\r\n            \\dur, 0.5,\r\n        ),\r\n        Pbind(\r\n            \\args, #[t_sd],\r\n            \\t_sd, Pseq([0,0,1,0],inf),\r\n            \\dur, 0.5,\r\n        ),\r\n        Pbind(\r\n            \\args, #[pw],\r\n            \\pw, Prand([0.4,0.3,0.5],inf),\r\n            \\dur, 2,\r\n        ),\r\n    ])\r\n).play;\r\n)",
   "author" : "Jonatan Liljedahl",
   "name" : "Many patterns controlling a single synth",
   "ancestor_list" : [],
   "description" : "This is a demonstration of how several parallell patterns can be controlling a single synth."
}
