1251 lines
34 KiB
Plaintext
1251 lines
34 KiB
Plaintext
(
|
|
/*
|
|
|
|
__ ___ _ __ ___ __ _ ___ ___ ___ _ _ __
|
|
/ /\ | |_) | |_/ / / | | \ __ / /\ | |\/| / / \ | |_) | |_) | |_| | | / /`
|
|
/_/--\ |_| \ |_| \ /_/ |_|_/ /_/) /_/--\ |_| | \_\_/ |_| \ |_| |_| | |_| \_\_,
|
|
|
|
by Luka Prinčič. https://lukaprincic.si
|
|
|
|
|
|
LICENCE? Oh whatever, just take what you need from it, learn,
|
|
create, publish. A lot of what's in here has been taken and
|
|
learned from others and reworked in one way or another.
|
|
|
|
For the sake of ___, it's
|
|
copyright Luka Prinčič,
|
|
released under GNU GPL licence and/or Peer Production Licence
|
|
|
|
To run this album, you need SuperCollider (3.11 at the time of
|
|
writing) and SC3-plugins:
|
|
|
|
https://supercollider.github.io/
|
|
https://supercollider.github.io/sc3-plugins/
|
|
|
|
Once installed, open this file (it needs to have .scd extension
|
|
not .txt) in SCIDE - SuperCollider code editor (development
|
|
environment) and choose 'Evaluate file' from 'Language' menu.
|
|
|
|
Thank you for listening!
|
|
|
|
Recording of this album is available via Kamizdat record label
|
|
under conditions of Creative Commons BY-SA licence.
|
|
|
|
*/
|
|
|
|
|
|
// -----------------------------------------------------------------------------------
|
|
|
|
// before boot, raise memory?
|
|
#[\internal, \local].do { |s|
|
|
s = Server.perform(s);
|
|
s.options.memSize = 2097152; // 2 gigs
|
|
};
|
|
|
|
Server.default.waitForBoot {
|
|
fork {
|
|
">>> THIS IS THE START, MY FRIEND".postln;
|
|
|
|
0.1.wait;
|
|
|
|
// prep buses and FX
|
|
"--- prepping bussess ...".postln;
|
|
|
|
~mainOut.free;
|
|
~mainOut = Bus.audio(s,2);
|
|
|
|
~reverBus.free;
|
|
~reverBus = Bus.audio(s, 2);
|
|
|
|
~wranglerBus.free;
|
|
~wranglerBus = Bus.audio(s,2);
|
|
|
|
0.1.wait;
|
|
|
|
// FX synthdefs
|
|
"--- loading synthdefs for FX...".postln;
|
|
|
|
SynthDef(\GreyholeVerb, {
|
|
arg inBus, outBus, revWet=1, feedback = 0.5, lag = 10, dtime = 3, size = 4, diff = 8 ;
|
|
var snd = In.ar(inBus, 2);
|
|
var reverb = Greyhole.ar(snd, dtime, size: size, diff: diff, feedback: feedback);
|
|
revWet = Lag.kr(revWet, lag);
|
|
snd = snd + (reverb * revWet) * 0.5;
|
|
|
|
Out.ar(outBus, snd);
|
|
}).add;
|
|
|
|
SynthDef(\dlywrangler, {
|
|
arg out=0, in, wet=0.1, wet2=0.4;
|
|
var snd, dly2;
|
|
|
|
snd = In.ar(in,2);
|
|
|
|
dly2 = CombN.ar(HPF.ar(snd,300),
|
|
1,
|
|
[3/8,5/8] * LFNoise1.kr(0.4).range(0.98,1.02),
|
|
6,
|
|
mul: LFNoise1.kr(0.1).range(0.4,0.1) * 2 * wet2);
|
|
|
|
snd = CombN.ar(snd,
|
|
1,
|
|
Lag.ar(LFNoise0.ar(1).range(0.01,0.1),0.1),
|
|
3,
|
|
mul:wet) + snd;
|
|
|
|
snd = Limiter.ar(snd, 0.8);
|
|
snd = snd + dly2;
|
|
|
|
Out.ar(out, snd);
|
|
}).add;
|
|
|
|
SynthDef(\mainOutFx, {
|
|
arg inBus, amp=1, lag=0.5, thresh=0.8, outBus;
|
|
var input, snd;
|
|
input = In.ar(inBus, 2);
|
|
snd = Limiter.ar(input, thresh);
|
|
amp = VarLag.kr(amp+0.000001, lag, 0, \cub) - 0.000001;
|
|
snd = snd * amp;
|
|
snd = snd.softclip;
|
|
Out.ar(outBus, snd);
|
|
}).add;
|
|
|
|
0.1.wait;
|
|
|
|
// effects
|
|
"--- running effects ...".postln;
|
|
|
|
//~greyholeVerb.free;
|
|
~greyholeVerb = Synth(\GreyholeVerb, [\inBus, ~reverBus, \outBus, ~mainOut,
|
|
\revWet, 1], addAction:\addToTail);
|
|
|
|
//~dlywrang1.free;
|
|
~dlywrang1 = Synth("dlywrangler",
|
|
[\out, ~mainOut, \in, ~wranglerBus], addAction:\addToTail);
|
|
|
|
//~mainOutFx.free;
|
|
~mainOutFx = Synth(\mainOutFx,
|
|
[\inBus, ~mainOut, \outBus, 0], addAction:\addToTail);
|
|
|
|
// ---------------------------------------------------------------------------------
|
|
"*** setup done. onto the timeline! ...".postln;
|
|
|
|
1.wait;
|
|
|
|
//~greyholeVerb.set(\revWet, 0.4);
|
|
~greyholeVerb.set(*[revWet:0.2, feedback:0.7, lag:10, dtime:0.1, size:5, diff:0.707 ]);
|
|
|
|
// darksaw
|
|
"--- dark saw synthdef...".postln;
|
|
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, gainBus;
|
|
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 * In.kr(gainBus,1);
|
|
|
|
OffsetOut.ar(out, snd);
|
|
}).add;
|
|
|
|
~softSawAmpBus.free;
|
|
~softSawAmpBus = Bus.control(s,1);
|
|
~softSawAmpBus.set(1);
|
|
~softSawAmpBusLiner = SynthDef(\linexamp0, { |outBus, lag, val|
|
|
Out.kr(outBus, VarLag.kr(val+0.0001, lag, 0, \cub) - 0.0001)
|
|
}).play(s, [outBus: ~softSawAmpBus, lag: 10, val:0]);
|
|
|
|
wait(0.5);
|
|
|
|
"--- be back lighter...".postln;
|
|
|
|
// -----------------------------------------------
|
|
// be back lighter
|
|
|
|
// synthdef
|
|
SynthDef(\param, { arg freq = 100, sustain, amp, out=0;
|
|
var sig;
|
|
sig = LFPar.ar(freq: [freq, freq*2.02]);
|
|
sig = sig * [1,0.2];
|
|
sig = (sig * 4).softclip * 0.8;
|
|
//sig = LPF.ar(HPF.ar(sig, 150), 3000);
|
|
sig = LPF.ar(sig, (freq * 3).min(20000));
|
|
sig = sig * EnvGen.kr(Env.perc(0, sustain, 0.5), doneAction:2) * amp;
|
|
sig = Splay.ar(sig, Rand(0,0.5), 1, Rand(-0.5,0.5));
|
|
Out.ar(out, sig);
|
|
}).add;
|
|
|
|
0.2.wait;
|
|
|
|
//set main out gain to 0
|
|
~mainOutFx.set(\lag, 0, \amp, 0);
|
|
0.2.wait;
|
|
|
|
// start playing starting pattern
|
|
Pbindef(\prand,
|
|
\instrument, \param,
|
|
\midinote, Prout({
|
|
var tone0, tone1, tone2, interval, freq0, delta;
|
|
loop {
|
|
tone0 = 0; //rrand(0,11);
|
|
interval = 2;
|
|
tone1 = Scale.minor(\pythagorean).at(tone0) + [0,12].choose + 0.1;
|
|
tone2 = Scale.minor(\pythagorean).at(tone0 + interval) + [0,12].choose;
|
|
freq0 = [tone1,tone2] + 52;
|
|
freq0.yield;
|
|
}
|
|
}),
|
|
\dur, Prand([1,2,4,8,12,16,4,6,8], inf) / 20,
|
|
\amp, 1.2,
|
|
\sustain, 0.2,
|
|
\out, ~reverBus
|
|
).play; " . 1.0".postln;
|
|
|
|
|
|
// fade in:
|
|
~mainOutFx.set(\lag, 10, \amp, 1);
|
|
|
|
30.wait;
|
|
|
|
~greyholeVerb.set(*[revWet:0.4, feedback:0.7, lag:10, dtime:0.1, size:5, diff:0.707 ]);
|
|
|
|
Pbindef(\prand,
|
|
\midinote, Prout({
|
|
var tone0, tone1, tone2, interval, freq0, delta;
|
|
loop {
|
|
tone0 = 0; //rrand(0,11);
|
|
interval = rrand(2,4);
|
|
tone1 = Scale.minor(\pythagorean).at(tone0) + [0,12].choose + 0.1;
|
|
tone2 = Scale.minor(\pythagorean).at(tone0 + interval) + [0,12].choose;
|
|
freq0 = [tone1,tone2] + 52;
|
|
freq0.yield;
|
|
}
|
|
}), // - Pstutter(4, Prand([0,1] * 12,inf)),
|
|
\sustain, Prand((2..4)/10,inf),
|
|
); " . 1.1 - interval rrand 2-4".postln;
|
|
|
|
30.wait;
|
|
|
|
// --
|
|
|
|
Pbindef(\prand,
|
|
\midinote, Prout({
|
|
var tone0, tone1, tone2, interval, freq0, delta;
|
|
loop {
|
|
tone0 = [0,2,4,6].choose; //rrand(0,11);
|
|
interval = rrand(2,4);
|
|
tone1 = Scale.minor(\pythagorean).at(tone0) + [0,12,24].choose + 0.1;
|
|
tone2 = Scale.minor(\pythagorean).at(tone0 + interval) + [0,12,24].choose;
|
|
freq0 = [tone1,tone2] + 52;
|
|
freq0.yield;
|
|
}
|
|
}) - Pstutter(4, Prand([0,1] * 12,inf)),
|
|
\sustain, Prand((4..6)/10,inf),
|
|
); " . 1.2 [0,2,4,6].choose".postln;
|
|
|
|
1.wait;
|
|
|
|
"--- softdarksaw pattern...".postln;
|
|
Pbindef(\sawp0,
|
|
\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.7,
|
|
\out, ~reverBus,
|
|
\gainBus, ~softSawAmpBus
|
|
).play;
|
|
|
|
wait(1);
|
|
|
|
~softSawAmpBusLiner.set(\lag, 0, \val, 0);
|
|
wait(0.5);
|
|
~softSawAmpBusLiner.set(\lag, 20, \val, 1);
|
|
wait(0.5);
|
|
|
|
// --
|
|
|
|
30.wait;
|
|
|
|
Pbindef(\prand,
|
|
\midinote, Prout({
|
|
var tone0, tone1, tone2, interval, freq0, delta;
|
|
loop {
|
|
tone0 = rrand(0,11);
|
|
interval = rrand(2,4);
|
|
tone1 = Scale.minor(\pythagorean).at(tone0) + [0,12,24].choose + 0.1;
|
|
tone2 = Scale.minor(\pythagorean).at(tone0 + interval) + [0,12,24].choose;
|
|
freq0 = [tone1,tone2] + 52;
|
|
freq0.yield;
|
|
}
|
|
}) - Pstutter(4, Prand([0,1] * 12,inf)),
|
|
\sustain, Prand((9..10)/10,inf),
|
|
); " . 1.3 rrand(0,11), sustain".postln;
|
|
|
|
30.wait;
|
|
|
|
Pbindef(\prand,
|
|
\midinote, Prout({
|
|
var tone0, tone1, tone2, interval, freq0, delta;
|
|
loop {
|
|
tone0 = 0; //rrand(0,2);
|
|
interval = rrand(2,4);
|
|
tone1 = Scale.minor(\pythagorean).at(tone0) + [0,12,24].choose + 0.1;
|
|
tone2 = Scale.minor(\pythagorean).at(tone0 + interval) + [0,12,24].choose;
|
|
freq0 = [tone1,tone2] + 52;
|
|
freq0.yield;
|
|
}
|
|
}) - Pstutter(4, Prand([0,1] * 12,inf)),
|
|
\sustain, Prand((3..6)/10,inf),
|
|
); " . 1.4 back to 0".postln;
|
|
|
|
~greyholeVerb.set(*[revWet:0.7, feedback:0.7, lag:10, dtime:0.1, size:5, diff:0.707 ]);
|
|
|
|
~softSawAmpBusLiner.set(\lag, 20, \val, 0.7);
|
|
|
|
30.wait;
|
|
|
|
Pbindef(\prand,
|
|
\midinote, Prout({
|
|
var tone0, tone1, tone2, interval, freq0, delta;
|
|
loop {
|
|
tone0 = 0; //rrand(0,2);
|
|
interval = 4; //rrand(2,4);
|
|
tone1 = Scale.minor(\pythagorean).at(tone0) + [0,12,24].choose + 0.1;
|
|
tone2 = Scale.minor(\pythagorean).at(tone0 + interval) + [0,12].choose;
|
|
freq0 = [tone1,tone2] + 52;
|
|
freq0.yield;
|
|
}
|
|
}), // - Pstutter(4, Prand([0,1] * 12,inf)),
|
|
\sustain, Prand((5..9)/10,inf),
|
|
); " . 1.5 interval 4".postln;
|
|
|
|
~greyholeVerb.set(*[revWet:0.5, feedback:0.7, lag:10, dtime:0.1, size:5, diff:0.707 ]);
|
|
|
|
~softSawAmpBusLiner.set(\lag, 20, \val, 1.5);
|
|
|
|
21.wait;
|
|
|
|
Pbindef(\prand,
|
|
\midinote, Prout({
|
|
var tone0, tone1, tone2, interval, freq0, delta;
|
|
loop {
|
|
tone0 = rrand(0,11);
|
|
interval = rrand(2,4);
|
|
tone1 = Scale.minor(\pythagorean).at(tone0) + [0,12,24].choose + 0.1;
|
|
tone2 = Scale.minor(\pythagorean).at(tone0 + interval) + [0,12,24].choose;
|
|
freq0 = [tone1,tone2] + 52;
|
|
freq0.yield;
|
|
}
|
|
}) - Pstutter(4, Prand([0,1] * 12,inf)),
|
|
\sustain, Prand((9..10)/10,inf),
|
|
); " . 1.6 rrand0-11".postln;
|
|
|
|
30.wait;
|
|
|
|
~greyholeVerb.set(*[revWet:0.3, feedback:0.7, lag:10, dtime:0.1, size:5, diff:0.707 ]);
|
|
|
|
Pbindef(\prand,
|
|
\midinote, Prout({
|
|
var tone0, tone1, tone2, interval, freq0, delta;
|
|
loop {
|
|
tone0 = 0; //rrand(0,11);
|
|
interval = 2;
|
|
tone1 = Scale.minor(\pythagorean).at(tone0) + [0,12].choose + 0.1;
|
|
tone2 = Scale.minor(\pythagorean).at(tone0 + interval) + [0,12, 24].choose;
|
|
freq0 = [tone1,tone2] + 52;
|
|
freq0.yield;
|
|
}
|
|
}),
|
|
\sustain, Prand((4..9)/10,inf),
|
|
).play; " . 1.7 tone0:0".postln;
|
|
|
|
~softSawAmpBusLiner.set(\lag, 20, \val, 0.5);
|
|
|
|
10.wait;
|
|
|
|
~greyholeVerb.set(*[revWet:0.6, feedback:0.7, lag:10, dtime:0.1, size:5, diff:0.707 ]);
|
|
|
|
Pbindef(\prand,
|
|
\midinote, Prout({
|
|
var tone0, tone1, tone2, interval, freq0, delta;
|
|
loop {
|
|
tone0 = 0; //rrand(0,11);
|
|
interval = 2;
|
|
tone1 = Scale.minor(\pythagorean).at(tone0) + [0,12, 24].choose + 0.1;
|
|
tone2 = Scale.minor(\pythagorean).at(tone0 + interval) + [0,12].choose;
|
|
freq0 = [tone1,tone2] + 52;
|
|
freq0.yield;
|
|
}
|
|
}),
|
|
\sustain, Prand((4..9)/10,inf),
|
|
).play; " . 1.8 24".postln;
|
|
|
|
10.wait;
|
|
|
|
Pbindef(\prand,
|
|
\midinote, Prout({
|
|
var tone0, tone1, tone2, interval, freq0, delta;
|
|
loop {
|
|
tone0 = 0; //rrand(0,11);
|
|
interval = 2;
|
|
tone1 = Scale.minor(\pythagorean).at(tone0) + [0,12, 24].choose + 0.1;
|
|
tone2 = Scale.minor(\pythagorean).at(tone0 + interval) + [0,12, 24].choose;
|
|
freq0 = [tone1,tone2] + 52;
|
|
freq0.yield;
|
|
}
|
|
}),
|
|
\sustain, Prand((4..9)/10,inf),
|
|
).play; " . 1.9 24 & 24".postln;
|
|
|
|
10.wait;
|
|
|
|
Pbindef(\prand,
|
|
\midinote, Prout({
|
|
var tone0, tone1, tone2, interval, freq0, delta;
|
|
loop {
|
|
tone0 = rrand(0,11);
|
|
interval = rrand(2,4);
|
|
tone1 = Scale.minor(\pythagorean).at(tone0) + [0,12,24].choose + 0.1;
|
|
tone2 = Scale.minor(\pythagorean).at(tone0 + interval) + [0,12,24].choose;
|
|
freq0 = [tone1,tone2] + 52;
|
|
freq0.yield;
|
|
}
|
|
}) - Pstutter(4, Prand([0,1] * 12,inf)),
|
|
\sustain, Prand((9..10)/10,inf),
|
|
); " . 1.10 rrand0-11".postln;
|
|
|
|
~softSawAmpBusLiner.set(\lag, 60, \val, 0);
|
|
|
|
30.wait;
|
|
|
|
Pbindef(\sawp0).stop;
|
|
|
|
~greyholeVerb.set(*[revWet:0.8, feedback:0.7, lag:10, dtime:0.1, size:5, diff:0.707 ]);
|
|
|
|
Pbindef(\prand,
|
|
\midinote, Prout({
|
|
var tone0, tone1, tone2, interval, freq0, delta;
|
|
loop {
|
|
tone0 = 0; //rrand(0,11);
|
|
interval = 2;
|
|
tone1 = Scale.minor(\pythagorean).at(tone0) + [0,12].choose + 0.1;
|
|
tone2 = Scale.minor(\pythagorean).at(tone0 + interval) + [0,12].choose;
|
|
freq0 = [tone1,tone2] + 52;
|
|
freq0.yield;
|
|
}
|
|
}),
|
|
\sustain, Prand((2..5)/10,inf),
|
|
).play; " . 1.11 tone0".postln;
|
|
|
|
10.wait;
|
|
|
|
// sure one could use Pseg here:
|
|
Pbindef(\prand, \amp, -1.dbamp); 2.wait;
|
|
Pbindef(\prand, \amp, -2.dbamp); 2.wait;
|
|
Pbindef(\prand, \amp, -3.dbamp); 2.wait;
|
|
Pbindef(\prand, \amp, -4.dbamp); 2.wait;
|
|
Pbindef(\prand, \amp, -5.dbamp); 2.wait;
|
|
Pbindef(\prand, \amp, -6.dbamp); 2.wait;
|
|
Pbindef(\prand, \amp, -7.dbamp); 2.wait;
|
|
Pbindef(\prand, \amp, -8.dbamp); 2.wait;
|
|
Pbindef(\prand, \amp, -9.dbamp); 10.wait;
|
|
|
|
Pbindef(\prand).stop;
|
|
|
|
// gcd mod ---------------------------------------------------------
|
|
|
|
"--- gcdmod...".postln;
|
|
SynthDef(\gcdmod, {
|
|
arg outBus, amp=0.1, gate=1;
|
|
var env;
|
|
var a = TDuty.ar(Dseq((0..3), inf) + 5 * SampleDur.ir);
|
|
var b = TDuty.ar(Dseq((3..0), inf) + 5.01 * SampleDur.ir);
|
|
var mod = 50;
|
|
var t = PulseCount.ar(a) % mod;
|
|
var u = PulseCount.ar(b) % mod;
|
|
var n, j, d, e, c;
|
|
|
|
d = LocalIn.ar(2);
|
|
n = gcd(t, u + [0, 1]);
|
|
e = n.linexp(0, mod, 70, 10000);
|
|
j = SinOsc.ar(e);
|
|
LocalOut.ar(j * d);
|
|
|
|
c = CombC.ar(j, 1, [0.009,0.007,0.008, 0.006] * LFNoise1.ar([0.01,0.01]).range(1.3,0.7), 30, mul:0.05);
|
|
j = j * LFNoise1.ar(0.2).range(0,0.5) + Splay.ar(c);
|
|
j = Greyhole.ar(j, damp:0.5, diff:0.5 size:4);
|
|
j = Limiter.ar(LPF.ar(HPF.ar(j, 100), LFNoise1.kr(0.1).exprange(200,18000)), 0.7);
|
|
j = j * LFPulse.ar([2.2,4.4]*2, 0.96, width:LFNoise1.ar(0.2).range(0.8,0.95)).range(LFNoise1.ar(0.1).range(0,1),1);
|
|
j = j + LFPulse.ar([2.2,4.4], 0.96, mul: LFNoise1.kr(1/10).range(0,0.5) * Line.kr(0,1,30));
|
|
j = LeakDC.ar(j);
|
|
|
|
env = Linen.kr(gate, 0, 1, 0, 2);
|
|
j = j * env * amp;
|
|
Out.ar(outBus, j);
|
|
}).add;
|
|
|
|
SynthDef(\dNoz, {
|
|
arg out=0, gate=1, amp=0.1, envattackTime=0.001, release=0.001;
|
|
var snd, env;
|
|
env = Linen.kr(gate, envattackTime, 1, release, doneAction:2);
|
|
snd = WhiteNoise.ar(1);
|
|
snd = snd + SinOsc.ar(SinOsc.kr(10).range(40,60), mul:0.2);
|
|
snd = snd + Pulse.ar(SinOsc.kr(12).range(40,60), mul:0.1);
|
|
snd = snd.clip2(0.8);
|
|
|
|
snd = LPF.ar(snd, LFNoise2.ar(0.4).range(60,100), mul:3);
|
|
|
|
snd = snd.dup;
|
|
snd[1] = DelayL.ar(snd[1], 0.05, SinOsc.kr(0.2).range(0.001,0.003));
|
|
snd = snd * env * amp;
|
|
Out.ar(out, snd);
|
|
}).add;
|
|
|
|
1.wait;
|
|
|
|
Pbindef(\gcdmodp,
|
|
\instrument, \gcdmod,
|
|
\dur, Pseq([240]),
|
|
\amp, 0.7,
|
|
\legato, 1,
|
|
\outBus, ~mainOut,
|
|
).play;
|
|
|
|
30.wait;
|
|
|
|
Pbindef(\dBoz,
|
|
\instrument, \dNoz,
|
|
\dur, Pseq([Rest(5), 10],14),
|
|
\amp, 0.4,
|
|
\legato, 1,
|
|
\out, ~mainOut,
|
|
).play; "--- dBoz dNoz...".postln;
|
|
|
|
wait(190);
|
|
|
|
"--- akj...".postln;
|
|
// AKJ --------------------------------------------------------
|
|
SynthDef(\akjDisChord, {
|
|
arg freq=300, amp=0.1, out=0, gate=1;
|
|
var snd, env;
|
|
|
|
freq = [freq,freq*1.01];
|
|
snd = LFPar.ar(freq) * 0.3
|
|
+ (LFTri.ar(freq*16/19, mul:0.3))
|
|
+ (Pulse.ar(freq*21/40, mul:0.1))
|
|
+ (SinOsc.ar(freq/8.01, mul:4).clip2(0.3));
|
|
env = EnvGen.kr(Env([0,1,0],[20,30], \cub, 1), gate, doneAction:2);
|
|
snd = Splay.ar(snd);
|
|
snd = snd * env * amp;
|
|
|
|
Out.ar(out, snd);
|
|
}).add;
|
|
|
|
SynthDef(\akjBaz, {
|
|
arg freq=300, amp=0.1, out=0, gate=1;
|
|
var snd, env;
|
|
|
|
snd = SinOsc.ar(freq/4, mul:0.7)!2;
|
|
snd = snd * Lag.ar(LFPulse.ar(freq/8.02, 0.5).range(1,0),0.005);
|
|
snd = snd.softclip(0.5) * 1.5 ;
|
|
|
|
env = Linen.kr(gate, 0,1,0, 2);
|
|
|
|
snd = snd * env * amp;
|
|
|
|
Splay.ar(snd);
|
|
Out.ar(out, snd);
|
|
}).add;
|
|
|
|
SynthDef(\akjClick, {
|
|
arg out=0, gate=1, freq=440, amp=0.1, releaseTime=0.1;
|
|
var snd, env;
|
|
|
|
snd = LFPulse.ar([freq, freq * 2], width: LFNoise1.ar(0.1).exprange(0.001,0.004));
|
|
snd = snd + (WhiteNoise.ar(1) * snd);
|
|
snd = HPF.ar(snd, 200);
|
|
env = EnvGen.ar(Env.perc(0,releaseTime));
|
|
snd = snd * env * amp * Linen.kr(gate, 0, 1, releaseTime, 2);
|
|
snd = Splay.ar(snd);
|
|
|
|
Out.ar(out, snd);
|
|
}).add;
|
|
|
|
wait(0.2);
|
|
|
|
Pbindef(\akjDisChordp, *[
|
|
instrument: \akjDisChord,
|
|
freq:300,
|
|
dur: Pseq([260]),
|
|
legato: 1.1,
|
|
amp: 0.8,
|
|
out: ~mainOut
|
|
]).play;
|
|
|
|
wait(60);
|
|
|
|
Pbindef(\akjClickp, *[
|
|
instrument: \akjClick,
|
|
dur: Pseq([
|
|
Pn(1/8, 7), Rest(1/8), // 1
|
|
Rest(1), // 1
|
|
Pn(1/4, 3), Rest(3/8), Pn(1/8, 1),
|
|
Pn(1/4, 3), Rest(3/8), Pn(1/8, 1),
|
|
Pn(1/4, 3), Rest(4/8),
|
|
Pn(1/8, 7), Rest(1/8),
|
|
Prand([ Rest(1), Pn(1/6,6) ]),
|
|
Pn(1/8, 3), Rest(1/8),
|
|
Prand([ Rest(1.25), Pn(1/4, 5) ]),
|
|
Prand([ Pn(1/8, 3), Pn(1/16, 6) ]), Rest(1/8),
|
|
],inf),
|
|
amp: 9/20,
|
|
releaseTime: 0.3,
|
|
freq:1,
|
|
out: ~mainOut
|
|
]).play;
|
|
|
|
wait(60);
|
|
|
|
Pbindef(\akjBazp, *[
|
|
instrument: \akjBaz,
|
|
freq: 300,
|
|
dur: 10,
|
|
amp: 0.3,
|
|
legato: 0.20,
|
|
out: ~mainOut
|
|
]).play;
|
|
|
|
wait(120);
|
|
|
|
Pbindef(\akjClickp).stop;
|
|
Pbindef(\akjBazp).stop;
|
|
|
|
wait(30);
|
|
|
|
|
|
"--- shippo...".postln;
|
|
// SHIPPO -----------------------------------------------------------
|
|
|
|
SynthDef(\shippo, {
|
|
arg amp=0.1, gate=1, out=0, freq=100;
|
|
var snd, env, rev;
|
|
freq = [freq/2, freq * 0.99, freq * 1.51];
|
|
snd = Pulse.ar( freq * LFNoise1.ar(1/10).range(1,1.03), mul:0.4 )
|
|
; // Lag.ar(LFPulse.ar(1/5, iphase:0.98, width:0.1));
|
|
snd = Splay.ar(snd,spread:0.6);
|
|
snd = LPF.ar(snd, LFNoise1.ar(1/4).exprange(500,10000));
|
|
env = EnvGen.kr(Env.adsr(0.001,0,1, 0.1, 1), gate, doneAction:0);
|
|
snd = snd * env;
|
|
snd = snd;
|
|
rev = Array.fill (8, {
|
|
CombL.ar(
|
|
snd,
|
|
0.2,
|
|
LFNoise1.ar(1/3).range(0.98,1.02) * rrand(0.01, 0.3),
|
|
7)
|
|
});
|
|
rev = Splay.ar(rev);
|
|
rev = LeakDC.ar(rev);
|
|
rev = HPF.ar(rev, 100);
|
|
snd = snd + rev;
|
|
snd = Limiter.ar(snd, 0.8);
|
|
snd = snd * amp;
|
|
DetectSilence.ar(snd, doneAction:2);
|
|
Out.ar(out, snd);
|
|
}).add;
|
|
|
|
wait(0.1);
|
|
|
|
Pbindef(\shippoP, *[
|
|
instrument: \shippo,
|
|
degree: 4,
|
|
octave: 3,
|
|
//dur: Pseq([3,5,10] / 8, inf),
|
|
dur: Pseq([4,8,12] / 8, inf),
|
|
legato:0.3,
|
|
amp: 0.1,
|
|
out: ~mainOut
|
|
]);
|
|
Pbindef(\shippoP).quant(1);
|
|
Pbindef(\shippoP).play;
|
|
|
|
Pbindef(\akjDisChordp).stop;
|
|
|
|
wait(10);
|
|
Pbindef(\shippoP, \amp, 0.2); wait(3);
|
|
Pbindef(\shippoP, \amp, 0.3); wait(3);
|
|
Pbindef(\shippoP, \amp, 0.4); wait(3);
|
|
Pbindef(\shippoP, \amp, 0.5); wait(3);
|
|
Pbindef(\shippoP, \amp, 0.6); wait(20);
|
|
|
|
// midline ---------------------------------------------------------
|
|
"--- sawline ...".postln;
|
|
SynthDef(\sawLine, {
|
|
arg out=0, freq=440, gate=1, amp=1, alag=10;
|
|
var snd, env, gen, numosc;
|
|
|
|
numosc = 10;
|
|
env = Env.adsr(20, 0, 1, 30, 1, \sin);
|
|
gen = EnvGen.kr(env, gate, doneAction:2);
|
|
|
|
//faderosc = SinOsc.ar(1/60).range(-1,2).min(1).max(0);
|
|
|
|
snd = Array.fill(numosc, {
|
|
var local, lfreq;
|
|
lfreq = [freq, freq*2.01, freq/1.99 ];
|
|
//lfreq = [freq, freq * 1.98, freq * 0.51];
|
|
//lfreq = freq;
|
|
local = Saw.ar(rrand(lfreq, lfreq * 1.02 ) * LFNoise1.kr(0.3).range(1, 1.01), -10.dbamp * [0.5, 0.3, 0.3]);
|
|
local = Mix(local);
|
|
});
|
|
snd = Splay.ar(snd);
|
|
snd = LPF.ar(snd, LFNoise1.ar(0.06).exprange(3000,10000));
|
|
snd = CombL.ar(snd, 1, LFNoise1.ar(0.1).range([0.5,0.65],[0.53,0.68]), 15, -1.dbamp) + snd;
|
|
|
|
snd = snd * gen;
|
|
snd = snd * Lag.kr(amp, alag);
|
|
Out.ar(out, snd);
|
|
}).add;
|
|
|
|
wait(0.5);
|
|
|
|
Pbindef(\midlineP,
|
|
\instrument, \sawLine,
|
|
\dur, 8,
|
|
\degree, 6,
|
|
\octave, 7,
|
|
\out, ~reverBus,
|
|
\amp, 0.4,
|
|
\ctranspose, 6-12,
|
|
\scale, Scale.minor(\just),
|
|
).play;
|
|
|
|
// --------------------------------------------------------------------
|
|
|
|
wait(30);
|
|
Pbindef(\midlineP, \degree, 1);
|
|
wait(20);
|
|
Pbindef(\midlineP, \degree, 4);
|
|
wait(20);
|
|
Pbindef(\midlineP, \degree, 6);
|
|
wait(20);
|
|
Pbindef(\midlineP, \degree, 4);
|
|
wait(10);
|
|
Pbindef(\midlineP, \octave, [5,7]);
|
|
wait(20);
|
|
Pbindef(\shippoP).stop;
|
|
|
|
wait(5);
|
|
|
|
// --- wrangle mel ------------------------------------------------------
|
|
"--- wranglemel ...".postln;
|
|
|
|
SynthDef(\sin1, {
|
|
arg freq=440, out=0, gate=1, amp=0.1, release=0, cutoff=10, rq=0.5;
|
|
var snd, env;
|
|
|
|
freq = [freq,freq*1.01];
|
|
env = Linen.kr(gate, attackTime: 0.001, releaseTime: release, doneAction:2);
|
|
snd = SinOsc.ar(freq) + Saw.ar(freq*1.004, mul:0.3) + Pulse.ar(freq*0.996, mul:0.4);
|
|
snd = snd + snd.fold2(0.65);
|
|
snd = (snd * 0.5) + (snd.wrap2(0.64) * 0.5) * 2;
|
|
cutoff = cutoff * 0.1;
|
|
cutoff = freq.pow(cutoff);
|
|
cutoff = cutoff.max(100);
|
|
cutoff = cutoff.min(18000);
|
|
snd = RLPF.ar(snd, cutoff, rq);
|
|
snd = snd * env;
|
|
snd = snd * amp;
|
|
|
|
OffsetOut.ar(out, snd);
|
|
}).add;
|
|
|
|
wait(0.5);
|
|
|
|
// basics
|
|
Pbindef(\y3,
|
|
\instrument, \sin1,
|
|
\degree, Pseq( [ 0, 2, -1, 5, -2, 6 ], inf),
|
|
\ctranspose, 6-12,
|
|
\octave, 5,
|
|
\scale, Scale.minor(\just),
|
|
\mtranspose, 0,
|
|
|
|
\cutoff, Pstutter(16, Pseq([Pseq((13..18)),Pseq((17..12))].min(11),inf)),
|
|
\rq, Prand([0.2,0.3,0.5]*1,inf),
|
|
\legato, Pseq([Prand([1,0.7]), 0.6, 0.9, 0.4, 0.6] * 0.2, inf),
|
|
\release, 0.1,
|
|
|
|
\dur, 1/8,
|
|
\amp, [0.2,0.2,0.1] * Pseq([Prand([1,0.7]), 0.8, 0.9], inf) * 0.4,
|
|
|
|
\dlywet, Pstutter(8, Pfunc({~dlywrang1.set(\wet, rrand(0, ((0..1) * 0.1).choose ) ) })),
|
|
\out, ~wranglerBus,
|
|
);
|
|
Pbindef(\y3).quant=1;
|
|
Pbindef(\y3).play;
|
|
|
|
wait(20);
|
|
|
|
Pbindef(\midlineP, \degree, Pseq([6,1,4], inf), \dur, 40 );
|
|
Pbindef(\midlineP, \amp, 0.1 );
|
|
|
|
Pbindef(\y3, \cutoff, Pstutter(16, Pseq([Pseq((13..18)),Pseq((17..12))].min(13),inf)));
|
|
Pbindef(\y3, \legato, Pseq([Prand([1,0.7]), 0.6, 0.9, 0.4, 0.6] * 0.3, inf));
|
|
|
|
wait(15);
|
|
|
|
Pbindef(\y3, \cutoff, Pstutter(16, Pseq([Pseq((13..18)),Pseq((17..12))].min(14),inf)));
|
|
Pbindef(\y3, \legato, Pseq([Prand([1,0.7]), 0.6, 0.9, 0.4, 0.6] * 0.4, inf));
|
|
|
|
wait(15);
|
|
|
|
Pbindef(\y3, \cutoff, Pstutter(16, Pseq([Pseq((13..18)),Pseq((17..12))].min(15),inf)));
|
|
Pbindef(\y3, \legato, Pseq([Prand([1,0.7]), 0.6, 0.9, 0.4, 0.6] * 0.5, inf));
|
|
Pbindef(\y3, \octave, [4,5]);
|
|
Pbindef(\y3, \degree, Pseq( [ [7,0], 2, -1, Prand([4,5]), Prand([-2,Pseq([2,6])]) ], inf));
|
|
|
|
wait(30);
|
|
|
|
Pbindef(\y3, \cutoff, Pstutter(16, Pseq([Pseq((13..18)),Pseq((17..12))].min(16),inf)));
|
|
Pbindef(\y3, \legato, Pseq([Prand([1,0.7]), 0.6, 0.9, 0.4, 0.6] * 0.6, inf));
|
|
Pbindef(\y3, \octave, [4,5,6]);
|
|
Pbindef(\y3, \mtranspose, Pstutter(16, Pseq([Pn(0,4), 3,5],inf)));
|
|
|
|
wait(30);
|
|
|
|
Pbindef(\y3, \mtranspose, Pstutter(16, Pseq([7, Pn(0,3), 3, 5 ],inf)));
|
|
|
|
// --- whitenoise hihat ----------------------------------------------------
|
|
"--- wHat ...".postln;
|
|
|
|
SynthDef(\wHat, {
|
|
arg outBus=0, amp=0.1, freq=2000, rq=0.5, gate=1, release=0.002, pan=0;
|
|
var snd, env;
|
|
env = EnvGen.kr(Env.cutoff(release), gate, doneAction:2);
|
|
snd = BPF.ar(WhiteNoise.ar, freq, rq, amp);
|
|
snd = HPF.ar(snd, 1000);
|
|
|
|
snd = snd * env;
|
|
|
|
OffsetOut.ar(outBus, Pan2.ar(snd,pan));
|
|
}).add;
|
|
|
|
Pbindef(\wHatp,
|
|
\instrument, \wHat,
|
|
\dur, 1/8,
|
|
\freq, Prand([1,2,3,4] * 300 + 2500, inf),
|
|
\rq, Prand([0.8,0.7,0.6], inf),
|
|
\pan, Prand((1..10) * 0.1 - 0.5,inf),
|
|
\amp, Prand((1..10) * 0.02 + 0.3,inf),
|
|
\outBus, ~mainOut, // wrangler?
|
|
\legato, Pseq([Pn(0.05,7),Prand((1..10)/80+0.05,inf)],inf),
|
|
);
|
|
|
|
Pbindef(\wHatp).quant(1);
|
|
|
|
wait(22/8);
|
|
|
|
Pbindef(\wHatp).play;
|
|
|
|
wait(30);
|
|
|
|
Pbindef(\midlineP).stop;
|
|
|
|
//wait(30);
|
|
|
|
Pbindef(\wHatp, \legato, Pseq([ Pseq((1..24)/24,1), Pseq([Pn(0.05,7),Prand((1..10)/80+0.05,inf)],inf)]));
|
|
wait(24/8);
|
|
|
|
Pbindef(\y3, \cutoff, Pstutter(16, Pseq([Pseq((13..18)),Pseq((17..12))].min(17),inf)));
|
|
Pbindef(\y3, \legato, Pseq([Prand([1,0.7]), 0.6, 0.9, 0.4, 0.6] * 0.7, inf));
|
|
Pbindef(\y3, \octave, [4,5,6] + Pwrand([0,2,1, 3],[0.7,0.1,0.1,0.1],inf));
|
|
|
|
wait(30);
|
|
|
|
Pbindef(\y3, \cutoff, Pstutter(16, Pseq([Pseq((13..18)),Pseq((17..12))].min(18),inf)));
|
|
Pbindef(\y3, \legato, Pseq([Prand([1,0.7]), 0.6, 0.9, 0.4, 0.6] * 0.8, inf));
|
|
Pbindef(\y3, \octave, Pstutter(32, Pseq( [5, [4,5], [4,5,6] ], inf), inf) + Pwrand( [0,1,1,-1], [0.7,0.1,0.1,0.1], inf));
|
|
Pbindef(\y3, \dlywet, Pstutter(8, Pfunc({~dlywrang1.set(\wet, rrand(0, ((0..4) * 0.1).choose ) ) })));
|
|
|
|
wait(30);
|
|
|
|
Pbindef(\y3, \legato, Pseq([Prand([1,0.7]), 0.6, 0.9, 0.4, 0.6] * 0.9, inf));
|
|
Pbindef(\y3, \octave, Pstutter(32, Pseq( [5, [4,5], [4,5,6] ], inf), inf) + Pwrand( [0,1,2,-1], [0.7,0.1,0.1,0.1], inf));
|
|
|
|
wait(30);
|
|
|
|
Pbindef(\wHatp, \legato, Pseq([ Pseq((1..24)/24,1), Pseq([Pn(0.05,7),Prand((1..10)/80+0.05,inf)],inf)]));
|
|
wait(20/8);
|
|
Pbindef(\wHatp).stop;
|
|
|
|
Pbindef(\y3, \legato, Pseq([Prand([1,0.7]), 0.6, 0.9, 0.4, 0.6] * 0.3, inf));
|
|
Pbindef(\y3, \cutoff, Pstutter(16, Pseq([Pseq((13..18)),Pseq((17..12))].min(14),inf)));
|
|
|
|
wait(20);
|
|
|
|
Pbindef(\y3, \legato, Pseq([Prand([1,0.7]), 0.6, 0.9, 0.4, 0.6] * 0.6, inf));
|
|
Pbindef(\y3, \degree, Pseq( [ 0, 2, -1, 5, -2, 6 ], inf));
|
|
Pbindef(\y3, \octave, [4,5]);
|
|
//Pbindef(\y3, \octave, [4,5,6] + Pwrand([0,2,1, 3],[0.7,0.1,0.1,0.1],inf));
|
|
Pbindef(\y3, \dlywet, Pstutter(8, Pfunc({~dlywrang1.set(\wet, rrand(0, ((3..9) * 0.1).choose ) ) })));
|
|
|
|
wait(30);
|
|
~dlywrang1.set(\wet2, 1);
|
|
wait(4);
|
|
|
|
Pbindef(\y3).stop;
|
|
|
|
wait(4);
|
|
|
|
// --- lcmnoi ----------------------------------------------------------------------
|
|
"--- lcmnoi ...".postln;
|
|
|
|
SynthDef(\lcmnoise, {
|
|
arg gate=1, outBus, amp1=0, amp2=1, amp=0.1;
|
|
var snd, revchain, env;
|
|
snd = [
|
|
tanh(lcm(SinOsc.ar(
|
|
LFNoise0.kr(LFNoise0.kr(1/10).exprange(0.1,1)).exprange(1,15000)
|
|
).range(-100,100).round(1),SinOsc.ar(
|
|
LFNoise0.kr(LFNoise0.kr(1/10).exprange(0.1,1)).exprange(1,15000)
|
|
).range(-100,100).round(1))*0.0001),
|
|
tanh(lcm(Saw.ar(
|
|
LFNoise0.kr(LFNoise0.kr(1/10).exprange(0.1,1)).exprange(1,15000)
|
|
).range(-100,100).round(1),LFCub.ar(
|
|
LFNoise0.kr(LFNoise0.kr(1/10).exprange(0.1,1)).exprange(1,15000)
|
|
).range(-100,100).round(1))*0.0001)
|
|
] ;
|
|
snd = BHiPass.ar(snd, 180);
|
|
snd = snd.softclip * 0.8;
|
|
snd = Splay.ar(snd, spread:1);
|
|
revchain = snd * EnvGen.ar(Env.perc(0, 0.1, Rand(10,10000), 4));
|
|
|
|
revchain = Greyhole.ar(
|
|
in: revchain,
|
|
delayTime: LFNoise1.ar(1).range(0.0001,0.2),
|
|
damp: 0.5,
|
|
size: LFNoise1.ar(0.1).exprange(0.0001,5),
|
|
feedback: 0.95);
|
|
|
|
revchain = LeakDC.ar(revchain);
|
|
revchain = Limiter.ar(revchain) * LFNoise1.ar([1,1]).range(0,0.9);
|
|
snd = snd * LFNoise0.ar([0.9,0.8]).range(0,2);
|
|
snd = (snd * amp1) + (revchain * amp2);
|
|
snd = snd.softclip * 0.8;
|
|
|
|
env = Linen.kr(gate, 0, 1, 0, 2);
|
|
snd = snd * amp * env;
|
|
Out.ar(outBus, snd);
|
|
//snd = LPF.ar(snd.softclip, LFNoise1.ar(0.1).exprange(10000,20000)) * 0.8;
|
|
}).add;
|
|
|
|
wait(0.5);
|
|
|
|
Pbindef(\lcmnoip,
|
|
\instrument, \lcmnoise,
|
|
|
|
\dur, Pseq([
|
|
Pseq([
|
|
Prand([Pseq([0.01,0.01]),0.02]),
|
|
Pn(0.05,19),
|
|
9.03
|
|
], 20), // 20 x 10
|
|
30]),
|
|
|
|
\amp, 1,
|
|
\amp1, Pseq([1,0.1],inf),
|
|
\amp2, Pseq([0.6,1],inf),
|
|
\legato, 1,
|
|
\out, ~mainOut,
|
|
).play;
|
|
|
|
160.wait;
|
|
|
|
"--- s1distdron...".postln;
|
|
// S1 DISTORTED DRONE -----------------------------------------------------
|
|
SynthDef(\s1Dist, {
|
|
arg freq=440, gate=1, out=0, amp=0.1, ampBus, d1 = 5, d2 = 1, d3=5, ffreq=200, ffreqBus;
|
|
var snd = Saw.ar([freq, freq*1.01]);
|
|
var env = Linen.kr(gate, releaseTime: 0.1, doneAction:2);
|
|
snd = snd + SinOsc.ar([freq*0.99, freq]);
|
|
snd = snd + Pulse.ar([freq*0.99, freq]);
|
|
|
|
snd = snd.clip2(LFNoise1.ar(0.3).range(0.3,0.8)) * d1;
|
|
snd = snd.wrap2(LFNoise1.ar(0.3).range(0.3,0.8)) * d2;
|
|
snd = snd.fold2(LFNoise1.ar(0.3).range(0.3,0.8)) * d3;
|
|
snd = LeakDC.ar(snd);
|
|
|
|
ffreq = In.kr(ffreqBus, 1);
|
|
ffreq = ffreq.max(20);
|
|
snd = LPF.ar(snd, ffreq);
|
|
|
|
snd = Limiter.ar(snd);
|
|
snd = Splay.ar(snd);
|
|
|
|
amp = In.kr(ampBus, 1);
|
|
Out.ar(out, snd*env*amp);
|
|
}).add;
|
|
|
|
~s1DistAmpBus.free;
|
|
~s1DistAmpBus = Bus.control(s,1);
|
|
~s1DistAmpBus.set(0);
|
|
~s1DistAmpLiner = SynthDef(\linexamp, { |outBus, lag, val|
|
|
Out.kr(outBus, VarLag.kr(val+0.0001, lag, 0, \cub) - 0.0001 * 0.9)
|
|
}).play(s, [outBus: ~s1DistAmpBus, lag: 10, val:0]);
|
|
|
|
~s1DistFfreqBus.free;
|
|
~s1DistFfreqBus = Bus.control(s,1);
|
|
~s1DistFfreqBus.set(100);
|
|
~s1DistFfreqLiner = SynthDef(\linexamp, { |outBus, lag, val|
|
|
Out.kr(outBus, VarLag.kr(val+0.0001, lag, 0, \cub) - 0.0001)
|
|
}).play(s, [outBus: ~s1DistFfreqBus, lag: 10, val:200]);
|
|
|
|
wait(0.5);
|
|
|
|
Pbindef(\s1DistP,
|
|
\instrument, \s1Dist,
|
|
\degree, -1,
|
|
\dur, 2,
|
|
\octave, [2,3],
|
|
\d1, Prand((1..5),inf),
|
|
\d2, Prand((1..5),inf),
|
|
\d3, 5,
|
|
\legato, 1,
|
|
// needs wrangled delay!
|
|
\out, ~wranglerBus,
|
|
\dlywet, Pstutter(8, Pfunc({~dlywrang1.set(\wet, rrand(0, ((3..6) * 0.1).choose ) ) })),
|
|
\ampBus, ~s1DistAmpBus,
|
|
\ffreqBus, ~s1DistFfreqBus
|
|
).play;
|
|
|
|
wait(1);
|
|
|
|
~s1DistAmpLiner.set(\lag, 40, \val, 0.4); wait(20);
|
|
~s1DistFfreqLiner.set(\lag, 40, \val, 500); wait(40);
|
|
~s1DistFfreqLiner.set(\lag, 10, \val, 1500); wait(30);
|
|
~s1DistFfreqLiner.set(\lag, 10, \val, 7500); wait(20);
|
|
~s1DistFfreqLiner.set(\lag, 1, \val, 700); wait(10);
|
|
~s1DistFfreqLiner.set(\lag, 5, \val, 2700); wait(10);
|
|
~s1DistFfreqLiner.set(\lag, 1, \val, 400); wait(10);
|
|
~s1DistFfreqLiner.set(\lag, 1, \val, 6400); wait(10);
|
|
~s1DistFfreqLiner.set(\lag, 1, \val, 15400); wait(5);
|
|
~s1DistFfreqLiner.set(\lag, 7, \val, 1000); wait(20);
|
|
~s1DistFfreqLiner.set(\lag, 7, \val, 3000); wait(10);
|
|
~s1DistFfreqLiner.set(\lag, 7, \val, 400); wait(20);
|
|
~s1DistFfreqLiner.set(\lag, 1, \val, 20000); wait(5);
|
|
|
|
|
|
SynthDef(\dustnoise, {
|
|
arg outBus=0, gate=1, amp=0.1, release=1, density=1;
|
|
var snd, env;
|
|
|
|
env = Linen.kr(gate, 0, 1, release, 2);
|
|
snd = WhiteNoise.ar * LFPulse.ar(0.06, width:0.02) * -25.dbamp;
|
|
snd = HPF.ar(snd, 2000);
|
|
snd = snd + Dust.ar(LFNoise1.ar(0.1).range(1,100) * density, mul:0.2);
|
|
snd = Pan2.ar(snd, LFNoise1.kr(0.1).range(-0.5,0.5));
|
|
snd = snd * env * amp;
|
|
OffsetOut.ar(outBus, snd);
|
|
}).add;
|
|
|
|
wait(0.5);
|
|
|
|
Pbindef(\dustnoiseP,
|
|
\instrument, \dustnoise,
|
|
\amp, 1,
|
|
\dur, 30,
|
|
\legato, 1,
|
|
\release, 0.1,
|
|
\density, 10,
|
|
).play;
|
|
|
|
~s1DistFfreqLiner.set(\lag, 7, \val, 1000); wait(20);
|
|
~s1DistFfreqLiner.set(\lag, 20, \val, 300); wait(20);
|
|
~s1DistFfreqLiner.set(\lag, 5, \val, 3300); wait(5);
|
|
~s1DistFfreqLiner.set(\lag, 5, \val, 150); wait(5);
|
|
|
|
Pbindef(\dustnoiseP, \density, 4);
|
|
|
|
~s1DistAmpLiner.set(\lag, 15, \val, 0.5); wait(15);
|
|
|
|
"--- padme ...".postln;
|
|
// padme -----------------------------------------------------------------------------------
|
|
SynthDef(\padme, {
|
|
arg out=0, gate=1, amp=1, alag=10, freq;
|
|
var sum, snd0, env, gen, numosc;
|
|
|
|
numosc = 10;
|
|
env = Env.adsr(20, 0, 1, 30, 1, \cub);
|
|
gen = EnvGen.kr(env, gate, doneAction:2);
|
|
|
|
snd0 = Array.fill(numosc, {
|
|
var lfreq, local;
|
|
lfreq = [freq, freq * 1.5, freq * 3, freq * 4];
|
|
local = Saw.ar(rrand(lfreq, lfreq * 1.03 ) * LFNoise1.kr(0.3).range(1, 1.03), -10.dbamp);
|
|
local = Mix(local);
|
|
});
|
|
snd0 = Splay.ar(snd0);
|
|
snd0 = LPF.ar(snd0, LFNoise1.ar(0.06).exprange(300,10000));
|
|
snd0 = CombL.ar(snd0, 1, LFNoise1.ar(0.05).range([0.5,0.65],[0.53,0.68]), 15, -1.dbamp) + snd0;
|
|
|
|
sum = snd0 * gen;
|
|
sum = sum * Lag.kr(amp, alag);
|
|
Out.ar(out, sum);
|
|
}).add;
|
|
|
|
wait(0.2);
|
|
|
|
Pbindef(\padmeP,
|
|
\instrument, \padme,
|
|
\freq, Pseq([50, 80],inf),
|
|
\dur, 30,
|
|
\legato, 1.2,
|
|
\amp, 0.9,
|
|
\out, ~mainOut
|
|
).play;
|
|
|
|
~s1DistAmpLiner.set(\lag, 20, \val, 0); wait(15);
|
|
|
|
Pbindef(\s1DistP).stop;
|
|
~s1DistAmpLiner.free;
|
|
~s1DistFfreqLiner.free;
|
|
|
|
wait(30);
|
|
|
|
wait(30);
|
|
Pbindef(\dustnoiseP, \density, 1);
|
|
wait(110);
|
|
|
|
Pbindef(\padmeP, \freq, Pseq([80],inf));
|
|
|
|
wait(20);
|
|
|
|
Pbindef(\padmeP, \amp, 0.4);
|
|
|
|
Pbindef(\dustnoiseP, \amp, Pseg(Pseq([1,0]), 90, \cub) ); // ???
|
|
|
|
// -- Soft dark saw ---------------------------------------
|
|
"--- soft dark saw...".postln;
|
|
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.7,
|
|
out: ~reverBus,
|
|
gainBus: ~softSawAmpBus
|
|
]
|
|
).play;
|
|
|
|
wait(1);
|
|
|
|
~softSawAmpBusLiner.set(\lag, 0, \val, 0);
|
|
wait(0.5);
|
|
~softSawAmpBusLiner.set(\lag, 20, \val, 1);
|
|
wait(0.5);
|
|
|
|
wait(30);
|
|
Pbindef(\padmeP, \amp, 0.2);
|
|
|
|
wait(60);
|
|
Pbindef(\padmeP).stop;
|
|
Pbindef(\dustnoiseP).stop;
|
|
|
|
wait(30);
|
|
|
|
Pbindef(\sawp1, \amp, [1,0.5,0.2,0.1] * 0.5);
|
|
|
|
wait(15);
|
|
|
|
~greyholeVerb.set(*[revWet:0.5, feedback:0.8, lag:10, dtime:0.1, size:5, diff:0.707 ]);
|
|
|
|
"--- lorenz patterns...".postln;
|
|
// -- lorenz patterns ------------------------------------------
|
|
SynthDef(\blipo, { | out, freq = 440, amp = 0.1, nharms = 10, pan = 0, gate = 1, sustain, attack=0.1 |
|
|
var audio = Blip.ar(freq * (SinOsc.kr(3).range(1,1.01)), nharms, amp);
|
|
var env = Linen.kr(gate, attackTime: attack, releaseTime: sustain, doneAction: Done.freeSelf);
|
|
OffsetOut.ar(out, Pan2.ar(audio, pan, env) );
|
|
}).add;
|
|
|
|
wait(0.5);
|
|
|
|
~dotsP = Pbind(
|
|
\dur, Pflatten(1, Plorenz() * 1),
|
|
\attack, 0.01,
|
|
\octave, 3,
|
|
\amp, 0.4,
|
|
\nharms, Prand((2..7),500) );
|
|
|
|
~linesP = Pbind(
|
|
\dur, Pflatten(1, Plorenz() * 5),
|
|
\attack, 3,
|
|
\octave, Prand([2,3,4],inf),
|
|
\nharms, Prand((1..4),80),
|
|
\amp, 0.3 );
|
|
|
|
~highP = Pbind(
|
|
\dur, Pflatten(1, Plorenz() * 5),
|
|
\attack, 3,
|
|
\octave, 5,
|
|
\nharms, Prand((1..3),50),
|
|
\amp, 0.03 );
|
|
|
|
// just plays out!
|
|
~lorenzP = Pbindf(
|
|
Ptpar([ 0, ~dotsP, 60, ~linesP, 160, ~highP]),
|
|
\instrument, \blipo,
|
|
\degree, (Pflatten(1, Plorenz()) * 18).asInteger,
|
|
\mtranspose, Prand([Pn(0,24),Pn(2,24),Pn(4,24)], inf),
|
|
\detune, Prand([0,1,0.5,1.5], inf),
|
|
\scale, Scale.major(\pythagorean),
|
|
\legato, Prand((4..7),inf) * 0.2,
|
|
\pan, Prand((-10..10),inf) * 0.1,
|
|
\out, ~reverBus
|
|
).play;
|
|
|
|
wait(140);
|
|
|
|
~softSawAmpBusLiner.set(\lag, 120, \val, 0);
|
|
|
|
wait(120);
|
|
|
|
Pbindef(\sawp1).stop;
|
|
|
|
while({ ~lorenzP.isPlaying }, { wait(1); });
|
|
|
|
wait(10);
|
|
|
|
// fade out
|
|
~mainOutFx.set(\lag, 10, \amp, 0);
|
|
|
|
wait(5);
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
"<<< THIS IS THE END, MY FRIEND.\n---------------------------------\n\n".postln;
|
|
s.freeAll;
|
|
"";
|
|
};
|
|
|
|
};
|
|
);
|