Writing Digital Media: Final Project

Author Name
Green LAU (SID: 53078019)

Title
Wake their Soul

Instructions
  1. Take the fork.
  2. Touch the food directly with the fork.
  3. Read the story of the food on screen.
Demo

Concept
Gabriel García Márquez — 'Things have a life of their own, the gypsy proclaimed with a harsh accent. It's simply a matter of waking up their souls.'

I believe every object has its own feeling since I was small. I was planned to make a interactive work themed with daily objects, but considering how to make the setting more reasonable and natural, I decided to change the theme related to food from simply daily objects.
Besides believing everything has their feeling, I also concern about food-related topics these years.
For example, food ethnics, farm animal cruelty, fair-trade issues etc.
In my project, I made an interactive program that the audiences are allowed to read the foods' story by connecting with them by the fork.
The setting was like a meal, and the audience holding the fork connecting with the food would be the eater.
I hope people will concern more about food facts between the tasty appearance in front of us and I think it is a spiritual improvement while we have already fulfilled our basic needs, according to the Maslow's Hierachy of Needs .

Material
Rice Rolls *some
Scrambled Egg *1
Chicken Fillet *2 (changed to 1)
Hot Chocolate *1
Kulezhai device board *1
wrist band with metal connector *1
Metal Wire
Cable *5
micro USB *1

Computer *1
Display screen *1

The whole setting is a circuit, every kind of food connects with a specific port on the Kulezhai board, which would hack as the 'UP', 'DOWN', 'LEFT' and 'RIGHT' on the keyboard. The cable connecting the fork would link with the Ground on Kulezhai. When the audience touch the food with the fork, the circuit would be completed,  and the hacked key would be triggered and the poetic text would be shown on screen.

Text in the Work (randomly arranged)
**Rice Roll**
Turn and turn... in the stone mill
Granny looks working hard
Steam was so warm...
Roll roll rolling in the cloth..
Seasame is my best friend
Soy sause paint me into gold
Hot hop in the wok
**Egg**
Mama was hard those days
I was dropped on feces.
Miss farmer came and take us everyday
Mama died when siblings born.
Chopsticks are rude!
My name changed to Scramble
The ketchup makes me so cold
**Chicken Fillet**
Life was cruel
Bleeding in pain...
Arteries empty..
Being food is my destiny
Maybe it is the best moment of my life
My friends got flu
No stinky mud, no dirty cages anymore
I will never forget the sharp cut on my throat
**Cocoa**
I born in Africa
My home was in the forest
We are cheap but the only way for farmers to earn money
My friends spread around the world
I was smashed in silver machines
My mama is a tall tree
Combine with the warm swirl
*********

Processing Code (update on 18th Dec)
import ddf.minim.*;//import audio source from Minim

Minim minim;
AudioPlayer bgm;

PImage cf, egg, chicken, cocoa;
String choice = "Awaiting for Awakening...";
String choice_ = "Awaiting for Awakening...";
String source_cf = "Turn_and_turn..._in_the_stone_mill|Granny_looks_working_hard.|Steam_was_so_warm...|Roll_roll_rolling_in_the_cloth..|Seasame_is_my_best_friend|Hot_hop_in_the_wok|Soy_sause_paint_me_into_gold|";
String source_egg = "Mama_was_hard_those_days|I_was_dropped_on_feces.|Miss_farmer_came_and_take_us_everyday|Mama_died_when_siblings_born.|Chopsticks_are_rude!|My_name_changed_to_Scramble|The_ketchup_makes_me_so_cold";
String source_chicken = "Life_was_cruel|Arteries_empty..|Being_food_is_my_destiny|Bleeding..._in_pain|Maybe_it_is_the_best_moment_of_my_life|My_friends_got_flu|No_stinky_mud,_no_dirty_cages_anymore|I_will_never_forget_the_sharp_cut_on_my_throat";
String source_cocoa = "I_born_in_Africa|My_home_was_in_the_forest|We_are_cheap_but_the_only_way_for_farmers_to_earn_money|My_friends_spread_around_the_world|I_was_smashed_in_silver_machines|My_mama_is_a_tall_tree|Combine_with_the_warm_swirl";
Boolean press = false;
float now;

void setup() {
  size(700, 700);
  textAlign(CENTER);
  textFont(createFont("Times", 30));

  minim = new Minim(this);
  bgm = minim.loadFile("audio/The_Awakening.mp3");
  bgm.loop();
}

void draw() {

  cf = loadImage("image/cf.jpg");
  egg = loadImage("image/egg.jpg");
  chicken = loadImage("image/chicken.jpeg");
  cocoa = loadImage("image/cocoa.jpg");

  if (keyPressed == true) {
    if (key == CODED) {
      if (millis()-now > 1000) {
        if (keyCode == UP) {
          background(cf);
          text(choice, width/2, height/2+12);
          choice = substitute(source_cf);
        }
        if (keyCode == DOWN) {
          background(egg);
          text(choice, width/2, height/2+12);
          choice = substitute(source_egg);
        }
        if (keyCode == LEFT) {
          background(chicken);
          text(choice, width/2, height/2+12);
          choice = substitute(source_chicken);
        }
        if (keyCode == RIGHT) {
          background(cocoa);
          text(choice, width/2, height/2+12);
          choice = substitute(source_cocoa);
        }
        now = millis();
      }
    }
  } else {
    press = false;
    background(255);
    fill(0);
    choice = choice_;
    text(choice, width/2, height/2+12);
  }
}
/////////////////////////////////////////////////////////////////////

String substitute(String phrase) {

  if (phrase.indexOf('|') < 0)
    return phrase;

  phrase = phrase.trim()
    .replaceAll("[\\s]+", " ")
      .replaceAll("[\\t\\r\\n]+", "");

  String[] words = phrase.split(" ");
  for (int i = 0; i < words.length; i++) {

    if (words[i].indexOf('|') > -1) {

      boolean endsWithPunc = false;
      char last = words[i].charAt(words[i].length()-1);

      if ("?;:.!".indexOf(last) > -1) {

        endsWithPunc = true;
        words[i] = words[i].substring(0, words[i].length()-1);
      }

      String[] opts = words[i].split("\\|");
      words[i] = opts[(int)(Math.random()*opts.length)];

      if (words[i] != null && words[i].length()>0)
        if (endsWithPunc) words[i] += last;
    }
  }

  String result = "";
  for (int i = 0; i < words.length; i++)
    result += words[i] + " ";

  return result.trim()
    .replaceAll("\\s\\s+", " ")
      .replaceAll("_+", " ");
}

Making-Of Highlights
Cutting wires for connecting food
Connection
Key Mapping
Testing conductivity (not working)
Testing conductivity (not working)
Difficulties and Solution
Most of the challenges happened in the programming part. Although I have multi-check the syntax of the program, the functions are still not working, even without error message. Below are some example of it.
if (keyPressed == true) {
if (key == n) {
...;
}
}else{
...;
}
The above outer if - loop function doesn't work. And finally I added more details like some boolean that indicate "true" or "false" to it.

For hardware problem, it should be the conductivity of the objects. Some of them are expected to be conductive, like the bottle, but the outer layer has a paint coating which is non - conductive. As a result, the touching surface that can successfully control as a keyboard became much smaller. I think I can wrap the objects with aluminium foil paper or tape next time.

After changing the theme to food, the conductivity problem was totally different from the objects one, it was too conductive, while there is liquid on the plate like oil or water. Solving the problem, I make them dry, and also put a tissue paper under the scrambled egg as the liquid keeps leaking out.

File Download
https://www.sendspace.com/file/81040y

Credit
http://static.apple.nextmedia.com/images/apple-photos/apple_sub/20070130/large/30fx7p.jpg
http://i3.mirror.co.uk/incoming/article1338609.ece/
http://buildingmarkets.org/blogs/timor/files/2011/02/37_B5T9416-chicken-farm.jpg
http://www.coutausse.com/#/feature-stories/haiti-cap-haitien-2003/haitinorth-33

0 意見:

Post a Comment