const color0 = [60, 9, 13, 100];
const color1 = [40, 4, 54, 100];
const color2 = [45, 2, 86, 100];
const noiseScale = 0.0015;
createCanvas(windowWidth, windowHeight);
function zeroToOneWave(x) {
return 0.5 * (sin(TAU * x - PI / 2) + 1);
function drawSpline(o0, o1, o2, o3, o4) {
const h95 = height * 0.95;
const x1 = map(noise((frameCount + o0) * noiseScale), 0, 1,
const y1 = map(noise((frameCount + o0) * noiseScale), 0, 1,
const x2 = map(noise((frameCount + o1) * noiseScale), 0, 1,
width * 0.75 - width / 8,
width * 0.75 + width / 8);
const y2 = map(noise((frameCount + o1) * noiseScale), 0, 1,
const x3 = map(noise((frameCount + o2) * noiseScale), 0, 1,
const y3 = map(noise((frameCount + o2) * noiseScale), 0, 1,
const x4 = map(noise((frameCount + o3) * noiseScale), 0, 1, width / 4, width * 0.75);
const y4 = map(noise((frameCount + o3) * noiseScale), 0, 1,
const x5 = map(noise((frameCount + o4) * noiseScale), 0, 1, width / 2, width * 0.75);
const y5 = map(noise((frameCount + o4) * noiseScale), 0, 1,
circle(x2, y2, 128 * 0.85);
circle(x2, y2, 128 * 0.7);
for (let i = 0; i < 8; i++) {
drawSpline(5000 + offset, 100, 2000 + offset, 3000 + offset, 4000 + offset);