ark_d.amorphic/lib/drums1.scd

227 lines
7.0 KiB
Plaintext

// "additive synth kick"
SynthDef(\addbd, {
arg out=0, freq=77, amp=0.1;
var osc, clip, env, penv, nenv;
penv = EnvGen.ar(
Env(levels: [1, 1, 0.5 ], times:[ 0.01, 0.3 ], curve:[0,0])
);
osc = FSinOsc.ar([freq,freq*1.01] * penv);
nenv = EnvGen.ar(Env(levels:[1,1,0], times:[0.001,0.008], curve:0));
osc = osc + (BPF.ar(WhiteNoise.ar(0.05), freq * 100,0.1) * nenv);
osc = osc + (BPF.ar(WhiteNoise.ar(0.05), freq * 70,0.1) * nenv);
osc = osc + (BPF.ar(WhiteNoise.ar(0.1), freq * 33,0.1) * nenv);
osc = osc + (BPF.ar(WhiteNoise.ar(0.1), freq * 19, 0.3)
* EnvGen.ar(Env(levels: [1,1,0], times: [0.1,1], curve:-9)) * 0.1
);
env = EnvGen.ar(Env.perc(0, 0.55), doneAction: 2);
osc = osc * env;
osc = osc.softclip;
Out.ar(out, Pan2.ar(osc[0]+osc[1] * amp, 0));
}).add;
(
// "LFTri bass drum kick" - by luka@lukaprincic.si
SynthDef(\tribd, {
arg out=0, gate=1, freq=77, amp=0.1;
var snd, aenv, fenv, senv;
fenv = Env(levels:[2, 1.2, 0], times: [0.1, 0.4]).kr;
freq = [freq,freq*2] * fenv;
freq = freq.max(10);
snd = LFTri.ar(freq) + SinOsc.ar(freq) * [1,0.3];
snd = snd.sum * 0.9;
snd = LPF.ar(snd, freq * 4);
snd = snd + RLPF.ar( BrownNoise.ar(1),
Env(levels:[2000,500,90], times:[0.01,0.05]).kr, 0.3 );
snd = snd + ( BPF.ar(WhiteNoise.ar(0.9), 3000)
* Env([1,1,0], [0.004,0.005]).kr );
snd = snd + ( BPF.ar(WhiteNoise.ar(2), 9000)
* Env([1,1,0], [0.013,0.001]).kr );
aenv = Env([1,1,0], [0.2,2], curve: -9).kr;
snd = snd * aenv;
snd = Limiter.ar(snd, 8);
senv = Linen.kr(releaseTime: 0.1, gate: gate, doneAction: Done.freeSelf);
snd = LeakDC.ar(snd);
snd = snd * amp * senv;
snd = Pan2.ar(snd, pos:0);
snd = snd.clip2;
Out.ar(out, snd);
}).add;
);
/////////////////////////////////////////////////////////////////
// SC-808 drum kit
// SC808 drum snare
SynthDef.new(\sc808sn, {
arg amp=2, tone=340, tone2=189, snappy=0.7, gate=1, amp2=1, out=0;
var noiseEnv, atkEnv, sig, noise, osc1, osc2, sum;
noiseEnv = EnvGen.kr(Env.perc(0.001, 4.2, 1, -115), doneAction:0);
atkEnv = EnvGen.kr(Env.perc(0.001, 0.8,curve:-95), doneAction:2);
noise = WhiteNoise.ar;
noise = HPF.ar(noise, 1800);
noise = LPF.ar(noise, 8850);
noise = noise * noiseEnv * snappy;
osc1 = SinOsc.ar(tone2, pi/2) * 0.6;
osc2 = SinOsc.ar(tone, pi/2) * 0.7;
sum = (osc1+osc2) * atkEnv * amp2;
sig = Pan2.ar(((noise*1) + sum) * amp * 2.5, 0);
sig = HPF.ar(sig, 340);
Out.ar(out, sig);
}).add;
SynthDef.new(\sc808clap, {
arg amp=1, gate=0, out=0;
var atkenv, atk, decay, sum, denv;
atkenv = EnvGen.kr(Env.new([0.5,1,0],[0, 0.3], -160), doneAction:2);
denv = EnvGen.kr(Env.dadsr(0.026, 0, 6, 0, 1, 1, curve:-157), doneAction:0);
atk = WhiteNoise.ar * atkenv * 1.4;
decay = WhiteNoise.ar * denv;
sum = atk + decay * amp;
sum = HPF.ar(sum, 500);
sum = BPF.ar(sum, 1062, 0.5);
Out.ar(out, Pan2.ar(sum * 1.5, 0));
}).add;
SynthDef.new(\sc808rimshot, {
arg amp=1, out=0;
var fenv, env, sig, punch, tri1, tri2;
env = EnvGen.kr(Env.new([1, 1, 0], [0.00272, 0.07], -42), doneAction:2);
tri1 = LFTri.ar(1667 * 1.1, 1) * env;
tri2 = LFPulse.ar(455 * 1.1, width:0.8) * env;
punch = WhiteNoise.ar * env * 0.46;
sig = tri1 + tri2 + punch;
sig = BPeakEQ.ar(sig, 464, 0.44, 8);
sig = HPF.ar(sig, 315);
sig = LPF.ar(sig, 7300);
sig = Pan2.ar(sig * amp, 0);
Out.ar(out, sig);
}).add;
SynthDef.new(\sc808claves, {
arg amp=1, out=0;
var env, sig;
env = EnvGen.kr(Env.new([1, 1, 0], [0, 0.1], -20), doneAction:2);
sig = SinOsc.ar(2500, pi/2) * env * amp;
sig = Pan2.ar(sig, 0);
Out.ar(out, sig);
}).add;
SynthDef.new(\sc808cow, {
arg amp=1, out=0;
var sig, pul1, pul2, env, atk, atkenv, datk;
atkenv = EnvGen.kr(Env.perc(0, 1, 1, -215),doneAction:0);
env = EnvGen.kr(Env.perc(0.01, 9.5, 1, -90),doneAction:2);
pul1 = LFPulse.ar(811.16);
pul2 = LFPulse.ar(538.75);
atk = (pul1 + pul2) * atkenv * 6;
datk = (pul1 + pul2) * env;
sig = (atk + datk) * amp;
sig = HPF.ar(sig, 250);
sig = LPF.ar(sig, 4500);
sig = Pan2.ar(sig, 0);
Out.ar(out, sig);
}).add;
SynthDef.new(\sc808hh, {
arg decay=0.42, amp=1, pan=0, out=0;
var sig, sighi,siglow, sum, env, osc1, osc2, osc3, osc4, osc5, osc6;
env = EnvGen.kr(Env.perc(0.005, decay, 1, -30),doneAction:2);
osc1 = LFPulse.ar(203.52);
osc2 = LFPulse.ar(366.31);
osc3 = LFPulse.ar(301.77);
osc4 = LFPulse.ar(518.19);
osc5 = LFPulse.ar(811.16);
osc6 = LFPulse.ar(538.75);
sighi = (osc1 + osc2 + osc3 + osc4 + osc5 + osc6);
siglow = (osc1 + osc2 + osc3 + osc4 + osc5 + osc6);
sighi = BPF.ar(sighi, 8900, 1);
sighi = HPF.ar(sighi, 9000);
siglow = BBandPass.ar(siglow, 8900, 0.8);
siglow = BHiPass.ar(siglow, 9000, 0.3);
sig = BPeakEQ.ar((siglow+sighi), 9700, 0.8, 0.7);
sig = sig * env * amp;
sig = Pan2.ar(sig, pan);
Out.ar(out, sig);
}).add;
SynthDef.new(\sc808oh, {
arg decay=0.5, amp=4, pan=0, out=0;
var sig, siga, sigb, env1, env2, osc1, osc2, osc3, osc4, osc5, osc6, sum;
env1 = EnvGen.kr(Env.perc(0.1, decay, curve:-3), doneAction:2);
env2 = EnvGen.kr(Env.new([0, 1, 0], [0, decay*5], curve:-150), doneAction:0);
osc1 = LFPulse.ar(203.52) * 0.6;
osc2 = LFPulse.ar(366.31) * 0.6;
osc3 = LFPulse.ar(301.77) * 0.6;
osc4 = LFPulse.ar(518.19) * 0.6;
osc5 = LFPulse.ar(811.16) * 0.6;
osc6 = LFPulse.ar(538.75) * 0.6;
sig = osc1 + osc2 + osc3 + osc4 + osc5 +osc6;
sig = BLowShelf.ar(sig, 990, 2, -3);
sig = BPF.ar(sig, 7700);
sig = BPeakEQ.ar(sig, 7200, 0.5, 5);
sig = BHiPass4.ar(sig, 8100, 0.7);
sig = BHiShelf.ar(sig, 9400, 1, 5);
siga = sig * env1 * 0.6;
sigb = sig * env2;
sum = siga + sigb;
sum = LPF.ar(sum, 4000);
sum = Pan2.ar(sum, 0);
sum = sum * amp * 2;
Out.ar(out, sum);
}).add;
SynthDef.new(\sc808cymb, {
arg decay=2, amp=20, pan=0, gate=0, tone=0.002, out=0;
var sig, sig1,sig2, sig2a, sig2b, sig3, env1, env2, env2b, env3, osc1, osc2, osc3, osc4, osc5, osc6, sum;
env1 = EnvGen.kr(Env.perc(0.3, decay, curve:-3), doneAction:2);
env2 = EnvGen.kr(Env.new([0, 0.6, 0], [0.1, decay*0.7], -5), doneAction:0);
env2b = EnvGen.kr(Env.new([0, 0.3, 0], [0.1, decay*20], -120), doneAction:0);
env3 = EnvGen.kr(Env.new([0, 1, 0], [0, decay*5], curve:-150), doneAction:0);
osc1 = LFPulse.ar(203.52) * 0.6;
osc2 = LFPulse.ar(366.31) * 0.6;
osc3 = LFPulse.ar(301.77) * 0.6;
osc4 = LFPulse.ar(518.19) * 0.6;
osc5 = LFPulse.ar(811.16) * 0.6;
osc6 = LFPulse.ar(538.75) * 0.6;
sig = osc1 + osc2 + osc3 + osc4 + osc5 +osc6;
sig1 = BLowShelf.ar(sig, 2000, 1, 5);
sig1 = BPF.ar(sig1, 3000);
sig1 = BPeakEQ.ar(sig1, 2400, 0.5, 5);
sig1 = BHiPass.ar(sig1, 1550, 0.7);
sig1 = LPF.ar(sig1, 3000);
sig1 = BLowShelf.ar(sig1, 1000, 1, 0);
sig1 = sig1 * env1 * tone;
sig2 = BLowShelf.ar(sig, 990, 2, -5);
sig2 = BPF.ar(sig2, 7400);
sig2 = BPeakEQ.ar(sig2, 7200, 0.5, 5);
sig2 = BHiPass4.ar(sig2, 6800, 0.7);
sig2 = BHiShelf.ar(sig2, 10000, 1, -4);
sig2a = sig2 * env2 * 0.3;
sig2b = sig2 * env2b * 0.6;
sig3 = BLowShelf.ar(sig, 990, 2, -15);
sig3 = BPF.ar(sig3, 6500);
sig3 = BPeakEQ.ar(sig3, 7400, 0.35, 10);
sig3 = BHiPass4.ar(sig3, 10500, 0.8, 2);
sig3 = sig3 * env3;
sum = sig1 + sig2a + sig2b + sig3;
sum = LPF.ar(sum, 4000);
sum = Pan2.ar(sum, 0);
sum = sum * amp;
Out.ar(out, sum);
}).add;