trustTheProcess(3) – ASCII Blobs
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: This 10-minute visualiser for A. G. Cooks album teaser featuring my python archive generator, is one of my favourite […]
One of the first exercises I assign to my students in my seminars is called “Random Compositions”. Basically, it’s quite […]
For my students at Elisava, I have created a new version of my mockup-tool. You need two different files for […]
2023-12-01 Today I want to share with you a first prototype that will be the basis for a new course […]
One of the most exciting and maybe even unsettling discoveries in the learning process of Creative Coding in Graphic Design […]
2023-08-03 In this episode I have been looking at String Methods in p5.js, or rather in Javascript. Originally I wanted […]
In this livestream from June 22, 2023, I used Processing to develop an interactive, three-dimensional timeline of exemplary historical data […]
In this stream I solved the Random Composition assignment from my Bauhaus Coding Workshop course, which is about distributing three […]