{
   "labels" : [
      "bass",
      "snare",
      "instrument",
      "kick",
      "drum",
      "hi hat",
      "clap"
   ],
   "is_private" : null,
   "id" : "1-523",
   "code" : "(\r\nSynthDef(\\kick, {\r\n    |out = 0, pan = 0, amp = 0.3|\r\n    var body, bodyFreq, bodyAmp;\r\n    var pop, popFreq, popAmp;\r\n    var click, clickAmp;\r\n    var snd;\r\n\r\n    // body starts midrange, quickly drops down to low freqs, and trails off\r\n    bodyFreq = EnvGen.ar(Env([261, 120, 51], [0.035, 0.08], curve: \\exp));\r\n    bodyAmp = EnvGen.ar(Env.linen(0.005, 0.1, 0.3), doneAction: 2);\r\n    body = SinOsc.ar(bodyFreq) * bodyAmp;\r\n    // pop sweeps over the midrange\r\n    popFreq = XLine.kr(750, 261, 0.02);\r\n    popAmp = EnvGen.ar(Env.linen(0.001, 0.02, 0.001)) * 0.15;\r\n    pop = SinOsc.ar(popFreq) * popAmp;\r\n    // click is spectrally rich, covering the high-freq range\r\n    // you can use Formant, FM, noise, whatever\r\n    clickAmp = EnvGen.ar(Env.perc(0.001, 0.01)) * 0.15;\r\n    click = LPF.ar(Formant.ar(910, 4760, 2110), 3140) * clickAmp;\r\n\r\n    snd = body + pop + click;\r\n    snd = snd.tanh;\r\n\r\n    Out.ar(out, Pan2.ar(snd, pan, amp));\r\n}).add;\r\n\r\nSynthDef(\\snare, {\r\n    |out = 0, pan = 0, amp = 0.3|\r\n    var pop, popAmp, popFreq;\r\n    var noise, noiseAmp;\r\n    var snd;\r\n\r\n    // pop makes a click coming from very high frequencies\r\n    // slowing down a little and stopping in mid-to-low\r\n    popFreq = EnvGen.ar(Env([3261, 410, 160], [0.005, 0.01], curve: \\exp));\r\n    popAmp = EnvGen.ar(Env.perc(0.001, 0.11)) * 0.7;\r\n    pop = SinOsc.ar(popFreq) * popAmp;\r\n    // bandpass-filtered white noise\r\n    noiseAmp = EnvGen.ar(Env.perc(0.001, 0.15), doneAction: 2);\r\n    noise = BPF.ar(WhiteNoise.ar, 810, 1.6) * noiseAmp;\r\n\r\n    snd = (pop + noise) * 1.3;\r\n\r\n    Out.ar(out, Pan2.ar(snd, pan, amp));\r\n}).add;\r\n\r\nSynthDef(\\hihat, {\r\n    |out = 0, pan = 0, amp = 0.3|\r\n    var click, clickAmp;\r\n    var noise, noiseAmp;\r\n    var snd;\r\n\r\n    // noise -> resonance -> expodec envelope\r\n    noiseAmp = EnvGen.ar(Env.perc(0.001, 0.3, curve: -8), doneAction: 2);\r\n    noise = Mix(BPF.ar(ClipNoise.ar, [4010, 4151], [0.15, 0.56], [1.0, 0.6])) * 0.7 * noiseAmp;\r\n\r\n    snd = noise;\r\n\r\n    Out.ar(out, Pan2.ar(snd, pan, amp));\r\n}).add;\r\n\r\n// adapted from a post by Neil Cosgrove (other three are original)\r\nSynthDef(\\clap, {\r\n    |out = 0, amp = 0.5, pan = 0, dur = 1|\r\n    var env1, env2, snd, noise1, noise2;\r\n\r\n    // noise 1 - 4 short repeats\r\n    env1 = EnvGen.ar(\r\n        Env.new(\r\n            [0, 1, 0, 0.9, 0, 0.7, 0, 0.5, 0],\r\n            [0.001, 0.009, 0, 0.008, 0, 0.01, 0, 0.03],\r\n            [0, -3, 0, -3, 0, -3, 0, -4]\r\n        )\r\n    );\r\n\r\n    noise1 = WhiteNoise.ar(env1);\r\n    noise1 = HPF.ar(noise1, 600);\r\n    noise1 = LPF.ar(noise1, XLine.kr(7200, 4000, 0.03));\r\n    noise1 = BPF.ar(noise1, 1620, 3);\r\n\r\n    // noise 2 - 1 longer single\r\n    env2 = EnvGen.ar(Env.new([0, 1, 0], [0.02, 0.18], [0, -4]), doneAction:2);\r\n\r\n    noise2 = WhiteNoise.ar(env2);\r\n    noise2 = HPF.ar(noise2, 1000);\r\n    noise2 = LPF.ar(noise2, 7600);\r\n    noise2 = BPF.ar(noise2, 1230, 0.7, 0.7);\r\n\r\n    snd = noise1 + noise2;\r\n    snd = snd * 2;\r\n    snd = snd.softclip;\r\n\r\n    Out.ar(out, Pan2.ar(snd,pan,amp));\r\n}).add;\r\n)\r\n\r\n(\r\nvar base;\r\n\r\nbase = Pbind(\\amp, 0.3);\r\n\r\nPpar([\r\n    Pbindf(\r\n        base,\r\n        \\instrument, Pseq([\\kick, \\snare, \\kick, \\kick, \\snare], inf),\r\n        \\dur, Pseq([4, 3, 3, 2, 4], inf)\r\n    ),\r\n    Pbindf(\r\n        base,\r\n        \\instrument, Pseq([Pn(\\hihat, 16), Pn(\\clap, 16)], inf),\r\n        \\dur, Pseq([Rest(2), 2, Rest(2), 2], inf)\r\n    )\r\n]).play(TempoClock(2.3 * 4));\r\n)",
   "name" : "electro drum kit",
   "author" : "snappizz",
   "description" : "scrounged together from various youtube tutorials and forum posts",
   "ancestor_list" : []
}
