«Audio-triggered Kickdrum» by Bernhard Zitz
on 22 Dec'24 00:58 inTriggered DRUM, inspired by analogue drum brains like Simmons SDS-V oder Tama Techstar
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
// Audio triggered DRUM, inspired by analogue drum brains like Simmons SDS-V oder Tama Techstar. Played with drumpad on audio in. With headphones on you can use the internal mic as trigger source.
// An integrator on env0 and env1 mimicks the capicitor of a decay envelope found in most analogue drum modules. coef1 controls this.
// True happiness comes from parallel distortion. Wet/Dry-function for better transient and cleaner fundamental.
(
SynthDef("kicktrig", {
arg
in=0, gain=1, hpf=170,lpf=6500,tresh=0.01, minDur=0.01, lpfclick=7000, coef1=0.5,
pitchkick=40, pitchrel=0.17, pitchmod=5, pitchcrv=(-7),
amprel=1.6, ampcrv=(-12),oscamp=1,
clickrel=0.18, clickamp=0.31,clickcrv=(-9),
dist=7, wet=0.5, amp=1, out=0;
var trig, level, env0, env1, envclick, click, sig, sig2, dir;
dir = SoundIn.ar(in,1);
trig = LPF.ar(HPF.ar(dir,hpf),lpf);
trig = trig.tanh;
level = Amplitude.kr(trig,0.001,amprel*2);
trig = Coyote.kr(trig*gain,0.2,0.2,0.01,0.5, tresh,minDur);
env0 = EnvGen.kr(Env.perc(0.003,amprel,1,ampcrv),trig,level);
env0 = Integrator.kr(env0,coef1);
env0 = Clip.kr(env0,0,10);
env1 = EnvGen.kr(Env.perc(0.005,pitchrel,pitchmod,pitchcrv),trig,sqrt(level));
env1 = Integrator.kr(env1,coef1);
env1 = Clip.kr(env1,0,40);
envclick=EnvGen.kr(Env.perc(0.001,clickrel,clickamp,clickcrv),trig,level+0.1);
envclick = Clip.kr(envclick,0,20);
click = LPF.ar(WhiteNoise.ar(1),((env1/pitchmod)*lpfclick)+40,envclick);
sig = click + SinOsc.ar((env1+1)*pitchkick, pi/2, oscamp);
sig = LeakDC.ar(env0*sig,0.996);
sig = Balance2.ar(sig,(sig*dist).tanh/3,(wet*2)-1);
sig = Limiter.ar(Mix.ar(sig/2),amp);
sig = sig.tanh;
Out.ar(out,sig!2);
}).add;
)
~kickdrum.free;
~kickdrum = Synth.new("kicktrig");
(
//trigger conditioning
~kickdrum.set(\in,0);
~kickdrum.set(\gain,1);
~kickdrum.set(\hpf,170);
~kickdrum.set(\lpf,6500);
~kickdrum.set(\tresh,0.01);
~kickdrum.set(\mindur,0.01);
//output management + distortion
~kickdrum.set(\dist,7);
~kickdrum.set(\wet,0.5);
~kickdrum.set(\amp,1);
~kickdrum.set(\out,0);
// Capacitor Simulation
~kickdrum.set(\coef1,0.6);
// Skin Parameters
~kickdrum.set(\pitchkick,40);
~kickdrum.set(\pitchrel,0.15);
~kickdrum.set(\pitchmod,5);
~kickdrum.set(\pitchcrv,-7);
~kickdrum.set(\oscamp,1);
~kickdrum.set(\amprel,1.6);
~kickdrum.set(\ampcrv,-12);
// Click+Noise Parameters
~kickdrum.set(\clickrel,0.1);
~kickdrum.set(\lpfclick,5000);
~kickdrum.set(\clickamp,1);
~kickdrum.set(\clickcrv,-9);
)
reception
comments