One fix is to calculate the k array just once in setup rather than every frame.
let a = [];
let k = [];
let u, v, r = 42, g = 84, b = 128, p = 0, s = 32;
function setup() {
createCanvas((w = 300), w);
pixelDensity(1);
for (let x = 0; x < w; x ++) {
for (let y = 0; y < 4 * w; y ++) {
a[x * 4 + y * 4* w] = int((b + b * sin(x / 32.0) +
(b + b * cos(y / s)) +
(b + b * sin(sqrt(x * x + y * y) / s))) / 4);
}
}
for (i = 0; i < 128; i++) {
u = sin(i * 0.12);
v = sin(i * PI / 50 + 0.79);
k[i] = color(r + u * b, g + v * b, b + u * b);
}
}
function draw() {
p++;
loadPixels();
for (let i = 0; i < 4 * w * w; i += 4) {
c = k[(a[i] + p) & 127];
pixels[i] = red(c);
pixels[i + 1] = green(c);
pixels[i + 2] = blue(c);
pixels[i + 3] = alpha(c);
}
updatePixels();
}