pakt17
Built with p5.js and SuperCollider. See /f0blog/pact-februari/
//pakt17
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)
noStroke()
rectMode(CENTER)
index = 0
n = 45
}
function draw() {
spread = sin(index * 0.004) * 5 + 6
background(0)
for (let i = 0; i < n; i++) {
a = sin((i * spread + index) * sin(index * 0.005 + (sin(index * 0.0074 + 1.0) + 1.0)) * 0.0075 + 1) * 0.25 + 0.5
b = sin((i * spread + index) * sin(index * 0.0051 + (sin(index * 0.0073 + 2.0) + 2.0)) * 0.0075 + 2) * 0.25 + 0.5
c = sin((i * spread + index) * sin(index * 0.0052 + (sin(index * 0.0072 + 3.0) + 3.0)) * 0.0075 + 3) * 0.25 + 0.5
d = sin((i * spread + index) * sin(index * 0.0053 + (sin(index * 0.0071 + 4.0) + 4.0)) * 0.0075 + 4) * 0.25 + 0.5
fill(a * 255, b * 255, c * 255, d * 255)
rect(a * width, b * height, (c - a) * width, (d - b) * height)
}
index++
}
Ndef(\shades).play
(
Ndef(\shades, {Mix({|i|
var x= SinOsc.ar(0, SinOsc.ar(0.01*i+0.03, i, 2pi));
var y= SelectX.ar(x.range(0, 4), [WhiteNoise.ar, GrayNoise.ar, PinkNoise.ar, BrownNoise.ar]);
var z= Pan2.ar(y, x*0.4);
BPF.ar(Rotate2.ar(z[0], z[1], i/3*2-1), i+1*500, SinOsc.kr(0, SinOsc.ar(i*0.02+0.01, i, pi)).range(1, 10), 0.3);
}!4)});
)
Ndef(\shades).stop