BLOGGER TEMPLATES AND TWITTER BACKGROUNDS

Friday, 26 February 2010

Synthesising drums & creating SynthDefs for them

// Kick Drum

({
var sin, pw;

sin= SinOsc.ar(freq: Line.kr(70,40,0.1,doneAction:2),    
      add: 0, mul: 0.3);
pw= Pulse.ar(freq: 40, add: 0,
     mul: EnvGen.ar(Env.perc(0,0.07,0.2)));
Mix.new([sin,pw]);
}.play)

SynthDef(\kick,
    {arg vol= 1, decay= 1, pitch= 1, filter= 1;
    var sin, pw, kik, kikfilter;
    sin= LFTri.ar(freq: Line.kr(40,20,0.1*decay,doneAction:2)*pitch,
            add: 0, mul: 0.3*vol);
    pw= Pulse.ar(freq: 40, add: 0,
               mul: EnvGen.ar(Env.perc(0,0.07,0.3*vol)));
    kik= Mix.new([sin,pw]);
    kikfilter= LPF.ar(in: kik, freq: XLine.kr(200,30,0.1*decay)*filter);

    Out.ar(0, kikfilter)}).load(s);   

a= Synth(\kick);
b= Synth(\kick,[\vol,1,\decay,2,\pitch,2,\filter,2]);
c= Synth(\kick,[\vol,1,\decay,4,\pitch,2,\filter,115]);
d= Synth(\kick,[\vol,1,\decay,2,\pitch,9,\filter,10]);


// Snare Drum

SynthDef(\snare,
    {arg vol= 1, decay= 1, pitch= 1, filter= 1, filter2= 1;
    var noise, filtap, tri, snare, snaref, snaref2;
    filtap= EnvGen.ar(Env.perc(0,0.2*decay,0.2*vol,1));
    noise= WhiteNoise.ar(mul: filtap, add: Line.kr(-3.5,2,1));
    tri= Pulse.ar(freq: Line.kr(60*pitch,228,0.3,doneAction:2),
               mul: Line.kr(0.1,0.00,0.1)*vol);
    snare= noise+tri;
    snaref= HPF.ar(in: snare, freq: Line.kr(800,200,0.22)*filter);
    snaref2= LPF.ar(in: snaref, freq: Line.kr(600,1000,0.81)*filter2);
Out.ar(0, snaref)}).play(s)


e= Synth(\snare,[\vol,1,\decay,1.5,\pitch,5]);
f= Synth(\snare,[\vol,1,\decay,1,\pitch,0,\filter,0.19]);
g= Synth(\snare,[\vol,1,\decay,1,\pitch,5,\filter2,0]);

// Hi-hats

SynthDef(\hats,
    {arg vol= 1, decay= 1;
    var noise, filter, envel, menv;
    menv= EnvGen.ar(Env.perc(0.3,0.01,1,4));
    noise= WhiteNoise.ar(mul: menv*vol*4, add: Line.kr(0,0,0.03*decay,doneAction:2));
    envel= EnvGen.ar(Env.adsr(0,0.4*decay,0.7,0.2,2900));
    filter= HPF.ar(in: noise, freq: envel);
Out.ar(0, filter)}).play(s)

h= Synth(\hats,[\vol,3,\decay,1]);
i= Synth(\hats,[\vol,1,\decay,2]);

// Cymbals...(not quite)

SynthDef(\cymbal,
    {arg vol= 0.5, decay= 1, pitch= 1;
    var sq1, sq2;
    sq1= Pulse.ar(freq: Line.kr(623,223,0.2*decay,doneAction:2)*pitch, mul: 0.3*vol);
    sq2= Pulse.ar(add: 0,
    freq:EnvGen.ar(Env.triangle(0.8*decay,300)),
        mul: 0.3*vol);
Out.ar(0, sq1*sq2)}).play(s)

j= Synth(\cymbal);

Drum synthesis tutorials from 'The Dance Music Manual' -Snoman.

0 comments: