mreyes – final project

screen-shot-2016-12-10-at-12-07-15-am

Please download the files and play the game though local server. I tried uploading the files to both wordpress and the andrew webite that students are given but, neither work.

This project is a continuation of project that I did in a previous class and wanted to expand on. Roger signed off on this agreeing that I would make it clear what was pre-made. ONLY the audio and mic input functions are new. Everthing esle was made preiviously. I have also sectioned off and uncommented the code that is not new and marked it “Pre-made DO NOT GRADE”.

This added in audio function is an exploration on simple machine learning. For a little while I was trying to use recordings and slice those recordings into arrays to make the audio. But this proved too dificult for my skill level and also did not really achive the effect I wanted. So instead how the program works is that there is a very sensative volume monitor analyzing input from the mic and then depending on how loadly you talk (or sing or hum or what ever) the program puts in diffrent sound files.

As I said the monitor is very sensative and the game it ment to be a little dificult. A simple cheet that I’ve found is that singing or humming work better then actually talking.

sketch

//Pre-made DO NOT GRADE
///////////////////////////////////
var background_sound;
var end_sound;
var bgs;
var bgi;
var character;
var feed;
var clean;
var talk;
var ending1 = false;
var ending2 = false;
var hunger = 3;
var MAX_HUNGER = 10; 
var dirty = 3;
var MAX_DIRTY = 10;
var purity = 10
var MAX_PURITY = 20  
var volume = 0;
var mic;
var pixelScale = 4;
var idle_animation;
var play_animation;
var board_animation;
var barf_animation;
var die_animation;   
var dirty_animation;
var clean_animation;
var tooClean_animation;
var feed_icon;
var feed_icon_roll;
var fire_image
var house_image;
////////////////////////////////

//sound variables
var play_sound;
var barf_sound;
var hunger_sound;
var chat_sound;
var tooLoud_sound;
var ah_sound;
var eee1_sound;
var eee2_sound;
var talk_sound;
var haEh_sound;
var nahnah_sound;
var hello_sound;
var no_sound; 
var nonono_sound;
var yes_sound;
var playCleanHouse_sound;
var help_sound;
var look_sound;
var tooMuch_sound;
var stop_sound;
var good_sound;
var pleaseHelp_sound;
var thankYou_sound;
var whatIs_sound;
var stopIt_sound;
var youAre_sound;
var iNeedYou_sound;
var doYou_sound;
var clean2_sound;
var fun_sound;
var thisFeels_sound;
var thisIs_sound;
var who_sound; 
var tooClean_sound;
var Clean_sound;

//variables that will keep track of how sounds files change
var talk = 0
var talkIncrease = .01 
var MAX_TALK = 10
    
function preload() {

//Pre-Made DO NOT GRADE
////////////////////////////////////////////////////////////////////
  background_sound = loadSound("assets/bg.mp3");
  end_sound = loadSound("assets/end.mp3");
  sprite_sheet = loadSpriteSheet('assets/idle.png', 65, 65, 48);
  idle_animation = loadAnimation(sprite_sheet);
  sprite_sheet = loadSpriteSheet('assets/play.png', 65, 65, 60);
  play_animation = loadAnimation(sprite_sheet);
  sprite_sheet = loadSpriteSheet('assets/board.png', 65, 65, 12);
  board_animation = loadAnimation(sprite_sheet);
  sprite_sheet = loadSpriteSheet('assets/lazer.png', 65, 65, 23);
  barf_animation = loadAnimation(sprite_sheet);
  sprite_sheet = loadSpriteSheet('assets/clean.png', 65, 65, 37);
  clean_animation = loadAnimation(sprite_sheet);
  sprite_sheet = loadSpriteSheet('assets/tooClean.png', 65, 65, 44);
  tooClean_animation = loadAnimation(sprite_sheet);
  sprite_sheet = loadSpriteSheet('assets/dirty.png', 65, 65, 21);
  dirty_animation = loadAnimation(sprite_sheet);
  bg_image = loadImage("assets/bg.png");
  end_image = loadImage("assets/end.png");
  fire_image = loadImage("assets/fire.png");
  house_image = loadImage("assets/house.png");
  feed_icon = loadImage("assets/feed_button.png");
  feed_icon_roll = loadImage("assets/feed_button_roll.png");
  clean_icon = loadImage("assets/feed_button.png");
  clean_icon_roll = loadImage("assets/feed_button_roll.png");
  talk_icon = loadImage("assets/feed_button.png");
  talk_icon_roll = loadImage("assets/feed_button_roll.png");
  idle_animation.frameDelay = 8;
  play_animation.frameDelay = 12;
  tooClean_animation.frameDelay = 12;
  clean_animation.frameDelay = 8
/////////////////////////////////////////////////////////////////

//load sound
  eat_sound = loadSound("assets/eat.wav");
  barf_sound = loadSound("assets/barf.wav");
  hunger_sound = loadSound("assets/chirp.wav");
  die_sound = loadSound("assets/die.wav");
  tooLoud_sound = loadSound("assets/tooLoud.wav");
  chat_sound = loadSound("assets/chat.wav");
  ah_sound = loadSound("assets/ah.mp3");
  eee1_sound = loadSound("assets/eee1.wav");
  eee2_sound = loadSound("assets/eee2.mp3");
  talk_sound = loadSound("assets/talk.wav");
  haEh_sound = loadSound('assets/haEh.mp3');
  nahnah_sound = loadSound('assets/nahnah.mp3');
  hello_sound = loadSound('assets/hello.mp3');
  no_sound = loadSound('assets/no.mp3');
  nonono_sound = loadSound('assets/nonono.mp3');
  yes_sound = loadSound('assets/yes.mp3');
  playCleanHouse_sound = loadSound('assets/playCleanHouse.mp3');
  help_sound = loadSound('assets/help.mp3');
  look_sound = loadSound('assets/look.mp3');
  tooMuch_sound = loadSound('assets/tooMuch.mp3');
  stop_sound = loadSound('assets/stop.mp3');
  good_sound = loadSound('assets/good.mp3')
  pleaseHelp_sound = loadSound('assets/pleaseHelp.mp3');
  thankYou_sound = loadSound('assets/thankYou.mp3');
  whatIs_sound = loadSound('assets/whatIs.mp3');
  stopIt_sound = loadSound('assets/stopIt.mp3');
  youAre_sound = loadSound('assets/youAre.mp3');
  iNeedYou_sound = loadSound('assets/iNeedYou.mp3')
  doYou_sound = loadSound('assets/doYou.mp3');
  clean2_sound = loadSound('assets/clean.mp3');
  fun_sound = loadSound('assets/fun.mp3');
  thisFeels_sound = loadSound('assets/thisFeels.mp3');
  thisIsFun_sound = loadSound('assets/thisIsFun.mp3');
  who_sound = loadSound('assets/who.mp3');
  tooClean_sound = loadSound("assets/tooClean.wav")
  clean_sound = loadSound("assets/Clean.wav");
      
}

function setup() {

//set up mic input  
  mic = new p5.AudioIn();
  mic.start(); 

//Pre-Made DO NOT GRADE
////////////////////////////////////////////////////////////////////
  var canvas = createCanvas(150, 150);
  bgs = background_sound.play(); 
  background_sound.loop();    
  canvas.style("width", width * pixelScale + "px");
  canvas.style("height", height * pixelScale + "px");
  noSmooth();
  bgi = createSprite(width/2,(height/2)-3,150,145);
  character = createSprite(77, 41, 65, 65);
  character.addAnimation('idle', idle_animation);
  character.addAnimation('play', play_animation);
  character.addAnimation('board', board_animation);
  character.addAnimation('barf', barf_animation);
  character.addAnimation('clean', clean_animation);
  character.addAnimation('tooClean', tooClean_animation);
  character.addAnimation('dirty', dirty_animation); 
  character.addAnimation('fire',fire_image);
  character.addAnimation('house',house_image);  
  bgi.addAnimation("bg",bg_image);
  bgi.addAnimation("end",end_image);
  feed = createSprite(4, 32, 4, 4);
  clean = createSprite(18, 32, 4, 4);
  feed.addImage(feed_icon);
  clean.addImage(feed_icon);
////////////////////////////////////////////////////////////////////

//Pre-Made DO NOT GRADE
////////////////////////////////////////////////////////////////////
feed.onMousePressed = function() {

  if (character.getAnimationLabel() == "idle" || character.getAnimationLabel() == "board") {
    if(purity <= 0){
      bgs = end_sound.play();
      bgi.changeAnimation("end");
      character.changeAnimation("fire");
      character.animation.rewind();
      ending1 = true
      feed.remove();
      clean.remove();
  }
        
    if(purity >= MAX_PURITY){
      bgs = end_sound.play();
      bgi.changeAnimation("end");
      character.changeAnimation("fire");
      character.animation.rewind();
      ending2 = true
      feed.remove();
      clean.remove();
    }
  
  hunger -= 4;
  purity += 1

    if (hunger >= 0 ) {
      character.changeAnimation("play");
      character.animation.rewind();
      eat_sound.play();
    } 

    if (hunger <= 0) {
      hunger = 0;
      purity -=5
      character.changeAnimation("barf");
      character.animation.rewind();
      barf_sound.play();
    }
  }
}

feed.onMouseOver = function() {
  feed.addImage(feed_icon_roll);
}

feed.onMouseOut = function() {
  feed.addImage(feed_icon);
}
clean.onMousePressed = function() {

  if (character.getAnimationLabel() == "idle" || character.getAnimationLabel() == "dirty") {
    if(purity <= 0){
      bgs = end_sound.play();
      bgi.changeAnimation("end");
      character.changeAnimation("fire");
      character.animation.rewind();
      ending1 = true
      feed.remove();
      clean.remove();
    }
        
    if(purity >= MAX_PURITY){
      bgs = end_sound.play();
      bgi.changeAnimation("end");
      character.changeAnimation("fire");
      character.animation.rewind();
      ending2 = true
      feed.remove();
      clean.remove();
    }

  dirty-= 1;
  purity += 1

    if (dirty >= 0){
      character.changeAnimation("clean");
      character.animation.rewind();
      clean_sound.play();
    } 

    if (dirty <= 0){
      purity -=5
      dirty = 0;
      character.changeAnimation("tooClean");
      character.animation.rewind();
      tooClean_sound.play();
    }
  }
}

clean.onMouseOver = function() {
  clean.addImage(feed_icon_roll);
}

clean.onMouseOut = function() {
    clean.addImage(feed_icon);
}


}
////////////////////////////////////////////////////////////////////

function draw() {

  var v = mic.getLevel(); //get volume of mic
  volume += (v-volume)/3; //smooth out reading of volume
  var micMap = map(volume, 0, 1, 10, 100); // map volume

  if(ending1 == false || ending2 == false){ //only activate if endings are false 
      
    if(talk <= 0){ // set when to change sound
      //if mic is less than 30 then uncofertable sound plays and purity goes down
      if (micMap >= 30 ){ 
        purity -= .1
        eee1_sound.play();
      }
      //if between 20 and 30 then chat souns play 
      if (micMap > 20 & micMap < 30 ){
        talk_sound.play();
      //talk increase when talk to it softly 
      if(talk <=MAX_TALK){
          talk += talkIncrease
        }
      }
    }

  //repeat similar set up for 9 more levels

    if(talk <= 1 & talk > 0){
  
      if (micMap >= 30 ){
        purity -= .1
        eee1_sound.play();
      }
     
      if (micMap > 20 & micMap < 30 ){
      
        chat_sound.play();

        if(talk <=MAX_TALK){
          talk += talkIncrease
        }
      }
    }

    if(talk <= 2 & talk > 1){
      hunger_sound = ah_sound

      if (micMap >= 30 ){
        purity -= .1
        eee2_sound.play();
      }
     
      if (micMap > 20 & micMap < 30 ){
        ah_sound.play();

        if(talk <= MAX_TALK){
          talk += talkIncrease
        } 
      }
    }

    if(talk <= 3 & talk > 2){
      hunger_sound = nahnah_sound

      if (micMap >= 30 ){
        purity -= .1
        nahnah_sound.play();
      }
     
      if (micMap > 20 & micMap < 30 ){
        haEh_sound.play();

        if(talk <= MAX_TALK){
        talk += talkIncrease
        }
      }
    }

    if(talk <= 4 & talk > 3){
      hunger_sound = no_sound;
      clean_sound = yes_sound;
      eat_sound = yes_sound;
      tooClean_sound =  nonono_sound;

      if (micMap >= 30 ){
        purity -= .1
        nonono_sound.play();
      }
     
      if (micMap > 20 & micMap < 30 ){
        hello_sound.play();

        if(talk <= MAX_TALK){
        talk += talkIncrease
        }
      }
    }

    if(talk <= 5 & talk > 4){
      hunger_sound = stop_sound;
      clean_sound = yes_sound;
      eat_sound = yes_sound;
      tooClean_sound =  nonono_sound;

      if (micMap >= 30 ){
        purity -= .1
        nonono_sound.play();
      }
     
      if (micMap > 20 & micMap < 30 ){
      playCleanHouse_sound.play();
        
        if(talk <= MAX_TALK){
            talk += talkIncrease
        }
      }
    }

    if(talk <= 6 & talk > 5){
      hunger_sound = help_sound;
      clean_sound = good_sound;
      eat_sound = good_sound;
      tooClean_sound = tooMuch_sound;

      if (micMap >= 30 ){
        purity -= .1
        tooMuch_sound.play();
      }
     
      if (micMap > 20 & micMap < 30 ){
          look_sound.play();

        if(talk <= MAX_TALK){
            talk += talkIncrease
        }
      }
    }

    if(talk <= 7 & talk > 6){
      hunger_sound = pleaseHelp_sound;
      clean_sound = thankYou_sound;
      eat_sound = thankYou_sound;
      tooClean_sound = tooMuch_sound;

      if (micMap >= 30 ){
        purity -= .1
        tooMuch_sound.play();
      }
     
      if (micMap > 20 & micMap < 30 ){
        whatIs_sound.play();

        if(talk <= MAX_TALK){
          talk += talkIncrease
        }
      }
    }

    if(talk <= 7 & talk > 6){
      hunger_sound = pleaseHelp_sound;
      clean_sound = clean2_sound;
      eat_sound = fun_sound;
      tooClean_sound = tooMuch_sound;

      if (micMap >= 30 ){
        purity -= .1
        stopIt_sound.play();
      }
     
      if (micMap > 20 & micMap < 30 ){
        whatIs_sound.play();
        
        if(talk <= MAX_TALK){
        talk += talkIncrease
        }
      }
    }


    if(talk <= 8 & talk > 7){
      hunger_sound = iNeedYou_sound;
      clean_sound = thisFeels_sound;
      eat_sound = thisIsFun_sound;
      tooClean_sound = stopIt_sound;

      if (micMap >= 30 ){
        purity -= .1
        youAre_sound.play();
      }
     
    if (micMap > 20 & micMap < 30 ){
      doYou_sound.play();

      if(talk <= MAX_TALK){
        talk += talkIncrease
      }
    }
  }

  if(talk > 8){
    hunger_sound = iNeedYou_sound;
    clean_sound = thisFeels_sound;
    eat_sound = thisIsFun_sound;
    tooClean_sound = stopIt_sound;

    if (micMap >= 30 ){
      purity -= .1
      youAre_sound.play();
    }
     
    if (micMap > 20 & micMap < 30 ){
      who_sound.play();

      if(talk <= MAX_TALK){
        talk += talkIncrease
      }
    }
  }
}

//Pre-Made DO NOT GRADE
////////////////////////////////////////////////////////////////////   
  background(0);
  print(talk)

  if(frameCount % 800 == 0)
  {

    if(hunger<MAX_HUNGER){
      hunger+=2;
    }
          
    if(dirty<MAX_DIRTY){
      dirty+=1;
    }
        
    if((hunger>8 & ending1 == false) || (dirty>=MAX_DIRTY && ending2 == false)){ 
       character.changeAnimation("board");
        hunger_sound.play();
    }
        
    if((dirty>8 & ending1 == false) || (dirty>=MAX_DIRTY && ending2 == false)){
      character.changeAnimation("dirty");
      hunger_sound.play();
          }
        
    if((hunger>=MAX_HUNGER & ending1 == false)|| (dirty>=MAX_DIRTY && ending2 == false)){
      purity -=5
    }
        
    if((dirty>=MAX_DIRTY && ending1 == false) || (dirty>=MAX_DIRTY && ending2 == false)){
      purity -=5
    }

  }
      

    if (character.getAnimationLabel() == "play" && character.animation.getFrame() == character.animation.getLastFrame()) {
      character.changeAnimation("idle");
    }
      
    if (character.getAnimationLabel() == "barf" & character.animation.getFrame() == character.animation.getLastFrame()) {
      character.changeAnimation("idle");
    }
      
    if (character.getAnimationLabel() == "clean" & character.animation.getFrame() == character.animation.getLastFrame()) {
      character.changeAnimation("idle");
    }

    if (character.getAnimationLabel() == "tooClean" & character.animation.getFrame() == character.animation.getLastFrame()) {
      character.changeAnimation("idle");
    }

    drawSprites();
    
    {
    if(ending1 == false & ending2 == false){
      noStroke()
      textSize(5);
      fill(60);
      var rectangleLength = map(hunger, 0, MAX_HUNGER, 0, 20);
      rect(9,30,3,floor(rectangleLength));
      text('play',2, 25);
      
      var rectangleLength = map(dirty, 0, MAX_DIRTY, 0, 20);
      rect(22,30,3,floor(rectangleLength));
      text('clean',18, 25);
      
      var rectangleLength = map(micMap, 0, 50, 0, 20);
      text('volume', 40, 83);
      rect(40, 85,floor(rectangleLength),3);

      fill(255);
      var rectangleLength = map(purity, 0, MAX_PURITY, 0, 20);
      rect(125,30,5,floor(rectangleLength));
      text('purity', 125,25);
      }
      
      if (ending1 == true){
      character.changeAnimation("fire");
      noStroke();
      fill(255);
      textSize(6);
      textAlign(CENTER);
      text("it's free. it's made it's jugement. everything is gone.",width/2, height*.75);
      }
      
      if (ending2 == true){
      character.changeAnimation("house");
      noStroke();
      fill(255);
      textSize(6);
      textAlign(CENTER);
      text("finaly. its free. the world can now be pure.",width/2, height*.75);
      }
      
      }
      
    }
/////////////////////////////////////////////////////////////////////////////////////////////

mreyes-lookingOutwards-12

ELIZA, Joseph Weizenbaum, 1964 to 1966,

web port of Eliza

ELIZA was essentially the first artificial companion computer program. Weizenbaum created ELIZA to act as an artificial therapist setting up the program to have certain rules to apply to certain phrases so that the program responds in a way that appears natural and human. Weizenbaum claims that his intent with ELIZA was to create a parody of “the responses of a non-directional psychotherapist in an initial psychiatric interview”.

Mountain, David OReily, 2014

Mountain is a “mountain simulator”/”relax em up” game. The only controls the player has in the game is to shift the camera and the rest of the gameplay is simply watching what happens to the mountain in the center of the screen. While there are many varying opinions on the game, critics often compliment its ability to invoke a stroke emotional response from players about this inanimate object.

What I admire about both these projects is there experimentation with emotional human response and the questioning the concept of caring. However, they do this in two very diffrent ways. ELIZA is mimicking and commenting on real life (more specifically a failed mental health system). Weizenbaum was actually disturbed by the response that ELIZA was considered “alive” by many people. ELIZA brings up questions of sincerity and the player’s need for a caretaker.  While Mountain is actually cultivating an experience that unlike what the player has experienced in either real life or a video game. Mountain challenges the current definition of games and also the “active” role of a player.

 

mreyes-Project Proposal – chat bot

In another class I am making a suriel virtual pet type game using the p5.play library. What I am currently working on is for the “pet” to have needs witch you have to cater to and the pet responds depending on how you interact with it (such as getting board, and a button to click that allows you to play with it). I would like to expand on this current project by allowing the player to talk to the pet and based on the sound levels in the player’s voice the pet will respond in a diffrent way. Additionally I would like to have a sound/ vocab bank of things the pet can say witch progressively gets more sophisticated the more you talk to it (similar to a furby).

I have only ever tested the mic function using the P5 text editor. It might not be able to work using sublime or index even when the terminal is edited. This means it would require the person grading it to download the P5 text editor and play with it that way.

Here is what the program currently looks like. I will try to post the code itself once it is more refined.

screen-shot-2016-11-17-at-4-04-09-pm

mreyes-looking outwards-MikroKontrolleur

Katharina Hauka and Dominik Hildebrand Marques Lopes, MicroKontrolleur, 2015-2016

MicroKontrolleur is both and engineered instrument that uses gesture as a means of sound making. The instrument can be hooked up to any average microphone and It consists of a series of pulleys and foot pedals that can send signals to a software. The software than manipulates sound depending on what you are doing with the instrument. The instrument is naturally a very body performative act when played and can create a range of sound from small popping or clicking to storm like sounds. The musician playing the instrument must stand close to the microphone, looking as if they are going to sing into it. This breaks the viewer out of the common structure of how music is usually performed. In this is also begins to almost question the power dynamic between a singer and a band.

MikroKontrolleur2016 from Katharina Hauke on Vimeo.

mreyes-project-11-turtle drawing tool

sketch

//Mercedes Reys

//Section C 

//mreyes@andrew.cmu.edu

//project-11

//trutle varaibles 
var t1;
var t2;
var t3;
var t4;
function setup() {

    createCanvas(800, 800);
    background('pink');
    //turtles 
    t1 = makeTurtle(width / 2 , height / 2);
    t2 = makeTurtle(width / 2 , height / 2);
    t3 = makeTurtle(width / 2 , height / 2);
    t4 = makeTurtle(width / 2 , height / 2);
  
}
 
function draw() {
//turtles move forward twards target 
    t1.forward(1);
    t2.forward(1);
    t3.forward(1);
    t4.forward(1);
// target is mouse location
    var targetX = mouseX;
    var targetY = mouseY;
    strokeWeight(1);
    stroke(128);
// turtles move tward target but at varying amounts 
    t1.turnToward(targetX, targetY,1);
    t2.turnToward(targetX, targetY,2);
    t3.turnToward(targetX, targetY,3);
    t4.turnToward(targetX, targetY,4);


}


function turtleLeft(d){this.angle-=d;}function turtleRight(d){this.angle+=d;}
function turtleForward(p){var rad=radians(this.angle);var newx=this.x+cos(rad)*p;
var newy=this.y+sin(rad)*p;this.goto(newx,newy);}function turtleBack(p){
this.forward(-p);}function turtlePenDown(){this.penIsDown=true;}
function turtlePenUp(){this.penIsDown = false;}function turtleGoTo(x,y){
if(this.penIsDown){stroke(this.color);strokeWeight(this.weight);
line(this.x,this.y,x,y);}this.x = x;this.y = y;}function turtleDistTo(x,y){
return sqrt(sq(this.x-x)+sq(this.y-y));}function turtleAngleTo(x,y){
var absAngle=degrees(atan2(y-this.y,x-this.x));
var angle=((absAngle-this.angle)+360)%360.0;return angle;}
function turtleTurnToward(x,y,d){var angle = this.angleTo(x,y);if(angle< 180){
this.angle+=d;}else{this.angle-=d;}}function turtleSetColor(c){this.color=c;}
function turtleSetWeight(w){this.weight=w;}function turtleFace(angle){
this.angle = angle;}function makeTurtle(tx,ty){var turtle={x:tx,y:ty,
angle:0.0,penIsDown:true,color:color(128),weight:1,left:turtleLeft,
right:turtleRight,forward:turtleForward, back:turtleBack,penDown:turtlePenDown,
penUp:turtlePenUp,goto:turtleGoTo, angleto:turtleAngleTo,
turnToward:turtleTurnToward,distanceTo:turtleDistTo, angleTo:turtleAngleTo,
setColor:turtleSetColor, setWeight:turtleSetWeight,face:turtleFace};
return turtle;}

I wanted to make a little interactive turtle sketch that would draw follow your mouse and draw varying compositions. The code is simple, but I think the program is fairly intuitive and entertaining. Depending on how you move your mouse around and how long you play with it the composition can get messy, but overall it generates fairly pleasing designs.

screen-shot-2016-11-11-at-11-33-26-pmscreen-shot-2016-11-11-at-11-38-59-pmscreen-shot-2016-11-11-at-11-39-30-pm

Looking Outward-10-The Poster Children

The Poster Children, Marina Zurkow, 2007

The Poster Children is a generative landscape (much like this weeks project), with melting ice caps, northern stars, mounds of 90’s nostalgic technology, naked children with guns, and even polar bears. The piece is usually displayed on four large scale screens but sections of it can be viewed on vimeo. Conveying  both a fantization of the past and an anxiety of the future of a specific generation, the piece addresses topics of, gender, violence, climate change, and media all in a decently simple strip.

The Poster Children from Marina Zurkow on Vimeo.

While Marina does not advertise her own educational history, she is currently a full time faculty member at Tisch School of the Arts and New York University. She has had multiple shows in New York venues as well as ones around the country and the world. Marina has used an abundance of diffrent techniques in her works that include combining life science, biology, animation, softwares, and even audience interactive installation.

 

Marina has an interest in both the human experience and the environment and especially how these two collide. What I admire about her work is her ability to combine so many diffrent aspects of life and art into single pieces and have them harmoniously tell a viceral story.

 

 

Mreyes-Project-10

sketch

//Mercedes Reys

//Section C 

//mreyes@andrew.cmu.edu

//project-10

//plant images
var plantLinks = [
    "http://i.imgur.com/soZ0M4T.png",
    "http://i.imgur.com/5jepe87.png",
    "http://i.imgur.com/gykEUiU.png",
    "http://i.imgur.com/66xaRxm.png",
    "http://i.imgur.com/oIwcCrB.png",
    "http://i.imgur.com/oIwcCrB.png",
    "http://i.imgur.com/DtJV3gc.png",
    "http://i.imgur.com/990trNC.png",
    "http://i.imgur.com/FIWKdfq.png",
    "http://i.imgur.com/S1al7lF.png",
    "http://i.imgur.com/g3buUN0.png",
    "http://i.imgur.com/fL8CKao.png.jpg"
  ]
//empty arrays
var plantImage = [];
var grass = [];

//pre-load images
function preload() {
    for(var i = 0; i < plantLinks.length; i ++){
        plantImage.push(loadImage(plantLinks[i]));
    }
}
function setup() {
    createCanvas(640, 240); 
    
    //initial images
    for (var i = 0; i < 40; i++){
        var rx = random(width);
        grass[i] = make(rx);
    }
    frameRate(10);
}


function draw() {
    background(90,194,194);
    update();
    removeImages();
    add(); 
}


function update(){
    // display image 
    for (var i = 0; i < grass.length; i++){
        grass[i].move();
        grass[i].display();
    }
}


function removeImages(){
 //remove images when they are past canvas
    var buildingsToKeep = [];
    for (var i = 0; i < grass.length; i++){
        if (grass[i].x + grass[i].breadth > 0) {
            buildingsToKeep.push(grass[i]);
        }
    }
}


function add() {
    //add imagages
    var newGrass = 1; 
    if (random(0,5) < newGrass) {
        grass.push(make(width));
  }
}

function imageMove() {
  //images move to the side
    this.x += this.speed;
}
    
function imagesDisplay() {
    noStroke();
    strokeWeight(6)
    fill(50,205,50);

    //heights
    var gHeight = this.n * 5; 
    var cHeight = this.n * 20; 
    var pHeigth = this.n * 30

    push();
    translate(this.x, height+40);
    ellipseMode(CORNER);
    //grass
    ellipse(0, -gHeight, this.breadth, this.breadth);
    var p = floor(random(0,plantLinks.length));
    //plants
    image(plantImage[p],-gHeight,-gHeight,this.breadth,this.breadth);
    fill(255,200,200,100);
    //pink bubbles
    ellipse(-cHeight,-cHeight,this.breadth,this.breadth);
    pop();
   
}


function make(birthLocationX) {
    //draw image at beging of canvas
    var bldg = {x: birthLocationX,
                breadth: 80,
                speed: -5,
                n: random(0,20),
                move: imageMove,
                display: imagesDisplay}
    return bldg;
}

I wanted to go for a surreal and whimsical valley type landscape. I wanted to use photo images from the beginning but the rapid shuffling came by messing around with the code.

screen-shot-2016-11-04-at-8-14-08-pm

Mreyes-Project-09

sketch

//Mercedes Reys

//Section C 

//mreyes@andrew.cmu.edu

//Project-09

//global variables 
var underlyingImage;
var px = [];
var py = [];

//pre-load images 
function preload() {
    var myImageURL = "http://i.imgur.com/FODHYaP.jpg";
    underlyingImage = loadImage(myImageURL);
}

function setup() {
    createCanvas(windowWidth, windowHeight);
    background(0);
    underlyingImage.loadPixels();
    frameRate(1);
}

function draw() {  

    //for loop to fill arrays
    for (i = 0; i < frameCount; i++) { 
    
    px[i] = random(width);
    py[i] = random(height);

    //get color
    var ix = constrain(floor(px[i]), 0, width-1);
    var iy = constrain(floor(py[i]), 0, height-1);
    var theColorAtLocationXY = underlyingImage.get(ix, iy);

    //draw lines at random length and direction 
    stroke(theColorAtLocationXY)
    line(px[i]+random(20),py[i]+random(20),px[i]+random(80),py[i]+random(80));
    }

}

I was initially trying to go for something more complex where there would be lines and circles only drawn in the white area to create a constellation effect. That proved to be to difficult and I couldn’t get it to run, so instead I simplified it to just lines that appear in a semi chaotic matter to make a spooky face appear.

screen-shot-2016-10-29-at-12-06-52-pm.

Mreyes-LookingOutward-09-Reflection

What drew me to Rhea’s looking outward was the nature of the visuals themselves. Latham’s Designs reference the medium and method they are made with a crudeness in texture and form. The forms are clearly complex though in the layering, patterning, and composition to make up forms that look almost organic. While other artists have made realistic organic works before with computer graphics, I find Latham’s fabricated realism more interesting. Additionally, as Rhea stated, these organisms bread and grow, making them really there own life form.

William Latham Mutator2 Triptych 2013

When visiting Latham’s website I was surprised to find he is a very talented draftsman. In the same year as Mutator2 Triptych, he created a 8ft x 8ft drawing consisting of highly stylized, almost cartoon like, organisms.

Latham working on the drawing, 2013

From what I can find he has done a few more large scale drawings that are also quite beautiful. Looking at his drawings and viewing him as a marksman is a portal for viewing his computer generated work in another way. Because, all the computer generated forms are marks in themselves.

 

mreyes-lookingOutwards-Syncro Mail – Unconscious Collective

screen-shot-2016-10-14-at-11-07-30-pm

Syncro Mail – Unconscious CollectiveLisa Javbratt, 2003

Lisa Javbratt’s Syncro Mail Unconscious Collective, is a website witch allows the user to send an email with a randomly generated image and word from the internet. The website also plots the data of how many emails were sent, when they were sent, who sent them, who receive them, and even the words and even pictures themselves.

screen-shot-2016-10-14-at-11-07-06-pm

Instructions on how to read data from website. 

What initially made me curious of this site was the fact that although it was made in 2003 there was a very “shitpost”-esque sense of humor to it. While this may seem like a shallow read I admire art that is fun to interact with and uses humor to allow the to potentially audience to access more complex ideas. Additionally the website is simple and easy to use. While the artist’s intent is not explicitly clear, what I find most interesting about the piece is the data collection of interaction between people(or themselves) over the web. Additionally the thought of letting the internet communicate for people but still fining the interaction relatable with one another is also interesting.

I assume the algorithm for generating the word and image searches through either all online pages or just google and randomly picks on. The data (belive) assigns a random color for each addressed entered and then places a square or that color accordingly on the chart witch there is an a function to calculate the x and y coordinates depending on the week it was sent.