pakt18
Built with p5.js and SuperCollider. See /f0blog/pact-februari/
//pakt18
let index
let a, b, c, d
let spread
let n
function setup() {
const div = select('#sketch')
const cnv = createCanvas(div.width, div.height)
cnv.parent('sketch')
frameRate(60)
noFill()
index = 0
n = 50
}
function draw() {
spread = sin(index * 0.002) * 50.0 + sin(index * 0.003) * 40
background(0)
for (let i = 1; i < n; i++) {
stroke(255, 255, 255, sin((i / n) * PI) * 255)
a = sin((i * spread + index) * sin(index * 0.0025 + sin(index * 0.005)) * 0.005) * 0.45 + 0.5
b = sin((i * spread + index) * sin(index * 0.0024 + sin(index * 0.0051)) * 0.005) * 0.45 + 0.5
c = sin((i * spread + index) * sin(index * 0.0023 + sin(index * 0.0052)) * 0.005) * 0.45 + 0.5
d = sin((i * spread + index) * sin(index * 0.0022 + sin(index * 0.0053)) * 0.005) * 0.45 + 0.5
line(a * width, b * height, c * width, d * height)
line(b * width, a * height, d * width, c * height)
}
index++
}
Ndef(\grey).play
(
Ndef(\grey, {Mix({|i|
var t= Impulse.ar(SinOsc.ar(0.1+(i*0.125), i/10*2pi+#[0, 0.1], 4, SinOsc.ar(0.01+(i*0.01), 0, 4, 12)));
Pan2.ar(
FreeVerb.ar(
BPF.ar(
GrayNoise.ar(
Decay2.ar(
t,
TRand.ar(0.005, 0.015, t),
TRand.ar(0.1, 0.15, t),
TRand.ar(0.35, 0.5, t)
)
),
SinOsc.ar(i+1*0.032, #[0, 0.1]+i).exprange(i+1*300, i+1*600),
SinOsc.ar(i+1*0.025, #[0, 0.1]+i).range(0.1, 1)
),
0.3
),
SinOsc.ar(0.1, #[0, 0.1]+i, 0.9)
);
}!10)});
)
Ndef(\grey).stop