{
   "is_private" : null,
   "id" : "1-5a9",
   "code" : "(\r\n/**\r\n* SELFSTEP by Alexander Zhagun-Linnik, 2018\r\n* a simple self-playing piece with generative patterning\r\n**/\r\n{\r\n\tvar scale = Scale.harmonicMinor;\r\n\tvar time = 1.5;                   // beat length in seconds multiplied by 2\r\n\r\n\t\r\n\t// define synths\r\n\tSynthDef(\\pls, {arg freq=220, out=0, amp=0.7, res=0.5;\r\n\t\tvar sig, env;\r\n\t\tsig = LFPulse.ar(Line.ar(freq, freq/4, Rand(0.01, 0.1)), 0, Rand(0.01, 0.99), amp);\r\n\t\tsig = RLPF.ar(sig, freq*5*Line.kr(1, 0, Rand(0.1, 0.9)), res);\r\n\t\tenv = Env.perc(0.001, Rand(0.1, 0.8)).kr(2);\r\n\t\tsig = (sig * env * 2).softclip;\r\n\t\tsig = Pan2.ar(sig, Rand(-0.5, 0.5));\r\n\t\tOut.ar(out, sig);\r\n\t}).add;\r\n\tSynthDef(\\kck, {arg freq=220, out=0, amp=0.9;\r\n\t\tvar sig, env;\r\n\t\tsig = SinOsc.ar(Line.ar(freq, freq/4, Rand(0.01, 0.1)), 0, 0.5, amp);\r\n\t\tsig = RLPF.ar(sig, freq*8*Line.kr(1, 0, Rand(0.01, 0.3)));\r\n\t\tenv = Env.perc(0.001, Rand(0.01, 0.5), 0.5).kr(2);\r\n\t\tsig = (sig * env * 4).softclip;\r\n\t\tsig = Pan2.ar(sig, Rand(-0.3, 0.3));\r\n\t\tOut.ar(out, sig);\r\n\t}).add;\r\n\tSynthDef(\\sin, {arg freq=110, out=0, amp=0.9, gate=1;\r\n\t\tvar sig;\r\n\t\tsig = SinOsc.ar(freq, 0, amp)*Env.adsr.kr(2, gate);\r\n\t\tsig = RHPF.ar(sig, LFDNoise3.ar(Rand(0.01, 16), freq).abs, LFDNoise3.ar(Rand(0.01, 3), 1).abs)*0.1;\r\n\t\tsig = Pan2.ar(sig, Rand(-0.9, 0.9)).softclip;\r\n\t\tOut.ar(out, sig);\r\n\t}).add;\r\n\tSynthDef(\\snr, {arg freq=220, out=0, amp=1.0;\r\n\t\tvar sig, env;\r\n\t\tsig = WhiteNoise.ar(1);\r\n\t\tsig = RLPF.ar(sig, freq*6*Line.ar(1, 0, Rand(0.01, 0.3)), Rand(0.4, 0.6));\r\n\t\tenv = Env.perc(0.001, Rand(0.01, 0.2)).kr(2);\r\n\t\tsig = (sig * env * amp * 8).softclip;\r\n\t\tsig = Pan2.ar(sig, Rand(-0.5, 0.5));\r\n\t\tOut.ar(out, sig);\r\n\t}).add;\r\n\tSynthDef(\\hgh, {arg freq=220, out=0, amp=1.0, res=0.5;\r\n\t\tvar sig, env;\r\n\t\tsig = WhiteNoise.ar(1);\r\n\t\tsig = RHPF.ar(sig, freq*40*Line.ar(0.5, 1, Rand(0.01, 0.1)), res);\r\n\t\tenv = Env.perc(0.001, Rand(0.01, 0.1)).kr(2);\r\n\t\tsig = (sig * env * amp * 2).softclip;\r\n\t\tsig = Pan2.ar(sig, Rand(-0.7, 0.7));\r\n\t\tOut.ar(out, sig);\r\n\t}).add;\r\n\ts.sync; // wait for server to load synthdefs\r\n\t\r\n\t// define patterns...\r\n\tPpar([\r\n\t\tPbind(\r\n\t\t\t\\instrument, \\kck,\r\n\t\t\t\\dur,  Prand([time/2, time/2, time/2, time/2, time/4, time/8], inf),\r\n\t\t\t\\scale, scale,\r\n\t\t\t\\degree, Pbrown(0, 8, Prand([1, 2], inf)),\r\n\t\t\t\\octave, 4,\r\n\t\t),\r\n\t\tPbind(\r\n\t\t\t\\instrument, \\pls,\r\n\t\t\t\\dur, Prand([time/8, time/4], inf),\r\n\t\t\t\\scale, scale,\r\n\t\t\t\\degree, Pbrown(0, 12, Prand([1, 2, 3], inf)),\r\n\t\t\t\\octave, 4,\r\n\t\t\t\\res, Pfunc({(SystemClock.seconds*0.03).sin.abs})\r\n\t\t),\r\n\t\tPbind(\r\n\t\t\t\\instrument, \\pls,\r\n\t\t\t\\dur, Prand([time/2, time, time/4, time/8], inf),\r\n\t\t\t\\scale, scale,\r\n\t\t\t\\degree, Pbrown(0, 12, Prand([1, 2, 3, 4, 5], inf)),\r\n\t\t\t\\octave, 5,\r\n\t\t\t\\res, Pfunc({(SystemClock.seconds*0.5).sin.abs})\r\n\t\t),\r\n\t\tPbind(\r\n\t\t\t\\instrument, \\sin,\r\n\t\t\t\\dur, Prand([1, 2, 4, 8], inf),\r\n\t\t\t\\scale, scale,\r\n\t\t\t\\degree, Pbrown(0, 12, Prand([1, 2, 3, 4, 5], inf)),\r\n\t\t\t\\octave, 5,\r\n\t\t\t\\amp, Pfunc({0.3.rand})\r\n\t\t),\r\n\t\tPbind(\r\n\t\t\t\\instrument, \\sin,\r\n\t\t\t\\dur, Prand([1, 2, 4, 8], inf),\r\n\t\t\t\\scale, scale,\r\n\t\t\t\\degree, Pbrown(0, 12, Prand([1, 2, 3, 4, 5], inf)),\r\n\t\t\t\\octave, 5,\r\n\t\t\t\\amp, Pfunc({0.3.rand})\r\n\t\t),\r\n\t\tPbind(\r\n\t\t\t\\instrument, \\snr,\r\n\t\t\t\\dur, Prand([time, time, time, time, time/8, time/4], inf),\r\n\t\t\t\\scale, scale,\r\n\t\t\t\\degree, Pbrown(0, 12, Prand([1, 2, 3], inf)),\r\n\t\t\t\\octave, 5,\r\n\t\t),\r\n\t\tPbind(\r\n\t\t\t\\instrument, \\hgh,\r\n\t\t\t\\dur, Prand([time/8], inf),\r\n\t\t\t\\scale, scale,\r\n\t\t\t\\degree, Prand(Array.fill(8, {arg i;i}), inf),\r\n\t\t\t\\octave, Prand(Array.fill(6, {arg i;i}), inf),\r\n\t\t\t\\res, Pfunc({(SystemClock.seconds*0.3).sin.abs}),\r\n\t\t)\r\n\t]).play; // ...and start playing\r\n}.fork;\r\n)",
   "labels" : [
      "simple",
      "patterns",
      "generative",
      "algorithmic",
      "selfstep"
   ],
   "description" : "a simple self-playing piece with generative patterning",
   "ancestor_list" : [],
   "author" : "Alexander Zhagun-Linnik",
   "name" : "SELFSTEP"
}
