trustTheProcess(3) – ASCII Blobs

Published by Tim on Thursday July 20, 2023

Last modified on January 25th, 2024 at 14:06

Vimeo

By loading the video, you agree to Vimeos’s privacy policy.
Learn more

Load video

2023-07-20 Today I share the edit of the third episode of my trustTheProcess() livestreams with you. In it I rebuilt my ASCII Blobs visual in p5.js.

In between I struggled getting the system running, but that’s the idea of this livestream format. In it I want to show you that in tricky situations you can always reach your goal with calmness, patience and creativity, even if something changes slightly in between. This became especially clear here, because I had originally planned to include anime.js, but changed my mind in the middle of the stream so as not to overengineer the system.

Enjoy!

const elementsY = 31;

var charset = "░▒▓█"; 

let font;

function preload() {
  font = loadFont("IBMPlexMono-Bold.otf");  
}

function setup() {
  createCanvas(700, 700);
}

function draw() {
  background(255);

  var elements = 10;
  fill(0);
  noStroke();
  
  textFont(font);
  textAlign(CENTER,CENTER);
  textSize(30);

  for (let y = 0; y < elementsY + 1; y++) {
    for (let x = 0; x < charset.length + 1; x++) {
      
      let posY = map(y, 0, elementsY, 0, height);
      let magX = map(sin(radians(posY * 1 + frameCount)), -1, 1, -width*0.4, 200);
      let posX = map(x, 0, charset.length,-magX, magX);
      
      
      let selector = x;
      
      push();
      translate(width/2+posX, posY);
      text(charset[selector],0,0);
      pop();
    }
  }
}
const elementsY = 30;

var charset = "▛▜▝▞▟";

let font;

function preload() {
  font = loadFont("IBMPlexMono-Bold.otf");
}

function setup() {
  createCanvas(800, 600);
  // createLoop({duration:3, gif:true})
}

function draw() {
  background("#f1f1f1");

  var elements = 10;
  fill(0);
  noStroke();

  textFont(font);
  textAlign(CENTER, CENTER);
  textSize((height / elementsY) * 2 );

  for (let y = 0; y < elementsY + 1; y++) {
    for (let x = 0; x < charset.length + 1; x++) {
      
      let posY = map(y, 0, elementsY, 0, height);
      let magX = map(
        tan(radians(posY * 0.5 + frameCount)),
        -1,
        1,
        -width * 0.3,
        width * 0.3
      );
      let posX = map(x, 0, charset.length, -magX, magX);

      let selector = x;

      push();
      translate(width / 2 + posX, posY);
      text(charset[selector], 0, 0);
      pop();
    }
  }
}

Links

Related

Lena Weber about her collaboration with A. G. Cook

Lena: This 10-minute visualiser for A. G. Cooks album teaser featuring my python archive generator, is one of my favourite […]

Computer Cursive by Tay Papon Punyahotra

One of the first exercises I assign to my students in my seminars is called “Random Compositions”. Basically, it’s quite […]

A custom Mockup Tool, built with Processing (updated)

For my students at Elisava, I have created a new version of my mockup-tool. You need two different files for […]

Preview: When Computers create Collages

2023-12-01 Today I want to share with you a first prototype that will be the basis for a new course […]

Preview: Random Compositions

One of the most exciting and maybe even unsettling discoveries in the learning process of Creative Coding in Graphic Design […]

trustTheProcess(4) – Data Stream

2023-08-03 In this episode I have been looking at String Methods in p5.js, or rather in Javascript. Originally I wanted […]

trustTheProcess(2) – Time in Space

In this livestream from June 22, 2023, I used Processing to develop an interactive, three-dimensional timeline of exemplary historical data […]

trustTheProcess(1) – Random Composition

In this stream I solved the Random Composition assignment from my Bauhaus Coding Workshop course, which is about distributing three […]