SuperCollider code written for smol release called 'noether'. https://music.lukaprincic.si/album/noether
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.
 

92 lines
2.8 KiB

/*
matt
written by Luka Prinčič for 'noether' release.
you need the matthew_1-25.wav in a smp folder.
*/
(
Server.default.waitForBoot {
Buffer.freeAll;
// load buffers
~selfpath = PathName.new(thisProcess.nowExecutingPath).pathOnly;
~buf2 = Buffer.readChannel(s, ~selfpath +/+ "smp/matthew_1-25.wav", channels:1);
SynthDef(\granulator, {
var snd, mpos, clicks, env, glitch, nenv;
// positions
mpos = Demand.kr(Impulse.kr(1/64), 0, Dseq([
0.247, 0.295, 0.265, 0.39, 0.147, 0.275, 0.698, 0.242 ],inf));
env = EnvGen.ar(
Env([0, 0, 1, 0.5, 0.8, 0.5, 0.8, 0.5, 1, 0, 0],
[ 0, 15, 1, 15, 1, 15, 1, 15.95, 0.05, 0 ], \sqr,
releaseNode: 9, loopNode: 0),
gate:1);
snd = GrainBuf.ar(
numChannels: 2,
trigger: Impulse.ar(128 * LFNoise0.ar(128).range(1,1.4)),
dur: 0.2,
sndbuf: ~buf2,
rate: [0.5, 1],
pos: SinOsc.kr(1/64, phase:pi/2*3).range(mpos, mpos+0.01).poll(2, \pos)
* LFNoise0.ar(128).range(1, 0.999),
) * 0.3;
snd = LPF.ar(in: snd, freq: LFNoise1.ar(0.3).exprange(450,15000));
snd = Splay.ar( [ snd[0][0] * 0.5, snd[0][1] ]
+ [ snd[1][1], snd[1][0] * 0.5 ], 1) * 2 ;
snd = snd * LFPulse.kr(8).range(LFNoise1.kr([0.1,0.1]).range(
EnvGen.kr(Env([1, 1, 0.5, 0.2, 1, 1],[64, 64, 256, 64, 64])),
1),1);
snd = snd * LFPulse.kr(3).range(LFNoise1.kr([0.1,0.1]).range(
EnvGen.kr(Env([1, 1, 0.8, 0.6, 1, 1],[64, 64, 256, 64, 64])),
1),1);
clicks = HPF.ar(LFSaw.ar(8, 1, mul:LFNoise0.kr(2).range(0.02,0.05)), 1000);
clicks = LPF.ar(in: clicks, freq: LFNoise1.ar(0.3).exprange(450,9000))
* LFSaw.kr(1/16, iphase:1).range(0,1);
clicks = clicks + LPF.ar(
HPF.ar(
LFSaw.ar(1, 0, mul:LFNoise0.kr(2).range(0.005,0.04)),
LFNoise1.kr(1/8).range(500,4000)),
7000);
clicks = clicks * EnvGen.kr(Env([0,0,1,1,0,0],[128,32,256,32,64]));
glitch = GbmanN.ar(LFNoise0.kr(LFNoise0.kr(4).range(1,20)).exprange(240, SampleRate.ir));
glitch = glitch * EnvGen.ar(Env(
[0, 0, 0, 1, 1, 0, 0],
[ 0, 16+15.75, 0, 0.25, 0, 0 ],
\lin, 5, 0));
glitch = BPF.ar(glitch, 1000) * LFNoise0.kr(1/16).range(0.005, 0.02);
glitch = glitch * EnvGen.kr(Env([0,0,1,1,1,0],[256,128,64,64]));
glitch = GVerb.ar(glitch, 100, 5, 0.8, 0.5, 30, 1, 0, 0.8);
nenv = EnvGen.ar(Env([0,0,1,0,0], [0,32,0,0], 20, 3, 0));
snd = snd * env * EnvGen.kr(Env([1,1,0],[512,0.1]));
snd = Decimator.ar(snd, LFNoise1.kr(1/16).range(5000,22050), mul:-18.dbamp, add:snd);
snd = CombL.ar(BPF.ar(snd, 1000), 1, [0.5,2/3], 8, add:snd);
snd = snd + clicks;
snd = snd + glitch;
snd = snd +
(PinkNoise.ar
* nenv
* LFNoise0.kr(1/16).range(0.005, 0.05)
* EnvGen.kr(Env([0,0,1,1,0,0],[128,256,64,64]))
);
snd = snd * EnvGen.kr(Env([0, 1, 1, 0],[32, 512-32, 32], \sqr), doneAction:2);
Out.ar(0,Limiter.ar(snd, 0.95));
}).play;
}
)