Skip to content

Instantly share code, notes, and snippets.

@salkin-mada
Last active March 20, 2020 11:44
Show Gist options
  • Save salkin-mada/ad5fb786ba0ecdc115f826eee2266379 to your computer and use it in GitHub Desktop.
Save salkin-mada/ad5fb786ba0ecdc115f826eee2266379 to your computer and use it in GitHub Desktop.
Imitating Laurie Spiegels Expanding Universe with Pspawn
s.boot
(
SynthDef(\default, {|out, gate=1, freq=440, sustain, pan=0.0, amp=0.1, res=0.1|
var sum;
var osc = LFSaw.ar(freq);
var env = EnvGen.kr(Env.perc(0.01, sustain, amp), gate, doneAction: Done.freeSelf);
var fenv = EnvGen.kr(Env.perc(0.01, sustain/4, amp), gate);
var sig = DFM1.ar(osc, freq*freq.expexp(20,16e3,1.0,0.4)+fenv.linlin(1.0,0.0,2234,0), res);
sum = Pan2.ar(sig, pan, env);
Out.ar(out, sum);
}).add; // .store
)
s.volume_(-5)
Pdef(\tonalUniverse).fadeTime_(5)
(
Pdef(\tonalUniverse,
Pspawn(
Pbind(
\method, \par,
\dur, 12,
\legato, Pwhite(0.3,1.0),
\arraySize, 16,
\pattern, Pfunc{ | envir |
var times = rrand(1,2);
var levels = Array.rand(envir.arraySize ?? 4, 0, 12);
var durs = Array.rand(envir.arraySize ?? 4, 1, 8);
var curve = rrand(-10,10);
var maxlegato = rrand(0.5,4.0);
var maxres = rrand(0.2,2.0);
Pbind(
\instrument, 'default',
\renv, Pseg(
Pseq(levels),
Pseq(durs),
curve,
times
),
\scale, Scale.shang,
\amp, Psinen(envir.legato)*0.2,
\dur, rrand(1,8)/8,
\pan, rrand(-1.0,1.0),
\legato, Pkey(\renv).wrap(0.025,maxlegato),
\degree, Pkey(\renv).asInteger,
\res, Pkey(\renv).wrap(0.1, maxres),
\octave, rrand(3,5),
\detune, Psine(envir.legato*2.5)
)
}
)
)
).play
)
Pdef(\tonalUniverse).stop
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment