«electro drum kit» by snappizz
on 09 Sep'16 21:02 inscrounged together from various youtube tutorials and forum posts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
(
SynthDef(\kick, {
|out = 0, pan = 0, amp = 0.3|
var body, bodyFreq, bodyAmp;
var pop, popFreq, popAmp;
var click, clickAmp;
var snd;
// body starts midrange, quickly drops down to low freqs, and trails off
bodyFreq = EnvGen.ar(Env([261, 120, 51], [0.035, 0.08], curve: \exp));
bodyAmp = EnvGen.ar(Env.linen(0.005, 0.1, 0.3), doneAction: 2);
body = SinOsc.ar(bodyFreq) * bodyAmp;
// pop sweeps over the midrange
popFreq = XLine.kr(750, 261, 0.02);
popAmp = EnvGen.ar(Env.linen(0.001, 0.02, 0.001)) * 0.15;
pop = SinOsc.ar(popFreq) * popAmp;
// click is spectrally rich, covering the high-freq range
// you can use Formant, FM, noise, whatever
clickAmp = EnvGen.ar(Env.perc(0.001, 0.01)) * 0.15;
click = LPF.ar(Formant.ar(910, 4760, 2110), 3140) * clickAmp;
snd = body + pop + click;
snd = snd.tanh;
Out.ar(out, Pan2.ar(snd, pan, amp));
}).add;
SynthDef(\snare, {
|out = 0, pan = 0, amp = 0.3|
var pop, popAmp, popFreq;
var noise, noiseAmp;
var snd;
// pop makes a click coming from very high frequencies
// slowing down a little and stopping in mid-to-low
popFreq = EnvGen.ar(Env([3261, 410, 160], [0.005, 0.01], curve: \exp));
popAmp = EnvGen.ar(Env.perc(0.001, 0.11)) * 0.7;
pop = SinOsc.ar(popFreq) * popAmp;
// bandpass-filtered white noise
noiseAmp = EnvGen.ar(Env.perc(0.001, 0.15), doneAction: 2);
noise = BPF.ar(WhiteNoise.ar, 810, 1.6) * noiseAmp;
snd = (pop + noise) * 1.3;
Out.ar(out, Pan2.ar(snd, pan, amp));
}).add;
SynthDef(\hihat, {
|out = 0, pan = 0, amp = 0.3|
var click, clickAmp;
var noise, noiseAmp;
var snd;
// noise -> resonance -> expodec envelope
noiseAmp = EnvGen.ar(Env.perc(0.001, 0.3, curve: -8), doneAction: 2);
noise = Mix(BPF.ar(ClipNoise.ar, [4010, 4151], [0.15, 0.56], [1.0, 0.6])) * 0.7 * noiseAmp;
snd = noise;
Out.ar(out, Pan2.ar(snd, pan, amp));
}).add;
// adapted from a post by Neil Cosgrove (other three are original)
SynthDef(\clap, {
|out = 0, amp = 0.5, pan = 0, dur = 1|
var env1, env2, snd, noise1, noise2;
// noise 1 - 4 short repeats
env1 = EnvGen.ar(
Env.new(
[0, 1, 0, 0.9, 0, 0.7, 0, 0.5, 0],
[0.001, 0.009, 0, 0.008, 0, 0.01, 0, 0.03],
[0, -3, 0, -3, 0, -3, 0, -4]
)
);
noise1 = WhiteNoise.ar(env1);
noise1 = HPF.ar(noise1, 600);
noise1 = LPF.ar(noise1, XLine.kr(7200, 4000, 0.03));
noise1 = BPF.ar(noise1, 1620, 3);
// noise 2 - 1 longer single
env2 = EnvGen.ar(Env.new([0, 1, 0], [0.02, 0.18], [0, -4]), doneAction:2);
noise2 = WhiteNoise.ar(env2);
noise2 = HPF.ar(noise2, 1000);
noise2 = LPF.ar(noise2, 7600);
noise2 = BPF.ar(noise2, 1230, 0.7, 0.7);
snd = noise1 + noise2;
snd = snd * 2;
snd = snd.softclip;
Out.ar(out, Pan2.ar(snd,pan,amp));
}).add;
)
(
var base;
base = Pbind(\amp, 0.3);
Ppar([
Pbindf(
base,
\instrument, Pseq([\kick, \snare, \kick, \kick, \snare], inf),
\dur, Pseq([4, 3, 3, 2, 4], inf)
),
Pbindf(
base,
\instrument, Pseq([Pn(\hihat, 16), Pn(\clap, 16)], inf),
\dur, Pseq([Rest(2), 2, Rest(2), 2], inf)
)
]).play(TempoClock(2.3 * 4));
)
reception
thanks for sharing, drum kits are what i found the most difficult to synthesis when begining
I've been learning how to synthesise drums. I'll take a look at these. :)
heh, this was one of my first attempts at drum sound design and i've gotten much better since, but if it's instructive then i won't stop you :)
Don't be shy about posting one of your more recent ones then! ;)
I'll fling one up in a bit.
i'm also studying drum synths and this was also very useful to me!
don't hesitate in posting your newer ones (: