Making Interactive Art: Set the Stage and then Shut Up and Listen

Man, I am so bad at that! I always want to start my presentations with an in depth explanation of all the bells and whistles of my projects. But it’s an important thing I need to learn; let the audience interact with the piece.

One thing that really stuck with me in this article was that yes, interactive art is still self expression, but it is more of a conversation than a statement. The art piece itself is the seeds of a conversation between artist and audience. It’s important to consider that the expression will come from the experience of interacting with the piece and as they interact, more of the expression will be revealed.

It’s also important to note that the expression will be added to, as part of the conversation, by the way the audience responds to and understands the experience they had with the installation. The artist should take the time to listen to how they are interacting and responding to such.

How will the audience create their own story with the piece? Are they meant to create their own story or uncover the artist’s?

How does the audience complete the work? Is it incomplete before? At what stage is the work complete?

A Completely Immobile Life

I liked how Bret responded to the criticism/comments on his rant. It makes it more personal and makes it seem like he really cares and doesn’t want people to get the wrong idea. Good on you, Bret.

I liked his comment about how voice isn’t exactly where he thinks the future is but “if voice gets you excited, do it”. It was inspiring to know that, even though he wasn’t passionate about it, if you can recognise the potential in something and get excited about it, then you should absolutely pursue research in that field. Maybe you’re on to something.

His idea that in the future, if the computer continues progressing the way it is (I.e. not interacting with the physical world and the body), then humans will face the risk of becoming completely immobile. While this is terrifying, and is a very real fear we should strive to stay away from, it just reminded me of that scene from Wall-E with all the overweight people in the chairs who don’t know how to walk. I feel like that’s where humanity is heading if we don’t get active with our technology.

The Future of Interaction is Not A Single Finger

Beginning this reading started out the way most things begin: disappointing.

“Here is the future” and then, a video. A magical video. I was so excited to watch it. And then, as I clicked “play”….

VIDEO UNAVAILABLE

great.

I loved the tone of this reading. It kept me engaged and drew me in as it presented ideas I hadn’t thought of before. I completely agree with most of them. A group of inspired people is definitely one of the most powerful forces and hands are super important for doing anything in life.

I appreciated his ability to make me think about little actions I did and how those little actions weren’t so little for my hands. Tying my shoes, for example, had such precise, nuanced movements and habits that I had learned over time. When you first learn how to tie your shoes, you’re clumsy and you don’t quite understand how to do it. As it becomes muscle memory, however, your hands figure out how to move in just the right way. Hands are such an impressive part of our body. With all the joints, bones, and possibilities, why wouldn’t we use them to enhance our technology?

The thing that stuck with me the most, however, was the quote “with an entire body at your command, do you seriously think the future of interaction should be a single finger?”

This really made me think about where our technology is right now and where we see it going in the future. Phones started with using one finger to swipe, one finger to type in a password. Then, it was one finger that would read fingerprint and unlock the phone. Now, we’re even beyond that. Facial recognition. Why are we straying from hands when Bret so truthfully pointed out that the future is in them?

Stage Design Midterm Idea

Since my primary passion in life is bringing technology into theater, I am interested in making a small model of a stage. In this model, I would have some set design that is attached to servos and leds/string lights to light the space. I would then be able to change the set and lighting design from a board on the outside of the model.

Features would include:

1) Lighting changes

2) Set changes

3) Curtains pulled back at start

4) All controlled from breadboard using sensors and buttons

I will be focused less on the entertainment side of IM and more on the functionality of it and its application into theater.

A Body of Music by Tori and Kyle

“What if you were the instrument?” A young, curly haired girl said to her best friend one rainy afternoon. Of course, it wasn’t actually rainy. It was Abu Dhabi.

And so, with that idea, Kyle and Tori set off on an adventure that woud use six sensors, four buzzers, one servo, and two solinoids, one fish bowl, one miscellaneous metal piece, and many wires to change the world.

This was a process and a half and took way too much time. Basically, we made an instrument in three different parts: percussion, piano, and maraca.

Percussion: consists of two solinoids attached to different materials, one a glass bowl and one a metal goblet type piece. It is attached to a muscle sensor. When Kyle flexes his muscle, a programmed beat begins.

Piano: consists of four pressure sensors attached to four buzzers. Each pressure sensor corresponds to two notes in the C major scale. At a low force, it plays one note and at a higher force it switches to another note.

Maraca: consists of one servo and one photoresistor attached to a tongue depressor. When the photoresistor changes its light reading, the servo moves and the maraca is shaken. We used a battery to balance the weights.

Here is our code. Kyle’s code is responsible for the percussion while my code is responsible for the maraca and piano. This is mainly because of issues with delay and balancing between the two boards.

Kyle’s Code:

int solenoidPin3 = 3;
int solenoidPin2 = 2;
const int analogInPin = A0;
int sensorValue = 0;        // value read from the pot
int outputValue = 0; 

void setup() {
  // put your setup code here, to run once:
pinMode(solenoidPin3, OUTPUT);
pinMode(solenoidPin2, OUTPUT);

Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:

sensorValue = analogRead(analogInPin);
  // map it to the range of the analog out:
  outputValue = map(sensorValue, 30, 700, 0, 100);

    Serial.print("sensor = ");
  Serial.print(sensorValue);
  Serial.print("\t output = ");
  Serial.println(outputValue);

  //get help figuring out the delay
  if (outputValue > 30) {
digitalWrite(solenoidPin2, HIGH);
delay(50);
digitalWrite(solenoidPin2, LOW);
delay(100);
digitalWrite(solenoidPin2, HIGH);
delay(50);
digitalWrite(solenoidPin2, LOW);
delay(100);
digitalWrite(solenoidPin2, HIGH);
delay(50);
digitalWrite(solenoidPin2, LOW);
delay(100);


digitalWrite(solenoidPin3, HIGH);
delay(100);
digitalWrite(solenoidPin3, LOW);
delay(200);
digitalWrite(solenoidPin3, HIGH);
delay(100);
digitalWrite(solenoidPin3, LOW);
delay(200);  

}
else if (outputValue < 30){
  digitalWrite(solenoidPin2, LOW);
  digitalWrite(solenoidPin3, LOW);}
}

Tori’s Code:

#include <Servo.h>

Servo servo;

unsigned long pressure1 = A0; //with C4
unsigned long pressure2 = A1; //with Am4
unsigned long pressure3 = A2; //with G4
unsigned long pressure4 = A3; //with F4
unsigned long fsrReading1;
unsigned long fsrReading2;
unsigned long fsrReading3;
unsigned long fsrReading4;

const int buzzbuzz1 = 2;  //with C4 and F4 
const int buzzbuzz2 = 3;  //with Am4 and 
const int buzzbuzz3 = 4;  //with G4
const int buzzbuzz4 = 5;  //with F4

void setup() {

    servo.attach(9);
    
  Serial.begin(9600);
  pinMode(buzzbuzz1, OUTPUT);
  pinMode(buzzbuzz2, OUTPUT);
  pinMode(buzzbuzz3, OUTPUT);
  pinMode(buzzbuzz4, OUTPUT);
}

void loop() {

  int lightRead = analogRead(A4);

  int angle = map(lightRead, 0, 1023, 0, 180);
  
  fsrReading1 = analogRead(pressure1);
  fsrReading2 = analogRead(pressure2);
  fsrReading3 = analogRead(pressure3);
  fsrReading4 = analogRead(pressure4);

  Serial.println(fsrReading1);


  if (fsrReading1 > 50 && fsrReading1 < 900){
    tone(buzzbuzz1, 261.63, 100);
  } else if (fsrReading1 > 900){
    tone(buzzbuzz1, 523.25,100);
  } else if (fsrReading1 < 50){
    noTone; 
  }

    if (fsrReading2 > 50 && fsrReading2 < 900){
    tone(buzzbuzz2, 293.66, 100);
    
    } else if(fsrReading2 > 900){
  tone(buzzbuzz2, 329.63,50);
    
  } else if (fsrReading2 < 100){
    noTone; 
  }

    if (fsrReading3 > 50 && fsrReading3 < 900){
    tone(buzzbuzz3, 349.23, 100);
  } else if (fsrReading3 > 900){
    tone(buzzbuzz3, 392.00,100);
  
  
  } else if (fsrReading3 < 50){
    noTone; 
  }

  if (fsrReading4 > 50 && fsrReading4 < 900){
    tone(buzzbuzz4, 440, 100);
  } else if (fsrReading4 > 900){
    tone(buzzbuzz4, 493.88, 100);
    
  } else if (fsrReading4 < 50){
    noTone; 
  }
servo.write(angle);
}

Videos:

The Design of Everyday Things | Response

Don Norman sure does have a unique tone. His semi-sarcastic style of writing this piece, “The Design of Everyday Things” was informative, yet also entertaining and it provided a good amount of insight into the design of things we interact with everyday.

One of the things I could relate to was his quote, “We have to accept human behavior the way it is, not the way we wish it to be.” I really struggle with realizing that how humans act usually does not correlate with how they should act. I have never considered this from the design standpoint, but I can imagine it would be particularly problematic to design something that only an ideal society could benefit from.

Another section that stuck with me was his thoughts on a human-centered design. I agreed wholeheartedly with his idea that the design should be based around humans and their needs. However, like we discussed in class today, I disagree that good designs produce pleasurable experiences. I think that the design should go unnoticed. I believe this because of how fast-paced the world has become. In my experience, I don’t have time to really admire or enjoy the design of an object because I am too busy thinking about four other things or focusing on getting the function of the design completed. We don’t have time to admire how the design works, we just need it to work. Unfortunately, that means the designer is a life that can often go unpraised.

From reading this, I will definitely pay more attention to making my designs human centric and focused on mapping. Incorporating things like feedback and conceptual models will be an interesting thing to develop into my own work, as I figure out my design style and how to best make a functional device.

Hot/Cold Game

Over the past week, I figured out how to make lights fade on and using sensors. So naturally, I went a completely different direction. I created a little game that generates a random value between 0-255 and lights up an LED with that value (0 being LOW and 255 being HIGH). The user must then control a photoreceptor so that it falls within a range of the generated value. If they are too high, a red light will come on (HOT) and if they are too low, a blue light will come on (COLD). If they fall within the range, they will be rewarded with a yellow light.

In this game’s production, I fell into some interesting problems and came up with solutions for a few of them. One was that the loop would go so fast that it would constantly be generating new values, thus rendering the game useless. However, I think this would make a great EXTREME MODE for the truly daring player. I fixed this by adding a button. The loop would only generate a new number if the button was pressed.

Here are my video and code 😀

const int ledPinR = 2;
const int ledPinG = 3;
const int ledPinB = 4;
const int ledPinWIN = 6;


int ledRState = LOW;
int ledGState = 0;
int ledBState = LOW;
int ledWINState = LOW;

int button = 7;
int buttonState = 0;

int randNumber = random(1,255);


void setup() {
  pinMode(ledPinR, OUTPUT);
  pinMode(ledPinG, OUTPUT);
  pinMode(ledPinB, OUTPUT);
  pinMode(ledPinWIN, OUTPUT);

  pinMode(button, INPUT);

  Serial.begin(9600);

    randomSeed(analogRead(0));

}


void loop() { 

if (buttonState == HIGH){

  randNumber = random(1,255);
  
}

  Serial.println(randNumber);

  ledGState = randNumber;

  int lightValue = analogRead(A0);


    

    
  if (lightValue < ledGState + 250){
    ledBState = !ledBState;
    ledRState = LOW;
    ledWINState = LOW;
  }
    if (lightValue > ledGState + 400){
      ledRState = !ledRState;
      ledBState = LOW;
      ledWINState = LOW;
   } 
   

   if (lightValue >= (ledGState + 250) && lightValue <= (ledGState + 400)){
      ledWINState = HIGH;
//      if in x range, start a timer, once timer is 3 seconds, do whatever
   }
  
digitalWrite(ledPinR, ledRState);
analogWrite(ledPinG, ledGState);
digitalWrite(ledPinB, ledBState);
digitalWrite(ledPinWIN, ledWINState);
buttonState = digitalRead(button);
}

 

 

Hey throw that ball in this thing

Boy was I in for a treat this morning when I strolled on down to the IM lab to finish my project. I was sure it would only take five or so minutes. I just needed to add some parts that I didn’t have in my room.

Nope. Definitely not. I got to the lab and, half an hour later, had discarded my entire project. Hours spent in my room, fiddling with compelx codes and multiple inputs and outputs, all gone. So, yeah, I don’t think this project is exactly what Aaron was looking for with this assignment, but I think I twiddled enough in my room to understand the concepts we needed to grasp.

My original idea was to have my sunglasses come down, as they did before, and then I would snap some finger guns and suddenly, LED lights would come on, blinking “S W A G” in morse code.

Instead, I have this…

Response to Chris Crawford

Reading Response: The Art of Interactive Design by Chris Crawford

In reading this chapter, I discovered that I often committed the crime that Mr. Crawford most frowned upon: mistaking reactionary things for interactive things. However, Mr. Crawford can rest easy in his office in Ohio, as he cleared up the difference for me. As well as this great service, it was also helpful to hear his little metaphors he presented, such as comparing input, process, and output to listening, thinking, and speaking.  However, as a theater student, I am inclined to disagree with his commentary on how theater is not interactive. In contrast, I would argue that some genres rely most on interactions with the audience. In commedia dell’arte, for example, the actors must read the audience energy, process it, and decide how best to modify the performance. And the audience must do the same: absorb what the actors are giving, process it, and react whether it is with laughter or silence or walking out the door. As much as I argue for this, though, I also recognize that this isn’t all types of theater, so I can get over this little injustice. Overall, I enjoyed Mr. Crawford’s snark throughout the reading and especially in the review questions. Amongst the pleasant sarcasm, though, he approached the topic of interactivity with clarity and confidence. And for that, I thank him. And to answer his question: no. Rugs are not interactive.

 

No Hands Switch: Sunglasses Edition

I’m what the kids call (sunglasses flip down onto my eyes) a huge nerd. Honestly this took me way longer than it should have to make purely because I didn’t have clear tape. But alas, there is nothing that blue tack can’t do. But between screaming in frustration every time the alligator clamps fell off my nose and crying whenever the wire fell off my glasses, I actually got a few cheers in when the little blue light would show itself.

Basically, I wired up an LED and then added a bit of a disruption in the middle. Instead of the electricity going straight from the power source to the LED, it made a quick detour through two alligator clamps, one wire, my sunglasses, my nose, and then to the LED. The wire was taped onto a piece of tinfoil that was on the brim of my sunglasses. The other end was attached to an alligator clamp which then fed into the breadboard.

On my nose was more tinfoil and attached to that was an alligator clamp with the wire that would complete the circuit. Once I flipped my sunglasses from my forehead to my eyes, the LED would light up.