createCanvas(windowWidth, windowHeight);
colorMode(HSB, 360, 100, 100, 100);
translate(width / 2, height / 2);
fill(0, moveSin(0, 100, 1.3), 100);
rect(-width / 12 * 2, 0, width / 14, moveSin(width / 14.0, width / 3.0, 1.0));
fill(60, moveSin(0, 100, 1.4), 100);
rect(-width / 12, 0, width / 14, moveSin(width / 14.0, width / 3.0, 0.9));
fill(120, moveSin(0, 100, 1.5), 100);
rect(0, 0, width / 14, moveSin(width / 14.0, width / 3.0, 0.8));
fill(240, moveSin(0, 100, 1.6), 100);
rect(width / 12, 0, width / 14, moveSin(width / 14.0, width / 3.0, 0.7));
fill(300, moveSin(0, 100, 1.7), 100);
rect(width / 12 * 2, 0, width / 14, moveSin(width / 14.0, width / 3.0, 0.6));
function moveSin(min, max, speed) {
let t = radians(frameCount * speed);
let out = map(sin(t), -1.0, 1.0, min, max);
function moveNoise(min, max, speed) {
let t = frameCount / 60 * speed / 4.0;
let out = map(noise(t), 0.0, 1.0, min, max);
function moveBounce(min, max, speed, nPow = 3.0) {
let t = radians(frameCount * speed);
for (let i = 1; i < 2 * nPow; i += 2) {
osc += sin(t * i) / float(i);
let out = map(osc, -1.0, 1.0, min, max);