Originally, I had gone for one of the visuals from tgh wesbite that was shared with us. However, Pulsar afterwards, crashed towards the end so I decided to use a simple visual I had made during my Intro to IM class. It’s a little over 2 mins (sorry :/ )
Here is my Tidal code!
d2 $ struct "<t(3,8) t(5,8)>" $ s "casio" # n (run 8)
d4 $ struct "<t(3,8) t(5,8)>" $ ccv "<169 109 120 127>"
# ccn "0"
# s "midi"
d1 $ n ("e4 d c a b a b c7" |+ "<2 2 7 12>") # s "[superpiano, cp, bd, arpy, bd]" # room 1
d3 $ struct "<t(3,8) t(5,8)>" $ ccv "<127 115 66 107>"
# ccn "0"
# s "midi"
d2 silence
hush
Hydra:
let p5 = new P5();
s0.init({ src: p5.canvas });
src(s0).out();
p5.hide();
let bubbles = [];
p5.draw = () => {
if (bubbles.length === 0) {
p5.createCanvas(window.innerWidth, window.innerHeight);
for (let i = 0; i < 30; i++) {
bubbles.push(new Bubble(p5.random(p5.width), p5.random(p5.height), p5.random(20, 100)));
}
}
p5.background(137, 207, 240, 50);
for (let i = 0; i < bubbles.length; i++) {
bubbles[i].move();
bubbles[i].display();
}
if (p5.frameCount % 15 === 0) {
bubbles.push(new Bubble(p5.random(p5.width), p5.height, p5.random(20, 100)));
}
};
class Bubble {
constructor(x, y, r) {
this.x = x;
this.y = y;
this.r = r;
this.speed = p5.map(this.r, 20, 100, 2, 0.5);
this.color = p5.color(p5.random(100, 255), p5.random(100, 255), p5.random(255), p5.random(100, 200));
}
move() {
this.y -= this.speed;
this.x += p5.random(-1, 1);
}
display() {
p5.fill(this.color);
p5.noStroke();
p5.ellipse(this.x, this.y, this.r);
}
}
src(s0)
.mult(osc(2, () => cc[0] * 2, 3))
.modulate(noise(() => cc[1] * 0.5))
.rotate( () => cc[0] * 0.5 )
.colorama(() => cc[0] * 1)
.out();
src(o2)
.modulate(src(o1)
.modulate(noise(() => cc[1] * 0.05))
.rotate( () => cc[2] * 0.2 ))
.colorama(() => cc[0] * 2)
.blend(src(o0))
.out(o2)
render(o2)
hush()