Submit
Browse
Anonymous
Login
RSS
SuperCollider Code
Fork Code: electro drum kit
name
code content
( 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)); )
code description
scrounged together from various youtube tutorials and forum posts
use markdown for formating
category tags
comma separated, i.g. "wild, siren" (do not enter default SC class names, please)
ancestor(s)
comma separated identificators, i.g. "1-C,1-1,1-4M,1-x"
Private?
the code will be accessible by direct url and not visible in public activity
signup to submit public code without captcha
comment of change