These are the rough cue marks for where and what to change.
p = floor(p * 30.);// * bands.x);
p = floor(p * 10. * bands.x);
p = mix(p, uv, 1.0);
p = mix(p, uv, .0);
p = floor(p * 10. * bands.x);
p = floor(p * 10.);
vec4 bb = texture2D(backbuffer, (uvN() - center) * 1.0 + center);
vec4 bb = texture2D(backbuffer, (uvN() - center) * 1.02 + center);
c += snoise(vec3(p * 1., time * s)) * red;// * bands.x * 2.;
c += snoise(vec3(p * 1.1, time * s)) * teal;// * bands.y * 2.;
c += snoise(vec3(p * 1.2, time) * s) * orange;// * bands.z * 2.;
c = pow(c, 3.* white);
p = vec2(x/abs(y), 1./abs(y)) + vec2(0, time * 3. - (bands.y * .25));
float x = p.x * 8.;
float y = pow(p.y, 5.3 * bands.y ) * 3.;
c *= abs(y);
// c = mix(c *8., bb.rgb, bb.a );
c = pow(c, 1.* white);
c += l * hsv2rgb(vec3(length(bands), rand(uv + time) * 2.+.8, .5)) * .0 -> 10.;
p = vec2(x/abs(y - .01), 1./abs(y - 4.01)) + vec2(0, time * 3. - (bands.y * .25));