You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
169 lines
3.5 KiB
169 lines
3.5 KiB
(
|
|
/* *******************************************************************
|
|
|
|
Grenel Cycles (Limbo For Corrupt Politicians)
|
|
copyright 2021 by Luka Prinčič
|
|
distribution and re-use allowed under conditions of PP:BY-SA-NC
|
|
(Peer Production: Attribution - ShareAlike - NonCapitalist) Licence
|
|
|
|
****************************************************************** */
|
|
|
|
s.waitForBoot({
|
|
fork({
|
|
|
|
"-----------------------------------------".postln;
|
|
|
|
|
|
// buffers/samples --
|
|
|
|
~b1 = Buffer.read(s, PathName.new(thisProcess.nowExecutingPath).pathOnly +/+ "pe4enkata_beatbox.wav");
|
|
~b2 = Buffer.read(s, PathName.new(thisProcess.nowExecutingPath).pathOnly +/+ "pe4enkata_diggity.wav");
|
|
|
|
s.sync;
|
|
|
|
// busses --
|
|
|
|
~revBus = Bus.audio(s, 2);
|
|
~dlyBus = Bus.audio(s, 2);
|
|
|
|
s.sync;
|
|
|
|
|
|
// syntdefs --
|
|
|
|
SynthDef(\grenel, {
|
|
arg outBus = 0, gate = 1, amp = 0.1, buf, pos = 0, atk = 1, rls = 1, rand = 0, frq = 0.1, rate = 1, ffreq = 450;
|
|
var snd, gfreq = 200;
|
|
snd = GrainBuf.ar(
|
|
numChannels: 2,
|
|
trigger: Impulse.ar(gfreq * LFNoise0.ar(gfreq).range(1, 0.8) ),
|
|
dur: 0.2,
|
|
sndbuf: buf,
|
|
rate: rate,
|
|
pos:
|
|
( LFNoise1.kr(frq).range(0,0.2) * rand ) +
|
|
( SinOsc.kr(frq).range(0,0.03) * (rand-1).abs )
|
|
+ pos
|
|
* LFNoise0.ar(gfreq).range(1, 0.999), // rand position a bit
|
|
pan: LFNoise1.ar(0.5) * 0.5
|
|
);
|
|
snd = LPF.ar(in: snd, freq: LFNoise1.ar(0.1).exprange(ffreq,15000));
|
|
snd = snd * EnvGen.kr(Env([0,1,0], [atk,rls], [3,-3], 1), gate, doneAction:Done.freeSelf);
|
|
snd = snd * amp;
|
|
|
|
Out.ar(outBus, snd);
|
|
}).add;
|
|
|
|
SynthDef(\revfx,
|
|
{
|
|
arg inBus, outBus, amp=1, revtime=10;
|
|
var input, snd;
|
|
|
|
input = In.ar(inBus, 2);
|
|
snd = GVerb.ar(input.sum, 100, revtime, drylevel:0, mul:-6.dbamp, add:input);
|
|
snd = snd * amp;
|
|
|
|
Out.ar(outBus, snd);
|
|
}
|
|
).add;
|
|
|
|
SynthDef(\dlyfx,
|
|
{
|
|
arg inBus, outBus, amp=1, dry=1, wet= -8.dbamp;
|
|
var input, snd;
|
|
|
|
input = In.ar(inBus, 2);
|
|
snd = input * dry + CombN.ar(input, 1, [0.33,0.44], 5, mul:wet);
|
|
snd = snd * amp;
|
|
|
|
Out.ar(outBus, snd);
|
|
}
|
|
).add;
|
|
|
|
|
|
s.sync;
|
|
|
|
|
|
|
|
|
|
|
|
// reverb
|
|
~revfx = Synth(\revfx, [\inBus, ~revBus, \outBus, 0, \amp, -5.dbamp], addAction:\addToTail);
|
|
|
|
// delay fx
|
|
~dlyfx = Synth(\dlyfx, [\inBus, ~dlyBus, \outBus, 0, \amp, -5.dbamp], addAction:\addToTail);
|
|
|
|
s.sync;
|
|
|
|
Pbind(*[ // GRANULATOR 1
|
|
instrument:\grenel,
|
|
pos: Pseq([ // a certain sequence. a love.
|
|
Pn(0.5, 2),
|
|
[0.5,0.4],
|
|
Pn([0.4], 2),
|
|
[0.4,0.6],
|
|
Pn([0.6], 2),
|
|
[0.6,0.24],
|
|
Pn([0.24], 2),
|
|
[0.72, 0.24],
|
|
Pn([0.72], 2),
|
|
[0.7, 0.72],
|
|
Pn([0.7], 2),
|
|
[0.55, 0.7],
|
|
Pn([0.55], 2),
|
|
[0.75, 0.55],
|
|
Pn([0.75], 2),
|
|
[0.66, 0.75],
|
|
Pn([0.66], 2),
|
|
[0.11, 0.66],
|
|
Pn([0.11], 2),
|
|
[0.5, 0.11], // 30 * 30sec = 15min
|
|
Pn([0.5], 2), // 1 min
|
|
]),
|
|
rate: [0.25, 0.5, 1],
|
|
dur: 30,
|
|
legato:0.95,
|
|
atk: 4,
|
|
rls: 10,
|
|
buf: ~b2,
|
|
amp: -15.dbamp,
|
|
outBus: ~revBus,
|
|
|
|
// debug:
|
|
postln: Pfunc({arg e; postln("G1 pos:" + e.pos)})
|
|
]).play;
|
|
|
|
|
|
Pbind(*[ // GRANULATOR 2
|
|
instrument:\grenel,
|
|
pos: Pwhite(0.1,0.9),
|
|
rate: [0.5,1,1],
|
|
ffreq: 9000,
|
|
dur: Pseq([Rest(6 * 30), Pn(Pseq([Rest(30), 30]), 32-6)]),
|
|
legato:1,
|
|
atk: 7,
|
|
rls: 0.1,
|
|
buf: ~b1,
|
|
rand: Pwhite(0.1, 1, 32-5),
|
|
frq: Prand([1, 1/2, 1/4], inf),
|
|
amp:-26.dbamp,
|
|
outBus: ~dlyBus,
|
|
|
|
// debug:
|
|
postln: Pfunc(
|
|
{
|
|
arg e;
|
|
postln("G2 pos:"
|
|
+ e.pos.round(0.01)
|
|
+ " rand:"
|
|
+ e.rand.round(0.01)
|
|
+ " dur:"
|
|
+ e.dur
|
|
+ " frq:"
|
|
+ e.frq)
|
|
})
|
|
]).play;
|
|
|
|
})
|
|
})
|
|
) |