{
   "labels" : [
      "drone",
      "bandcamp"
   ],
   "is_private" : null,
   "id" : "1-51x",
   "code" : "(\r\n\r\n/*\r\nCode to reproduce this piece:\r\nhttps://frankchannel.bandcamp.com/track/fragment-ix\r\n*/\r\n\r\ns.waitForBoot{\r\n\r\n~maxharm = 14;\r\nSynthDef(\\textureSynth, { |freq=440, numharm=4, clip=1, amp=1, outbus=100|\r\n\tvar out, src, env, amps;\r\n\r\n\t// mutes\r\n\tamps = {|i| i<numharm}!~maxharm;\r\n\tamps = amps.collect{|item, i| item/(i+1)};\r\n\t\r\n\t// envelope\r\n\tenv = EnvGen.ar(Env([0,1,0.5,0.1,0.01], [0.1,1,0.1,1], [1,-4,-4,-1]), timeScale:Rand(2,6), levelScale:0.5, doneAction:2);\r\n\t\r\n\t// source\r\n\tsrc = PinkNoise.ar(0.5);\t\r\n\tout = src * env; \t\r\n\r\n\t// filter\r\n\tout = RLPF.ar(out, (1..~maxharm)*freq, Rand(0.001, 0.01), mul:amps);\r\n\tout = Mix.new(out);\r\n\t\t\r\n\t// effects\t\t\r\n\tout = (out*2).tanh;\t\t\r\n\tout = out.clip2(clip);\r\n\t\r\n\t// spatialization\r\n\tout = Pan2.ar(out);\r\n\tOut.ar(outbus, amp * out);\r\n}).add;\r\n\r\nSynthDef(\\bassSynth, { |freq, amp=1, timeScale=1, outbus=20| \r\n\tvar m1 = SinOsc.ar(8, mul:freq*(1-(2**(0.2/12))), add:freq);\r\n\tvar m2 = SinOsc.ar(2, mul:0.5, add:0.75);\r\n\tvar e = EnvGen.ar(Env([0, 1, 0.05, 0], [0.1, 1, 1], [1,-2,-4]), timeScale:timeScale, doneAction:2);\r\n\tvar o = e * Blip.ar(m1, 6, mul:m2);\r\n\t//var o = e * Pulse.ar(m1, 0.2, mul:m2);\r\n\to = RLPF.ar(o, 8*freq, 0.25);\r\n\r\n\tOut.ar(outbus, Pan2.ar(amp * o));\r\n}).add;\r\n\r\nSynthDef(\\rev, {|inbus=0, outbus=0, roomsize=200, revtime=10, damping=0.5|\r\n\tvar in = In.ar(inbus,2);\r\n\tvar fx = GVerb.ar(in, roomsize, revtime, damping);\r\n\tOut.ar(outbus,fx);\r\n}).add;\r\n\r\nServer.default.sync;\r\n\t\r\n~scale = [0,2,5,9,12,14];\r\n~root = 38+12;\r\n\r\n// ********\r\n// sequence\r\n// ********\r\n\r\n~bassGroup = Group.new;\r\n~bassVerb = Synth(\\rev, [\\inbus, 20, \\revtime, 0.25], target:~bassGroup);\r\n\r\n~bassPatA = Pbind(\\instrument, \\bassSynth,\r\n\t\\freq, Pstutter(1, Pseq((26 + [0,2,5,9]).midicps,4)),\r\n\t\\dur, 2,\r\n\t\\timeScale, 2,\r\n\t\\amp, 0.25,\r\n\t\\group, ~bassGroup,\r\n\t\\addActon, \\addToHead);\t\t\r\n\r\n~textGroup = Group.new;\r\n~textVerb = Synth(\\rev, [\\inbus, 100, \\revtime, 6], target:~textGroup);\r\n\r\n~textPatA = Pbind(\\instrument, \\textureSynth,\r\n\t\\pat, Prand((0..~scale.size-1),60),\r\n\t\\freq, Pcollect({|i| (~root + ~scale[i]).midicps}, Pstutter(1,Pkey(\\pat))),\r\n\t\\numharm, Prand((1..4), inf), \r\n\t\\dur, 1,\r\n\t\\amp, 0.25,\r\n\t\\clip, 1,\r\n\t\\group, ~textGroup,\r\n\t\\addAction, \\addToHead);\r\n\r\n~textPatB = Pbind(\\instrument, \\textureSynth,\r\n\t\\pat, Prand((0..~scale.size-1),60),\r\n\t\\freq, Pcollect({|i| (~root + ~scale[i]).midicps}, Pstutter(2,Pkey(\\pat))),\r\n\t\\numharm, Prand((4..8), inf), \r\n\t\\dur, 1,\r\n\t\\amp, 0.25,\r\n\t\\clip, 0.5,\r\n\t\\group, ~textGroup,\r\n\t\\addAction, \\addToHead);\r\n\r\n~textPatC = Pbind(\\instrument, \\textureSynth,\r\n\t\\pat, Prand((0..~scale.size-1),60),\r\n\t\\freq, Pcollect({|i| (~root + ~scale[i]).midicps}, Pstutter(1,Pkey(\\pat))),\r\n\t\\numharm, Prand((8..14), inf), \r\n\t\\dur, 1,\r\n\t\\amp, 0.25,\r\n\t\\clip, 0.25,\r\n\t\\group, ~textGroup,\r\n\t\\addAction, \\addToHead);\r\n\t\t\r\nPdef(\\bass, Pseq([~bassPatA],8)).play;\r\nPdef(\\text, Pseq([~textPatA, ~textPatB, ~textPatC, ~textPatA], 1)).play;\r\n};\r\n)",
   "author" : "coreyker",
   "name" : "Fragment IX",
   "ancestor_list" : [],
   "description" : "Code to reproduce this piece:\r\nhttps://frankchannel.bandcamp.com/track/fragment-ix"
}
