Time Visualization

Time Visualization

Link to My Project

Link to My Code

Description and Concept

        The project is inspired by my time tracking experience. As I tracked my time, I found that only using the 24-hour measurement for time visualization is not effective, because the duration of time I feel when doing different things differs greatly from the recorded amount of time on the calendar.

        In this project, I visualize users’ perception of time instead of the objective amount of time and encourage people who are busy carrying on daily routines and schedules to take a moment and rethink what they truly want and value.

        The project contains four parts: 1) Intro animation (without user interaction), 2) user inputs (2 kinds of data: the time spent on and the likeness of different activities), 3) User-input-generated animation (showcase the perception of the speed of the time according to likeness), and 4) revisualization of time based on perception (combine and compare the 2 kinds of data and conclude a final message).

        The main techniques used in this project are: 1) utilizing the real-time database to record and retrieve user inputs; 2) pixel manipulation; 3) time sequencing. 

        The main focuses are: interactive experience (data inputs & mouse clicking) & transmediality (time-visuals).

Demo Video

 

Conceptual development

        During the meeting, Professor Moon suggested I use the update function to store data with an ID defined by me so that the data will be more organized:

Fabrication

        1) Cannot retrieve data from the firebase

        At first, I tried to use this code to retrieve data:

        The code was modified from the firebase documentation “read and write data”. I deleted the child(userId) since I didn’t find one.

        I can see from the console that the snapshot.val() returns the following:

        Then, I use dt = snapshot.val().work to get the number. But when I console log the dt, it returns a message saying ā€œundefinedā€:

        Then, I try to use the get() method: dt = dbRef.child(“ActivityT”).get(); I console.log it and get the following (Thereā€™s a lot of nested info in the ā€œPromiseā€. I donā€™t know what they are but I cannot find my data inside):

        Later when I consulted Professor Moon, he told me that the userId is an essential part of the get function. But I don’t have to use this method to retrieve data. Instead, I can use snap.val() to get the data:

        2) Cannot utilize data on another web page

        On the user input page, I stored the data in a list so that I don’t have to retrieve data from the firebase to sum them together. But when I tried to utilize data on another web page in the setup function, the data couldn’t be stored in the list.

        I also tried to return a RefVal list with reference and the values as its elements:

        But the list couldn’t be used correctly:

        Finally:

3) Time sequencing

        I used frameCount as the time signal for displaying the texts and animation:

        But every time I run the code, the time for loading the sound is different and the sound couldn’t match the animation accurately. I will solve this problem by using other signals in the future.

4) Background Music

        I downloaded two raw music from Youtube: the first is a clean wall clock sound effect and the second is the music box bgm. I adjusted the volume of the music downloaded. Then I cut the audios and assemble them together to make it the right length.

5) Re-visualize the time

        I used a rectangle (window width) to hide the lower part of the histogram and adjust the y position of the histogram rectangles to visualize the objective time:

        I experimented with formulas that can best map the likeness to the total time:

        I used another rectangle to represent the total time based on likeness:

        When the total time based on likeness is equal to the objective total time (when users input “neutral” for all the activities), they get this:

        When the total time based on likeness exceed the objective total time, they get this:

       When the total time based on likeness is less than the objective total time, they get this:

 Attributes & Resource

Music: 1. Mysterious Music Box – “The Midnight Hour”

2. Clean Wall Clock Ticking Sound Effect

Coding: 1. Summing the array’s elements

2. Firebase references

Leave a Reply

Your email address will not be published. Required fields are marked *