pakt01 ›

pakt00


pact00sines, 01:00, 1.84MB

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

//pakt00 ok - but missing lines from center to start of arc
let index
let grad
function setup() {
  const div = select('#sketch')
  const cnv = createCanvas(div.width, div.height)
  cnv.parent('sketch')
  frameRate(60)
  noFill()
  strokeWeight(1)
  stroke(255, 255, 255 * 0.8, 255)
  index = 0
  grad = createGraphics(width, height)
  grad.noStroke()
  for (let r = width; r > 0; --r) {
    grad.fill(lerpColor(color(255, 255, 0.8 * 255), color(0, 0, 0), r / width))
    grad.ellipse(width * 0.5, height * 0.5, r * 2.0, r * 2.0)
  }
}
function draw() {
  const x = width * 0.5
  const y = height * 0.5
  const w = width * 0.25
  const h = height * 0.25
  image(grad, 0, 0)
  for (let i = 0; i < 120; i++) {
    const start = sin((index + i) * 0.006 + i) * PI
    const end = sin((index + i) * 0.0123 + i) * 2 * PI
    if (start < end) {
      const r = sin(index * 0.01 + i) * 70 + 75
      arc(x, y, r * 2.0, r * 2.0, start, end)
    } else {
      const r = sin(index * 0.01 + i) * 50.0 + 55.0
      arc(x + sin(i * 0.21) * w, y + cos(i * 0.2) * h, r * 2.0, r * 2.0, end, start)
    }
  }
  index++
}

Ndef(\sines).play
(
Ndef(\sines, {GVerb.ar(Splay.ar(SinOsc.ar([100, 200, 300]+SinOsc.ar([0.11, 0.22, 0.33]), SinOsc.ar([0.1, 0.2, 0.3], 0, 2pi), 0.1+SinOsc.ar([0.01, 0.02, 0.03], 0, 0.05)), SinOsc.ar(SinOsc.ar(SinOsc.ar(0.13, 0, 5, 6), 0, 8, 50), 0, 1, 1), 0.7, SinOsc.ar(1.2, 0, 0.6)), 20, 5, 1, 0.5, 25, 0, 1, 1)})
)
Ndef(\sines).stop