Or clap or whatever. I don’t actually like snare drums or their ilk very much.
Here’s the part where I can push faders around to get good values:
( SynthDef(snare, {|out = 0, freq, rq, hpf_d, hpf_cv, curve, dur, amp, pan = 0| var noise, hpf, hpf_env, env, panner, imp; noise = PinkNoise.ar(1); imp = Impulse.ar(1/(dur + 0.1), 0, amp); env = EnvGen.kr(Env.perc(0.0005, dur, amp), doneAction:2); hpf_env = EnvGen.kr(Env.perc(0.001, hpf_d, hpf_cv, curve)) - 12; hpf = RHPF.ar(noise, (freq.cpsmidi + hpf_env).midicps, rq) * env; panner = Pan2.ar(hpf + imp, pan); Out.ar(out, panner); }).store; Conductor.make({|cond, freq, rq, hpf_d, hpf_cv, curve, dur, db| freq.spec_(freq, 200+660.rand); rq.spec_(rq, 0.45 + 0.1.rand); hpf_d.sp(1, 0.0001, 1.45, 0, 'linear'); hpf_cv.sp(24, 0, 36, 0, 'linear'); dur.sp(1, 0.0001, 1.5, 0, 'linear'); db.spec_(db, 0.2.ampdb); curve.sp(-3, -1, -8, 1, 'linear'); cond.pattern_( Pbind( instrument, snare, db, db, freq, freq, rq, rq, hpf_d, hpf_d, hpf_cv, hpf_cv, dur, dur, curve, curve ) ); }).show; )
That requires the Conductor Quark. I’m not sure about that sound design, anyway. And here’s the final version:
SynthDef(snare, {|out = 0, hit_dur, amp = 0, pan =0| var noise, hpf, hpf_env, env, panner, imp; noise = PinkNoise.ar(1); imp = Impulse.ar(1/(hit_dur + 0.1), 0, amp); env = EnvGen.kr(Env.perc(0.0005, hit_dur, amp), doneAction:2); hpf_env = EnvGen.kr(Env.perc(0.001, 0.92, 16.8, -5)) - 12; hpf = RHPF.ar(noise, (78.34 + hpf_env).midicps, 0.57) * env; panner = Pan2.ar(hpf + imp, pan); Out.ar(out, panner); }).store;
Make of it what you will. That single impulse at the beginning gives it a good start, but it doesn’t have that paff or bappff – that roundness of attack – of a real snare or even a good analog drum machine. I used to have such a machine, which I didn’t actually make ver much use of. Now it lies abandoned in California, alas and woe.
One thought on “Snare Drum”