fatik – Clock

millis

My final clock plays with the hour, minutes, seconds, and milliseconds of the current time. The current time is presented by the layering of the current millisecond that make up the physicality and form of the numbers. The number of layers (of milliseconds) is random which causes an abstraction of the form at certain points. I want to print out a book with the different abstractions that are made each second.

I would love to print out multiple series of books that capture a very specific period of minutes and even hours. The experience would be flipping through each layer of a single moment in time. It would be nice to print this on a clear material where one could see the literal layers and stack of a moment.

Some Process

I’m still new to coding so a lot of my work is improvisational. I try to make sure that my plans are open to change. This sketch was my initial idea for the clock. I didn’t know how it would exactly look but I knew that I wanted a sort of abstract visualization of numbers that related to the current time.

 
PGraphics offscreenGraphics;
PFont bigFont;
float hr = hour();
float mn = minute();
float sc = second();
float ml = millis();
 
 
void setup(){
size(612,792);
offscreenGraphics = createGraphics(width, height);
bigFont = createFont("Arial Black", 140);
renderGradientIntoOffscreenGraphics();
 
frameRate(1);
}
 
 
 
 
void draw(){
background(255);
 
//image(offscreenGraphics, 0,0);
//drawcircle();
renderGradientIntoOffscreenGraphics();
 
int nNumber = int(random(10,10000));
stroke(0);
for (int i=0; i<nNumber; i++){
int randomX = (int) random(width);
int randomY = (int) random(height);
color colorAtTestLocation = offscreenGraphics.get(randomX, randomY);
float brightnessAtTestLoc = brightness(colorAtTestLocation); //0...255
float probability01 = map(brightnessAtTestLoc, 0,255, 0,1);
float aRandom01 = random(0,1);
 
if (aRandom01 < probability01){
fill(0);
//noStroke();
text(millis(), randomX, randomY);
 
}
}
 
theTime();
 
}
 
//void sentence() {
// text("i went to taco bell and bought a quesidilla");
//}
 
void theTime () {
String s = "The time is: ";
s += hour()%12;
s += ":";
s += nf(minute(),2);
s += (hour()<= 11) ? "AM" : "PM";
 
 
 
fill(0);
noStroke();
text(hour()%12 + ":" + nf(minute(),2) + "PM" , 550, 765);
rotate(PI/2);
 
}
 
void renderGradientIntoOffscreenGraphics(){
offscreenGraphics.beginDraw();
 
float hr = hour();
float mn = minute();
float sc = second();
 
offscreenGraphics.background(0);
 
for (int i=0; i<offscreenGraphics.width; i++){
float gray = map(i, 0,offscreenGraphics.width, 0,0);
offscreenGraphics.stroke(gray);
offscreenGraphics.line(i,0, i,offscreenGraphics.height);
}
 
offscreenGraphics.fill(255);
offscreenGraphics.textFont(bigFont);
offscreenGraphics.text(hr + ":", 9,220);
offscreenGraphics.text(mn + ":", 9,420);
offscreenGraphics.text(sc , -30,620);
 
offscreenGraphics.endDraw();
}