{
   "labels" : [
      "dystimbria"
   ],
   "id" : "1-4Sc",
   "is_private" : null,
   "code" : "/*\r\n\"BEASTS(Homunculus-Basilisk)\" By Schemawound\r\nReleased by Dystimbria (http://Dystimbria.cc)\r\n\r\nAll code by Jonathan Siemasko\r\nContains samples from:\r\n\t\"Llais-saL\" by Alan Morse Davies\r\n\t\"A Strange Seed\" by C. Reider\r\n\t\"Swamp Monsters, Secret Prisons\" by Cinchel\r\n\t\"A Brief Compendium of Silence\" by Phillip Wilkerson\r\nArtwork by Jonathan Siemasko\r\nSource Photo by Dan Newkirk (http://newkirk.biz)\r\n\r\nDESCRIPTION:\r\nThis track is created almost entirely from 9 snippets taken \r\n\r\nfrom the 4 tracks listed.  These are \r\nresequenced, repitched and run through a number of effects \r\n\r\nusing Supercollider.  \r\n\r\nWEBSITE:\r\nhttp://www.schemawound.com\r\n*/\r\n\r\n(\r\nfork{\r\n\t~media.dystimbria = ~media.skydrive ++ 'Dystimbria/';\r\n\r\n\t//---------Source Files---------\r\n\t~source = ~source ? ();\r\n\t~source.strangeSeed = ~media.dystimbria ++ \"01-C_Reider-AStrangeSeed.wav\";\r\n\t~source.llais = ~media.dystimbria ++ \"06-Alan_Morse_Davies-Llais-saL.wav\";\r\n\t~source.secretPrisons = ~media.dystimbria ++ \"10-Cinchel-SwampMonsters-SecretPrisons.wav\";\r\n\t~source.silence = ~media.dystimbria ++ \"13-PhillipWilkerson-A_Brief_Compendium_of_Silence.wav\";\r\n\r\n\t//---------Cut Samples---------\r\n\tBuffer.freeAll;\r\n\t~buffers = ~buffers ? ();\r\n\t~buffers.steamLo = Buffer.read(s, ~source.llais, 455000, 80000);\r\n\t~buffers.steamHi = Buffer.read(s, ~source.llais, 1605000, 80000);\r\n\t~buffers.tuvan = Buffer.read(s, ~source.strangeSeed, 2000000, 400000);\r\n\t~buffers.tuvan2 = Buffer.read(s, ~source.strangeSeed, 3000000, 400000);\r\n\t~buffers.secrets = Buffer.read(s, ~source.secretPrisons, 2000000, 40000);\r\n\t~buffers.marbles = Buffer.read(s, ~source.secretPrisons, 10000, 40000);\r\n\t~buffers.wobblySilence = Buffer.read(s, ~source.silence, 848000, 200000);\r\n\t~buffers.toneRise = Buffer.read(s, ~source.silence, 1608000, 200000);\r\n\t~buffers.buzz = Buffer.read(s, ~source.silence, 4608000, 14000);\r\n\r\n\t//---------SynthDef---------\r\n\tSynthDef(\\bufPlay2, {|out = 0, bufnum, rateScale = 1, amp = 1|\r\n\t\tvar buf = PlayBuf.ar(2, bufnum, BufRateScale.kr(bufnum) * rateScale, doneAction: 2);\r\n\t\tOut.ar(out, buf * amp);\r\n\t}).add;\r\n\r\n\tSynthDef(\\bufADSR2, {|out = 0, gate = 1, bufnum, rateScale = 1, amp = 1, attack = 0.01, decay = 0.3, release = 1|\r\n\t\tvar buf = PlayBuf.ar(2, bufnum, BufRateScale.kr(bufnum) * rateScale);\r\n\t\tvar env = EnvGen.ar(Env.adsr(attack, decay, 1, release), gate, doneAction: 2);\r\n\t\tOut.ar(out, buf * env * amp);\r\n\t}).add;\r\n\r\n\tSynthDef(\\distFiltDelay, {|out = 0, in, amp = 1, wet = 0.5, tempo = 1, cutoff = 500, leftDelay = 3, rightDelay = 5|\r\n\t\tvar inSig = In.ar(in, 2);\r\n\t\ttempo = tempo * [leftDelay, rightDelay] / 2;\r\n\t\tinSig = inSig + (HPF.ar(DelayN.ar(inSig, tempo, tempo), cutoff) * wet);\r\n\t\tinSig = inSig + (GVerb.ar(inSig, 30, 6) * 0.1);\r\n\t\tOut.ar(out, inSig * amp);\r\n\t}).add;\r\n\r\n\tSynthDef(\\WailSpectre, {|out = 0, freq = 400, amp = 0.25, gate = 1, release = 1|\r\n\t\tvar oscLFO = SinOsc.ar([0.03, 0.05]).range(0, 10);\r\n\t\tvar saw = Saw.ar(freq);\r\n\t\tvar puretone = SinOsc.ar(freq);\r\n\t\tvar offsettone = SinOsc.ar(freq + (freq / 10 ) + oscLFO);\r\n\t\tvar osc =  puretone * offsettone;\r\n\t\tvar osc2 = osc * saw;\r\n\t\tvar cutoffLFO = SinOsc.ar(0.4).range(100, 200);\r\n\t\tvar filt = RLPF.ar(osc2, cutoffLFO, 0.1);\r\n\t\tvar dist = CrossoverDistortion.ar(filt) * 0.5;\r\n\t\tvar osc3 = (osc * 0.3) + osc2 + dist;\r\n\t\tvar output = ((puretone * 0.3) + osc3) * Linen.kr(gate, release: release, doneAction: 2) * amp;\r\n\t\tOut.ar(out, output);\r\n    }).add;\r\n\r\n\tSynthDef(\\crush, {|out = 0, in, amp = 1|\r\n\t\tvar dec = Decimator.ar(In.ar(in, 2), 16000, 8);\r\n\t\tOut.ar(out, RHPF.ar(dec + (CrossoverDistortion.ar(dec) * 0.1), 200) * amp)\r\n\t}).add;\r\n\r\n\tSynthDef(\\crushNoHPF, {|out = 0, in, amp = 1|\r\n\t\tvar dec = Decimator.ar(In.ar(in, 2), 16000, 10);\r\n\t\tOut.ar(out, dec + (CrossoverDistortion.ar(dec) * 0.1) * amp)\r\n\t}).add;\r\n\r\n\tSynthDef(\\crushNoHPF2, {|out = 0, in, amp = 1|\r\n\t\tvar dec = Decimator.ar(In.ar(in, 2), SinOsc.kr(0.17).range(2000, 8000), 10);\r\n\t\tOut.ar(out, dec + (CrossoverDistortion.ar(dec) * 0.1) * amp)\r\n\t}).add;\r\n\r\n\tSynthDef(\\distort, { arg out=0, sr = 441000, bits = 16, pregain=40, amp=0.2, gate=1;\r\n\t\tvar in = In.ar(out, 2);\r\n\t\tvar gain = (in * pregain).distort;\r\n\t\tvar deci = Decimator.ar(gain, sr, bits);\r\n\t\tvar clip = deci.clip(-0.9, 0.9);\r\n\t\tvar env = Linen.kr(gate, 0.05, 1, 0.1, 2);\r\n\t\tXOut.ar(out, env, clip * amp);\r\n\t}).add;\r\n\r\n\t//---------Clock---------\r\n\t~songClock = TempoClock(1.0, 0);\r\n\r\n\t//---------Groups---------\r\n\t~group = ~group ? ();\r\n\t~group.homunculus = Group.new;\r\n\t~group.basilisk = Group.after(~group.homunculus);\r\n    ~group.fx = Group.after(~group.basilisk);\r\n\r\n\t//---------Busses---------\r\n\t~delayBus = Bus.audio(Server.default, 2);\r\n\t~delayFX = Synth(\\distFiltDelay, [\\out: [0,1], \\in: ~delayBus, amp: 1, tempo: ~songClock.tempo, cutoff: 250], target: ~group.fx);\r\n\tCmdPeriod.doOnce{~delayBus.free};\r\n\r\n\t~straightDelayBus = Bus.audio(Server.default, 2);\r\n\t~straightDelayFX = Synth(\\distFiltDelay, [\\out: [0,1], \\in: ~straightDelayBus, amp: 1, tempo: ~songClock.tempo, cutoff: 250, leftDelay: 8, rightDelay: 8], target: ~group.fx);\r\n\tCmdPeriod.doOnce{~straightDelayBus.free};\r\n\r\n\t~doubleDelayBus = Bus.audio(Server.default, 2);\r\n\t~doubleDelayFX = Synth(\\distFiltDelay, [\\out: ~delayBus, \\in: ~doubleDelayBus, amp: 0.7, tempo: ~songClock.tempo, cutoff: 0], target: ~group.fx);\r\n\tCmdPeriod.doOnce{~doubleDelayBus.free};\r\n\r\n\t~crushBus = Bus.audio(Server.default, 2);\r\n\t~crushFX = Synth(\\crush, [\\out: ~doubleDelayBus, \\in: ~crushBus, amp: 0.5], target: ~group.fx);\r\n\r\n\t~crushBusNoHPF = Bus.audio(Server.default, 2);\r\n\t~crushFXNoHPF = Synth(\\crushNoHPF, [\\out: ~doubleDelayBus, \\in: ~crushBusNoHPF, amp: 0.37], target: ~group.fx);\r\n\r\n\t~crushBusNoHPF2 = Bus.audio(Server.default, 2);\r\n\t~crushFXNoHPF2 = Synth(\\crushNoHPF2, [\\out: ~doubleDelayBus, \\in: ~crushBusNoHPF2, amp: 0.1], target: ~group.fx);\r\n\r\n\t//---------Homunculus Patterns---------\r\n\t~homunculus = ();\r\n\r\n\t//---------Tuvan---------\r\n\t~homunculus.tuvanSkip1 = Pbind(*[bufnum: ~buffers.tuvan, dur: 1, sustain: Pkey(\\dur), rateScale: Pn(1, 12), amp: 0.15, decay: 0.2, out: Pseq([~doubleDelayBus, Pn(~delayBus, 3)], inf)]); //12\r\n\t~homunculus.tuvanSkip2 = Pbind(*[bufnum: ~buffers.tuvan2, dur: 1, sustain: Pkey(\\dur), rateScale: Pn(1, 12), amp: 0.15, decay: 0.2, out: Pseq([~doubleDelayBus, Pn(~delayBus, 3)], inf)]); //12\r\n\t\t~homunculus.tuvan1 = Ptpar([\r\n\t\t00.0, ~homunculus.tuvanSkip1,\r\n\t\t16.0, ~homunculus.tuvanSkip1,\r\n\t\t32.0, ~homunculus.tuvanSkip1, 32.5, ~homunculus.tuvanSkip1,\r\n\t\t48.0, ~homunculus.tuvanSkip1, 48.5, ~homunculus.tuvanSkip1\r\n\t]); //64\r\n\t~homunculus.tuvan2 = Ptpar([\r\n\t\t00.0, ~homunculus.tuvanSkip2,\r\n\t\t16.0, ~homunculus.tuvanSkip2,\r\n\t\t32.0, ~homunculus.tuvanSkip2, 32.5, ~homunculus.tuvanSkip2,\r\n\t\t48.0, ~homunculus.tuvanSkip2, 48.5, ~homunculus.tuvanSkip2,\r\n\t]); //64\r\n\t~homunculus.tuvan = Ptpar([00.0, ~homunculus.tuvan1, 64.0, ~homunculus.tuvan2]); //128\r\n\r\n\t//---------Percussion---------\r\n\t~homunculus.kick = Pbind(*[bufnum: Pseq((~buffers.steamLo!8).add(~buffers.steamHi!8).flatten, inf), dur: 1, sustain: Pkey(\\dur), rateScale: Pseq([0.05].add(Rest!3).flatten, 16), amp: Pseq((0.4!8).add(0.3!8).flatten, inf), decay: 0.1, out: ~delayBus]); //64\r\n\t~homunculus.marbles = Pbind(*[bufnum: ~buffers.marbles, dur: 1/2, sustain: Pkey(\\dur), rateScale: Pn(0.5, 8), amp: 1.5, decay: 0.5, out: ~delayBus]);\r\n\t~homunculus.percLoop64 = Ptpar([\r\n\t\t00.0, ~homunculus.kick,\r\n\t\t28.0, ~homunculus.marbles,\r\n\t\t60.0, ~homunculus.marbles\r\n\t]); //64\r\n\t~homunculus.percLoop128 = Ptpar([\r\n\t\t00.0, ~homunculus.percLoop64,\r\n\t\t64.0, ~homunculus.percLoop64\r\n\t]); //128\r\n\r\n\t//---------Wobble Synth---------\r\n\t~homunculus.wobbleSkip = Pbind(*[bufnum: ~buffers.wobblySilence, dur: 1/3, sustain: Pkey(\\dur), rateScale: Pseq([1,1,1,0.98]), amp: 1, decay: 0.1, out: ~delayBus]);\r\n\t~homunculus.wobbleSkip64 = Ptpar([\r\n\t\t00.0, ~homunculus.wobbleSkip, 02.0, ~homunculus.wobbleSkip,\r\n\t\t08.0, ~homunculus.wobbleSkip, 10.0, ~homunculus.wobbleSkip,\r\n\t\t16.0, ~homunculus.wobbleSkip, 18.0, ~homunculus.wobbleSkip,\r\n\t\t24.0, ~homunculus.wobbleSkip, 26.0, ~homunculus.wobbleSkip,\r\n\t]); //64\r\n\t~homunculus.wobbleSkip128 = Ptpar([\r\n\t\t00.0, ~homunculus.wobbleSkip64,\r\n\t\t64.0, ~homunculus.wobbleSkip64\r\n\t]); //128\r\n\t~homunculus.wobbleSyn = Ppar([~homunculus.mainLoop, ~homunculus.wobbleSkip128]); //128\r\n\r\n\t//---------ToneSkip---------\r\n\t~homunculus.toneRiseSkip = Pbind(*[bufnum: ~buffers.toneRise, dur: 1/2, sustain: Pkey(\\dur), rateScale: Pseq([Pn(1, 8), Pseq([1, Rest], 4)], 2), amp: 1, decay: 0.001, out: ~straightDelayBus]);\r\n\t~homunculus.toneRiseSkip = Pn(~homunculus.toneRiseSkip, 8); //128\r\n\r\n\t//---------Buzz---------\r\n\t~homunculus.buzz = Pbind(*[bufnum: ~buffers.buzz, dur: 1/8, sustain: Pkey(\\dur)/5, rateScale: Pn(0.6, 8), amp: 0.5, release: 0.3, out: ~crushBus]);\r\n\t~homunculus.buzz16 = Ptpar([00.0, ~homunculus.buzz, 08.0, ~homunculus.buzz]);\r\n\t~homunculus.buzz128 = Ptpar([\r\n\t\t00.0, ~homunculus.buzz16,\r\n\t\t32.0, ~homunculus.buzz16,\r\n\t\t64.0, ~homunculus.buzz16,\r\n\t\t96.0, ~homunculus.buzz16\r\n\t]);\r\n\r\n\t//---------Snare---------\r\n\t~homunculus.snare = Pbind(*[bufNum: ~buffers.steamHi, dur: Pseq([4, 1, 3], 16), sustain: Pkey(\\dur), rateScale: Pseq([Rest, 0.3, Rest], inf), amp: 0.45, decay: 0.01, out: ~delayBus]); //128\r\n\r\n\t//---------Secret---------\r\n\t~homunculus.secret = Pbind(*[bufnum: ~buffers.secrets, dur: Pseq(((1!3).add(1/2!2)!2).add(2).flatten.flatten), sustain: Pkey(\\dur), rateScale: Pseq(([1, 0.5, 1, 1.5, 1.5]!2).add(Rest).flatten), amp: Pseq([1, 1, 1, 0.6, 0.6], inf), decay: 0.01, out: ~delayBus]);\r\n\r\n\t//---------Homunculus---------\r\n\t~homunculus.song =\tPseq([\r\n\t\t~homunculus.secret,\r\n\t\tPpar([~homunculus.percLoop128, ~homunculus.tuvan]),\r\n\t\tPpar([~homunculus.percLoop128, ~homunculus.tuvan, ~homunculus.wobbleSyn]),\r\n\t\tPpar([~homunculus.snare, ~homunculus.percLoop128, ~homunculus.tuvan, ~homunculus.toneRiseSkip, ~homunculus.buzz128]),\r\n\t\tPpar([~homunculus.snare, ~homunculus.percLoop128, ~homunculus.tuvan, ~homunculus.wobbleSyn, ~homunculus.toneRiseSkip, ~homunculus.buzz128]),\r\n\t]);\r\n\t~homunculus.song = Pchain(~homunculus.song, (group: ~group.homunculus));\r\n\r\n\t//---------basilisk Patterns---------\r\n\t~basilisk = ();\r\n\r\n\t~basilisk.wobble = Pbind(*[bufnum: ~buffers.wobblySilence, dur: 2/3, sustain: Pkey(\\dur), rateScale: Pseq([0.5,0.5,0.98,0.5,0.5,0.5,0.98],4), amp: 1, decay: 0.1, out: ~delayBus]);\r\n\t~basilisk.kick = Pbind(*[bufnum: ~buffers.steamLo, dur: Pseq([2/3*3, 2/3*4], 4), sustain: 0.5, rateScale: 0.08, amp: 0.2, release: 0.1, out: ~crushBusNoHPF]); //64\r\n\t~basilisk.hat = Pbind(*[bufnum: ~buffers.steamLo, dur: Pseq([Pn(2/3/8, 8), Pn(Rest(2/3/8), 8)], 7), sustain: 0.5, rateScale: Pseq((128!16).add(64!16).flatten, inf) * Pwhite(0.8, 1.2), amp: Pwhite(0.02, 0.03), attack: 0.001, release: 0.001,  out: ~crushBusNoHPF]); //64\r\n\t~basilisk.singleKick = Pbind(*[bufnum: ~buffers.steamLo, dur: Pn(2/3*14, 2), sustain: 0.5, rateScale: 0.08, amp: 0.2, release: 0.1, out: ~crushBusNoHPF]); //64\r\n\t~basilisk.kickTone = Pbind(*[bufnum: ~buffers.steamLo, dur: Pseq([2/3*3, 2/3*4], 4), sustain: 0.5, rateScale: 0.8, amp: 0.1, release: 0.1, out: ~crushBusNoHPF]); //64\r\n\t~basilisk.kickTone2 = Pbind(*[bufnum: ~buffers.steamLo, dur: Pseq([2/3*3/2, 2/3*3/2, 2/3*4/2, 2/3*4/2], 4), sustain: 0.5, rateScale: Pseq([Rest, 6, Rest, 4], inf), amp: 0.1, release: 0.1, out: ~crushBusNoHPF2]); //64\r\n\t~basilisk.wail = Pbind(*[instrument: \\WailSpectre, dur: Pseq([2/3] * 7, 4), sustain: Pseq([Pn(Pkey(\\dur) / 3, 3), Pkey(\\dur) / 10], inf), amp: 0.015, freq: Pseq([800, 800, 800, 900], inf), release: 0.1, out: ~delayBus]); //64\r\n\t~basilisk.distortPattern = Pmono(\\distort, \\dur, Pn(2/3, 7*4), \\pregain, 1, \\sr, Pseq([3e3, 2e3, 1e3, 4e3, 2e3, 1e3, 2e3], inf), \\bits, Pseq([16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 8, 10, 12], inf), \\amp, 0.7, \\group, ~group.fx, \\addAction, 1);\r\n\r\n\t~basilisk.song = Pseq([\r\n\t\tPseq([\r\n\t\t\tPpar([~basilisk.wobble, ~basilisk.kick]),\r\n\t\t\tPpar([~basilisk.wobble, ~basilisk.singleKick, ~basilisk.kickTone]),\r\n\t\t\tPpar([~basilisk.wobble, ~basilisk.kick, ~basilisk.kickTone2]),\r\n\t\t\tPpar([~basilisk.wobble, ~basilisk.singleKick, ~basilisk.kickTone, ~basilisk.kickTone2]),\r\n\t\t\tPpar([~basilisk.wobble, ~basilisk.kick, ~basilisk.wail, ~basilisk.hat]),\r\n\t\t\tPpar([~basilisk.wobble, ~basilisk.singleKick, ~basilisk.kickTone, ~basilisk.wail, ~basilisk.hat]),\r\n\t\t\tPpar([~basilisk.wobble, ~basilisk.kick, ~basilisk.kickTone2, ~basilisk.wail, ~basilisk.hat]),\r\n\t\t\tPpar([~basilisk.wobble, ~basilisk.singleKick, ~basilisk.kickTone, ~basilisk.kickTone2, ~basilisk.wail, ~basilisk.hat]),\r\n\t\t], 2),\r\n\t\tPpar([~basilisk.distortPattern, ~basilisk.wobble, ~basilisk.kick, ~basilisk.kickTone2, ~basilisk.wail, ~basilisk.hat]),\r\n\t\tPpar([~basilisk.distortPattern, ~basilisk.singleKick, ~basilisk.kickTone, ~basilisk.kickTone2, ~basilisk.wail, ~basilisk.hat]),\r\n\t\tPpar([~basilisk.distortPattern])\r\n\t]);\r\n\t~basilisk.song = Pchain(~basilisk.song, (group: ~group.basilisk));\r\n\r\n\t//---------Sync---------\r\n\ts.sync;\r\n\r\n\t//---------Display---------\r\n\t5.do{''.postln};\r\n\r\n\t'-----SOURCE-----'.postln; ~source.dopostln;\r\n\t'-----GROUPS-----'.postln; ~group.dopostln;\r\n\t'-----BUFFERS-----'.postln; ~buffers.dopostln;\r\n\t'-----HOMONCULUS-----'.postln; ~homunculus.dopostln;\r\n\t'-----BASILISK-----'.postln; ~basilisk.dopostln;\r\n\r\n\t//---------Song---------\r\n\t~fullSong = Pseq([\r\n\t\t~homunculus.song,\r\n\t\t~basilisk.song\r\n\t]);\r\n\r\n\t6.wait; //Something pops then echos when I first start up.  Delay to let it finish.\r\n\t~fullSong.play(~songClock, protoEvent: (instrument: \\bufADSR2)); //13:37\r\n};\r\n)",
   "name" : "BEASTS(Homunculus-Basilisk)",
   "author" : "Schemawound",
   "description" : "\"BEASTS(Homunculus-Basilisk)\" By Schemawound  \r\nReleased by Dystimbria [http://Dystimbria.cc](http://Dystimbria.cc)  \r\n  \r\nAll code by Jonathan Siemasko  \r\n  \r\nContains samples from:  \r\nLlais-saL by Alan Morse Davies  \r\nA Strange Seed by C. Reider  \r\nSwamp Monsters, Secret Prisons by Cinchel  \r\nA Brief Compendium of Silence by Phillip Wilkerson  \r\n  \r\nArtwork by Jonathan Siemasko  \r\nSource Photo by Dan Newkirk [http://newkirk.biz](http://newkirk.biz)  \r\n  \r\nDESCRIPTION:  \r\nThis track is created almost entirely from 9 snippets taken from the 4 tracks listed.  These are resequenced, repitched and run through a number of effects using Supercollider.  \r\n  \r\nFor free download please visit [http://Dystimbria.cc](http://Dystimbria.cc)",
   "ancestor_list" : []
}
