‹ pakt16 pakt18 ›

pakt17


pact17shades, 01:00, 1.84MB

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

//pakt17
let index
let a, b, c, d
let spread
let n
function setup() {
  const div = select('#sketch')
  const cnv = createCanvas(div.width, div.height)
  cnv.parent('sketch')
  frameRate(60)
  noStroke()
  rectMode(CENTER)
  index = 0
  n = 45
}
function draw() {
  spread = sin(index * 0.004) * 5 + 6
  background(0)
  for (let i = 0; i < n; i++) {
    a = sin((i * spread + index) * sin(index * 0.005 + (sin(index * 0.0074 + 1.0) + 1.0)) * 0.0075 + 1) * 0.25 + 0.5
    b = sin((i * spread + index) * sin(index * 0.0051 + (sin(index * 0.0073 + 2.0) + 2.0)) * 0.0075 + 2) * 0.25 + 0.5
    c = sin((i * spread + index) * sin(index * 0.0052 + (sin(index * 0.0072 + 3.0) + 3.0)) * 0.0075 + 3) * 0.25 + 0.5
    d = sin((i * spread + index) * sin(index * 0.0053 + (sin(index * 0.0071 + 4.0) + 4.0)) * 0.0075 + 4) * 0.25 + 0.5
    fill(a * 255, b * 255, c * 255, d * 255)
    rect(a * width, b * height, (c - a) * width, (d - b) * height)
  }
  index++
}

Ndef(\shades).play
(
Ndef(\shades, {Mix({|i|
  var x= SinOsc.ar(0, SinOsc.ar(0.01*i+0.03, i, 2pi));
  var y= SelectX.ar(x.range(0, 4), [WhiteNoise.ar, GrayNoise.ar, PinkNoise.ar, BrownNoise.ar]);
  var z= Pan2.ar(y, x*0.4);
  BPF.ar(Rotate2.ar(z[0], z[1], i/3*2-1), i+1*500, SinOsc.kr(0, SinOsc.ar(i*0.02+0.01, i, pi)).range(1, 10), 0.3);
}!4)});
)
Ndef(\shades).stop