‹ pakt27pakt29 ›

pakt28


pact28round, 01:00, 1.84MB

Built with p5.js and SuperCollider. See /f0blog/pact-februari/

//pakt28
let index, n
function setup() {
  const div = select('#sketch')
  const cnv = createCanvas(div.width, div.height)
  cnv.parent('sketch')
  frameRate(60)
  colorMode(HSB, 255)
  strokeCap(SQUARE)
  noFill()
  index = 0
}
function draw() {
  n = sin(index * 0.0015) * 30 + 35
  background(0)
  for (let i = 0; i < n; i++) {
    const t = (i / n) * TWO_PI
    strokeWeight(sin(index * 0.0125 + t) * 5 + 5.5)
    stroke(
      color(
        (sin(t) * (sin(index * 0.01) * 0.2) + 0.5) * 255,
        (sin(index * 0.004) * 0.3 + 0.7) * 255,
        255
      )
    )
    const a1 = (sin(index * (sin(index * 0.0025 + t) * 0.01 + 0.01)) * 0.5 + 0.5) * TWO_PI
    const a2 = (sin(a1 * index * 0.0005 + t) * 0.5 + 0.5) * PI
    const r = height * 0.475 * (1 - i / n) * 2
    arc(width * 0.5, height * 0.5, r, r, a2, a1)
  }
  index++
}

Ndef(\round).play
(
Ndef(\round, {var n= 28; GVerb.ar(Limiter.ar(LeakDC.ar(Mix({|i|
  var z= SinOsc.ar(i.linexp(0, n-1, 70, 1500), LFSaw.ar(i+1*5, 0, 0.5pi), LFSaw.ar(0.2+SinOsc.ar(i+1*0.001, 0, 0.5), i/n, 0.4).max(0))*SinOsc.ar(200+i, 0, SinOsc.ar(0.03, i+1, 0.5, 1))*SinOsc.ar(400+i, 0, SinOsc.ar(0.04, i+2, 0.5, 1))*SinOsc.ar(800+i, 0, SinOsc.ar(0.05, i+3, 0.5, 1));
  Pan2.ar(z, i.linlin(0, n-1, -0.925, 0.925), 1/n);
}!n))), 3, 5, 0.2, 0.8, 20, 0.1)});
)
Ndef(\round).stop