214 lines
4.6 KiB
Plaintext
214 lines
4.6 KiB
Plaintext
|
|
( // 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)+[0,0.22], 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;
|
|
|
|
|
|
// fx buses
|
|
~delay1 = Bus.audio(s, 2);
|
|
~delay2 = Bus.audio(s,2);
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
// timeline of events
|
|
|
|
r = Routine {
|
|
|
|
1.wait;
|
|
|
|
// 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;
|
|
);
|
|
7.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;
|
|
);
|
|
7.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;
|
|
);
|
|
|
|
21.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;
|
|
);
|
|
|
|
77.wait;
|
|
|
|
Pbindef(\hhp1).stop;
|
|
|
|
10.wait;
|
|
|
|
Pbindef(\snp1).stop;
|
|
|
|
10.wait;
|
|
|
|
Pbindef(\x99).stop;
|
|
|
|
10.wait;
|
|
|
|
Pbindef(\sawp1).stop;
|
|
|
|
|
|
|
|
}.play;
|
|
|
|
|
|
|
|
|
|
|
|
);
|