Staging Fright Final Project

 

Team Members and Responsibilities:

Saphaya: Interactive Network Design and Engineering

Teresa: Media Design and Production; Stage Design and Set-up

Tian: Interactive Network Engineering and Backstage Tech Control

Angelica: Doll Mutilation, Sound Actor, Student Actor, Sound Design

For our project, we were first given 824. The storyboard we had for this room was much more elaborate. Here is the storyboard:

IMG_0684

After finding out our room was switched, we didn’t change the story much, just kind of shortened it. Teresa and I shot the footage of the crawling girl in the greenscreen room. We also collected and recorded sounds for the story. We used reaper to edit them, to make them fit the ambience we wanted to create.

 

 

屏幕共享 图片 2017年5月18日 GMT+8 下午8.19.40

ghostCrawl_sound

 

From there, Tian and Sapphya were responsible for the maxpatch.  The max patch was set up to trigger based on location of light that the camera detected. Here is the maxpatch:

maxpatch2

There are 4 events that our triggered.

Our full run through is here:

2

Here is the surveillance footage we had in the room:

 

The runthrough we had during class went really well, but during the show there were a lot of difficulties we had. The biggest was that only Teresa and I were there to run the show. Teresa was doing the max patch while I was pretending I needed something from the storage room. There was supposed to be someone in the room popping out at people as they exited the room, as we realized that many users didn’t want to go further back into the room. While it didn’t end up being as scary as planned due to max patch difficulties and due to only two of us being there to make the experience we wanted. Overall, the biggest challenge presented was probably figuring out the layout of the room, given the space limitations. The  projector was hard to position, but eventually we figured it out. Overall, I think some people were spooked, but had we had everybody I think the experience could have been scarier. I also think that some people were annoyed that they didn’t signed up to be scared. It was a very fun project to work on though and making sounds and editing them to create an ambience was my favorite part.

 

 

 

Web Project(Vasudevan)

Partner: Sabina Olsson

Our idea for our final project was to make an online zine about our experiences Shanghai and the love-hate relationships we have with this city. We have a lot of privileges of being foreign in this city, but inevitably, there is a feeling of isolation that is sometimes unshakeable.

First, we went about collecting our materials for the website. Aesthetically, we wanted it to look super diy and kinda loud. That being said, loud sometimes doesn’t work and we still wanted it to feel polished and consistent. We decided to incorporate collages, some short, poetry, an writing of our own experiences. What’s missing in the traditional paper zine and even a lot of online zines is interactivity, so that was our goal while keeping aesthetically consistent while simple and not too distracting. I made collages and we both collected pictures from our life here that we wanted to showcase. We then split the work into pages. Initially, we aimed for 10, but we realized that that was too ambitious of a goal. So then we took out the pages we deemed least important, so we could make quality pages rather than spreading ourselves too thin.

We initially had these pages planned:

  1. Intro
  2. Curiosity
  3. homesickness
  4. What we hate
  5. favorite places
  6. food
  7. memories
  8. language
  9. evolution of our relationships with the city
  10. goodbye to shanghai

We cut those down to

1.intro

2. favorite places

3. curiosity

4. food

5.goodbye and memories

I think this worked better overall, because we were able to get across our feeling effectively without focusing too much on the writing.

Here are some of our collages:

background2 (1)eyes (1)

We wanted to have more and actually wanted to make a page with a lane i’d photoshopped and our pictures scrolling through. memorylane

This was ultimately super hard to do considering the size of the images and the shape of the lane. So we focused on keep our zine interactive but simple.

I did the intro, the eyes, and the baozi pages. Here are some screenshots of my code.

Screen Shot 2017-05-20 at 12.27.55 PM Screen Shot 2017-05-20 at 12.28.39 PM Screen Shot 2017-05-20 at 12.29.16 PM

I initially tried to make the baozi drop down and bounce using an example of a sketch I found on codepen, but it was very challenging. It also wasn’t super interactive, though it was really cool.

here is the link to that sketch:https://codepen.io/asha23/pen/rewmp

I also tried to add some mousefollows on the eye page, I wanted a pair of eyes following the mouse, but I had trouble finding the correct placement for the eyes on the page. To keep the page interesting and interactive, I opted for the scrolling rotation of the picture.

Overall, I think this project was successful in the feelings we portrayed. It was interactive and simple, and aesthetically consistent. Like Roopa said, I wish it could have been a little more polished and I wish somethings worked that didn’t. That being said, I kinda want to make an edition two of this zine with a more polished feel and more writing. Here is the link:

http://192.168.50.184/~so1168/finalproject/intro/intro.html

Final Project Angelica Castro-Mendoza

So my initial project for this final was a poetry generator that got information from Reddit. I wanted it to be bad poetry, because uses would probably figure it was computer generated but I was planning to take it straight from Reddit. The vision was that I’d integrate some kind of physical infrastructure. The idea meandered though due to my  indecisiveness. I planned to serve up the web page using arduino and using the Rita javascript library to scrape from reddit. I wanted to set up an old tv and use a bluetooth signal to trigger the website to change. Despite being super gung ho about this project, I had many problems that ultimately resulted in my work not working.

First, I tried going about familiarizing myself with RiTA library. I tried scrambling words by creating my own grammar rules through coding, which was mistake number one. I should have been using a lexicon or markov chains, I was super coonfused by RiTa’s poor documentation.

So having trouble with this, I decided to work on the physical element of my project. I connected the arduino to an ethernet shield, and set up an infared receiver as opposed to using bluetooth. It was a more reliable alternative to a notoriously unreliable technology(bluetooth, that is). The Ethernet cable was fairly reliable and despite my own computer dying and having to switch computers midway through my project. I was able to serve up a website that was functional and working, which was an easier part of my project. Here was my code to get that working.

#include <SPI.h>
#include <Ethernet.h>
#include <IRSendRev.h>
#define BIT_LEN 0
#define BIT_START_H 1
#define BIT_START_L 2
#define BIT_DATA_H 3
#define BIT_DATA_L 4
#define BIT_DATA_LEN 5
#define BIT_DATA 6

const int pinRecv = 2; // ir receiver connect to D2
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 1, 144);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup(){
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}

IR.Init(pinRecv);
Serial.println(“init over”);

// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print(“server is at “);
Serial.println(Ethernet.localIP());
}

unsigned char dta[20];
void loop(){
EthernetClient client = server.available();
if (client) {
Serial.println(“new client”);
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// if you’ve gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == ‘\n’ && currentLineIsBlank) {
// send a standard http response header
client.println(“HTTP/1.1 200 OK”);
client.println(“Content-Type: text/html”);
client.println(“Connection: close”); // the connection will be closed after completion of the response
client.println(“Refresh: 5”); // refresh the page automatically every 5 sec
client.println();
client.println(“<!DOCTYPE HTML>”);
client.println(“<html>”);
// output the value of each analog input pin
for (int digitalChannel = 0; digitalChannel < 6; digitalChannel++) {
int sensorReading = digitalRead(digitalChannel);
client.print(“digital input “);
client.print(digitalChannel);
client.print(” is “);
client.print(sensorReading);
client.println(“<br />”);
}
client.println(“</html>”);
break;
}
if (c == ‘\n’) {
// you’re starting a new line
currentLineIsBlank = true;
} else if (c != ‘\r’) {
// you’ve gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
Serial.println(“client disconnected”);
}

{
if(IR.IsDta()) // get IR data
{
IR.Recv(dta); // receive data to dta

Serial.println(“+——————————————————+”);
Serial.print(“LEN = “);
Serial.println(dta[BIT_LEN]);
Serial.print(“START_H: “);
Serial.print(dta[BIT_START_H]);
Serial.print(“\tSTART_L: “);
Serial.println(dta[BIT_START_L]);

Serial.print(“DATA_H: “);
Serial.print(dta[BIT_DATA_H]);
Serial.print(“\tDATA_L: “);
Serial.println(dta[BIT_DATA_L]);

Serial.print(“\r\nDATA_LEN = “);
Serial.println(dta[BIT_DATA_LEN]);

Serial.print(“DATA: “);
for(int i=0; i<dta[BIT_DATA_LEN]; i++)
{
Serial.print(“0x”);
Serial.print(dta[i+BIT_DATA], HEX);
Serial.print(“\t”);
}
Serial.println();

Serial.print(“DATA: “);
for(int i=0; i<dta[BIT_DATA_LEN]; i++)
{
Serial.print(dta[i+BIT_DATA], DEC);
Serial.print(“\t”);
}
Serial.println();
Serial.println(“+——————————————————+\r\n\r\n”);
}
}
}

Having the physical side working, I really wanted to get the poetry generation side of things working, whether it be scraped from reddit or just generated from from a text file. I then tried using markov chains to scrape reddit. I even got the api key. I kept getting errors about the rita.js library files I was using. I was stumped, because I hoped to just get it to work smoothly and integrate it with my arduino code. No matter what I tried I couldn’t get it to work the way I wanted it to.I was able to get the basic webpage working, but not actually ever calling the reddit API.  I tried moving files, checking directories,using the console, and redownloading the rita libraries to no avail.  Here is some of the code I tried. I modified from Daniel Shiffman’s examples on his website. My modified code with my reddit api key was lost on my other computer, but here is some of the example code I worked off of.

Screen Shot 2017-05-20 at 11.18.05 AMScreen Shot 2017-05-20 at 11.16.17 AM

 

My last resort was just writing all the code on the arduino and having the arduino scramble strings from three separate arrays, add them together, then serve them up when the infared sensor was receiving data.  In theory, this could work. My logic made sense mostly. However, Arduino memory space is super low and I realized I needed to serve up the files from somewhere remote. Here is what I tried though.

#include <SPI.h>
#include <Ethernet.h>
#include <IRSendRev.h>
#define BIT_LEN 0
#define BIT_START_H 1
#define BIT_START_L 2
#define BIT_DATA_H 3
#define BIT_DATA_L 4
#define BIT_DATA_LEN 5
#define BIT_DATA 6

const int pinRecv = 2; // ir receiver connect to D2
char newPoem;
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 1, 144);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup() {
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}

IR.Init(pinRecv);
Serial.println(“init over”);

// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print(“server is at “);
Serial.println(Ethernet.localIP());
}
unsigned char dta[20];
void loop() {
EthernetClient client = server.available();
if (client) {
Serial.println(“new client”);
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// if you’ve gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == ‘\n’ && currentLineIsBlank) {
// send a standard http response header
client.println(“HTTP/1.1 200 OK”);
client.println(“Content-Type: text/html”);
client.println(“Connection: close”); // the connection will be closed after completion of the response
client.println(“Refresh: 5”); // refresh the page automatically every 5 sec
client.println();
client.println(“<!DOCTYPE HTML>”);
client.println(“<html>”);
client.println(“<br />”);
client.println(“Press a button on the remote for a new poem.”);

// output the value of each analog input pin
if (IR.IsDta()) // get IR data
{

client.print(“your new poem”);
client.print(“is”);
client.println(“<br />”);
client.print(“<script>”); var myStrings = [“roses are red”,
“the pool is too cold today”,
“angels cry when they see you”,
“cheeto man has no plan”,
“the moon represents my heart”,
“you ran away and now my heart’s perforated”,
“i am the dancing hippo in fantasia,flailing my limbs around, but with grace”,
“you can’t hold me back”,
“hi,ho,off this bridge i go”,
“He’s a Bukowski stuck in the body of a rodent”,
“listen”,
“i hate your big dumb combat boots”];

var myStrings2 =[ “violets are blue”,
“you are the mac to my cheese”,
“the clock ticks its tocks”,
“my limbs are spilling over my bed”,
“won’t you come home?”,
“carousels keep spinning”,
“wind feels all”,
“sea incapsulates water”,
“bueller?”,
“shades of grey”,
“the light in your room”,
“clear,clear water isn’t really blue”,
“green lights lead me to you”];
var myStrings3=[“who am i?”,
“be a piece of weird furniture in my life.”,
“leave me to drown in the waters of finals.”
“rumble,rumble,thump, thump.”,
“alas, the rivers of life flow on”,
“but o! how i love thee”,
“and i keep staring at the face in your ceiling”,
“keepeth me in thoust heart for eternity.”,
“rose had enough room for jack, goddammit!”,
“wild pangolins hobble through your veins”,
“I can paint with the colors of the wind.”,
“you are like wet socks at amusement parks”,
“the internet sees me.”];

function createPoem(){
var poem;
poem = myStrings[random, 0,10] + myStrings2[random, 0,10]+myStrings3[random, 0,10];
}”</script”);
client.println(“<br />”);
client.println(“Press a button on the remote for a new poem.”);
}

client.println(“</html>”);
break;

}
if (c == ‘\n’) {
// you’re starting a new line
currentLineIsBlank = true;
} else if (c != ‘\r’) {
// you’ve gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
Serial.println(“client disconnected”);

}
//if (digitalChannel == 1) {
// client.println(random);
// }
if (IR.IsDta()) // get IR data
{
IR.Recv(dta); // receive data to dta

Serial.println(“+——————————————————+”);
Serial.print(“LEN = “);
Serial.println(dta[BIT_LEN]);
Serial.print(“START_H: “);
Serial.print(dta[BIT_START_H]);
Serial.print(“\tSTART_L: “);
Serial.println(dta[BIT_START_L]);

Serial.print(“DATA_H: “);
Serial.print(dta[BIT_DATA_H]);
Serial.print(“\tDATA_L: “);
Serial.println(dta[BIT_DATA_L]);

Serial.print(“\r\nDATA_LEN = “);
Serial.println(dta[BIT_DATA_LEN]);

Serial.print(“DATA: “);
for (int i = 0; i < dta[BIT_DATA_LEN]; i++)
{
Serial.print(“0x”);
Serial.print(dta[i + BIT_DATA], HEX);
Serial.print(“\t”);
}
Serial.println();

Serial.print(“DATA: “);
for (int i = 0; i < dta[BIT_DATA_LEN]; i++)
{
Serial.print(dta[i + BIT_DATA], DEC);
Serial.print(“\t”);
}
Serial.println();
Serial.println(“+——————————————————+\r\n\r\n”);
}
}

Mei you memory!! So then I was encouraged to use an SD card, and then try to use an ajax example. I think the ajax strategy legitimately would have worked if I had my own computer. Since ITS wouldn’t allow me to install node. js, that idea was down the drain. Scott stayed calm and told me to use NAS server space. I figured this would work. I was so excited! Maybe, my efforts would result in a working final project. Sadly, my computer from ITS didn’t even have cyberduck on it. I couldn’t even upload the javascript files I had written to the NAS. At this point, it was IMA showtime. I was busy scamming people into my haunted house for staging fright. I threw in the towel and didn’t look back. I honestly tried super hard to make this project work, but in the end, things fell apart. I would say I was misguided in trying to do what I did. I should have just stuck with what I KNEW I could accomplish in two weeks. Given my two other IMA projects, I should have done something that seemed more tangible. I don’t regret challenging myself by working alone, but I definitely should have been smarter about what I could realistically achieve given my time constraints. I also got a more real sense of where things are served up. You can’t just expect arduino magically can serve and store. Plus, I learned that Murphy’s law is just that:a law. It is true. When you most need your computer, it will break. And ITS will have no empathy. And then your phone will die, too, the night of the show, rendering all your documentation pictures useless. IT COULD HAPPEN TO YOU. SO BE WEARY.

 

Final Project Proposal(Vasudevan)

Partner:Sabina

Sabina and I want to make an interactive zine. We both enjoy zines, so we wanted to recreate their aesthetics and make a zine that is more interactive. It took us a while to find a topic for our online zine since they can be about anything. Sabina gave a list of ideas she thought of and one struck my fancy. She suggested we do a zine about Shanghai. Though we could’ve made it more of a guide to Shanghai, I suggested we make it more of an art zine to reflect on our time in Shanghai since I recently realized I’d be leaving the place I’ve been living for 2 years. We thought it could be an ode to Shanghai. We intended to fill it with texts, poetry, illustration, photography, video and audio. We aren’t sure of the title yet, but I think it’s an attainable project that will pay homage to where we live and explore our individual relationships to our environment.

Web Work Response(Vasudevan)

Though I found this reading to be slightly dry, I appreciated the topic. When I was reading, I looked up many of the websites listed in the reading. This led me to some really interesting places on the internet. I think my favorite part of the article was when cyberfeminism was introduced. Though I did a research paper on this topic, I mostly focused on texts(Sadie Plant and Donna Haraway). Needless to say I’ve done research, but reading this gave me even more resources to further my exploration into this topic. I revisited VNS Matrix Art. I appreciate the angst of their art a lot, but I wonder about cyberfeminism idealization of the web as this space for women to revolt in a way. Not to say this isn’t the case; the web does have space for women. It’s just interesting to see how their ideas manifested. The web, though allowing for resistance and organization of women, doesn’t seem to meet cyberfeminism’s expectations of it. By this I mean that culturally, the web mostly reflects a male-dominated world we still live in. On many platforms, it’s still commonplace that men harass women. I’m getting away from the topic of web art, I know, but I guess I still believe in the web’s potential to be more. I disagree with some of cyberfeminists that existed, because there’s far to much biological essentialism, but I think because the web doesn’t really “belong” to anyone, there’s potential for it to be a better space for women.

Web art is super interesting to me as a whole. This reading also made me realize how the aesthetics of web art have changed. I also think the interactivity of web art has changed. Based on things we have seen in class, current web art puts the user in mind more. I do think this is good, but I also think there’s something to be said for the older web art that just lives with little interaction. As I was scouring for web art, I enjoyed that I could just sit back and watch what was happening on a web page. I could just look at it like I would if I were a person in an art museum.

Response to Graham and Rand(Vasudevan)

I quite enjoyed the first reading. Graham suggests painting and hacking are more alike than people like to admit. I agreed with him, and in my experience(though I wouldn’t consider myself a “hacker”) with coding, I find that it is more useful to debug as you go along. Writing code down sounds like a tedious process and one that cannot be tested. On the contrary, writing code in a text editor, trying it out, and debugging while you go along seems more intuitive. What’s coding if your computer cannot compile it or if you can’t understand it when you go back? Another thing I appreciated about this reading was the section where Graham talked about how the term “computer science” is not a good one. Technically, I’m not a computer scientist, but it seems whenever I get further into programming or lean in that direction, things are not exact. By this I don’t mean to talk badly of computer science, but just to agree with the author that it doesn’t seem to be a science. It isn’t, from what I’ve ever experienced, exact in the way that other sciences are. Nevertheless, computer science is important and so is hacking. Hacking need not involve math envy. I think the author is right about his argument, but again my opinion should be taken with a grain of salt considering I’m no expert.

The second reading was also very interesting, though I didn’t agree with it as much as I did the latter. I believe that being technically skilled is as important as being “book smart” if you will. I appreciated Rand’s strong grip on traditional tools that designers used to be more thoroughly trained in using, but to discount the use of the computer the way he does is silly. Perhaps I only say this having grown up with computers, but there’s something curmudgeonly about the way he is so opposed to embrace the computer for all it is and all it can be for design. Don’t get me wrong, I agreed with his point about how design students should be trained to use pencils and traditional tools, but if they aren’t trained with the computer then what good would that do them in the world today? If design schools didn’t change with the times then how could design move forward as a whole? How could the next generation of great designers adapt to the world that uses computers for everything? If they weren’t equipped with the tools of today, for the sake of traditionalism alone that would be counterintuitive. Pencils and computers are, as Rand admits, not the same type of tools, but he is mistaken in thinking they need to be the same. Yes, design students should learn by hand, but ignoring the growth of technology wouldn’t be the proper way to prepare design students to thrive in the digital age.

Video Project(Vasudevan)

Partners: Jerry Wang and Nancy Wang

For our video project, we wanted to do a murder mystery. We came up with a storyline, storyboarded, and started shooting. The work was divided pretty evenly with Nancy and I doing most of the editing and Jerry doing the website. The shooting we did based on who was available and luckily at most times, we could at least have two of us at a shoot.

Challenges: We definitely had a lot of challenges. One of the big ones being keeping things consistent. Since I had created most of the story, some things I had in mind were not initially communicated and I wanted to keep some things open ended and flexible. Location-wise it could have been shot mostly anywhere. But we chose locations that perhaps we not the best. For the crime scene, we shot behind Family Mart. We thought it was a good location, but the residents didn’t. When we created our fake crime scene, people were actually concerned as to what was happening. We continued and everything was fine despite some bumps. But when we went back to film the scene of the murder in the same location, we were not allowed to film there. So here lays one of our biggest inconsistencies. Another challenge, for me at least being the particular person that I am, was compromising. Even though we have 3 three who get to make creative decisions, you do have different egos and different ideas of how to do things. This is a big learning lesson for me. Another thing I learned about video making was how much work it really is, though I am super into movies and knew some about how they are made, I gained a new appreciation for the art of filmmaking. I also think our team underestimated how much time we had. I think had we been more realistic choosing perhaps a simpler story to convey, we could’ve made a better product. There were a lot of decisions I would not have chosen myself, but that’s the beauty of group work. For instance, I started working with premiere but since my partner was using iMovie and I wanted it to look consistent all the way through I later switched so we could make things have the same aesthetic. I also wanted the ending to have a good ending song. More specifically, I wanted Frankie Valli’s “I Love You, Baby” playing as the killer walks away. I thought it fit thematically, the killer not really caring if he was with the doctor’s wife or if he even killed the doctor. After all, he thought the doctor could have saved his son. I also thought we gave away too much information. My partners felt some things would have not been gleaned from the videos. These are some things I felt could have been better. I was happy though with the website. I think Jerry did really well. Ultimately, I feel our project fell short of my expectations, but I know we worked really hard despite all the difficulties we faced. In the end, this project was a major learning experience, but I definitely want to make more.

Here is our link!

http://192.168.50.184/~zw1141/website/

Project 2 Scaring your computer

We decided to use an ultrasonic sensor to scare our computer. We used serial communication to send data from our arduino to max. Our idea was to use values from our sensor to trigger videos. The videos were short, because we want the triggering of them to be fluid. We found three vines and downloaded them. One is kind of happy, the computer is recognizing the presence of a person standing near it. As a person gets closer and closer the computer gets progressively more “scared” so we chose vines to reflect this. Hooking up our Arduino to an ultrasonic sensor was simple enough. We used a ping example code from the Arduino website. it looks like:

/* Ping))) Sensor

This sketch reads a PING))) ultrasonic rangefinder and returns the
distance to the closest object in range. To do this, it sends a pulse
to the sensor to initiate a reading, then listens for a pulse
to return. The length of the returning pulse is proportional to
the distance of the object from the sensor.

The circuit:
* +V connection of the PING))) attached to +5V
* GND connection of the PING))) attached to ground
* SIG connection of the PING))) attached to digital pin 7

http://www.arduino.cc/en/Tutorial/Ping

created 3 Nov 2008
by David A. Mellis
modified 30 Aug 2011
by Tom Igoe

This example code is in the public domain.

*/

// this constant won’t change. It’s the pin number
// of the sensor’s output:
const int pingPin = 7;

void setup() {
// initialize serial communication:
Serial.begin(9600);
}

void loop() {
// establish variables for duration of the ping,
// and the distance result in inches and centimeters:
long duration, inches, cm;

// The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
// Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);

// The same pin is used to read the signal from the PING))): a HIGH
// pulse whose duration is the time (in microseconds) from the sending
// of the ping to the reception of its echo off of an object.
pinMode(pingPin, INPUT);
duration = pulseIn(pingPin, HIGH);

// convert the time into a distance
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);

//Serial.write(inches);
//Serial.print(“in, “);
Serial.write(cm);
//Serial.print(“cm”);
//Serial.println();

delay(100);
}

long microsecondsToInches(long microseconds) {
// According to Parallax’s datasheet for the PING))), there are
// 73.746 microseconds per inch (i.e. sound travels at 1130 feet per
// second). This gives the distance travelled by the ping, outbound
// and return, so we divide by 2 to get the distance of the obstacle.
// See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
return microseconds / 74 / 2;
}

long microsecondsToCentimeters(long microseconds) {
// The speed of sound is 340 m/s or 29 microseconds per centimeter.
// The ping travels out and back, so to find the distance of the
// object we take half of the distance travelled.
return microseconds / 29 / 2;

We then scoured the internet for a better understanding of max. It was very complicated, but we eventually found a sample patch that we modified to our projects needs. It didn’t have a start or stop button which we thought was a problem, but it was missing a lot of things. Initially it would only play one of the videos, stop, and keep playing the audio. What we needed to add was a change object to each of our videos. From there, things actually ended up working. We tweaked the values and despite the sensor’s glitchy nature, we managed to make it work. The hardest part was definitely max, but by the end, we had a better sense of using max to program. Our project ended up having a sillier tone to it, but I kind of imagined it to be like a comical response to the computer being frightened, perhaps, if your computer spoke through gifs or short videos.

Here is a video of it:

 

Inspiration for Final Project

I particularly like art that takes up physical space(other than just on a wall). I found this piece of art that scrapes public birth and death records and visualizes them on two television screens. It is called Untitled Film II. Here is a link to it.
http://www.siebrenversteeg.com/workpiece.asp?uid=57

Measuring Fear by Angelica

When I went to Hong Kong, I went to an art museum and one of the pieces was a video piece in which the user listens to the voice of Zelda Rubenstein from the Poltergeist movie. She has a very high pitched voice. She talks about dreams and tells the listeners that those who are dead think they’re in a dream state instead of realizing their true realities. The video is of footage from the movie, but the video never actually gets super scary. Truly, what is unsettling is the audio. It stuck with me for two days. Mind you, I do have a strange fear of sleep and dying in my sleep, which at one point was debilitating. So for me this idea was terrifying, also I mean, her voice is super high pitched and eerily childlike. I wanted to use the same audio edited with some other sounds to enhance the fright even further. I added the sound of the internet dialing up slowed down 700% which is also super spooky. I also added a few other things, like the first audio recording, and the sounds of this creepy video I found with a similar theme. The video is called “Dining Room or There is Nothing.” It depicts a strange-looking woman sitting at a table with flames in the background. She looks ready to eat, spoon and all. After the video shows her just staring at the audience and making mumbling noise, she falls flat into her soup. She sits back up and there’s not really a difference between life and death. It’s odd and unsettling. I guess I was more interested in the type of fear that stays with you, leaves a little bit of a mark psychologically, makes you wonder: “What if I’m actually stuck dead in a dream?” or “what if there’s nothing afterwards?” That, to me, is much more scarring. So to test this I edited this audio and paired it with that video. I wanted to see whether audio and video together were more or less effective compared to just audio. It was the audio that truly left me frightened. I chose to measure heart rate. After setting up, I then showed it to someone. I tested on another person with just the sound. I figured it would be interesting to see. I did this in a dark room(or wherever was available)and with headphones. Then I looked at the collected data and compared. I hoped it was scary enough. Or at the very least, unsettling.

Circuit and Equipment:

18043151_10211974521219130_899146474_o

 

Processing Sketch:
import processing.serial.*;
Serial myPort;
int heartrateValue;
int[] Timer = new int[0];
int[] heartrateValues = new int[0];

void setup() {
size(600,600);
// List all the available ports
println(Serial.list());
// Choose the Arduino port
myPort = new Serial(this, Serial.list()[1], 9600);
heartrateValue = 0;
}

void draw() {
// nothing in draw
//println(gsrValues.length);
// println(gsrTimer.length);
}
void serialEvent (Serial myPort) {
int inByte=myPort.read();
//0-255
heartrateValue=inByte;
println(heartrateValue);
heartrateValues = append(heartrateValues, heartrateValue);
Timer = append(Timer, millis());
//send ‘a’ for more bytes
myPort.write(‘a’);
}
void keyPressed() {
// Press q to save the data
if (key==’q’||key==’Q’) {
String[] lines = new String[heartrateValues.length];
for (int i = 0;
i < heartrateValues.length;
i++) {
lines[i] = Timer[i] + “,” + heartrateValues[i];
}
saveStrings(“heartrate.txt”, lines);
exit(); // Stop the program
}
}
// read heartrate values
// save them into a CSV file

import processing.serial.*;
Serial myPort;
int heartrateValue;
int[] Timer = new int[0];
int[] heartrateValues = new int[0];

void setup() {
size(600,600);
// List all the available ports
println(Serial.list());
// Choose the Arduino port
myPort = new Serial(this, Serial.list()[1], 9600);
heartrateValue = 0;
}

void draw() {
// nothing in draw
//println(gsrValues.length);
// println(gsrTimer.length);
}
void serialEvent (Serial myPort) {
int inByte=myPort.read();
//0-255
heartrateValue=inByte;
println(heartrateValue);
heartrateValues = append(heartrateValues, heartrateValue);
Timer = append(Timer, millis());
//send ‘a’ for more bytes
myPort.write(‘a’);
}
void keyPressed() {
// Press q to save the data
if (key==’q’||key==’Q’) {
String[] lines = new String[heartrateValues.length];
for (int i = 0;
i < heartrateValues.length;
i++) {
lines[i] = Timer[i] + “,” + heartrateValues[i];
}
saveStrings(“heartrate.txt”, lines);
exit(); // Stop the program
}
}

 

18043151_10211974521219130_899146474_oArduino:

// Function: This program can be used to measure heart rate, the lowest pulse in the program be set to 30.
// Use an external interrupt to measure it.
// Hardware: Grove – Ear-clip Heart Rate Sensor, Grove – Base Shield, Grove – LED
// Arduino IDE: Arduino-1.0
// Author: FrankieChu
// Date: Jan 22, 2013
// Version: v1.0
// by www.seeedstudio.com
#define LED 4//indicator, Grove – LED is connected with D4 of Arduino
boolean led_state = LOW;//state of LED, each time an external interrupt
//will change the state of LED
unsigned char counter;
unsigned long temp[21];
unsigned long sub;
bool data_effect=true;
unsigned int heart_rate;//the measurement result of heart rate

const int max_heartpluse_duty = 2000;//you can change it follow your system’s request.
//2000 meams 2 seconds. System return error
//if the duty overtrip 2 second.
void setup()
{
pinMode(LED, OUTPUT);
Serial.begin(9600);
Serial.println(“Please ready your chest belt.”);
delay(5000);
arrayInit();
Serial.println(“Heart rate test begin.”);
attachInterrupt(0, interrupt, RISING);//set interrupt 0,digital port 2
}
void loop()
{
digitalWrite(LED, led_state);//Update the state of the indicator
}
/*Function: calculate the heart rate*/
void sum()
{
if(data_effect)
{
heart_rate=1200000/(temp[20]-temp[0]);//60*20*1000/20_total_time
Serial.print(“Heart_rate_is:\t”);
Serial.println(heart_rate);
}
data_effect=1;//sign bit
}
/*Function: Interrupt service routine.Get the sigal from the external interrupt*/
void interrupt()
{
temp[counter]=millis();
Serial.println(counter,DEC);
Serial.println(temp[counter]);
switch(counter)
{
case 0:
sub=temp[counter]-temp[20];
Serial.println(sub);
break;
default:
sub=temp[counter]-temp[counter-1];
Serial.println(sub);
break;
}
if(sub>max_heartpluse_duty)//set 2 seconds as max heart pluse duty
{
data_effect=0;//sign bit
counter=0;
Serial.println(“Heart rate measure error,test will restart!” );
arrayInit();
}
if (counter==20&&data_effect)
{
counter=0;
sum();
}
else if(counter!=20&&data_effect)
counter++;
else
{
counter=0;
data_effect=1;
}

}
/*Function: Initialization for the array(temp)*/
void arrayInit()
{
for(unsigned char i=0;i < 20;i ++)
{
temp[i]=0;
}
temp[20]=millis();
}

Edited Video&Sound*:diningdyingdreaminglowqual

*This video is by David B Earle…not me. I just scaled down the video quality, moved around the audio so it is not matching the video, and added more noises. So the sound editing was me, the video was not. :'( Here is a link to his website. http://www.davidbearle.com/nothing.html

My subjects:

Abirral

Tyler

Tirza

Millie

My findings&failures:

Okay, so apparently what scared me made a lot of people laugh, except Abirral who heard the sound. Perhaps, I’ll blame the video and say it was too weird to make people actually scared, despite what I’d read on the internet about how so many people found this video super creepy. Perhaps, it’s because I messed with the audio of the video. To be honest, though I think it was the video. The woman who was supposed to be scary the users found funny because most people thought she looked like she intentionally put her face into her bowl of soup, instead of dying into her bowl of soup. Perhaps, the Poltergeist movie was scary, but also Tyler found the audio of the little girl unauthentic due to her southern accent that to him sounded fake. I wanted to challenge myself and see if combining weird unsettling things were psychologically more scary, but inducing this type of fear is I’ve learned from this experiment harder to induce than jump scares. Abirral showed me a video of some rodents and nothing existentially scary happens or nothing really scary at all happens, but instinctively I was terrified by the anticipation of it all and the jumps. I also think what this video along with my sound editing lacked was anticipation. The video may only really be scary if you know already that the girl falls into her soup and dies. It made Tirza burst out laughing. In terms of heart rate, I learned that heart rate it an unreliable measurer of fear, simply due to the fact that heart rate can also be raised for excitement. Overall, I think I should probably have relied on jump scares. Sapphya, in class, said that jump scares were cheap shots, but I’m not so sure anymore. Part of the fear we derive from horror movies isn’t really always that scary out of context. It’s the anticipation that drives us to the edges of our seat. Despite this utter failure on both this video and my sound editing, I’m glad I learned more about the line between spookily odd and eerie vs. terrifying. Also, from my testing I found the audio alone was scarier. According to my subjects, the video recording decreased the fear factor of the video. Huh? Ya learn something new everyday.