{
   "labels" : [
      "acid",
      "control busses",
      "pattern control"
   ],
   "code" : "(\r\nSynthDef(\\acid, { arg out, freq = 1000, gate = 1, pan = 1, cut = 4000, rez = 0.8, amp = 1, sustain = 1, release = 0.5;\r\n    var sig, env;\r\n\tenv = EnvGen.kr(Env.linen(0.01, sustain, sustain * release), gate, amp, doneAction: Done.freeSelf);\r\n\tsig = Pulse.ar([freq,freq*1.001], 0.5);\r\n\tsig = sig + Pulse.ar(freq*0.501, 0.01, [0,0.5]);\r\n\tsig = sig + Pulse.ar(freq*1.99, 0.11, [0.5,0]);\r\n\tsig = RLPF.ar(sig, cut, rez);\r\n\tsig = Pan2.ar(sig);\r\n\tsig = sig * env;\r\n\r\n\tOut.ar(out, sig);\r\n}).add;\r\n)\r\n\r\n\r\n~bus = Bus.control(s,1);\r\n~bus2 = Bus.control(s,1);\r\n\r\n(\r\n~lfo1 = SynthDef(\\lfo1, {\r\n\targ fmin=200, fmax=2000;\r\n\tOut.kr(~bus, SinOsc.kr(0.1).range(fmin,fmax))\r\n}).play;\r\n\r\n~lfo2 = SynthDef(\\lfo2, {\r\n\targ fmin=1, fmax=3;\r\n\tOut.kr(~bus2, SinOsc.ar(0.05).range(fmin,fmax))\r\n}).play;\r\n\r\n\r\nPbind(\\instrument, \\acid,\r\n\r\n\t\\note, Pfunc{~bus2.getSynchronous * 2}, // !!\r\n    \\cut, Pfunc{ ~bus.getSynchronous }, // !!\r\n\r\n\t\\dur, Pseq([0.08, 0.2, 0.1, 0.03, 0.08, 0.2, 0.12], inf),\r\n\t\r\n\t// uncomment for an extreme example:\r\n\t//\\dur, Pfunc{ ~bus2.getSynchronous.linlin(1,3,5,1) * 0.035 },\r\n\t\\legato, 0.3,\r\n\t\\release, 2,\r\n\t\\root, -30,\r\n\t\\pan, Pfunc({0.5.rand2}),\r\n\t\\rez, Pfunc({0.7.rand +0.3}),\r\n\t\\amp, 0.2).play;\r\n)\r\n\r\n// now you can change some parameters of the LFOs in the control busses\r\n~lfo1.set(\\fmax, 800)\r\n~lfo1.set(\\fmin, 90)\r\n\r\n~lfo2.set(\\fmax, 3)\r\n~lfo2.set(\\fmin, 1)",
   "is_private" : null,
   "id" : "1-5dD",
   "name" : "control patterns via control bus",
   "author" : "Luka P.",
   "ancestor_list" : [],
   "description" : "a learning example where you can control patterns with running ugens via control bus. acid-like."
}
