ashleyc1-LookingOutwards-11

WE is an interactive, immersive sound installation by the studio Let’s and specifically designed and programmed by Andy Arkley, Peter Lynch, and Courtney Barnebey. First exhibited in Seattle’s MadArt event, WE’s creators wanted to create a place where a shared community and experience could be built-moving beyond people interacting with the piece but also with each other. The project allows for up to 12 participants where they can interact with controllers to create musical sequences. The installation used light bulbs, music, and mapped video projections to synchronize with the music and create an overwhelming, sensual experience. What makes this interactive sound installation unique from others is that this machine doesn’t stay silent when there aren’t any participants; making it more initially inviting to participants. Any one can also start interacting with the controllers and feel like they’re not messing up any previously established sound because the musical sequences aligned to the controllers are programmed to synchronize with each other. So even though participants have choice in what to play, all of the sounds still work well together. I think this feature is what makes this piece particularly successful.

Sources:

https://creators.vice.com/en_us/article/vvaeja/you-can-play-these-giant-sculptures-like-musical-instruments

http://letspresents.com/wewe/

Bettina-LookingOutwards11-SectionC

Above: screenshot of Carsten Nicolai’s work from vimeo. (click image for video)

The only sound artist I knew of prior to this assignment was Ryoji Ikeda, so through searching “artists like Ryoji Ikeda” I found the following article. Carsten Nicolai piqued my interest because of his work in “altering audiovisual perception”. I think it’s interesting how we often blend our 5 senses; perhaps we visually represent sound or taste, or aurally represent touch. I can see there being pre-determined constraints mapping one variable to another so one sensory input informs the other.

It is nevertheless interesting that despite his work in representing sound visually, the visuals he makes sounds very sterile and technical. He seems to emphasize texture and lines, but I’m interested to see what computation could do with colors as well.

Above: screenshot from google images of Nicolai’s work

 

Jihee Kim_SectionD_Project-11-Composition

jiheek1_project11

//Jihee Kim
//15-104 MWF 9:30
//jiheek1@andrew.cmu.edu
//Project-11-Composition
//section D


var myTurtle;
var step = 10; // each tick (segment) is a multiple of 10
var angle = 60; // the turtle almost always turns 60 degrees on its way

var snow = []; // an array of all snow particles



function setup() {
    createCanvas(462, 400);
    // initialize snow
   for (var s = 0; s < 1500; s++){ // loop through snows
       var snowPositionX = random(width); // the x position of the snow is
                                          // random along the width of canvas
       var snowPositionY = random(0, height);
       snow[s] = makeSnow(snowPositionX, snowPositionY);
   }
}


function draw() {
    //gradient background
    // draw the gradient background for the blue snowy sky
    var top = color(188, 232, 231); // light blue
    var bottom = color(35, 232, 227); // darker sky blue
    Gradient(0, width, top, bottom);

    myTurtle1 = makeTurtle(3, 75 * sqrt(3) + 4); // place the first turtle
    myTurtle2 = makeTurtle(3, 150 * sqrt(3) + 4); // place the second turtle
    myTurtle3 = makeTurtle(3, 225 * sqrt(3) + 4); // place the second turtle
    turtleX = 3; // keep track of turtle's x position
    // while the distance between turtle1 and the end of canvas is greater
    // than 0, keep drawing the pattern
    while (myTurtle1.x < width) {
        turtleX = turtleX + 320; //disposition of each Sierpinski tri. is 320
        myTurtle1.penDown(); // snowt Sierpinski Triangle
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.right(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.forward(step);
        myTurtle1.left(angle);
        myTurtle1.penUp(); // end Sierpinski Triangle
    }
    while (myTurtle2.x < width) {
        turtleX = turtleX + 320;
        myTurtle2.penDown(); // snowt Sierpinski Triangle
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.right(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.forward(step);
        myTurtle2.left(angle);
        myTurtle2.penUp(); // end Sierpinski Triangle
    }
    while (myTurtle3.x < width) {
        turtleX = turtleX + 320;
        myTurtle3.penDown(); // snowt Sierpinski Triangle
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.right(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.forward(step);
        myTurtle3.left(angle);
        myTurtle3.penUp(); // end Sierpinski Triangle
        }
     //SNOW
      animateSnow();
      hideSnow();
      addSnow();
}


//BACKGROUND (SKY GRADIENT)
function Gradient (a, b, top, bottom) {
	  // top to bottom gradient (background)
    for (var i = a; i <= height; i++) {
        var mappedC = map(i, a, a+b, 0, 1);
        var c = lerpColor(top, bottom, mappedC);
        stroke(c);
        strokeWeight(2);
        line(a, i, a+b, i);
	  }
}


//SNOW FLAKES FUNCTIONS
function drawSnow() {
	  noStroke();
	  // make snows seem like they're shining by manipulating transparency
	  var transparency = random(20, 100);
	  fill(255, transparency);
	  ellipse(this.x, this.y, 4, 4);
}


function animateSnow() {
    for (var s = 0; s < snow.length; s++) {
        snow[s].move();
        snow[s].draw();
    }
}


function hideSnow() {
    // make the snow particles that are actually within the canvas to stay
    // if not, hide them
    var snowOnCanvas = [];
    for (var s = 0; s < snow.length; s++){ // go through all snow
        // if the snow is on the canvas
        if (0 < snow[s].x < width) {
            snowOnCanvas.push(snow[s]); // draw the snows that are on the
                                        // canvas
        }
    }
    snow = snowOnCanvas; // update the snows to the ones that are actually
                         // on the canvas
}


function addSnow() {
    var randomValSnow = 0.01; // a really small chance of snows randomly
                              // being added/generated
    if (random(0,1) < randomValSnow) { // because it is not that likely for a
                                      // randomly chosen value to be less than
                                      // 0.0001, this will be a rare occasion
        var snowPositionX = random(0, width);
        var snowPositionY = random(0, height);
        snow.push(makeSnow(snowPositionX, snowPositionY)); // generate new
                                                           // snows along
                                                           // the canvas
    }
}


function snowMove() {
	//move snows by updating x coordinate
	this.x += this.speed;
}


function makeSnow(snowPositionX, snowPositionY) {
	  var snow = {x: snowPositionX,
				       y: snowPositionY,
				       speed: -random(0, .005),
				       move: snowMove,
			         draw: drawSnow}
	  return snow;
}


  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);
        strokeJoin(MITER);
        strokeCap(PROJECT);
        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(255),
                    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;
  }

  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);
        strokeJoin(MITER);
        strokeCap(PROJECT);
        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(120, 180, random(180, 255)),
                    weight: 3,
                    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;
  }

For this project, I used a turtle to draw a different form. I used three different turtles that generate lines of Sierpinski triangles. These geometries formed by turtles come together to suggest at a crystal, snowflake-like form. By adding dynamic elements to the colors of the background and the stroke of turtles, as well as adding sparking snowflakes, I was able to create an interesting winter themed pattern. I used this opportunity to apply mathematics to generate natural forms and to create a wallpaper inspired by the movie Frozen, expanding on the project that we had before.

screenshot of project
each component
concept sketch

Jiheek1 (Section D)– LookingOutwards-11

Eunoia from Lisa Park on Vimeo.

Eunoia by artist Lisa Park is a performative piece that produces music through data. During the performance, the artist herself wears a NeuroSky EEG headset that measures her brain activities and convert the data into sound waves that vibrate dishes of water set on top of speakers.

the artist herself and the performative elements of the project

Data collected here includes frequencies, Alpha, Beta, Delta, Gamma and Theta and the emotion/mental states, “Attention” and “Meditation”. The sound waves, depending on their wavelength and amplitude, would create different sounds and visuals (the water particles glistening as the dishes are bouncing up and down due to the vibrations of the speaker beneath).

data that is translated into sound

I especially find this project interesting because of the way Park translates her emotion and mental state both visually and audibly. The result is a beautiful, serene piece of computational music that in a sense allows you to connect with the artist. I also admire the randomness that derives from the “instruments.” The way in which the water droplets are going to move in reaction to the brainwaves and even the data collected here (brain activities) are rather unpredictable.

from brainwaves to sound waves to speakers to water plate

Park’s concentration on people and their activities along with her interest in quantifying, visualizing such data are successfully manifested in this particular project. The project after its creation in 2013 was followed by a sequel, “Euronia II” in 2014.

More information on the project can be found on the Project Page

sntong-LookingOutwards-11- Computer Music

Chris Carlson is a sound artist and software developer. He holds a M.A. from Stanford University’s Center for Computer Research in Music and Acoustics and a B.S. in Physics from James Madison University. His award winning application he developed, the Borderlands Granular, is new visually and tacitly interactive for people to develop music using “grains”. The video below is a short demo showing how users can manipulate music and visual icons that is related to the sound that is being emitted. In one of his recent performance, Body Drift , Carlson partners with Jakob Marsico to an immersive audiovisual performance.

 

ghou-lookingoutwards-11

Martin Backes

This week I am doing my Looking Outwards on a technologist, hacker, DJ, and composer Martin Backes. He is based in Berlin, Germany.

This piece is called I am Sitting in a Machine; it is a custom-made computer algorithmic work that begins with a recording of an artificial human voice that recites the text given in the video. The voice is then run through an MP3 encoder multiple times to distort the voice by revealing the data format. It’s interesting how this work strips away the more “human” parts of the speaking voice to create the automated voice and the screeching sound towards the later parts.

 

afukuda-LookingOutwards-11

Game of Skill 2.0

[Video showcasing the installation]

Game of skill 2.0 by Christine Sun Kim is an interactive installation, resembling a zipline, where a text about the future written by Kim and voiced by a museum intern (as she is deaf since birth) is played at different levels and speeds depending on the direction and speed of the participant. I find this project compelling, as she conveys listening, which is often regarded as a passive activity, as something requiring physical labor in order to “acquire”. And being deaf since birth, I think this project communicates her personal struggles, making it a meaningful project. The technical side of the project involves the use of velcro, magnets, custom electronics and the intern’s voice.

[A snapshot of how users interact with the installation]

Link | http://christinesunkim.com/work/game-of-skill-2-0/

Work | Christine Sun Kim. Games of Skill 2.0. October 11 2015 – March 7 2016

alchan-Looking Outwards 11

example of the Continuator (2000) by François Pachet in use, with Albert van Veenendaal on piano

The Continuator (2000) is a computational music generation system by Francois Pachet. It works in conjunction with a musician to improvise real-time musical sequences, creating melodies that may be indistinguishable to those played by the human musician (in the video shown, it’s being used as part of a “Musical Turing Test” to see if humans can tell the computer-generated music apart from the human-generated music).

I’m really interested in the way the Continuator works in conjunction with a musician, as it uses the musician’s playing as a reference point to come up with new but stylistically similar tunes. I like the idea of using algorithms in partnership with human creativity, as that seems to open up more possibilities than just trying to create an algorithm that will recreate human abilities perfectly.

agusman-LookingOutwards-“Sound Objects” by Zimoun

Zimoun Sound Objects Compilation Video

Studio Zimoun’s Website

This series of “sound objects”, created by installation artist Zimoun are architectural soundscapes constructed from simple and functionally components. These components have ranged from ping pong balls, chains, cardboard boxes, springs and slats of wood, usually “activated” or displaced using an array of simple servo motors. While some of their more elaborate collaborative pieces incorporate plotters and hot plates, the majority of these sound objects call not to their complex build but the sonically resonant qualities of the commonplace materials used, especially in mass quantities. The architectural systems constructed from these individual sound objects articulate the tension between the orderly and the chaotic (or the chaotic within the orderly). Rather than a true sound being produced, these “sound objects” are characterized as emitting more of an acoustic hum that feels industrial, yet elegant.

I am extremely interested in the fabrication and facilitated performance of large-scale patterns- how intimate sonic and visual experiences can unfold from an environment, rather than an encapsulated piece of media. I also love how, through analog materials and motion, the “computational” aspects of this piece are downplayed in a very elegant way. To me, this really emphasizes what computational art is actually about- not the depictions of technology but of ideas. That being said, large-scale installations with functionality like these “sound objects” could not be accomplished easily without computation. The vastness of these patterns play to the computer’s ability to process large quantities of information and execute many outputs simultaneously.

adev_Project_10

adev_Project_10

//Aisha Dev
//adev@adnrew.cmu.edu
//Section E
// Project 10


var frames = [];
var sm1 = - 0.00006;
var sm2 = - 0.000065;
var sm3 = - 0.00005;
var sm4 = - 0.0001;
var sm5 = - 0.0003;
var detail1 = 0.005;
var detail2 = 0.003;
var detail3 = 0.003;
var detail4 = 0.001;
var detail5 = 0.0015;

var trees = [];
var bwTrees = 0;

// var playlist = ["Across The Unverse", "Aint No Sunshine", "All Along The Watchtower", "American Pie", "Anywhere Is", "Bennie and The Jets", "Blackbird", "Blowin in The Wind",
// "Blue Jean Baby", "Bridge Over Troubled Water", "Budapest", "A Case of You", "Comfortably Numb", "Catch the Wind", "Cowgirl in the Sand", "Crazy Love", "Come Together", "Dancing in the Dark",
// "Dont Think Twice Its Alright", "Hallelujah", "Hear of Gold", "Heavenly Day", "Hey Jude", "Ho Hey", "Home", "I See Fire", "Flight Attendant", "Just Like A Woman", "Liar", "Knights in White Satin",
// "Lady Lady Lay", "Layla", "Leave Your Lover", "Lodi", "The Long and Whinding Road", "Long as I Can See The Light", "Losing You", "Sospesa", "Me and Bobby Mcgee", "More Than a Woman",
// "Mr Tambourine Man", "No Woman No Cry", "Oh Sister", "Old Man", "Only Love", "Over The Creek", "Piece of My Heart", "Proud Mary", "Roxanne", "Something", "Song To Woody", "Songbird", "Sound of Silence", 
// "Start Over", "Stop This Train", "Take Me to Curch", "The Thrill is Gone", "The Times They Are a Changin", "Fast Cars", "Underneath", "While My Guitar Gently Weeps", "Wholl Stop The Train", "Yesterday",
// "Wish You Were Here", "You Are So Beautiful", "Our House", "Fortunate Son", "Warning Sign", "Like A Rolling Stone", "Jokerman"];
// var index = 0; 



function setup() {
    createCanvas(480,200);
   
 for (var i = 0; i < 20; i++){ 
        var rx = random(width);
        trees[i] = makeTree(rx);
    }
      
    frameRate(10);

}
 
function draw() {
    //functions
    makeBackground();
    makeMountains();
    //songs();
   drawTree();
    addTree();

   
}



function makeBackground(){
   background(30, 50, 100);


   
}


function makeMountains(){
    noStroke();
    
    //highest mountain range
    fill(174, 153, 139);
    beginShape(); 
    for (var mOne = 0; mOne < width; mOne++) {
        var speedOne = (mOne * detail1) + (millis() * sm1);
        var peaksOne = map(noise(speedOne), 0,1, 0, height);
        vertex(mOne,peaksOne-70); 
    }

    vertex(width,height);
    vertex(0,height);
    endShape();
    
    //second highest mountain range
    fill(128, 121, 113);
    beginShape();
    for (var mTwo = 0; mTwo < width; mTwo++) {
        var speedTwo = (mTwo * detail2) + (millis() * sm2);
        var peaksTwo = map(noise(speedTwo), 0,1, 0, height);
        vertex(mTwo,peaksTwo-30); 
    }
    vertex(width,height);
    vertex(0,height);
    endShape();
        
    //middle mountain range
    fill(93, 84, 86);
    beginShape(); 
    for (var mThree = 0; mThree < width; mThree++) {
        var speedThree = (mThree * detail3) + (millis() * sm3);
        var peaksThree = map(noise(speedThree), 0,1, 0, height);
        vertex(mThree,peaksThree+10); 
    }
    vertex(width,height);
    vertex(0,height);
    endShape();


     //second - lowest mountain range
    fill(67, 60, 67);
    beginShape(); 
    for (var mFour = 0; mFour < width; mFour++) {
        var speedFour = (mFour * detail3) + (millis() * sm4);
        var peaksFour = map(noise(speedFour), 0,1, 0, height);
        vertex(mFour,peaksFour+30); 
    }
    vertex(width,height);
    vertex(0,height);
    endShape();


      //lowest mountain range
    fill(48, 45, 48);
    beginShape(); 
    for (var mFive = 0; mFive < width; mFive++) {
        var speedFive = (mFive * detail3) + (millis() * sm5);
        var peaksFive = map(noise(speedFive), 0,1, 0, height);
        vertex(mFive,peaksFive+60); 
    }
    vertex(width,height);
    vertex(0,height);
    endShape(); 

}

function drawTree() {
    for (var i = 0; i < trees.length; i++){
        trees[i].move();
        trees[i].display();
    }
}

function makeTree(x) {
    var tree = {
        birth: x,
        size: random(10, 30),
        speed: 2.0,
        move: TreeMove,
        display: TreeDisplay,
        height: random(30, 60),
        color: [120, 150, 100, 90]
    }
    
    return tree;
}

function TreeMove() {
    this.birth += this.speed;
}

function TreeDisplay() {
    var treeHeight = 50; 
    fill(this.color); 
    noStroke();
    push();
    translate(this.birth, height - this.height);
    ellipse(0, 0, this.size, this.size);
    ellipse(7, 10, this.size, this.size+2);
    ellipse(-9, 2, this.size, this.size);
    stroke(200, 180, 140);
    strokeWeight(2);
    line(0, 0, 0, this.height);
    line(0, this.size/5, this.size/6, this.size/20);
    if (this.size > 30) {
        line(0, this.size/3, -this.size/6, this.size/6);
    }
    pop();
}

function addTree() {
    var newTree = 5; 
    if (random(0,1) < newTree) {
        bwTrees = bwTrees + 30;
        if (bwTrees == 4) { 
            trees.push(makeTree(width)); 
             bwTrees = 0; //reset
        }
    }

}


// function songs(){
// 	fill(181, 165, 138);
// 	textSize(10);
// 	textFont("Times New Roman");
// 	text(playlist[index],10, 460);

// }

This assignment was a bit challenging for me. I had been missing road trips with my family so I decided to re-create one in the Himalayas, complete with the high mountain ranges and pine trees. I wanted to add running text of the playlist we tend to listen to so I’m still working on that.