FINAL PROJECT ӿ EMERGENCY SHELTER FOR LOSERS

DOCUMENTATION OF USER INTERACTION

VIDEO OF ARTWORK'S USE

Arduino Code for Lights

#include <Wire.h>
#include "Adafruit_MPR121.h"

#ifndef _BV
#define _BV(bit) (1 << (bit)) 
#endif

// You can have up to 4 on one i2c bus but one is enough for testing!
Adafruit_MPR121 cap = Adafruit_MPR121();

// Keeps track of the last pins touched
// so we know when buttons are 'released'
uint16_t lasttouched = 0;
uint16_t currtouched = 0;

int led1 = 9; // the PWM pin the LED is attached to
int led2 = 10; 
int led3 = 11; 
int brightness = 0; // how bright the LED is
int fadeAmount = 10; // how many points to fade the LED b

int led13 = 13; // the pin the LED is connected to
int led12 = 12;
int led7 = 7;
int led001 = 6.;
int led5 = 5;
int led4 = 4;
int led003 = 3;
int led002 = 2;
int led8 = 8;


void setup() {
Serial.begin(9600);

while (!Serial) { // needed to keep leonardo/micro from starting too fast!
delay(10);
}

Serial.println("Adafruit MPR121 Capacitive Touch sensor test"); 

// Default address is 0x5A, if tied to 3.3V its 0x5B
// If tied to SDA its 0x5C and if SCL then 0x5D
if (!cap.begin(0x5A)) {
Serial.println("MPR121 not found, check wiring?");
while (1);
}
Serial.println("MPR121 found!");
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);

pinMode(led13, OUTPUT); // Declare the LED as an output
pinMode(led12, OUTPUT); // Declare the LED as an output
pinMode(led7, OUTPUT); // Declare the LED as an output
pinMode(led001, OUTPUT); // Declare the LED as an output
pinMode(led5, OUTPUT); // Declare the LED as an output
pinMode(led4, OUTPUT); // Declare the LED as an output
pinMode(led003, OUTPUT); // Declare the LED as an output
pinMode(led002, OUTPUT); // Declare the LED as an output
pinMode(led8, OUTPUT); // Declare the LED as an output
}

void loop() {
// Get the currently touched pads

currtouched = cap.touched();
int range = cap.touched();
switch (range) {
case 0:
if ((! (cap.touched() & (1 << 1)) ) && (! (cap.touched() & (1 << 6) ) && (! (cap.touched() & (1 << 11)) )))
Serial.write(0);
break;
case 1:
if ((cap.touched() & (1 << 1)) && (cap.touched() & (1 << 6)) && (cap.touched() & (1 << 11)))
Serial.write(1);
break;}


for (uint8_t i=0; i<12; i++) {
// it if is touched and wasnt touched before, alert!
if ((currtouched & _BV(i)) && !(lasttouched & _BV(i)) ) {
Serial.print(i); Serial.println(" touched");
}
// if it was touched and now isnt, alert!
if (!(currtouched & _BV(i)) && (lasttouched & _BV(i)) ) {
Serial.print(i); Serial.println(" released");
}
}


///// 1=led 1 6=led2 11=led3

////////////
/// no lanterns touched, everything on
if ((! (cap.touched() & (1 << 1)) ) && (! (cap.touched() & (1 << 6) ) && (! (cap.touched() & (1 << 11)) )))
{ analogWrite(led1,50); 
analogWrite(led2,50);
analogWrite(led3,50);
digitalWrite(led13, HIGH); // Turn the LED on
digitalWrite(led12, HIGH); // Turn the LED on
digitalWrite(led7, HIGH); // Turn the LED on
digitalWrite(led001, HIGH); // Turn the LED on
digitalWrite(led5, HIGH); // Turn the LED on
digitalWrite(led4, HIGH); // Turn the LED on
digitalWrite(led003, HIGH); // Turn the LED on
digitalWrite(led002, HIGH); // Turn the LED on
digitalWrite(led8, HIGH); // Turn the LED on
}


//////////
///all lanterns touched, everything off 
if ((cap.touched() & (1 << 1)) && (cap.touched() & (1 << 6)) && (cap.touched() & (1 << 11)))

{ analogWrite(led1,0); 
analogWrite(led2,0);
analogWrite(led3,0);
digitalWrite(led13, LOW); // Turn the LED off
digitalWrite(led12, LOW); // Turn the LED off
digitalWrite(led7, LOW); // Turn the LED off
digitalWrite(led001, LOW); // Turn the LED off
digitalWrite(led5, LOW); // Turn the LED off
digitalWrite(led4, LOW); // Turn the LED off
digitalWrite(led003, LOW); // Turn the LED off
digitalWrite(led002, LOW); // Turn the LED off
digitalWrite(led8, LOW); // Turn the LED off
}


//////////
/// one lantern touched, one off, two on 
if ((cap.touched() & (1 << 1)) && (! (cap.touched() & (1 << 6) ) && (! (cap.touched() & (1 << 11) ))))
{ analogWrite(led1,0); 
analogWrite(led2,100);
analogWrite(led3,100); 
digitalWrite(led13, LOW); // Turn the LED off
digitalWrite(led12, LOW); // Turn the LED off
digitalWrite(led7, LOW); // Turn the LED off
digitalWrite(led001, HIGH); // Turn the LED on
digitalWrite(led5, HIGH); // Turn the LED on
digitalWrite(led4, HIGH); // Turn the LED on
digitalWrite(led003, HIGH); // Turn the LED on
digitalWrite(led002, HIGH); // Turn the LED on
digitalWrite(led8, HIGH); // Turn the LED on
}

if ((cap.touched() & (1 << 6)) && (! (cap.touched() & (1 << 1) ) && (! (cap.touched() & (1 << 11) ))))
{ analogWrite(led1,100); 
analogWrite(led2,0);
analogWrite(led3,100);
digitalWrite(led13, HIGH); // Turn the LED on
digitalWrite(led12, HIGH); // Turn the LED on
digitalWrite(led7, HIGH); // Turn the LED on
digitalWrite(led001, LOW); // Turn the LED off
digitalWrite(led5, LOW); // Turn the LED off
digitalWrite(led4, LOW); // Turn the LED off
digitalWrite(led003, HIGH); // Turn the LED on
digitalWrite(led002, HIGH); // Turn the LED on
digitalWrite(led8, HIGH); // Turn the LED on
}

if ((cap.touched() & (1 << 11)) && (! (cap.touched() & (1 << 6) ) && (! (cap.touched() & (1 << 1) ))))
{ analogWrite(led1,100); 
analogWrite(led2,100);
analogWrite(led3,0); 
digitalWrite(led13, HIGH); // Turn the LED on
digitalWrite(led12, HIGH); // Turn the LED on
digitalWrite(led7, HIGH); // Turn the LED on
digitalWrite(led001, HIGH); // Turn the LED on
digitalWrite(led5, HIGH); // Turn the LED on
digitalWrite(led4, HIGH); // Turn the LED on
digitalWrite(led003, LOW); // Turn the LED off
digitalWrite(led002, LOW); // Turn the LED off
digitalWrite(led8, LOW); // Turn the LED off
}


//////////////////////
///two lanterns touched, two off, one on 
if (cap.touched() & (1 << 1) && cap.touched() & (1 << 6) && (! (cap.touched() & (1 << 11) )))
{ analogWrite(led1,0); 
analogWrite(led2,0);
analogWrite(led3,255);

digitalWrite(led13, LOW); // Turn the LED off
digitalWrite(led12, LOW); // Turn the LED off
digitalWrite(led7, LOW); // Turn the LED off
digitalWrite(led001, LOW); // Turn the LED off
digitalWrite(led5, LOW); // Turn the LED off
digitalWrite(led4, LOW); // Turn the LED off
digitalWrite(led003, HIGH); // Turn the LED on
digitalWrite(led002, HIGH); // Turn the LED on
digitalWrite(led8, HIGH); // Turn the LED on
}

if (cap.touched() & (1 << 1) && cap.touched() & (1 << 11) && (! (cap.touched() & (1 << 6) ))) 
{ analogWrite(led1,0); 
analogWrite(led2,255);
analogWrite(led3,0);

digitalWrite(led13, LOW); // Turn the LED off
digitalWrite(led12, LOW); // Turn the LED off
digitalWrite(led7, LOW); // Turn the LED off
digitalWrite(led001, HIGH); // Turn the LED on
digitalWrite(led5, HIGH); // Turn the LED on
digitalWrite(led4, HIGH); // Turn the LED on
digitalWrite(led003, LOW); // Turn the LED off
digitalWrite(led002, LOW); // Turn the LED off
digitalWrite(led8, LOW); // Turn the LED off
}

if (cap.touched() & (1 << 6) && cap.touched() & (1 << 11) && (! (cap.touched() & (1 << 1) ))) 
{ analogWrite(led1,255); 
analogWrite(led2,0);
analogWrite(led3,0);
digitalWrite(led13, HIGH); // Turn the LED on
digitalWrite(led12, HIGH); // Turn the LED on
digitalWrite(led7, HIGH); // Turn the LED on
digitalWrite(led001, LOW); // Turn the LED off
digitalWrite(led5, LOW); // Turn the LED off
digitalWrite(led4, LOW); // Turn the LED off
digitalWrite(led003, LOW); // Turn the LED off
digitalWrite(led002, LOW); // Turn the LED off
digitalWrite(led8, LOW); // Turn the LED off
}





// reset our state
lasttouched = currtouched;

// comment out this line for detailed data from the sensor!
return;

// debugging info, what
Serial.print("\t\t\t\t\t\t\t\t\t\t\t\t\t 0x"); Serial.println(cap.touched(), HEX);
Serial.print("Filt: ");
for (uint8_t i=0; i<12; i++) {
Serial.print(cap.filteredData(i)); Serial.print("\t");
}
Serial.println();
Serial.print("Base: ");
for (uint8_t i=0; i<12; i++) {
Serial.print(cap.baselineData(i)); Serial.print("\t");
}
Serial.println();

// put a delay so it isn't overwhelming
delay(100);
}

 

Processing Code for sound

/**
* This sketch demonstrates how to play a file with Minim using an AudioPlayer. <br />
* It's also a good example of how to draw the waveform of the audio. Full documentation 
* for AudioPlayer can be found at http://code.compartmental.net/minim/audioplayer_class_audioplayer.html
* <p>
* For more information about Minim and additional features, 
* visit http://code.compartmental.net/minim/
*/
import processing.serial.*;
import ddf.minim.*;

Minim minim;
AudioPlayer player;

Serial myPort;
int val;


void setup()
{
size(512, 200, P3D);

// we pass this to Minim so that it can load files from the data directory
minim = new Minim(this);

// I know that the first port in the serial list on my mac
// is Serial.list()[0].
// On Windows machines, this generally opens COM1.
// Open whatever port is the one you're using.
String portName = Serial.list()[0]; //change the 0 to a 1 or 2 etc. to match your port
print(portName);
myPort = new Serial(this, portName, 9600);

// loadFile will look in all the same places as loadImage does.
// this means you can find files that are in the data folder and the 
// sketch folder. you can also pass an absolute path, or a URL.
player = minim.loadFile("space.mp3");
//convert to mav.
}

void draw()
{
while ( myPort.available() > 0) 
{ // If data is available,
val = myPort.read(); // read it and store it in val
} 
println(val); //print it out in the console

background(255);
//stroke(255);

switch (val) { 
case 10:
fill(0);
player.pause();
break;
case 0:
fill(255);
player.play();
break;}

for(int i = 0; i < player.bufferSize() - 1; i++)
{
float x1 = map( i, 0, player.bufferSize(), 0, width );
float x2 = map( i+1, 0, player.bufferSize(), 0, width );
line( x1, 50 + player.left.get(i)*50, x2, 50 + player.left.get(i+1)*50 );
line( x1, 150 + player.right.get(i)*50, x2, 150 + player.right.get(i+1)*50 );
}

// draw a line to show where in the song playback is currently located
float posx = map(player.position(), 0, player.length(), 0, width);
stroke(0,200,0);
line(posx, 0, posx, height);

if ( player.isPlaying() )
{
text("Press any key to pause playback.", 10, 20 );
}
else
{
text("Press any key to start playback.", 10, 20 ); }
}
void keyPressed()
{
if ( player.isPlaying() )
{
player.pause();
}
// if the player is at the end of the file,
// we have to rewind it before telling it to play again
else if ( player.position() == player.length() )
{
player.rewind();
player.play();
}
else
{
player.play();
}
}

 

ZINE LOCALE ӿ PRESENTATION

When I first started research into the Golden Mile Complex, I thought that it was a magical place filled with exciting, quirky stories filled with nostalgia.

However, as I started to interview people in Golden Mile, it was disappointing to find that many people were apathetic about the building. many people simply viewed Golden mile as abuilding.

I realized that my experiences were vastly different from other people that may visit the same building but have widely different opinions on it.

As such, I researched the different experiences of different groups of people in Golden Mile Complex.

There were three groups I identified: Shopkeepers, Pretentious Art students (me) and Thai Migrant Workers.

MICRO PROJECT 3 ӿ TOGETHER SPLIT

 

Our final image

In this project, we planned to collaboratively recreate the artwork, “The Scream” by Edvard Munch.

First, we divided up the painting into four pieces.

Then, we went to different parts of the room and livestreamed ourselves drawing our individual parts which, when viewed on the livestream, merged to form the artwork.

Our challenges were mainly in overcoming technical difficulties.

In addition, we were not able to communicate with each other during the performance, only able to take cues from the rest through their actions in their window in the lifestream. Lastly, we had some problems orienting the pieces to align with each other to ultimately piece the image together.

WHICH PROJECT DID YOU FEEL YOU HAD THE MOST CREATIVE CONTROL? WHY?

I feel that the first micro-project was the one with the most creative freedom as the outcome of the project was solely dependent on us, the individual artist.

However, with the other subsequent projects, a big portion of the outcome lied in different actors in the work reacting differently to the parameter in which the artwork was set.

WHICH PROJECT HAD THE MOST UNPREDICTABLE OUTCOME? WHY?

I feel that the second micro-project had the most unpredictable outcome.

Not only were there multiple  participants engaging with us to create our artwork but there was almost no communication with us, the creators, and our participants during the duration of the work.

As such, we had no idea what to anticipate from all our anonymous participants.

WHICH PROJECT BEST ILLUSTRATES THE CONCEPTS OF DIWO & OPENSOURCE? WHY?

I feel that this third project best illustrates DIWO as we were able to collaborate creatively. our members each bounced off ideas and concepts off each other to create this project. With the other micro-projects, while there may be more people engaging with the work, there is no dialogue between people–people were not able to collaborate and communicate which are integral concepts in DIWO.

On the other hand, I feel that our second project best illustrates OPEN-SOURCING as we were able to engage a large group of people to contribute creatively to our virtual space–Google Sheets. While there may not be communication and collaboration as seen with our micro-project 3, there were certainly  more people that contributed more to create the outcome of the work.

 

DESTRUCTIVE GAMES ӿ DESU 100

What value does destruction bring to the artwork?

Nam June Paik’s Robot K 456 was one of the first non-human performance art performers. A rudimentary robot made of a mish-mash of electronic parts and odd objects, Robot K-456 could talk via tape recorder, walk via remote controlled wheels and defecate dried beans.

In one of his street performances, First Accident of the Twenty-First Century, Nam June Paik drove Robot K-456 onto the street where the robot was promptly hit by a car driven by artist William Anastasi. The performance ended as Robot K-456’s “body” was wheeled back into the museum.

On this performance, Nam June Paik playfully commented that he was practicing how to how to cope with the catastrophe of technology in the 21st century.

The destruction of Robot K-456 brilliantly highlights the fragility and in-humanity of robots. It warns us against empathising with technology. However, as technology becomes increasingly intelligent, it seems that we have not heeded such sage advice and have more often than not, gone beyond empathy for our technology—we read robots as social actors and as personalities rather than machines driven by code.

DESU 100 is Robot K-456’s successor. It examines the relationship we have with our technology and as with First Accident of the Twenty-First Century, it utilizes the element of destruction to examine to what degree our empathy for our robots goes.

DESU 100 is a metal cube with an arm and an implied face by the short range sensor. The robot can drive around and move its arm autonomously–a short melody plays as it moves to indicate the current ‘health’ of the robot. Besides its behaviour, the robot seemed to have no obvious function. A pushing of a button on a nearby pedestal forces the robot to hit itself with its arm, denting the shiny metallic body of the robot.

The more damaged the robot is, the more destructive it behaves: from waving, to hitting the floor, and eventually hitting itself. Furthermore, as it becomes more damaged, the melody gets less harmonic, and the driving behaviour becomes less fluent, which strengthens the impression of destruction.

 

The destruction of DESU 100 reveals our irrational impulse to destroy and to a lesser extent–reveals humanity’s compulsion to play God.

 

Freud hypothesised that humans are controlled by two drives: The life drive and the death drive. The life drive manifests itself in creation, while the death drive manifests itself in destructive impulses. A fulfilment of these drives leads to the feeling of satisfaction. With the death drive, it is theorised to manifest itself subconsciously in ways such as self-sabotage or over-aggression.

In Emmanuel Le Cerf’s CAUTION : NEVER TOUCH THE VELVET, the artist presents us with an uncovered velvet ‘painting’, tempting the viewer to reach out, disturb the fabric and ruin the painting.

As with CAUTION : NEVER TOUCH THE VELVET, DESU 100 forces these drives to manifest in the irrational impulse to destroy and then forces participants to question their actions.

“Why do I want to see DESU 100 destroy itself? Why do I want to destroy DESU 100? Why do I want to destroy in the first place?”

DESU 100’s destruction reflects our actions back at us, prompting us to question: “Why did I press that button?”

 

In Media equation, Nass and Reeves demonstrated that on the one hand, while humans perceive robots as social actors with a personality like other humans, the executed violence against robots is higher than violence towards human beings.

This violence rises as perceived intelligence of the robot falls and therefore an associated trend of animacy equalling violence arises.

Like children squishing ants on the sidewalk, Helena by Marco Evaristti challenges our need to be ‘gods’. To what extent will we exert our power over the goldfish swimming in liquidisers? Will we be benevolent gods or silent voyeurs? Or will we press the button to extinguish a life?

With DESU 100, participants indicated that they felt sympathy for the robot, giving the robot a level of animacy below that of humans but a level of animacy nonetheless. As such, the impulse to destroy goes beyond the irrationality of the aforementioned death drive because of our empathy towards DESU 100 indicates that DESU 100 is not a mere object.

As with ants on the sidewalk or goldfish in blenders, it is not a stretch to say that making DESU 100 destroy itself on command creates a certain level of ‘god’-play.

 

As I established in my previous points, destruction is often a product of impulses and innate human desires. However, humans beings are not creatures purely driven by instinct. We have the power to make decisions and to assess the morality of those decisions. The choice to destroy and create in art often addresses our morality. With Marina Abramovic’s Rhythm 0, participants could engage with her body in creative or destructive ways. While some participants adorned her with roses and kisses, others cut her skin and tore away her clothes.

However, with DESU 100, it fails to capture this aspect of morality from destruction because of the lack of given choices. DESU 100 does not actually give participants a chance to engage in the morally right or morally wrong. There is only the one morally grey option of pressing the button–not wrong because the robot functions to destroy itself and not entirely right either because the destruction of the robot is inherently chaotic.

 

So, in the end, doe s pressing the button in DESU 100 really mean anything?

 

What effect does irreversible consequences have on the participants of the artwork?

Irreversible consequences in destructive games is so effective  because it transforms the viewer from a passive spectator to an active participant.

As stated in the essay “Destructive Games: Creating Value by Destroying Valuable Physical Objects”, one of the elements needed in an effective destructive game is real life and irreversible consequences for participants. Consequences from destruction like defaced money or destroyed belongings makes people pay attention to the art­–they are both materially and emotionally vested in the work. And with the destruction of their items being irreversible, the impact is made all the more visceral to them.

 

What is the main purpose of the concept of destruction in the arts?

Destruction is a visceral sight in an art world that is so obsessed the with creation and preservation of sculptures and paintings. Because destruction is inherently taboo, the use of destruction in art is extremely impactful and profound, often producing provocative Avant Garde art.

Robert Rauschenberg’s Erased De Kooning Drawing utilises the taboo of destroying art to generate art. The artwork challenged our notion of image aesthetics–can a destroyed image still be beautiful? Is an erased de Kooning still valuable?

Ai Wei Wei’s Destroying a Han Dynasty Vase show Ai dropping an antique Han Vase and smashing it. Through this piece, Ai questions our value of heritage and criticises his government’s regime of destroying culture to make new culture.

As The Arts has too broad a spectrum for me to accurately describe how destruction is used in all aspects of art, I will address the use of destruction in these well-known artworks I have identified.

Both artists use destruction as a transformative process to turn an object into another entirely new artwork. Not only has the visual aesthetics of the artworks changed but through destruction, a whole new layer of cultural meaning and connotations is added to the artwork.

To sum it up simply, in art, to destroy is simply another way to create.

 

 

PRESENTATION

https://docs.google.com/presentation/d/1oLTqMKcVmPO0hbKjpEn6JCfTJGIv4PFwKkhEaQcYo2w/edit#slide=id.g55bda14cae_0_0

OPEN SOURCE ARTMAKING ӿ let’s make art!

let's make art!

What is the content of the work and who is creating it?

Our crowd-sourced art consists of a Google Excel sheet ‘painting’. We asked participants to ‘fill in as many squares as you like’. Using the colour fill tool in Google Sheets, people filled up the cells in the document with a myriad of hues.

Our team–Qing Yan, Yuan Xin and I–watched as anonymous icons entered and exited the document, leaving a few coloured cells as a mark of their virtual visitations.

In a way, even though our team came up with the rubrics, we did not fully create the artwork that emerged from our crowd-sourcing.

 

 

Where does this work take place?

In the virtual collaborative space that was our Google Sheets document.

 

How does this work involve social interaction?

In a weird way, our participants didn’t fill in each other’s squares and were mindful to give space to people who were trying to create recognisable motifs using the cells.

One example of this was the rabbit face that appeared in the right of the main mass of filled in cells.  It was surprisingly intact by the end of the collaboration. Some participants went as far as to fill and colour the rabbit face in.

 

 

How is your crowd-sourced project different from one that is created by a single artist/creator?

The artwork that was produced by our crowd-sourced participants didn’t have a cohesive aesthetic.

Many of our participants were our family and friends that we recruited to help us with our project. Many of them do not have any artistic inclinations whatsoever and they filled the cells in with random colours with no clear vision for the finished product.

There was also kitschy images like the pixelated Mario incorporated into the artwork that didn’t match the rest of the document which was mainly abstract colours and bars of cells.

Many of the elements in the artwork such as the gradients were created as standalone elements and were not added in response to the artwork as a whole.

All in all, there was no creative art direction with this artwork and all the artists were bored people tapping at random on their phones.

Only our crowdsourced chaos could create such a mess of a masterpiece! 🙂

——————————————————————————

 

ending note: Our artwork kind of reminds me of Outsider art where artists that managed to avoid any sort of artistic influence or training whatsoever make their own form of bizarre artworks. 😮 i thought that was kinda interesting!