inspiration_Nick Yulamn

Acoustic Drum Machine_Nick Yulman(( click me to see magic ))

Reading through the reading of PComp and found this ITP alum guy doing amazing stuff with servomotor and solenoid to make an elegant drum set! So artistic done with small drum from Borneo and snail shells! That’s exactly what I want to do, delicate stuff with low-fi appearing. Simply blown my mind. And this work was done in ITP during 2010 I guess.

UNBELIEVABLE.

Inspired at the same time. Thank you(who?) so much to let me become part of ITP. Thank you(who?).

PComp_3_SuperMarioTime

During the PComp Lab_03, although as struggling as usual, I found it very enjoyable to make the speaker speak! Such a lovely moment, probably as exciting as finding the existence of fire. And I even made a short Super Mario music, sweet!

PComp_Lab_MarioTime! from JHCLaura on Vimeo.

But I found it really difficult, when me and Billy tried to adjust the volume of speaker and also to make chords(two tunes speak at the same time).

For the volume

#include "pitches.h"

int lastButtonState = LOW;
boolean switchIsOn = false;

const int threshold = 10;
const int speakerPinNum = 8;
const int noteDuration = 20;

const int potenPinNum = 5;
int volumeAnalogValue = 0;
int volume = 0;

int note[] = {NOTE_C4, NOTE_E4, NOTE_G4};

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

void loop() {

  int buttonState = digitalRead(2);
  volumeAnalogValue = analogRead(potenPinNum);

  volume = map(volumeAnalogValue, 0, 1023, 0, 490);
  Serial.println(volume);

  if (buttonState != lastButtonState) {
    if (buttonState == HIGH) {
      switchIsOn = !switchIsOn;
    }
  }

  lastButtonState = buttonState;

  if (switchIsOn == true) {

    analogWrite(speakerPinNum, volume);
    Serial.println(volume);

    for (int i=0; i<2; i++) {
      int noteRead = analogRead(i);

      if(noteRead > threshold) {
        tone(speakerPinNum, note[i], noteDuration);
      }
    }
  }
}

My original idea was

  1. connecting speaker to digital pin #8, and potentiometer to analog pin #A5
  2. mapping the analogInput from  0~1023 to 0~490, setting it as volume
  3. analogWrite it into pin #8

But it failed  :/

Luckily, I bumped into my 2nd year buddy Andy and bothered him a couple of minutes and his advice simply blown my mind. He suggested using the potentiometer directly between digital pin #8 and the speaker, and adjust it directly without writing any codes! Wow. How I’ve never thought about this? And it worked! It simply proved that I’ve not thought it through totally. Hmmmm so much work to do, fighting 🙂

VolumeAdjust

New codes!

#include "pitches.h"

int lastButtonState = LOW;
boolean switchIsOn = false;

const int threshold = 10;
const int speakerPinNum = 8;
const int noteDuration = 20;

const int potenPinNum = 5;
int volumeAnalogValue = 0;
int volume = 0;

int note[] = {
  NOTE_C4, NOTE_E4, NOTE_G4};

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

}

void loop() {

  int buttonState = digitalRead(2);
  volumeAnalogValue = analogRead(potenPinNum);

  volume = map(volumeAnalogValue, 0, 1023, 0, 490);
  Serial.println(volume);

  if (buttonState != lastButtonState) {
    if (buttonState == HIGH) {
      switchIsOn = !switchIsOn;
    }
  }

  lastButtonState = buttonState;

  if (switchIsOn == true) {

    for (int i=0; i<2; i++) {
      int noteRead = analogRead(i);
      Serial.println(noteRead);
      if(noteRead > threshold) {
        tone(speakerPinNum, note[i], noteDuration);
      }
    }
  }
}

ICM_3_RainMan & Triangles

Time flies and here I am sweet ICM homework #3. It’s a collaboration work by Karam and I, and basically we just used each other’s class and try to make some interaction! I got the triangle class from Karam and background idea from Gladys, and this work was inspired by reading The Nature of Code of Daniel Shiffman. Just finished chapter 1. Super good/tough stuff!!

   

Here’s my new born baby(click me click me)! It’s about a person who loves being rained, just enjoys the feeling of being miserable. When rain stops, the smile stops and background went blue. You can click your mouse and make this guy happy again.

For this, I wrote 5 classes… just couldn’t stop, and hit into wall sooo many time. I was like a small rooted tree in the corner of ITP floor on Monday. And here’s are some problems(all about using class in class) and answers(except the last one) from try-and-error process of myself.

  • Where to put the moving code?
    • make sure you can control the position in the { } in which the leading moving codes(e.g. x++) settle
  • If things moves in different way?
    • put moving codes separately in its own class
  • Wants rains start from cloud
    • don’t need to declare Cloud class in Rain class!! can use it directly(tearing)
  • How to make smile affected by rain????

Still can’t solve the last problem. I guess there must be something wrong about my rain drops. I use distance between each rain drop and the man’s head to write some condition codes. The rain drops may seem to be affected well by the man, but I bet it’s actually not what we think they are, and that’s why although I could affect rain drops with the man, I failed to affect the smile with the rain drops? Too complicated. So in the end, I compromised and made the man smile when it’s raining and sad when it’s not.

Maybe it’s time to book an office hour with Dan.

And as usual, below are my baby’s bloody organs(codes).

Continue reading

V&S_02_CookYouAll

Audio recording project of Neva and me!

Do you feel being cooked?

Neva and I wanted to play sound with space and left/right tracks to build up an environment in which the audience would feel being cooked, burned, sprayed on, drank etc..

CookYouAll

CookYouAll

Except the intro music and high heels sound, we recorded every pieces in Neva’s place. And then we used Pro Tool to edit.  Thanks to the advice from teacher Craig, we edited whole piece at first, and then decided which one goes to Ceiling or Floor, which one goes to right or left soundtrack. And for some of the sound pieces , like rolling, we cut one single sound into pieces, and assigned them one after one into the right and left soundtrack.

In the end, the effect is quite good! We did create a 3D sound effect and it’s really interesting to hear our work delivered by 4 stereos(Much better than listening through computer).

Below are our fun time documentation!

boilingSoundme_eatingSoundneva_recordingwe_recordingplum listens to appledraftproTool

PComp_03_Observation_DearElevator

Hi Elevator,

How you’re used_my assumption

  1. User walks to the elevator and stands in front of the door or waits in line.
  2. Pushes up/down button if it’s not been pushed.
  3. Walks inside when the door opens.
  4. Gentleman holds door-open button for incomers.
  5. Everyone checks if his/her destined-floor-button has been pushed or not, or he/she pushes the button or asks others to do so.
  6. The door closes.
  7. Unless it’s user’s destined-floor, user stays inside instead of stepping out.
  8. Gentleman holds door-open button for incomers and out-goers.
  9. Users says “Excuse me. Thank you.” and steps out when the elevator reaches his/her destined-floor.
  10. The End.

How you’re actually used_from observation

  • actual situation(observed in the lobby of Tisch)
    • because of the existence of smartphone, users have more patience to wait nowadays.
    • when waiting in line, users start making small chat, meeting people from different departments, and it’s a good moment to be social.
    • at 4th floor, ITP’s elevators have no signs showing where the elevators are at. Maybe because of this, users become less patient waiting and more attempting to use the stairs down.
  • different approaches
    • some stand motionlessly and wait the door to close; some keep pushing the door-close button
    • when lines get too long, some users at the back give up and choose the stair instead, and some just keep waiting.
  • difficulties
    • users have to tiptoe to see if their destined-floor button has been pushed or not.
    • users have to squeeze in to push the button if it’s crowded.
    • users have to be aware of the unpredictable closing door.
  • easy
    • just stands and goes up and down several meters effortlessly.
    • asks for help to push the buttons.
  • longest time
    • waits in line
  • shortest time
    • gives up and uses stairs instead(if users’ departments don’t reside higher than 5th floor)
  • time of whole transaction (this part is still under construction)
    • waiting:
    • duration of each floor:
    • pushing button:
    • stepping in/out:

What if… Then… Moment for you my dear Elevator

  • The display board inside the elevator shows which floor has already been chosen.
  • After being pushed, the door open/close button flashes on and off continuously to indicate that it does keep working/sending message(giving local feedback), so users won’t act crazy pushing it.
  • Set floor buttons
    1. outside the elevator, and users press the button before walking in.
    2. on the side of the door, and users press the button when walking by.
    3. hanging from the ceiling, and users pull the button(acting like pulling string).

ICM_02_CloudPaint

This is the idea of Caitlin and I, a self-made Paint software, for ICM week_02’s homework, making something animated and designed an UI. At first, we were ambitious and made a ideal Paint with multiple function, and even a fancy UI. BUT, it’s just too hard to accomplish 😉  Process of bloody stumbling is as followed:

  1. made 3 floating cubes to choose colors from.
  2. frustrated to find out that the color of every cube’s rim changed when I choose different stroke color.
  3. same thing happened in stroke width.
  4. P A N I C .
  5. Struggling for hours.
  6. thought object-orientation program might be the answer of this puzzle, so started learning OOP from scratch.
  7. excited to have a workable class of drifting clouds.
  8. frustrated to find out that problem still existed.
  9. P A N I C .
  10. Struggling for hours.
  11. so desperate that I started googling my problem.
  12. found out the existence of pushStyle()/popStyle()!
  13. had a bitter(FXCK!)-yet-sweet(YAH!) moment for a while.
  14. added stroke width, eraser, and new paper function to finish my mini-Paint.
  15. L E A R N E D    A    L O T .

And here’s my bloody baby!(click me click me click me)

And below are my bloody baby’s organs(codes).

Continue reading

PComp_03_MouseControl

Just have to say… Intro to Physical Computation is the most confusing and yet the most rewarding class I have in ITP so far. Problems and questions appear like bubbles from the boiling water, and when Tom Igoe explained the INPUT and INPUT_PULLUP to me in class, I felt my brain was stirred like a sticky mud. But once problems were sold, I felt I was in heaven.

Lab_02 before week_03_class

First_Arduino!!

It’s a bitter(FXCK!)-yet-sweet(YAH!) feeling when you found out that the whole problem was actually arose from a super simple reason! Frustrating about my first attempt to program Arduino and then finding LEDs failing to light up because of wrong direction. Anyway, YAH for the light!!!

During the self-labs, in the beginning I was really confused about the different wiring ways showed in the instructions, and I pondered deeply about it.

 

 

 

 

 

 

 

 

 

As pics show above, resistors were put in the different places. And then I just thought that, hey! why don’t I just try to wire it in different ways and see if it gives same result? And I tried and it did. Silly and happy.

Arduino_Lab_Test

Week_03_MouseControl

Billy and I used Joystick to control x and y. And quoting from Tom:

“… The joystick select button is a digital input, but it’s wired differently than the buttons you saw in the Digital Lab or the Mouse Control With Pushbuttons Lab. It’s wired to connect to ground when you press it. To read it, then, you’d still use digitalWrite(), but you’d expect it to go low when pressed instead of high. And instead of a pulldown resistor like you’ve used in those other two labs, you’d use a pullup resistor, so that it’s connected to 5V when the switch is not open…. … The Arduino has built-in pullup resistors that you can use on the digital inputs. When you set the pin to be an input using the pinMode() command, use the parameter INPUT_PULLUP instead of INPUT.”

So at first we wrote the press of Joystick as pinMode(3, INPUT_PULLUP), but then we found that it’s actually difficult to control x, y and press in one single stick, so we decided to add another button as the right-click-mouse. We changed back the code about digitalInput as pinMode(3, INPUT) and adjusted the related code below as well. Also, we used map() to control the speed of the mouse movement since delay() will change the entire loop speed and it’s not necessary.

inClass_MouseControl

One thing I also want to mention is that, in class classmates came out a lot of ideas about how to control the mouse. With string sensors, force sensors, tilt sensors, buttons connected with different resistors, etc. Very creative!!! I was kind of shocked yet inspired at the same time. Maybe I should stop playing safe. Just let go my imagination first, and then try to catch its tail and fly with it carelessly after???

Very interesting 🙂

PComp_02_Zoetrope

PComp_week_02_Zoetrope from JHCLaura on Vimeo.

In the 2nd class of PComp, Aaron and I made a zoetrope which is energized by a motor. So exciting!! If I were not in the class I would give it a happy shriek! This work was majorly done by talented Aaron since I haven’t got my Arduino Starter kit yet, and I borrowed one at 1 AM which is just 8 hours before the class… tragedy. Anyway, thank you Aaron!

At first, our zoetrope worked with only a potentiometer, and since we haven’t learned how to use it to get a variable supply yet but simply a on-and-off switch, we couldn’t control the speed of the motor, so it turned too fast for a clear animation. To solve this problem, Tom Igoe suggested adding a momentary switch to supply power by clicking it manually.

At first, we couldn’t make it right because we misunderstood the flow of the current. Thanks to Jason we got it done eventually. And here are some detailed pics of our work!

V&S_01_Copy and paste ourselves!

Before I start my feedback to the Video and Sound week_01 reading/video-admiring, let me introduce you the “70 Million” by Hold Your Horses, one of the millions(or countless) of sweet and juicy fruits of plagiarisms!

Before this essays/videos assignment, I had an impression that America was strict about copy write and filing law suits about it every single days. And now I know they only represent business. Free spirits exist behind those ugliness and I feel awesome to be here, because I buy the spirit that plagiarisms is inevitable and it dose make good works. Just like before writing a good movie screen, screenwriters must read/watch tons of scripts/stories/movies before, and it’s a lie to say they aren’t affected at all. Indeed, I might hesitate or even be angry about the plagiarisms if it’s about my works. BUT. Since this hasn’t happened on me so I’m good.

Also, there’s one thing really turns me on–“Most artists are converted to art by art itself.” quoted from Jonathan Lethem’s The Ecstacy of Influence: A Plagiarism. In my ITP two years I’ll keep copying and pasting myself, and wait to see what will I become in the end of this journey.

There’s another things I want to mention, that’s in Kirby Ferguson’s Embrace the Remix video, he said that “… Creativity doesn’t come from within, it comes from without. We’re not self, we’re dependent on one another…” Isn’t it one of the important core notions of ITP, to collaborate? We rely on each others, building ideas based on other ideas. For me, the process is like building a pyramid. We collect “resources” to construct bases, layers after layers, and in the end we reach the point of the pyramid and finish our works. Everyone builds his/her pyramids, with different heights and shapes.