Week 6: Response to Theft & Artistry (Moon)

This is an article talking about the conflicts coming across when different cultures are mixed up. Different aspects to an unfamiliar culture or the reference to a different culture is sometimes the summit of art recreations.

By the rapid development of globalization, the art and culture globalizing process is also moving on quickly. One obvious evidence is that, in recent years there are lots of new ‘mixed up’ songs, containing different traditional cultural based elements, together with modern genre and rhythms. Although they might not be really good works to express the meaning of cultural things, but an open window to show the world the mix and embrace of new things.

So in my opinion, art is a medium to understanding. Misunderstanding might cause the disagreement of works of art, but it still creates a new possibility for audience of it.

Week 6: Response to Molotov Man (Moon)

In the article On the Rights of Molotov Man, Joy Garnet and Susan Meiselas have different perspectives onto the reuse of images. Joy Garnet thinks that the artist can inject new ideas into the images to give them new definitions, while Susan Meiselas insists that the image can only be used to express ideas from the context of the old pictures.

I think it really depends on the usage of these images. If the images is used to set off and enhance the environment of the new arts, its meaning might not be changed, since the image has already had its own ‘soul’ and by using it independently will somehow lose the support of its original backgrounds. However, if the image is used as a part of the new art, the meaning of it can be changed by the control of the new author. Because even if the image might be unique, it can and should be allowed to appear in different scenes to fit a different context newly created.

Week 6: Response to Ecstasy of Influence (Moon)

In the article Ecstasy of Influence, Jonathan Lethem expressed that the art works are inspired by old works which is similar but more aggressive compared to the previous TED talk ( can we say it is another old work reference 🙂 aha ). They share the similar idea that pieces of art origin from old works that exist in the world.

Different from what has been discussed in the previous documentation. I admit that although arts are passed by thoughts, however, it does equal to one can copy things from other freely ( or refer to other’s thought by no mention ). It reminds me of the open source community. In this community everyone contributes and reuses others code by the restrictions of some licenses, like Apache, GNU, MIT, FreeBSD, etc. We reuse but also give reputations to the author.

Week 5: Response to Embrace the Remix (Moon)

The TED talk impresses me so much. As I also compose some pop musics after class, I can deeply understand what the speaker walked about. When I made up my mind to work on a music, I was usually touched by a scene or thought, with lots of old melodies coming up to my mind. Use the melody of what I saw, rhythms of the beeps I heard, tunes or chords of what I like. The new song is like a re-compose or re-combination of old things and the existence.

Let alone music, everything in our life can also be regarded as a resemble and sharpened pieces from the past. New theories based on the old ones, new mechanism based on previous technologies. Even if the libraries we used in coding / designing are the reuse of what the previous done. Remix is not only reuse, but a polish to modify the old to the new concept.

Lab: Drawing Machines (Sean)

My partner is Monica.

We started building the circuit. It is rather complicated.

With the help of Cicy, we successfully identified the front of the IC and put it in the right direction. I was very cautious and did everything slowly because I didn’t want to make any mistakes. I think the debug process will be difficult and painful, so I try to avoid making mistakes in the first place.

When I connected it to power, I was scared something smoky will happen. It didn’t, but my motor didn’t spin in a way it was supposed to. It looked like something stuck inside. I unplugged immediately. I checked the circuit: correct. I thought the problem might be the connection so I changed a few suspicious wires. Then the motor was normal.

IMG_4663

After professor Sean gave us some notice about using the map function, we successfully set up the drawing machine. One problem we have is the connection. The nail didn’t do a great job and the motor won’t stay stable on the table. Then we changed the nail and strengthened the connection.

Then we encountered another problem: the pen is too high above the table. So we put a notebook under the paper. But the friction is too big so the pen couldn’t move smoothly. More than once, the pen flew off the table. We tried to improve that, but didn’t manage to fix that even in the end.

draw

We are very satisfied with our final result. It is beyond our expectation.

Conclusion: in this recitation, I learnt how to set up complicated circuit. I realized the importance of putting the IC chip in the right direction. I also tried in person how to use the motor and simple codes to make a machine that does creative things. I hope to develop this idea in my final project.

 

Midterm Project & User Test (Sean)

The midterm project I focus on Processing. I learnt a lot of kills of coding and have a better understanding of processing. Professors and fellows helped me a lot when I wanted to make a effect but always failed. They patiently explained functions to me. Here is some pic of my game.

I get inspiration from our guest speaker. Environmental Problem has always been a global problem. It is hoped that through this interactive game, you will be able to focus more on social issues and help protect the environment in which we live, and finally become a true environmental ambassador.

Here is some shot:

I wrote clear instruction for my users, meanwhile sharing some knowledge of environment protecting.

The icons and trash bin all followed the rule of garbage classification.

People have to get everything on line so that they can get the score. When The score is higher than 100 points, there will be special sound effect for encouraging people.

 

And the game will collect the data of each kind’s points. It’s another difficult part I met.

Part 1: Preparation

When my users interact with my project, I want to know the list of things:
In general, what do they think of my project?
Attract the parts or elements that attract them the most?
What do they think need further improvement?
What other advice do they have?
Do they think the project is useful or meaningful?
What do they think about interaction design? interface? Final Results?

  • Part 2: Testing

A) Test my project

PART 3: REPORTING

I found this game really interesting. I was not familiar with this game at first, so my performance was not good. Also, because there was no indication on the screen and I didn’t tell me what to do, the only thing I knew was pressing the start button, but then I didn’t know what to do. I don’t know how big this creature is determined by how long you press the button, so I immediately “death” for the first time. Then Cecilia told me the rules and I was getting better at playing this game. This game is also a little tricky, because the position of beans is randomly determined, and it is sometimes impossible to eat beans without touching the blue particles, but sometimes it is easy. In the end, I won a total of 10 points, which is very interesting.

I put forward some questions and suggestions:

Put some notes on the screen or just on a handout. Because it is difficult for people to understand the rules, if they do not have enough guidance or guidance what to do.
Avoid “suicide” situations. Sometimes when I start the game, the creature will immediately die because the creature’s original position is on a blue particle. Although this is also interesting and ironic, but I think that by adjusting the settings of the distance, this situation can be avoided?
Maybe add some music or sound games. I think, because this is a fun game, adding some sound effects or background music should be a good choice.

 

 

import ddf.minim.*;

Minim minim;
AudioPlayer bk;
AudioPlayer win;
AudioPlayer lose;

ArrayList<Tile> tiles = new ArrayList<Tile>();
ArrayList<Particle> particles = new ArrayList<Particle>();
int score[] = new int[4];
boolean gameOver;
PImage bins[] = new PImage[4];
PImage icons[] = new PImage[4];
int kind = 4;
PImage food0[] = new PImage[kind];
PImage food1[] = new PImage[kind];
PImage food2[] = new PImage[kind];
PImage food3[] = new PImage[kind];
PImage startPage;
boolean start = false;

void setup() {
  size(800, 800);
  background(0);
  textAlign(CENTER, CENTER);
  imageMode(CENTER);
  
  //init the score
  for (int i = 0; i < score.length; i++)
    score[i] = 0;
  gameOver = false;
  minim = new Minim(this);
  
  //load musics and pictures
  bk = minim.loadFile("bk.mp3", 2048);
  win = minim.loadFile("win.wav", 2048);
  lose = minim.loadFile("lose.wav", 2048);
  for (int i = 0; i < bins.length; i++) {
    bins[i] = loadImage("bin"+i+".png");
    bins[i].resize(110,0);
  }
  for(int i = 0; i < icons.length;i++){
    icons[i] = loadImage("icon"+i+".PNG");
    icons[i].resize(150,150);
  }
  for(int i = 0;i < kind;i++){
     food0[i] = loadImage("food0-"+i+".png");
     food1[i] = loadImage("food1-"+i+".png");
     food2[i] = loadImage("food2-"+i+".png");
     food3[i] = loadImage("food3-"+i+".png");
  }
  bk.loop();
  startPage = loadImage("start.JPG");
  startPage.resize(height,height);
}

void draw() {
  if (start) { //draw the game
    background(0);
    //add random rabbish
    if (random(1) < 1/80.0) {
      //decide the kind of rabbish
      int t = int(random(100))%4;
      boolean allow = true;
      for (int i = tiles.size()-1; i >= 0; i --) {
        Tile tile = tiles.get(i);
        if (tile.loc.y < 2*tile.h) {
          allow = false;
        }
      }
      //add the rabbish
      if (allow) {
        switch(t){
          case 0:
            PImage tempImage0 = food0[int(random(100))%food0.length];
            tiles.add(new Tile(t,tempImage0));
            break;
          case 1:
            PImage tempImage1 = food1[int(random(100))%food1.length];
            tiles.add(new Tile(t,tempImage1));
            break;
          case 2:
            PImage tempImage2 = food2[int(random(100))%food2.length];
            tiles.add(new Tile(t,tempImage2));
            break;
          case 3:
            PImage tempImage3 = food3[int(random(100))%food3.length];
            tiles.add(new Tile(t,tempImage3));
            break;
        
        }
      }
    }
    //display all the rabbish
    for (int i = tiles.size()-1; i >= 0; i --) {
      Tile t = tiles.get(i);
      t.display();
      if (!gameOver)
        t.update();
      //check the rabbish is hit or not
      if (t.isDead) {
        if (t.hit) {
          score[t.id] += 1;
          if (10*(score[0]+score[1]+score[2]+score[3]) % 100 == 0) {
            win.rewind();
            win.play();
          }
          for (int j = 0; j < 100; j ++) {
            particles.add(new Particle(t.loc.x+t.w/2, 0.8*height, t.c));
          }
        } else {//if miss one, then game over
          gameOver = true;
          bk.pause();
          lose.rewind();
          lose.play();
        }
        tiles.remove(i);
      }
    }
    //draw the bottom line
    for (int i = 20; i >= 0; i--) {
      strokeWeight(i+1);
      stroke(255, 255, 255, 150-i*150/20.0);
      line(0, 0.8*height, width, 0.8*height);
    }
    //show the score
    fill(255);
    textSize(height/40);
    text("Score: "+10*(score[0]+score[1]+score[2]+score[3]), width/2, height/40);
    //draw the bins
    for (int i = 0; i < bins.length; i++) {
      image(bins[i], (i+0.5)*width/4, 4.5*height/5);
    }
    //add the explore effects
    for (int i = particles.size()-1; i >= 0; i--) {
      Particle p = particles.get(i);
      p.display();
      p.update();
      if (p.lifeSpan < 0) {
        particles.remove(i);
      }
    }
    //check if the game is over
    if (gameOver) {
      background(0);
      fill(255);
      textSize(height/40);
      //show the total score
      text("GAME OVER!", width/2, height/40);
      text("Total Score: "+10*(score[0]+score[1]+score[2]+score[3]), width/2, 2.5*height/40);
      //show the each score
      for(int i = 0;i < icons.length;i++){
        image(icons[i],width/3,(i+1.2)*height/5);
        text(score[i],2*width/3,(i+1.2)*height/5);
      }
      //restart
      if (mousePressed) {
        for (int i = tiles.size()-1; i >= 0; i --) {
          tiles.remove(i);
        }
        for (int i = 0; i < score.length; i++)
          score[i] = 0;
        gameOver = false;
        bk.rewind();
        bk.loop();
      }
    }
  }else{
    //start page
    image(startPage,width/2,height/2);
    fill(0);
    textSize(40);
    text("Recycler",width/2,height*0.08);
    textSize(25);
    fill(0);
    text("In the game each color represents a type of garbage and the goal of the game is to recycle as many garbages as possible. You must recycle each piece of garbage by clicking relevant keys on the keyboard when the garbage pieces touch the white line at the bottom of the screen. Successfully recycling one piece of garbage will reward you 10 points. Try to compete for the highest score! Good Luck! nnRed - Hazardous waste - Press “A”nBlue - Recyclable waste - Press “S”nGreen - kitchen waste - Press “K”nYellow - ceramic waste and other waste - Press “L”",0.1*width,0.1*height,0.8*width,0.8*height);
    int t = frameCount % 256;
    if(t < 256/2)
      t = int(map(t,0,256/2,0,255));
    else
      t = int(map(t,256/2,256,255,0));
    fill(100,t);
    text("PRESS THE MOUSE TO START",width/2,height*0.92);
    if(mousePressed){
      start = true;
    }
  }
}

void keyPressed() {
  //check the keypress
  for (int i = tiles.size()-1; i >= 0; i --) {
    Tile t = tiles.get(i);
    t.keyPressed();
  }
}

class Particle{
  
  PVector loc;
  color c;
  float g;
  float lifeSpan;
  float deadSpeed;
  PVector speed;
  
  Particle(float x,float y,color _c){
    loc = new PVector(x, y);
    g = 0.2;
    c = _c;
    lifeSpan = 100.0;
    deadSpeed = random(1, 5);
    speed = new PVector(random(-8, 8), random(-10, 4));
  }

  void display(){//draw each point
    stroke(this.c);
    strokeWeight(5);
    point(this.loc.x, this.loc.y);
  }

  void update(){//move each point
    this.speed.y += this.g;
    this.loc.add(this.speed);
    this.lifeSpan -= this.deadSpeed;
  }
}

class Tile {
  PImage icon;
  int id;
  boolean isDead;
  float h;
  float w;
  PVector loc;
  float speed;
  color c;
  boolean hit;
  boolean miss;
  boolean start;

  Tile(int _id,PImage t) {
    id = _id;
    w = 0.6*width/8;
    h = 0.6*width/8;
    loc = new PVector(id*width/4, 0);
    switch(id) {
    case 0:
      c = color(255, 0, 0);
      break;
    case 1:
      c = color(0, 255, 0);
      break;
    case 2:
      c = color(0, 0, 255);
      break;
    case 3:
      c = color(255, 255, 0);
      break;
    }
    speed = 8;
    hit = false;
    miss = false;
    start = false;
    icon = t;
  }

  void display() {
    image(icon,loc.x+width/8,loc.y-h/2,w,h);
  }

  void update() {
    loc.y += speed;
    if (loc.y > 0.8*height+h) {
      isDead = true;
    }
  }

  void keyPressed() {
    if (loc.y > 0.8*height && loc.y < 0.8*height + h) {
      switch(id) {
      case 0:
        if (key == 'a'){
          isDead = true;
          hit = true;
        }
        break;
      case 1:
        if (key == 's'){
          isDead = true;
          hit = true;
        }
        break;
      case 2:
        if (key == 'k'){
          isDead = true;
          hit = true;
        }
        break;
      case 3:
        if (key == 'l'){
          isDead = true;
          hit = true;
        }
        break;
      }
    }
  }

}

Assignment 5: Getting Acquainted with the Arduino (Phyllis)

Date: March 30th

Documented by: Phyllis

Role: Design, Circuit building, Coding, Soldering, Sewing the entire Arduino onto the yellow fabrics, Final decoration

Partner: Kai

Material: Arduino*1, LED*1, analog sound sensor*1, 220 ohms resistor*1, wires, power bank

Tool: Heat sealer, scissors

Inspiration: We consider “social switch” the most important keyword of this assignment. Therefore, we thought about many ways of socializing between people such as hugging, shaking hands and even bumping shoulders. However, many of them are about physical interaction. I asked myself if there are other forms of socializing rather than physical contact. Then, I realized that talking to people weighs so much in socializing. So we agree on the idea of using “sounds” as a social switch.

Process

Stage 1: Circuit Building & Coding

To detect sounds, I borrowed an analog sound sensor from the Equipment Room and connected it to the circuit. (Since we have practiced using a pressure sensor as well as conductive fabrics in class, I found that the way the analog sound sensor [see the left picture] works is pretty similar to that of the pressure sensor [see the right picture].)

Since we originally thought about having a design of a fabric cake and using the LED as the “candle,” so I tried to simulate the effect of blowing a candle. Therefore, the LED should be on when there’s no sound/noise, and should be turned off when someone is “blowing” it. So I figured out the relative coding in “loop” of turning off the LED when there is sound around it.

However, since we changed our design later, I deleted this part of coding in the end. Instead, as is shown in the video below, when you make some noise or say something close to the sensor, the LED will be turned on.

However, since the sound received by the sensor is not quite continuous, the LED is not able to stay on the same brightness, instead, it keeps blinking.

Stage 2: Design

At first, Kai came up with an idea of having the circuit in a fabric cake. We thought about using the LED as the “candle,” simulating a birthday celebration as a social activity. However, as Antonius asked us about “why fabrics,” we realized that it does not really make sense to have a circuit in a birthday cake as some sort of decoration on clothes. Although Kai already sewed the Arduino on fabrics (as is shown below), we decided to rethink about the design.

Then I asked my friend for advice, she suggested thinking about something that can blink. I then got another idea of making a star as a container of the circuit, Kai agreed. The star design look like this (after sewing on the arduino and cutting the shape)—

Stage 3: Soldering

Since we were no longer using breadboard in this assignment, I soldered the circuit first, so that we could directly sew the circuits on fabrics.

Stage 4: Sewing

After soldering, Kai sewed the circuit (with the LED, 220 ohms resistor, and wires) onto a piece of blue fabric.

Then, I cut out unnecessary blue fabrics, sewed the Arduino onto a yellow piece, and sewed another piece of yellow fabric on the other side (so as to cover the whole circuit). After sewing both sides together, I cut both sides of yellow fabrics into a star shape.

Stage 5: Final Decoration

I borrowed Marcela’s tiny sealer to heat the semitransparent fabric (it is actually some sort of fabric glue but I forgot the name of it…) so that it can stick to our star.

Actually, we had one black T-shirt before, but then we couldn’t find it anywhere. Therefore, Kai sewed our star onto a piece of white fabric instead.

Finally, I pinned our star to the model, and borrowed a power bank from our fellow Jack as a power supply for the Arduino!

Stage 6: Testing

After stabilizing the star on the model, I did a final test by saying some random words near the star. The louder you speak, the brighter it gets —

When you are meeting with your friends, it will be really cool to have a “blinking shirt!” The hotter your conversation is, then the brighter the LED becomes!

Reflection

  1. We think that it can be a prototype of a T-shirt for concerts or music festivals. With plenty of LEDs on the shirt, the audience can free their hands of glow sticks. We believe that blinking shirts can also create an amazing live concert atmosphere for not only the audience but also performers.
  2. Although we feel that it makes more sense to have a fabrics star as the container in comparison to a fabrics cake, we still have to spend more time thinking about Antonius’ question — “why fabrics.” I think I got what Antonius means by saying so, but still need time to think about the design.
  3. Since we only used one yellow LED, it is kind of hard to recognize its brightness, especially in the case that we also designed a yellow star. Having more LEDs for the design will definitely increase the brightness, so that the whole prototype will be more intuitive.

Special thanks to Antonius, Marcela and Jack!!!

int inValue = 0;
int outValue = 0;

void setup() {
  Serial.begin(9600);
  pinMode(9, OUTPUT);
}

void loop() {
  inValue = analogRead(0);
  outValue = inValue / 4;
  
  analogWrite(9, outValue);
  Serial.println(outValue);
  delay(10);
}

Recitation 8- Drawing machines (Sean Clute)

Individual Assignment:

Step 1: Building the stepper

I used the stepper example in Arduino for one revolution and followed the circuit diagram to build the required circuit.

Then I used the potentiometer to control the motor and coordinate the movements of the revolutions.

Once the code was working smoothly with the motor, I attached the physical components of the motor and began creating art!!

          

 

 

Pair Work: Combining the two steppers

The pair work part of our project was relatively easy and my partner and I soon had a mechanical hand that could hold the pen and draw abstract drawings on a sheet of paper.

    

Drawing our masterpiece

Part B:

The materials I used along with the Arduino kit were:

  • 1 42STH33-0404AC stepper motor
  • 1 SN75440NE ic chip
  • 1 power jack
  • 12 VDC power supply
  • 1 potentiometer (from your kit)
  • 1 Arduino and USB cable (from your kit)
  • Laser-cut and 3D printed mechanisms
  • Pen that fits the laser-cut mechanisms
  • Paper

Overall the recitation was very interesting and fun to create and I enjoyed combing technology with electricity to create physical art. In the future, I would like to explore the possibility of adding Processing to the stepper, so as to be able to control its movements and create actual drawings of objects in a predetermined pattern.

The installation I chose from the ART + Science NOW, Stephen Wilson reading was Shawn Decker’s Scratch Series and I chose it because it because it appears to use the same micro-governed motors that I used for the recitation to move the stepper. I love the idea of using the motors and “scratching” idea to emit sounds from nature or physics mechanisms. This is a good example of combining technology and motors to create art in creative ways.

The code in action

#include <Stepper.h>

const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution
// for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

void setup() {
  // set the speed at 60 rpm:
  myStepper.setSpeed(60);
  // initialize the serial port:
  Serial.begin(9600);
}

void loop() {
  // step one revolution  in one direction:
  Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  delay(500);

  // step one revolution in the other direction:
  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  delay(500);
}

Lab 9: Drawing Machines

I first build the circuit with 42STH33-0404AC stepper motor, SN75440NE ic chip, external power source (12 VDC power supply),

then added a potentiometer to it.  I had trouble trying to make the motor’s movement controlled by the potentiometer. It turned out that I did not use the float stepMotor later in the code after mapping it. (used the Arduino example MotorKnob)

 

Add a reflection about the use of actuators, the digital manipulation of art, and the creative process to your blog post. What kind of machines would you be interested in building?

 

Using a potentiometer to control a pen was really fun. The fact that I can build a code that can move a machine which produces art is amazing. Although the drawing machine we made was drew more spontaneously, development of it can result in more spontaneous, or more precise art. I’d like to build a machine that functions with the movement  of the body, for example you have to move your elbow a certain way to choose the color, move your left leg a certain way to erase it, so that you get to use all of your body in making the artwork.

I liked Reactable by Music Technology Group, which creates music by placement of instrument chips. It uses modular synthesizer and a camera to detect the chips and generate sound. It is similar to the drawing machine I made that human input (movement of potentiometer/ placement of chips) generates change in machine (motor movement / sound of the instrument). I think the artist could have made the interaction more relevant, maybe make the action of playing the instrument( guitar, violin, piano) then the machine plays it–but then the detection of the viewer’s movement should include the recognization of the movement as playing one instrument.

 

 

/*
* MotorKnob
*
* A stepper motor follows the turns of a potentiometer
* (or other sensor) on analog input 0.
*
* http://www.arduino.cc/en/Reference/Stepper
* This example code is in the public domain.
*/

#include <Stepper.h>

// change this to the number of steps on your motor
#define STEPS 200

// create an instance of the stepper class, specifying
// the number of steps of the motor and the pins it's
// attached to
Stepper stepper(STEPS, 8, 9, 10, 11);

// the previous reading from the analog input
int previous = 0;



void setup() {
// set the speed of the motor to 30 RPMs
stepper.setSpeed(30);
//Serial.begin(9600);
}

void loop() {
// get the sensor value
int val = analogRead(0);
//Serial.println(val);
float stepMoter = map(val, 0, 1023, 0, 200);

// move a number of steps equal to the change in the
// sensor reading
stepper.step(stepMoter - previous);

// remember the previous value of the sensor
previous = stepMoter;
}

User Testing

The user testing I felt for my project did not help a lot because a lot of the time I found myself apologising and explain why my product was what it was. Therefore, it was difficult to get constructive feedback on the project and instead for the most part only received good advice on what I should do in future projects in order to avoid the situation which I found myself in for the midterm. However, it helped me as I said before in my reflection with motivating me to not be caught out and end up in the same situation. It is quite unpleasant having to show everyone something which one is not proud of and therefore, I will make sure not to be placed in the same situation as this time for the next time. So if one looks at it with a glass half full the user testing session helped me to figure out what steps I have to take in order to not have a repeat scenario as the teachers that came by gave me constructive advice on time management and project planning which I noted down and will now remember and take into regard for the final project. Furthermore, after the session I talked with my professor and created a plan where I would present my final project a week before the due date in order to then give me a week of tweaking and also to make sure that my idea is plausible and approved by my teacher before I move onto actually making the product.