pakt09
Built with p5.js and SuperCollider. See /f0blog/pact-februari/
//pakt09
let index, n, m
let rows, cols
let magic
let grad
function setup() {
const div = select('#sketch')
const cnv = createCanvas(div.width, div.height)
cnv.parent('sketch')
frameRate(60)
noStroke()
index = 0
n = 1000
m = 0
rows = 3
cols = 4
magic = 50
grad = createGraphics(width, height)
grad.noStroke()
for (let r = width; r > 0; --r) {
grad.fill(
lerpColor(color(0.5 * 255, 0.5 * 255, 0.5 * 255), color(0, 0, 0), r / width)
)
grad.ellipse(width * 0.5, height * 0.5, r * 2.0, r * 2.0)
}
fill(255, 255, 255, 0.85 * 255)
}
function draw() {
image(grad, 0, 0)
if (m < n) {
m = m + 1
}
for (let i = 0; i < m; i++) {
const px = (rows + i) % width
const py = ((cols + i) * (i % magic)) % height
rect(px, py, 8 * sin((index + i) * 0.012), 8 * cos((index + i) * 0.011))
}
magic = magic + sin(index * 0.001) * 0.01
rows = rows + sin(index * 0.0004)
cols = cols + sin(index * 0.0005)
index++
}
Ndef(\snow).play
(
Ndef(\snow, {
Mix({|i|
var m= SinOsc.ar(0.005, i/5*2pi, 2pi);
var p= WhiteNoise.ar(SinOsc.ar(i*5000+5000)*SinOsc.ar(i*500+500)*SinOsc.ar(i*50+50)*SinOsc.ar(i*5+5));
Pan2.ar(SinOsc.ar(p, p*m, p), p, 0.5);
}.dup(5));
});
)
Ndef(\snow).stop