// title: Broken Nostalgia - 115granular // author: ldavidson // description: // Sound Cloud: https://soundcloud.com/lydia-davidson-919585173/broken-nostalgia-115granular // // Samples: https://drive.google.com/open?id=0B4lYb-DVaMMLekk4Y0JiSlkwbGM // code: b = Buffer.read(s, "/Applications/Audacity/1-06 All My Loving.wav"); c = Buffer.read(s, "/Applications/Audacity/BOW.wav"); // SynthDefs ( // simple synthdef, no filters or effects, just env and panning control SynthDef("granny1", {arg rate = 1, amp = 1, buffer, startPos = 0, attack = 0.02, release = 0.5, panning = 0; var snd, env; env = Env.perc(attackTime: attack, releaseTime: release, level: amp).kr(doneAction: 2); snd = PlayBuf.ar( numChannels: 1, bufnum: buffer, rate: rate, startPos: startPos.linlin(0, 1, 0, BufFrames.kr(buffer)) ); snd = snd * env; snd = Pan2.ar(snd, panning); Out.ar(0, snd); }).add; // Same as above, but adding a filter just for fun SynthDef("granny2", {arg rate = 1, amp = 1, buffer, startPos = 0, attack = 0.02, release = 0.5, ffreq = 1000, rq = 0.1, panning = 0; var snd, env; env = Env.perc(attackTime: attack, releaseTime: release, level: amp).kr(doneAction: 2); snd = PlayBuf.ar( numChannels: 1, bufnum: buffer, rate: rate, startPos: startPos.linlin(0, 1, 0, BufFrames.kr(buffer)) ); snd = snd * env; snd = BPF.ar(snd, ffreq, rq); snd = Pan2.ar(snd, panning); Out.ar(0, snd); }).add; // Same as above, but adding an echo effect (CombC) SynthDef("granny3", {arg rate = 1, amp = 1, buffer, startPos = 0, attack = 0.02, release = 0.5, ffreq = 1000, rq = 0.1, panning = 0, delay = 0.3, decay = 1; var snd, env; env = Env.perc(attackTime: attack, releaseTime: release, level: amp).kr(doneAction: 2); snd = PlayBuf.ar( numChannels: 1, bufnum: buffer, rate: rate, startPos: startPos.linlin(0, 1, 0, BufFrames.kr(buffer)) ); snd = snd * env; snd = BPF.ar(snd, ffreq, rq); snd = CombC.ar(snd, maxdelaytime: 2, delaytime: delay, decaytime: decay); snd = Pan2.ar(snd, panning); Out.ar(0, snd); }).add; ) //Pbinds ( ~oldfashioned = Pbind( \instrument, "granny2", \rate, Pseq([1, 0.5], 3.5), \amp, 0.05, \startPos, 0, \attack, 1, \release, 1, \ffreq, 3000, \rq, 0.1, \buffer, b, \dur, 0.5, \panning, 0 ); ~oldfashioned2 = Pbind( \instrument, "granny2", \rate, Pseq([1, 0.75], 4.5), \amp, 0.05, \startPos, 0, \attack, 0.5, \release, 0.5, \ffreq, 25000, \rq, 0.08, \buffer, b, \dur, 0.5, \panning, 0 ); ~oldfashionedstay = Pbind( \instrument, "granny2", \rate, 1, \amp, 0.035, \startPos, 0, \attack, 0.25, \release, 0.05, \ffreq, 23000, \rq, 0.08, \buffer, b, \dur, 0.5, \panning, 0 ); ~oldfashionedstay2 = Pbind( \instrument, "granny2", \rate, 1, \amp, 0.025, \startPos, 0, \attack, 0.05, \release, 0.02, \ffreq, 23000, \rq, 0.08, \buffer, b, \dur, 0.5, \panning, 0 ); ~lowbeat = Pbind( \instrument, "granny2", \rate, Pseq([0.5, 0.5, 0.25, 1, 1, 0.25, 0.5, 0.5], inf), \amp, 0.08, \startPos, 0, \attack, 0.05, \release, 0.05, \ffreq, 100, \rq, 0.08, \buffer, b, \dur, 0.25, \panning, 0 ); ~heartbeat = Pbind( \instrument, "granny2", \rate, Pseq([0.5, 1], inf), \amp, 0.08, \startPos, 0, \attack, 0.05, \release, 0.05, \ffreq, 100, \rq, 0.08, \buffer, b, \dur, Pseq([0.35, 0.9],inf), \panning, 0 ); ~chop = Pbind( \instrument, "granny3", \rate, Pseq([60, 50, 60, 70, 50], 20), \amp, 0.25, \startPos, Prand([0.5, 0.36, 0.8, 0.3, 0.4], 20), \attack, 0.05, \release, 0.02, \ffreq, 500, \rq, 0.04, \delay, 0, \decay, 0.5, \buffer, b, \dur, 0.5, \panning, Pwhite(-0.5, 0.5) ); ~creepygiggle = Pbind( \instrument, "granny2", \rate, Pseq([1.25, 1.5, 2, 2.5, 2, 2.35, 2.56, 1.75, 2.45], 1), \amp, 0.05, \startPos, 0.5, \attack, 0.5, \release, 0.5, \ffreq, 8000, \rq, 0.3, \buffer, c, \dur, Pwhite(0.25, 0.5), \panning, 0 ); ~buffc = Pbind( \instrument, "granny2", \rate, Pseq([1, 1, 1.2, 1.3, 1, 1.2, 1, 1.2], inf), \amp, 0.25, \startPos, 0.67, \attack, 0.5, \release, 1, \ffreq, 3000, \rq, 0.05, \buffer, c, \dur, 0.5, \panning, 0 ); ~oldfashioned3 = Pbind( \instrument, "granny2", \rate, Pseq([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], inf), \amp, 0.05, \startPos, Pseq([0, 0.25, 0.14, 0.67, 0.83, 0.9, 0.5, 0.23, 0.08, 0.45, 0.86, 0.13, 0.6, 0.55]), \attack, 0.1, \release, 1, \ffreq, 500, \rq, 0.1, \buffer, b, \dur, Pwhite(0.25, 0.75), \panning, 0 ); ~oldfashioned4 = Pbind( \instrument, "granny2", \rate, Pseq([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], inf), \amp, 0.02, \startPos, Pseq([0.25, 0.83, 0.9, 0.5, 0.86, 0.13]), \attack, 0.1, \release, 0.5, \ffreq, 900, \rq, 0.1, \buffer, b, \dur, Pwhite(0.25, 0.75), \panning, 0 ); ) ~buffc.play; ~oldfashioned.play; ~oldfashioned2.play; ~oldfashionedstay.play; ~lowbeat.play; ~chop.play; ~creepygiggle.play; ~heartbeat.play; ~oldfashioned3.play; ~oldfashioned4.play; ~oldfashionedstay2.play; // ================================= // Putting stuff together with Pspawner // ================================= ( Pspawner({ arg maestro; ~player0 = maestro.par(~buffc); 5.wait; maestro.seq(~oldfashioned); maestro.seq(~oldfashioned2); ~player1 = maestro.par(~oldfashionedstay); 4.wait; ~player2 = maestro.par(~lowbeat); 4.wait; maestro.par(~chop); 5.wait; maestro.seq(~creepygiggle); maestro.suspend(~player1); 6.wait; maestro.suspend(~player2); 0.5.wait; ~player3 = maestro.par(~heartbeat); 5.wait; maestro.seq(~oldfashioned3); 4.wait; maestro.seq(~oldfashioned4); 2.wait; ~player4 = maestro.par(~oldfashionedstay2); 3.wait; maestro.suspend(~player4); 4.wait; maestro.suspend(~player3); 4.wait; maestro.suspendAll; }).play; )