From f4d27f14fc4a810e5914c51f5b8f465a5a508e9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=20Prin=C4=8Di=C4=8D?= Date: Wed, 18 Nov 2020 10:09:52 +0100 Subject: [PATCH] adding kick-comb-dark-saw recipe --- 2020-11-18_kick-comb-dark-saw.scd | 272 ++++++++++++++++++++++++++++++ 1 file changed, 272 insertions(+) create mode 100644 2020-11-18_kick-comb-dark-saw.scd diff --git a/2020-11-18_kick-comb-dark-saw.scd b/2020-11-18_kick-comb-dark-saw.scd new file mode 100644 index 0000000..ac08b42 --- /dev/null +++ b/2020-11-18_kick-comb-dark-saw.scd @@ -0,0 +1,272 @@ + +( // synthdefs + +SynthDef(\dlywrangler, { + arg out=0, in; + var snd; + snd = In.ar(in,2); + snd = CombL.ar(snd, 1, Lag.ar(LFNoise0.ar(1).range(0.01,0.1),0.01), 3, mul:0.1) + snd; + Out.ar(out, snd); +}).add; + + +SynthDef(\wiDel, { + var snd = In.ar(\in.kr, 2); + snd = CombL.ar(snd, 1, SinOsc.ar(0.02,[0,pi/2]).range(0.5,0.6), 10, mul:1) + snd; + Out.ar(\out.kr(0), snd); +}).add; + + +SynthDef(\softSaw, { + arg out = 0, freq = 40, oscdetune = 0.1, amp = 1, pan = 0, + gate = 1, attackTime = 0.1, susLevel = 1.0, releaseTime = 1.0; + var env, snd; + oscdetune = oscdetune * 0.1; + amp = amp * 0.4; + + env = Linen.kr(gate, attackTime, susLevel, releaseTime, doneAction:2); + + snd = VarSaw.ar( + freq: [freq, freq * (1.003 + oscdetune)], + width: SinOsc.kr(0.01,0.2).range(0.05,0.095)); + snd = snd + VarSaw.ar( + freq: [(freq*2 * (1.001 - oscdetune)),(freq*2 * (1 + oscdetune))], + width: SinOsc.kr(0.06,0.8).range(0.2,0.8)); + + + snd = Balance2.ar(snd.at(0), snd.at(1), pos: pan); + + snd = snd * amp * env; + + Out.ar(out, snd); + +}).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, 0], times: [0.1, 0.5]).kr; + freq = freq * fenv; + freq = freq.max(10); + + snd = LFTri.ar(freq) + SinOsc.ar(freq); + 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(0.1), 9000) + * Env([1,1,0], [0.002,0.002]).kr ); + + aenv = Env([1,1,0], [0.2,2], curve: -9).kr; + snd = snd * aenv; + + 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); + Out.ar(out, snd); +}).add; + +// SC808 drum snare +SynthDef.new(\sc808sn, { + arg amp=2, tone=340, tone2=189, snappy=0.3, gate=0, amp2=1, out=0; + var noiseEnv, atkEnv, sig, noise, osc1, osc2, sum; + noiseEnv = EnvGen.kr(Env.perc(0.001, 4.2, 1, -115), doneAction:2); + atkEnv = EnvGen.kr(Env.perc(0.001, 0.8,curve:-95), doneAction:0); + 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 + sum) * amp * 2.5, 0); + sig = HPF.ar(sig, 340); + 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; + +//s.sync; // ? + +// fx buses +~delay1 = Bus.audio(s, 2); +~delay2 = Bus.audio(s,2); + + +r = Routine { + + // delays + ~dlywrang1 = Synth(\dlywrangler, [\out, 0, \in, ~delay1]); + ~widel1 = Synth(\wiDel, [\in, ~delay2, \out, 0]); + + 1.wait; + ( + Pbindef(\x99, + * [ + instrument: \tribd, + octave:3, + degree: Prand([1,2,3]/10,inf), + dur: Pseq([3,2,Prand([2,3]),3,2,2]/8, inf), + amp: 0.2 + ] + ).play; + ); + + 3.wait; + + ( // snare + Pbindef(\snp1, + *[ + instrument: \sc808sn, + dur: Pseq([Rest(1),Pxrand([1,1.5,0.5,Pn(0.5,4),Pn(0.25,2),Pn(0.25,2),Pn(0.25,2)])]/2,inf), + amp: Prand([1,2,3]*0.05+0.2,inf), + out: Prand([0,~delay1],inf) + ] + ).play; + ); + + 3.wait; + + ( // highhat + Pbindef(\hhp1, + * [ + instrument: \sc808hh, + dur: 1/8, + amp: Prand([1,2,3]/10, inf), + out: Pwrand([~delay1,0],[0.7,0.3],inf), + pan: Pfunc({rrand(-0.6,0.6)}) + ] + ).play; + ); + + 10.wait; + + ( // dark saw + Pbindef(\sawp1, + *[ + instrument: \softSaw, + dur: 10, + attackTime: 5, + releaseTime:5, + legato:1, + degree: Pseq([ [-2,3,11,20], [-2,5,7,21] ],inf), + octave: 3, + amp: [1,0.5,0.2,0.1] * 0.2, + out: ~delay2 + ] + ).play; + ); + + 90.wait; + + Pbindef(\hhp1).stop; + + 10.wait; + + Pbindef(\snp1).stop; + + 10.wait; + + Pbindef(\x99).stop; + + 10.wait; + + Pbindef(\sawp1).stop; + + + +}.play; + + + + + +); + +( + +// delays +~dlywrang1 = Synth(\dlywrangler, [\out, 0, \in, ~delay1]); +~widel1 = Synth(\wiDel, [\in, ~delay2, \out, 0]); + +) + +( // kicker +Pbindef(\x99, + * [ + instrument: \tribd, + octave:3, + degree: Prand([1,2,3]/10,inf), + dur: Pseq([3,2,Prand([2,3]),3,2,2]/8, inf), + amp: 0.2 + ] +).play +) + + +( // highhat +Pbindef(\hhp1, + * [ + instrument: \sc808hh, + dur: 1/8, + amp: Prand([1,2,3]/7, inf), + out: Pwrand([~delay1,0],[0.7,0.3],inf), + pan: Pfunc({rrand(-0.6,0.6)}) + ] +).play +) + +( // snare +Pbindef(\snp1, + *[ + instrument: \sc808sn, + dur: Pseq([Rest(1),Pxrand([1,1.5,0.5,Pn(0.5,4),Pn(0.25,2),Pn(0.25,2),Pn(0.25,2)])]/2,inf), + amp: Prand([1,2,3]*0.05+0.2,inf), + out: Prand([0,~delay1],inf) + ] +).play +) + +( // dark saw +Pbindef(\sawp1, + *[ + instrument: \softSaw, + dur: 10, + attackTime: 5, + releaseTime:5, + legato:1, + degree: Pseq([ [-2,3,11,20], [-2,5,7,21] ],inf), + octave: 3, + amp: [1,0.5,0.2,0.1] * 0.2, + out: ~delay2 + ] +).play +) +