93 lines
2.8 KiB
Plaintext
93 lines
2.8 KiB
Plaintext
/*
|
|
|
|
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;
|
|
|
|
}
|
|
)
|
|
|