«Audio-triggered Kickdrum» by Bernhard Zitz

on 22 Dec'24 00:58 in kickdrumgabber

Triggered 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
//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.


(
	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);

~kickdrum.set(\dist,7);
~kickdrum.set(\wet,0.5);
~kickdrum.set(\amp,1);
~kickdrum.set(\out,0);

~kickdrum.set(\coef1,0.6);

~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);




~kickdrum.set(\clickrel,0.1);
~kickdrum.set(\lpfclick,5000);
~kickdrum.set(\clickamp,1);
~kickdrum.set(\clickcrv,-9);
)
raw 2498 chars (focus & ctrl+a+c to copy)
reception
comments