melanie – documentation (in progress)

Holy late post, Batman.

Soul Searching is a game about soul searching, delivering the metaphor through maze navigation.

Untitled

The project spawned from a story idea I had long ago, of a person whose soul was shattered into multiple pieces. The original form was lost and is now trying to return to the person, collecting its fragments along the way. The gameplay focuses on maze navigation, but you can’t see the entire maze at one time.

I took much inspiration from the games I’ve played: Dear Esther, Sense of Connectedness, Thomas Was Alone, etc. I wanted to create something familiar (maze solving) while presenting it in an unfamiliar way.

maze

Technicalities-wise, I took much of it from algorithms online and programs people already wrote on openprocessing; there’s practically an entire culture out there that obsesses over maze generation, trying to figure out the best way to generate mazes, already making creative games with it, and diverging from traditional mazes.

Unfortunately, the program is suffering from a big bug for the moment. I’ve been trying to rat it out for the past several days. It’s slow going and I feel really bad that I don’t have much to show because of that stupid bug. Needless to say I’ll still be working on this throughout the break until I finish it because I’ve spent too much time on it to stop. Proper documentation will go up once it’s done. Sorry!

oops

Melanie-LookingOutwards + sketches for final project

1) games: Thomas Was Alone + The Binding of Isaac + The Sense of Connectedness

I wrote about Thomas Was Alone before (not as a looking outwards entry but an example), and Ralph wrote about The Binding of Isaac (and is in fact the person who got me into the game). The Sense of Connectedness, despite also being an indie game, is very small compared to the two games, especially since it’s f2p PC downloadable. It’s an intense game in the not-action-y way: I felt as though my body was pulled through the grinder after spending a good hour on it, and in a good way. The sound is perfect and paces the player really well, prompting him/her to follow the rhythm in order to progress through the game without being an overtly rhythm-based game, and the vibrating graphics invoke a feeling of tension and urgency. It’s a game that messes with your mind as you try to figure out what’s going on, the mechanics of the gameplay, if you’re even in control of anything, etc. It’s an experience that encourages exploration and discovery.

There are three distinct respective elements I want to pull from these games: minimalist landscapes, randomization to the effect of infinite re-experiences, and overarching sensation of psychological discovery and engrossment.

2) Luan Chyi

It’s a generative landscape installation, based on the traditional Oriental ink painting. While it’s evocative of its source material, it stands strong on its own: a landscape that flows like water, ebbing and rushing constantly.

3) ALEPH

This is a “combination of imagery driven by generative processes in perspective to create representations of memory and mental association.” I become easily moved by art that channels the metaphysical, and this is no exception. Not only is it visually stunning, but it also has a compelling and alluring concept of the “aleph,” where “one can see the entire universe, from every angle at the same time.” It’s just very appealing and scary to think about.

First project idea is a game idea that’s been incubating in my head for quite a while now, and furthered by #1 in the looking outwards. Ideally, it would be minimalist in aesthetics, and the levels would revolve around generative landscapes that are different for every playthrough and level. I want to sustain an exploratory heart in players, and I think constantly moving landscapes a la #2 on looking outwards would help in that. Ultimately there’s a goal in the game other than to just explore the levels but figuring out what to do with the generative landscapes comes first.

20131121_034305

(meager sketch because I’m too tired to take the rest of the photos. I will add more later)

The second project is an augmented projection but also playing with the idea of generating landscapes. Lemercier’s works come to mind when I think about what I want to do. Since this project is supposed to be small, projecting onto just big-enough-drawings instead of an entire room is what I’m aiming for. There’s a lot of random geometric landscapes in my sketchbook at the moment so there’s no shortage of materials to project onto… but I also want to create a meditative work like in #3 on looking outwards, so I might combine the two urges somehow.

the search for silence

Last week I kept getting angry at the mere presence of more than five people and the constant noise around me. So much so in fact that one of the first ideas for this project I came up with was making what is essentially a punching bag to vent my frustrations on, with the matrix recording the level of my anger. But as I brainstormed over the course of several days, I realized what I was looking for was a sort of tranquility and its unattainable nature. I ended up sketching a fiction where I would travel while carrying around a haphazardly constructed measuring box that could indicate if the location is completely silent/tranquil. In the measuring system of tranquility, the numbers would range from -10 to 0, -10 being the least tranquil and 0 being the complete silence.

20131118_195326

I had followed the extremely well-documented steps by Amanda Ghassaei to create the sound input device, which surprisingly was not trivial as Golan explained to me. I realized belatedly that for my purposes of recognizing “sound” and not “sound pressure,” it would’ve been better to buy a shield instead (and Paolo Pedercini told me after I had assembled the circuit that the ArtFab had recently stocked up on microphone sound detection sensors). But I also realized afterwards that this was fine because it fits the narrative of “some person randomly decides to put together a ghetto box, whatever.”

20131117_195901

DSC00096

(thanks to my roommate for the shoebox!)

The code is exceedingly simple:

#include Wire.h //y'all know what this is really supposed to be
#include "Adafruit_LEDBackpack.h"
#include "Adafruit_GFX.h"

Adafruit_7segment matrix = Adafruit_7segment();

int incomingAudio;

void setup(){
  matrix.begin(0x70);
}

void loop(){
  incomingAudio = analogRead(A0);
  int adjusted = map(incomingAudio,400,1024, 0,11);
  adjusted = adjusted*-1;
  matrix.print(adjusted, DEC);
  matrix.writeDisplay();
  delay(200);
}

And here’s the Fritzing diagram (though really, Amanda Ghassaei has better circuit diagrams):

Untitled Sketch_bb

 

wtb shields

Gameduino: “a game adapter for microcontrollers.” I’m interested in the sensors you can easily connect to the gameplay using Arduino, effectively rendering the old school-feel of the games produced from Gameduino into a fresh experience. Here’s another one related to gaming.

LCD Shield Kit: a space efficient LCD screen, taking up only a few pins as opposed to previous models. I like screen inputs that look very “digital” so I’m biased. I could see microcontroller easily asking for user inputs with this.

EasyVR shield: “a multi-purpose speech recognition module designed to add versatile, robust and cost effective speech and voice recognition capabilities to virtually any application.” Combine this with the previous two shields, and we’ve already got some interesting things going on. (Voice recognition as part of a multiplayer game mechanic?)

monkeysphere

{video and sketches pending}

When this assignment was first released, all I wanted to do was simulate a Monkeysphere. The program adds a “friend” every time you press any key. The most recent friend would take up the creature’s attention, thus the creature always keeps the most recent friend in its sight. Although this program was only supposed to be strictly simulation, things got a lot more personal once I started adding names since the names are of people I knew/know in real life. I started projecting, resulting in the part where you press the mouse and discover a sort of anxiety-ridden creature trying to escape the sphere but it can’t. At any rate, once you get to Dunbar’s number, the creature has hit its limit of “friends” and needs to take a break. Once you give it some time, it’ll return to befriend a new round of friends.

I think I’ll work on this a bit more to figure out smoother animations and of course, the freezing problem: the program randomly freezes during the second round of counting up to Dunbar’s number (it seems it’s 23?).

looking outwards (?)

VCNL4000 Proximity/Light sensor

I like how this is basically a cheap combination of two sensors. I actually built a tiny robot in high school freshmen year and had just a cheap touch sensor to work with in order for it to navigate through a maze. Why couldn’t I have this back then?

RGB Color Sensor

I really did not know that a color sensor had been developed, much less a pretty cheap one. I’m mostly interested in how functional it is and how it would bring new options to the usual physical computing art of limited color palette.

Flora Wearable Ultimate GPS Module

It’s a sewable GPS module. Wearable art is awesome, but wearable art combined with technology is even cooler. I can see possibilities of combining this module with other sensors on the cloth.

electrified water

Keystone is frustrating. The actual coding took way less time than trying to get Keystone to work on my program (especially since my computer won’t even render it correctly due to graphics card problems!) and calibrating it (probably an exaggeration but it certainly felt like it). So I learned this, yet again: logistics ruin the fun out of everything. Also, I didn’t expect the shadow of the stream of water–no way around that.

My main inspiration was to use sound that was already provided to me as part of the projection–and that sound was water hitting the sink as I washed my hands every day. I imagined the sound as bunch of electrically charged particles climbing up rather than flushing downwards into the drain, and it got to the point where I could hear electricity in the water.

20131018_133128

(part of the drawing is Golan’s explanation on why my design isn’t feasible for now)

Initially I wanted creatures that would climb up the sink and then turn into birds when they reached the top corners, but Golan was against the idea since it would be too complex for an assignment. He instead suggested that I confine it to a flat area near the drain, which turned out alright. The project might develop further by implementing the original idea I had.

move fish get out of the way

http://cmuems.com/2013/a/wp-content/uploads/sites/2/2013/10/really.pdf

I heavily borrowed Golan’s repulsion code, mostly because I had to start a new one today (the one I was working on was on my USB drive, which I had left in a studio class in a locked room… sigh). Because of this, I was determined to at least make the curves look nice. So I spent a lot of time on various fluid shapes I could make, something that would look interesting laser cut:

blarhg

Then with the code, I abused curveVertex to death. That’s basically it, other than some adjustments for the fishies to not intersect with the big fish for the sake of the laser cutter. I also really wanted to make the fishies naturally shy away from the big fish, but didn’t have time to implement it… and I figured that it wouldn’t even show up on the lasercut screen anyway.

//code from Golan Levin; modified for fishies

ArrayList myFishys;

void setup() {
  size(600, 600);
  myFishys = new ArrayList();
  for (int i=0; i<100; i++) {
    float rx = random(width);
    float ry = random(height);
    while(rx > 50 && (ry > 100 && ry < 500)){
      rx = random(width);
      ry = random(height);
    }
    myFishys.add( new Fishy(rx, ry));
  }
}

void draw() {
  background (255);
  stroke(0);
  noFill();
  bigfish();
  float mutualRepulsionAmount = 1.5;
  for (int i=0; i 1.0) {
        float componentInX = dx/dh;
        float componentInY = dy/dh;
        float proportionToDistanceSquared = 1.0/(dh*dh);
        float repulsionForcex = mutualRepulsionAmount * componentInX * proportionToDistanceSquared;
        float repulsionForcey = mutualRepulsionAmount * componentInY * proportionToDistanceSquared;
        ithFishy.addForce( repulsionForcex, repulsionForcey); // add in forces
        jthFishy.addForce(-repulsionForcex, -repulsionForcey); // add in forces
      }
    }
  }
  for (int i=0; i
void bigfish() {
  pushMatrix();
  translate(width/2+200, height/2+20);
  scale(2);
  line(-180, 0, -70, 0);
  bigfishhead();
  bigfishbones();
  pushMatrix();
  translate(0, -20);
  bigfishtail();
  popMatrix();
  popMatrix();
}
void bigfishtail() {
  tail();
  pushMatrix();
  translate(5, 10);
  scale(0.7);
  tail();
  popMatrix();
  pushMatrix();
  rotate(0.5);
  translate(40, 80);
  tail();
  popMatrix();
}
void tail() {
  beginShape();
  curveVertex(-120, 0);
  curveVertex(-120, 0);
  curveVertex(-125, -5);
  curveVertex(-60, -40);
  curveVertex(30, -50);
  curveVertex(30, -50);
  endShape();
  beginShape();
  curveVertex(30, -50);
  curveVertex(30, -50);
  curveVertex(-60, -20);
  curveVertex(-120, 0);
  curveVertex(-120, 0);
  endShape();
}
void bigfishhead() {
  beginShape();
  curveVertex(-170, -40);
  curveVertex(-170, -40);
  curveVertex(-190, -20);  
  curveVertex(-200, 0);
  curveVertex(-190, 20);
  curveVertex(-170, 40);
  curveVertex(-170, 40);
  endShape();
  beginShape();
  curveVertex(-170, -40);
  curveVertex(-170, -40);
  curveVertex(-180, 0);
  curveVertex(-170, 40);
  curveVertex(-170, 40);
  endShape();
}
void bigfishbones()
{
  topbone();
  pushMatrix();
  for (int i = 0; i < 5; i++) {
    scale(0.85);
    topbone();
  }
  popMatrix();
  bottombone();
  for (int j = 0; j< 5; j++) {
    scale(0.85);
    bottombone();
  }
}
void topbone() {
  beginShape();
  curveVertex(-150, -15);
  curveVertex(-150, -15);
  curveVertex(-155, -17);
  curveVertex(-147, -35);
  curveVertex(-150, -42);
  curveVertex(-142, -55);
  curveVertex(-130, -95);
  curveVertex(-125, -100);
  curveVertex(-125, -100);
  endShape();
  beginShape();
  curveVertex(-125, -100);
  curveVertex(-125, -100);
  curveVertex(-150, -15);
  curveVertex(-150, -15);
  endShape();
}
void bottombone() {
  beginShape();
  curveVertex(-150, 20);
  curveVertex(-150, 20);
  curveVertex(-140, 45);
  curveVertex(-135, 53);
  curveVertex(-135, 53);
  endShape();
}
class Fishy {
  float size;
  float px;
  float py;
  float vx;
  float vy;
  float damping;
  boolean bLimitVelocities = true;

  // Constructor for the Fishy
  Fishy (float x, float y) {
    px = x;
    py = y;
    vx = vy = 0;
    damping = 0.96;
    size = random(0.5, 1.5);
  }

  // Add a force in. One step of Euler integration.
  void addForce (float fx, float fy) {
    float ax = fx;
    float ay = fy;
    vx += ax;
    vy += ay;
  }

  // Update the position. Another step of Euler integration.
  void update() {
    vx *= damping;
    vy *= damping;
    limitVelocities();

    px += vx;
    py += vy;
  }

  void limitVelocities() {
    if (bLimitVelocities) {
      float speed = sqrt(vx*vx + vy*vy);
      float maxSpeed = 10;
      if (speed > maxSpeed) {
        vx *= maxSpeed/speed;
        vy *= maxSpeed/speed;
      }
    }
  }

  void render() {
    noFill();
    pushMatrix();
    translate(px, py);
    fishy();
    endShape();
    popMatrix();
  }

  void fishy() {
    scale(size);
    beginShape();
    curveVertex(-10, 0);
    curveVertex(-10, 0);
    curveVertex(-5, -2);
    curveVertex(0, -3);
    curveVertex(5, -2);
    curveVertex(10, 0);
    curveVertex(10, 0);
    curveVertex(13, -3);
    curveVertex(13, -3);
    endShape();
    beginShape();
    curveVertex(-10, 0);
    curveVertex(-10, 0);
    curveVertex(-5, 2);
    curveVertex(0, 3);
    curveVertex(5, 2);
    curveVertex(10, 0);
    curveVertex(10, 0);
    curveVertex(13, 3);
    curveVertex(13, 3);
    endShape();
  }
}

Melanie-LookingOutwards-3

arca from tony olsson

It’s a game! Looks like a co-op. I’m already intrigued by the manipulation of physical space to affect virtual space. Are there more levels, more variations? How about its gaming potential? I greatly enjoy the use of sound to give each shape a different feel. The only disappointing part about is that I can’t find other documentations–wait, look! There’s a blog! So turns out it is a two-player “game” self-described as a “full body experience which is created by interaction, communication and play within an space where computer games meet abstract electronic art, video and sound installation.” It’s true! I’m in love with it. I want to play it with my roommate as we troll each other to death. More effective documentation would’ve been nice, though; I had to dig a lot to actually find out its purpose. Other than that, I want this to be a little bigger, and the physical objects to be less ordinary to be extraordinary. Anything other than bunch of cylinders.

[in]security camera from Dennis Rosenfeld

There’s a security camera, but it’s actually not a very effective security camera. It shies away from what it’s supposed to be watching–humans–and finds the wall very interesting instead. It says some things about surveillance and almost subverts it in a non-cynical, adorable fashion. I like the message and the concept; I don’t really like the execution though, as I expected more variations in movement to give the camera more personality. Rather than insecure, it just seemed startled half the time. Take a cue from this cute little robot.

INSIDE-OUT, a sound art performance from Andre Borges

There’s something powerful about the body’s sound reverberating throughout a giant room. INSIDE-OUT is a sound art performance using a man’s body as a musical medium. As he breathes in and out, various sounds play according to the internal sounds of his body. Most prominent is his breathing; it’s a constant loop, soothing and overarching. I’d imagine it would be like you’re really inside something when you enter that room–a soundscape of the body. I feel like it could’ve been better with improvement in presentation, as the presentation doesn’t feel organic, but I do like the rawness of the performance.

can you not hear the words coming out of my terminal

I made some generic character sketches but none of them felt compelling, so I tried to think more about the potential of the library. Then the character started out as a non-corporeal lifeform inspired by the ones in Star Trek (namely the one in The Day of the Dove, where George Takei swings around a sword half-naked). The Beta XII-A entity in the episode fed off humanoid emotions, but I wanted to make the creature friendly instead of malicious. As I kept moving around the form with my face, it almost looked like it was real, imitating my movement as if it were a curious being, and suddenly I could see it as something within the computer. The sounds made were inspired from various digitized creature noises I’ve come across before (can’t remember exactly where).

I wanted the work to be more delayed though so that it would actually look like the thing was trying to process your movements before proceeding to copy them.  It would also be nice to have more variety of sounds for the creature and give it more personality with more degree of control. The three OSC properties of the face I used was the position, scale, and mouth height. The main degree of control was on the mouth height, because then the change was drastic. I don’t particularly like what I made, mostly because I feel like there could’ve been more variations on the creature behavior, but I like the idea behind it.

note: the audio in the video was artificially put in because of complications with capturing the internal sounds using Quicktime. It definitely works in person, as demonstrated in class.