// title: Colby moeller 115 pluck // author: cmoeller // description: // https://soundcloud.com/user-52183734/sc-1707302 // code: ( SynthDef("hihat", {arg out = 0, amp = 0.5, att = 0.01, rel = 0.2, ffreq = 6000, pan = 0; var env, snd; env = Env.perc(att, rel, amp).kr(doneAction: 2); snd = WhiteNoise.ar; snd = HPF.ar(in: snd, freq: ffreq, mul: env); Out.ar(out, Pan2.ar(snd, pan)); }).add; SynthDef("snare", {arg out = 0, amp = 0.1, sinfreq = 180, att = 0.01, rel = 0.2, ffreq = 2000, pan = 0; var env, snd1, snd2, sum; env = Env.perc(att, rel, amp).kr(doneAction: 2); snd1 = HPF.ar( in: WhiteNoise.ar, freq: ffreq, mul: env ); snd2 = SinOsc.ar(freq: sinfreq, mul: env); sum = snd1 + snd2; Out.ar(out, Pan2.ar(sum, pan)); }).add; SynthDef("kick", {arg out = 0, amp = 0.3, sinfreq = 60, glissf = 0.9, att = 0.01, rel = 0.45, pan = 0; var env, snd, ramp; env = Env.perc(att, rel, amp).kr(doneAction: 2); ramp = XLine.kr( start: sinfreq, end: sinfreq * glissf, dur: rel ); snd = SinOsc.ar(freq: ramp, mul: env); snd = Pan2.ar(snd, pan); Out.ar(out, snd); }).add; SynthDef("sawSynth", { arg freq = 440, amp = 0.1, att = 0.1, rel = 2, lofreq = 1000, hifreq = 3000; var env, snd; env = Env.perc( attackTime: att, releaseTime: rel, level: amp ).kr(doneAction: 2); snd = Saw.ar(freq: freq * [0.99, 1, 1.001, 1.008], mul: env); snd = LPF.ar( in: snd, freq: LFNoise2.kr(1).range(lofreq, hifreq) ); snd = Splay.ar(snd); Out.ar(0, snd); }).add; ( SynthDef("plucking", {arg amp = 0.1, freq = 440, decay = 5, dampen = 0.1; var env, snd; env = Env.linen(0, decay, 0).kr(doneAction: 2); snd = Pluck.ar( in: WhiteNoise.ar(amp), trig: Impulse.kr(0), maxdelaytime: 0.1, delaytime: freq.reciprocal, decaytime: decay, coef: dampen); Out.ar(0, [snd, snd]); }).add; ) ) ~hihat = Pbind(\instrument, "hihat", \dur, 0.5,); ~saw= Pbind(\instrument, "sawSynth", \dur, Pseq([1, 2,3,0.5]), \rel, 1,); ~kick= Pbind(\instrument, "kick", \dur, .1); ~snare= Pbind(\instrument, "snare", \dur, 1/2); ~pluck=Pbind(\instrument, "plucking", \dur, 1/2,); ~hihat.play; ~saw.play; ~kick.play; ~snare.play; ~pluck.play; ( { ~player1=~kick.play; 4.wait; ~player2=~hihat.play; 3.wait; ~player1.stop; 2.wait; ~player5=~saw.play; 1.wait; ~player1.play; 1.wait; ~player3=~pluck.play; 1.wait; ~player4=~snare.play; 2.wait; ~player5.stop; 3.wait; ~player1.play; ~player2.stop; ~player3.stop; 2.wait; ~player3.play; 2.wait; ~player3.stop; ~player1.stop; }.fork; )