Demo 2025

by Tim Rodenbröker, posted on June 24, 2026

A series of visuals displayed at DEMO Festival 2025. Made with Processing and dithered with gifsicle. I documented the process of creating these systems and gave a talk at the festival about it. You can read or listen to the whole story on this blogpost.

int elements = 32;
int dur = 100;

void setup() {
  size(72, 128);
}

void draw() {

  background(#0000ff);
  
  float driver = map(frameCount, 0, dur, 0, 360);
  float mag = width * 0.8;
  float step = 360 / float(elements);

  noStroke();
  fill(0);

  for (int j = 0; j < elements; j++) {
    for (int i = 0; i < elements; i++) {

      float mag2 = map(sin(radians(driver + j * 10)), -1, 1, mag, mag);
      float stepOutside = mag2 / float(elements);
      
      float wave = sin(radians(driver + j*4 + j)) * 40;

      float e = map(sin(radians(driver* 4 + i * 10 + j * 10 )), -1, 1, 0, 255);
      fill(e);
      int x = int(sin(radians(i*step * 2))* j * stepOutside);
      int y = int(cos(radians(i*step))* j * stepOutside);
      push();
      translate(width/2 + wave, height/2);
      rect(x, y-5, 5, 10);
      fill(255 -e);
      rect(x+5, y-5, 5, 10);
      pop();
    }
  }
}