jennyzha – Project 12

For my final project I plan on making an interactive digital coloring book. This coloring book will feature a playlist based on the picture (happier music for happier scenes, calmer music for calmer scenes, etc.). The program would generate a different picture every time the user refreshed the page and then the user would have the option to change the color of their brush based (possibly?) a key stroke (b = blue, r = red, etc.) or possibly have them just be filled in based on the original image’s color. Having a strong passion for music and art, I think I will have a lot of fun with this project, choosing pictures, matching music, and overall creating a fun program to use.

daphnel-Project 12-Proposal

I want to this game that involves having a ping pong like ball that shoots up and hits the blocks. The block locations will be randomly generated. The game will start off with the blocks all being the same color. Once the ball hits the block, the block should disappear. When all the blocks are hit, the game restarts with a new set of blocks, this time with one additional color. So for example, level one had grey blocks, but level two had grey and red blocks. The added color will need two hits to make the block disappear. When you hit the red block once, it should turn lighter in color to signify it has been hit before. I will try to make a legend somewhere containing the information on how many hits each color block needs for it to disappear. The ball should be able to bounce off from all corners of the walls except for the bottom border. The ping pong paddle is used to control where the ball goes. I am planning on making the blocks slowly move downwards using the seconds function when the game progresses a bit farther. Each normal one hit block is one point and two hit blocks are two points and so on. I have yet to fully decide on the colors but this is the general idea that I want for my game. I based this idea off of one of my favorite games when I was a kid, though I don’t remember the name of that game clearly.

daphnel-Looking Outwards-12

Curious Vase

Curious Vase is a project made by Mianne de Vries and consists of a group of vases within each other. You need to break through the outer vase in order to see the second layer of the vase beneath and so forth. Each vase has up to 3 vases hidden inside. I like the concept of this vase in how you need to break through the outer layer in order to reach the second type of vase beneath because it started giving me the idea for my game. I wanted to create a game in which blocks were used and destroyed based on the movement of a ball. At first, I wasn’t sure how to make this game work, but then I realized, I could just use this breaking system to increase the difficulty of my game, which I will talk about more in my proposal.

The second project I found was the Surface Tension Lamp, created by Front.I found this project very intriguing in how it used bubbles. Bubbles change colors all the time due to the fact that it catches light and reflects the room or area like a multi colored structure. This bubble gave me the idea of changing the colors of my blocks on my game depending on the difficulty. As you continuously hit the block, the color fades and it will disappear just like how a bubble does. This project made by Front looks relatively simple but I like the simplicity and meaning behind the creation of this work.

ghou-lookingoutwards-12

The Mylar Topology

This is an audio-visual piece intended for panoramic projection and spatial sound. This a piece in the form of visual music. It generates shapes based on the audio data interpreted by an algorithm. The artist, Paul Prudence, likes to do live performances because the visual produced in each performance is different each time due to how it is computed.

Paul Prudence has performed his work internationally and exhibited ways in which sound, space, and form can create intriguing cinematic experiences.

For the second project I will be looking at the interactive phone piano app Magic Piano by Smule. It is a relaxing app that contains several songs to play. Music notes are queued and prompted by little beams of light and the user must tap on them to play them that composes into a certain song. A user could also control which notes to play and the rhythm and speed.

I think the first project I looked at, the Mylar Typology, would be more immersive if the audience could also interact physically with the project. I think these two projects are great precedents to study for my final project, I would like to make a system that generates visuals from sounds generated by the user.

ghou-Project-11-Composition

sketch

//Grace Wanying Hou
//15-104 Section D
//ghou@andrew.cmu.edu
//Project 11

var turtle =[];
var count = 10;
var dp;



function preload(){
    var imageurl = "https://i.imgur.com/S483jxr.jpg";
    dp = loadImage(imageurl);//loading the pic of my boy friendo
}

function setup() {
    background(0);
    createCanvas(380,300);
    image(dp,0,0)
    dp.loadPixels();
    for (var i = 0; i < count; i ++) {//setup the strokes
        turtle[i] = makeTurtle(0, 0);
        turtle[i].penDown;
    }
    strokeJoin(MITER);
    strokeCap(PROJECT);
    frameRate(30);
}

function draw() {
    for (var i = 0; i < count; i ++) {
        var pointcolour = dp.get(floor(mouseX),floor(mouseY));
        turtle[i].setColor(color(pointcolour)); //setting the colour to the pixel at the mouse point
        turtle[i].setWeight(random(15));//randomizing the weight
        turtle[i].turnToward(mouseX,mouseY, turtle[0].angleTo(pmouseX, pmouseY)); //turn along mouse movement.
        turtle[i].forward(turtle[i].distanceTo(mouseX, mouseY));//move along mouse movement.
    }
}




//given turtle stuffs
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) {
        strokeJoin(MITER);
        strokeCap(PROJECT);
        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;
}

This week I used turtle graphics to abstract colours from a portrait and “painting” with strokes randomized by mouse movements and those colours.

 

hyt-Looking-Outward-11: Sound Art

Live performance documentation of Samson Young’s Nocturne (2015)

For this week’s Looking Outward post, I found inspiration through Samson Young’s work of art. He is described as a rising sound artist based in Hong Kong and with a strong background in music composition. While he’s concentrated on the expression using sounds, he also incorporate them into live performances, visual drawings and films. The particular project that interested me was Nocturne (2015), a live performance that he conducted in team gallery, NYC. He sits in a position surrounded by drummer’s set, various instruments, found objects and connected amplifiers attached to the objects. A old television screen is also placed in front of him, playing muted footages of night bombings found on the Internet, most of which are US attacks in the middle east as well as ISIS gulf war, etc. He aims to improvise the explosion sounds with “foley technique” and broadcast it on a pirated radio frequency so that the audience could experience the performance using transportable radios. Since the found footages are political and pointing to the specific war-torn countries, the performance seems to be a playful yet sarcastic commentary toward the authority.

Even though the sound is mainly created by the artist, the computation element lies within the video footages, as it shows the frequency of the bombing and the artist aligns his action based off of the frequency. I think the imitation of everyday / common-heard sounds is definitely something I am interested in, and I wonder if it would be possible to recreate them by playing with the p5.sound library for future projects.

 

hyt-Project-11: Turtle Abstract Drawing

hyt-project-11

// helen tsui
// 15-104 section d
// hyt@andrew.cmu.edu
// project-11-turtles-freestyle


var img; 
var px = 0; // set one variable as x position 
var py = 0; // set one variable as y position
    
// preload image onto canvas
function preload() {
    img = loadImage("https://i.imgur.com/BRPnejy.jpg");    
}

// basic setup, load pixels and display image
function setup() {
    createCanvas(480, 480);
    background(0);
    img.loadPixels();
    image(img, 0, 0);
}

function draw() {

    // retrieve brightness value
    var rgb = img.get(px, py);
    var brightnessVal = brightness(rgb);

    // create new turtle pixel + other properties
    var pixel = makeTurtle(px, py);
    pixel.setWeight(5);
    print(brightnessVal)

    // restrain px position within canvas
    if (px <= width) { 

        // draw in the lighter zones
        if (brightnessVal >= 92 & brightnessVal < 100) { 
            pixel.setColor(color(200, 191, 201, 150));
            pixel.forward(1);

        } 
        // draw in dark zones
        if (brightnessVal < 92) {
            pixel.setColor(color(128, 122, 128, 150));
            pixel.forward(1);
        }

        // draw in gray-ish zones
        if (brightnessVal >= 100) {
            pixel.setColor(color(251, 244, 238, 150));
            pixel.forward(1);
        }
    }

    // if out of canvas then reset
    if (px > width) {
        px = 0;
        py += 8;
    }

    // make the turtles move! 
    px += 2;
}










// turtle function
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;}

For this project, I wanted to create an abstract landscape work that’s based off of a found minimalist photo, and the turtle drawing process would imitate a machine printing out the pixelated drawing. I didn’t really have a sketch, since the found image itself is my inspiration. I think the most challenging part was to incorporate the brightness() function into turtles, which took me a long time to figure out (for quite a while the brightness value was not calling the right (px, py) position) however I am quite satisfied with the foggy, pastel painting that generated.

* i’m using a grace day for this week!

The first image is an iteration without the original image, and the second image incorporates both the original + iterated turtles. Enjoy!

aboyle-Looking Outwards-11

For Looking Outwards 04, I focused on the creation of music, so I’ll use this opportunity to explore sound art.

LINES is an sound art exhibition that allows the audience to create music by interacting with colorful lines on the walls, floor, and ceiling.  You can move your hand up and down the lines on the wall to increase or decrease the pitch. You can stand in different places on the lines on the floor to adjust the tempo, and you can move your body up and down the lines hanging from the ceiling to change the dynamics of the sound. You can use checkers to create harmonies with yourself. This exhibit was created by Swedish composer Anders Lind in 2016 and was displayed in Västerbottens Museum in Umeå.

I think this exhibit was very cool because it encourages the audience to interact with the exhibit. There are so many different ways to produce different sounds, so every person will have a unique experience. With regards to the technical side, Lind mentions that sensors and electronics are used to form three novel musical instruments, and I’m sure that there are several algorithms at work to ensure musical beauty. I can definitely tell that Lin had an appreciation for the complexities of sound, the influence of color, and the ways technology can be used to heighten our appreciation of art.

NatalieKS-Project-11

snow

//Natalie Schmidt
//nkschmid@andrew.cmu.edu
//Section D
//Project-11

//coordinates for the falling snowflakes
//adapted from code here:
//http://alpha.editor.p5js.org/projects/rkBAHA3h
var position = {
    x: 133,
    y: 68
};
//to help move the snowflakes
var gravity = 1;

//--------TURTLE FUNCTIONS-------
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;
}


function setup() {
    createCanvas(480, 480);
    frameRate(10);
    background(138, 172, 224);
}

function draw() {
    fill(255);
    noStroke();
    //create the snowflakes in the background
    var transparency = random(10, 255);
    fill(255, transparency);
    position.x = random(0, width);
    position.y = random(0, 400);
    ellipse(position.x, position.y, 5, 5);
    //left snow hill
    ellipse(0, height, 300, 300);
    //right snow hill
    ellipse(width, height, 300, 300);
    //left middle snow hill
    ellipse(175, height, 200, 200);
    //right middle snow hill
    ellipse(300, height, 250, 250);

}

function mousePressed() {
  var posY = mouseY;
  //set the snowflake
  var snowflake1 = makeTurtle(mouseX, posY);
  posY += 1;
  snowflake1.penDown();
  snowflake1.setColor(255);

//draw snowflakes; used the turtle graphics template from the
//Turtle Graphics page on the website
      for (var i = 0; i < 200; i++) {
          snowflake1.forward(40);
          snowflake1.left(190);
          snowflake1.forward(10);

          if (i % 30 == 0) {
              snowflake1.forward(20);
          }
      }
}

For this project, I was inspired by something that happened today: it snowed! Well, barely, but I was still really excited. I started playing around with the turtle, moving it forward and right and such to see what kind of shape it would give me, and I ended up with a snowflake-like shape. I really like the outcome of this project, I think the background with the snowflake-turtle looks really pretty! As time goes on, the background will be (almost) completely filled by the background “snowflakes,” so it looks like a snowstorm.

Here is what it looks like after some time:

daphnel-Project 11-Composition

Composition

var turtle;
var turtles=[];
var nTurtles=10;
var s;
var r;
var g;
var b;

function setup(){
    createCanvas(480,480);
    background(0);
    frameRate(10);
    //background before the black and white turtles appear
    var turtle=makeTurtle(width/2,height/2);
    turtle.setColor(color(255,255,0,100));
    turtle.setWeight(1);
    turtle.penDown();
    var goldenRatio=1+sqrt(5)/2;
    for(var i=0; i<150; i++){
    var s=5;
    turtle.right(60*goldenRatio);
    turtle.forward(s*i);
    }
}

function draw(){
    for(var i=0; i<turtles.length; i++){
        var step=random(-3,3);
        turtles[i].setWeight(i*3);
        var r=random(100,255);
        var g=random(150,255)
        var b=random(150,255)
        turtles[i].setColor(r,g,b);
        turtles[i].penDown();
        turtles[i].forward(step*i);
        turtles[i].left(25);
        turtles[i].penUp();
    }
}
function mousePressed(){
    //click to make turtles appear
    turtles.push(makeTurtle(mouseX,mouseY));

}
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;
}

While I was experimenting with the golden ratio assignment previously, I was able to make some interesting designs as I played around with the code. I decided to use one of them as a basis for my background. This code starts off with a canvas with a patterned background. When you click on the canvas, turtles are made. I tend to like it when the entire canvas is covered by something and is constantly flickering like lights.