Min Jun Kim- Looking Outwards 11


Video on how they made the song.

For this week’s looking outwards, I decided to write about computer music since last time I wrote about sound art. I was particularly interested in the combining computer generated sounds with vocal music, and an artist that I like had a video on how their music was made. What I admire about this project is only computer instruments used to produce the song. Even though they used samples from a vocal artist, the sample was included to the program instead of keeping them separate. I also admire that with the usage of computer software, one can alter the qualities of the voice, so that one doesn’t need to find a perfect vocal artist, but rather alter the sample to meet the feel of and standards of the song. From an interview, Odesza stated that, “As far as software, we use lots of Native instruments plug-ins, SoundToys, Logic, Ableton, Maschine, and Ozone 5.” So for the algorithms used for the work, they definitely must have used looping algorithms, with algorithms re-organizes parts to match the beat perfectly. This would be achieved probably by using if functions and millies(). Of course, these elements would already be installed in the software that is used, but in a way, computer music production is like programming with already made functions. I think that artist’s artistic sensibilities came into play when all the parts of the music are harmonic and work to add to the song.

Link to work: https://www.youtube.com/watch?v=xqoLCvsy8_c
Creator: Odesza, Naomi Wild
Title: Higher Ground
Year of creation:2018

Alexandra Kaplan – Looking Outwards – 11

 

Video of the project

A computational musician I found to be interesting is Mari Kimura, a violinist. The project I am focusing on is Bebe, a project made performed by violin and computer. The piece was originally written in 2008, with edits made to it in 2012. From Kimura’s description of the project, it seems she used the Max computer program to play music along with her. What caught my eye (or should I say ear) is how she created the program to follow along with her in order to let her improvise. From her comments, it seems that many computer music projects she has previously worked on put the musician in a place in which they had to play exactly to the note to keep up with the computer. I think it is amazing what she accomplished and what technology can do to improvise and keep in harmony with brilliant musicians.

Sophia Kim – Project 11 – Sec C

sketch

// Sophia S Kim
// Section C 1:30
// sophiaki@andrew.cmu.edu 
// Project-11-Turtle Freestyle

var strOpt = 1; 
var turtle1;
var turtle2;

function setup() {
  createCanvas(480, 400);
}
 
function draw() {
  background(175);
  if (strOpt === 1) {
    orangeLines();
  }
  if (strOpt === 2) {
    redLines();
  }
  if (strOpt === 3) {
    greenLines();
  }
  if (strOpt === 4) {
    purpleLines(); 
  }
}

//function for line 1 - longest line  
function line1(x, y, z){
  turtle1 = makeTurtle(x, y); 
  turtle1.setWeight(10); 
  turtle1.setColor(z);

  turtle1.right(30);
  turtle1.penDown();
  for (i = 0; i < 6; i++) {
    turtle1.forward(15);
    turtle1.right(50);
    turtle1.forward(15);
    turtle1.left(50);
  }
  turtle1.penUp();
}

//function for line 2 
function line2(a, b, n) {
  turtle2 = makeTurtle(a, b); 
  turtle2.setWeight(10); 
  turtle2.setColor(n);

  turtle2.left(30);
  turtle2.penDown();
  for (i = 0; i < 3; i++) {
    turtle2.forward(15);
    turtle2.left(50);
    turtle2.forward(15);
    turtle2.right(50);
  }
  turtle2.penUp();
}

//function for line 3 
function line3(j, k, f) {
  turtle3 = makeTurtle(j, k); 
  turtle3.setWeight(10); 
  turtle3.setColor(f);

  turtle3.right(50);
  turtle3.penDown();
  for (i = 0; i < 4; i++) {
    turtle3.forward(15);
    turtle3.right(50);
    turtle3.forward(15);
    turtle3.left(50);
  }
  turtle3.penUp();
}

//function for line 4 
function line4(l, m, p) {
  turtle4 = makeTurtle(l, m); 
  turtle4.setWeight(10); 
  turtle4.setColor(p);

  turtle4.right(-50);
  turtle4.penDown();
  for (i = 0; i < 4; i++) {
    turtle4.forward(15);
    turtle4.right(50);
    turtle4.forward(15);
    turtle4.left(50);
  }
  turtle4.penUp();
}

//function for line 5 
function line5(o, h, q) {
  turtle5 = makeTurtle(o, h); 
  turtle5.setWeight(10); 
  turtle5.setColor(q);

  turtle5.right(-80);
  turtle5.penDown();
  for (i = 0; i < 5; i++) {
    turtle5.forward(15);
    turtle5.right(50);
    turtle5.forward(15);
    turtle5.left(50);
  }
  turtle5.penUp();
}
//draws white lines, pink shapes, and green block in background
function orangeLines() {
  //makes the green block of color in background
  fill("GREEN");
  noStroke();
  beginShape();
  vertex(0, 150);
  vertex(480,75);
  vertex(480, 400);
  vertex(0, 400); 
  endShape(CLOSE);
  //line color orange
  line1(350, 30, "ORANGE"); 
  line2(50, 330, "ORANGE");
  line3(370, 270, "ORANGE");
  line4(50, 100, "ORANGE");
  line5(190, 190, "ORANGE");

}

//draws pink lines, white shapes, and blue block in background
function redLines() {
  //makes the blue block in background
  fill("BLUE");
  noStroke();
  beginShape();
  vertex(0, 140);
  vertex(480, 200);
  vertex(480, 400);
  vertex(0, 400); 
  endShape(CLOSE);

  //line color red 
  line1(20, 240, "RED");
  line2(250, 90, "RED");
  line3(100, 90, "RED");
  line4(340, 360, "RED");
  line5(300, 270, "RED");
}

//draws green lines, yellow shapes, and pink block in background 
function greenLines() {
  //makes pink block in background
  fill(255, 125, 125);
  noStroke();
  beginShape();
  vertex(0, 150);
  vertex(420, 0);
  vertex(480, 0);
  vertex(480, 400);
  vertex(0, 400); 
  endShape(CLOSE);

  //draw green line 
  line1(60, 250, "GREEN");
  line2(370, 350, "GREEN");
  line3(390, 50, "GREEN");
  line4(50, 90, "GREEN");
  line5(220, 250, "GREEN");
}

//draws orange lines, blue shapes, and yellow block in background
function purpleLines() {
  //makes orange block in background
  fill("GOLDENROD");
  noStroke();
  beginShape();
  vertex(0, 0);
  vertex(100, 0);
  vertex(480, 300);
  vertex(480, 480); 
  vertex(0, 480);
  endShape(CLOSE);

  //draws purple line
  line1(350, 50, "PURPLE");
  line2(120, 90, "PURPLE");
  line3(90, 190, "PURPLE");
  line4(350, 380, "PURPLE");
  line5(220, 200, "PURPLE");
}

function mousePressed() {
  strOpt ++; // mouse is pressed every time changes the lines & line colors
  if (strOpt > 4) {
    strOpt = 1; 
  }
}


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

Starting this project, I really wanted crinkle-cut fries. Also, in one of the studio classes I am taking for design, we talked about color theory, so I decided to combine both the “crinkle-cut fries” idea and color theory into this project. It was definitely really fun to experiment with turtles.

first of four frames
last of four frames

Xindi Lyu-Looking Outwards 11


a world famous vocaloid music

Vocaloid is a singing voice synthesizer software. Its signal processing part was developed through a joint research project led by Kenmochi Hideki at the Pompeu Fabra University in Barcelona, Spain, in 2000, and originally was not intended to be a full commercial project. However now due to the popularity specific anime-character design representing each of the sound libraries, more and more individual music creators, mostly in Japan, and anime lovers start to join the community of Vocaloid producers/lovers in producing music pieces with or even for these libraries. In 10 years a great amount of outstanding music pieces are created and the community has been big enough to become a culture.

Nina Yoo – Project 11 – Composition

sketch

/* Nina Lee Yoo
Section E
nyoo@andrew.cmu.edu
Project-11:A Composition*/

function setup() {
    createCanvas(480, 480);
    background(220);


    }


function draw() {

	for (var t=0;t<10;t++){
    	turtle = makeTurtle(0,0)
    	turtle.penDown
    }
	
		var r = (random(0,200));
		var g = (random(50,100));
		var b = (random(100,150));
		
	
	


		turtle.setColor(color(r,g,b))
		turtle.setWeight(1)
		turtle.penDown()
		turtle.forward(mouseX)// moving the initial fowards with them mouseX
		turtle.right(50)
		turtle.forward(mouseY) //movingthesecondfoward(creating longer lengthfor th first line)
		turtle.right(50)
		turtle.forward(100)
		turtle.right(mouseX)//(manipulating the end of the string)
		turtle.forward(100)
		turtle.right(20)
		turtle.forward(100)

		

}







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


It was cool seeing how if you changed the points on the turtle with mouseX or mouseY how it affected the whole drawing. It was difficult to grasp the concept at first due to my idea of turtles being static, but when doing the project it has helped me understand the underlying idea of turtle.

Nina Yoo- Looking-Outwards-11

Of Nature and Things -Fedde Ten Berge-December 7 , 2017

This project uses the objects forms to create sounds. It was interesting to see the creator  Fedde use many organic objects and man made objects to create these sounds. I was inspired  by his capability of understanding an object through sound, because it is almost creating a new way to interpret objects. It kind of reminds me of an instrument, but it is creating every object as an instrument.  The algorithms that would go into this would probably have a prerequisite standard for curves and edges and how they would sound and depending on how extreme or normal those aspects are, the different the sound comes out. Along with this would come the range of pitch and volume. The artist’s creativeness came out through the interpretation of how the sound should be depending on the object and the different objects he decides to use or create for usage.

 

Of Nature and Things – The Shroom

 

 

Xindi Lyu-Project 11-Composition

sketch

 
/*
week 10-assignment-b
Xindi Lyu
Section A
xindil@andrew.cmu.edu
*/
 var T1
 var T2
 var T3
 var T4
 //make the hexagons
 
function setup(){
createCanvas(600,400);
background(255);
T1=makeTurtle(width/2,height/2);
T1.setColor(color("pink"));
T1.setWeight(5);
T1.penDown();
T2=makeTurtle(width/20,height/4);
T2.setColor("green");
T2.setWeight(5);
T2.penDown();
frameRate(10);
T3=makeTurtle(width*9/10,height/2);
T3.setColor(color("blue"));
T3.setWeight(5);
T3.penDown();

}
//get the hexagons to orient in a golden ratio spiral
function draw(){
  T1.forward(6);
  T1.left(random(0,6));
    T1.turnToward(mouseX,mouseY,10);
    T2.forward(6);
  T2.left(random(0,6));
    T2.turnToward(mouseX,mouseY,10);

 T3.forward(6);
  T3.left(random(1,6));
    T3.turnToward(mouseX,mouseY,10);





}



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 created three turtles following the cursor while maintaining their own circulating procedure. It resulted in a very interesting knotting effect.

Alessandra Fleck – Project 11

sketch

//Name: Alessandra Fleck 
//Class Section : B
//Email: afleck@andrew.cmu.edu
//Project-11


var startFrame;


function setup() {
    createCanvas(480, 480); // create the canvas   
    
}


function draw() {
    background(40,41,35); //setting background color
    var turtle = makeTurtle(80,80); //setting turtle variable



    noFill();
    stroke(0);
    strokeWeight(10);

    turtle.setWeight(20); // make turtle weight 

    // go to starting position but dont start drawing

    //First Iteration of 
    turtle.penUp();

    //placeholder for where mouse should go
    //North Position
    fill('red');
    noStroke();
    ellipse(230,10,30,30);
    //South Position
    fill('red');
    noStroke();
    ellipse(230,450,30,30);
    //West Position
    fill('red');
    noStroke();
    ellipse(10,240,30,30);
    //East Position
    fill('red');
    noStroke();
    ellipse(470,240,30,30);

    for(var i = 0; i<100; i++){

        turtle.penUp();
        turtle.goto(mouseX,150); //set triangle position_01
        turtle.penDown();

        turtle.forward(mouseX);
        turtle.face(-120);
        turtle.forward(mouseX);
        turtle.face(120);
        turtle.forward(mouseY); // creates vertical growth when mouse X is moving in horizontal direction, Y is stretched
    
    }

    for(var i = 0; i<50; i++){
        turtle.penUp();
        turtle.goto(mouseX,150); //set triangle position_02
        turtle.penDown();

        turtle.forward(mouseX);
        turtle.face(-120);
        turtle.forward(mouseX);
        turtle.face(-120);
        turtle.forward(mouseY);
    
    }


    for(var i = 0; i<100; i++){
        turtle.penUp();
        turtle.goto(mouseX,150); //set triangle position_03
        turtle.penDown();

        turtle.forward(mouseX);
        turtle.face(60); // smaller forward motion
        turtle.forward(mouseX);
        turtle.face(60);
        turtle.forward(mouseY);
    
    }

    for(var i = 0; i<100; i++){
        turtle.penUp();
        turtle.goto(mouseY,150); //set triangle position_04
        turtle.penDown();

        turtle.forward(mouseY);
        turtle.face(-120);
        turtle.forward(mouseY);
        turtle.face(120);
        turtle.forward(mouseX); // when mouse moves in Y direction the lines also stretch in x direction
    
    }

    for(var i = 0; i<100; i++){
        turtle.penUp();
        turtle.goto(mouseY,150); //set triangle position
        turtle.penDown();

        turtle.forward(mouseY);
        turtle.face(-60); //smaller forward motion reversed
        turtle.forward(mouseY);
        turtle.face(60);
        turtle.forward(mouseX);
    
    }

    

}





//setting the 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;}

 

For this project I wanted to explore how moving the mouse to different part of the canvas could create different distinct images from the intersection of a couple lines. As the mouse moves in the X direction, the Y direction lines are shifted vertically so that some go off the canvas or move up/down. This dynamic  movement makes the drawing full at times and have less lines in others. 

Alexandra Kaplan – Project 11 – Composition

Press any key to restart!

/*
Alexandra Kaplan
aekaplan@andrew.cmu.edu
Section C
Project - 11
*/

function setup() {
    createCanvas(480, 480);
    background(250, 90, 15);
    
}

function draw() {

    var ttl1 = makeTurtle(240,240);
    var ttl2 = makeTurtle(240,240);
    var ttl3 = makeTurtle(width + width / 2, 240);
    var ttl4 = makeTurtle(width, 245);
    var ttl5 = makeTurtle(width * 2, 240);
    var tt2ColR = map(mouseY, 0, height / 2, 200, 50);
    

    // sand 1
    ttl1.penDown();
    ttl1.setWeight(10)
    col1 = color(250, 220, 200);
    ttl1.setColor(col1);
    for(var i = 0; i < 10; i++){
        ttl1.forward(-mouseY / 4);
        ttl1.right(-mouseX /50); 
        ttl1.left(mouseX/100)  
    }
    
    //sky
    ttl2.penDown();
    ttl2.setWeight(20);
    col2 = color(tt2ColR, 150, 225);
    ttl2.setColor(col2);
    for(var j = 0; j < 200; j++){
        ttl2.forward(mouseY / 4);
        ttl2.right(-mouseX / 50);
    }

     //sand 3
    ttl3.penDown();
    ttl3.setWeight(10);
    col3 = color(250, 230, 190);
    ttl3.setColor(col3);
    for(var i = 0; i < 10; i++){
        ttl3.forward(-mouseY / 4);
        ttl3.right(-mouseX / 50); 
        ttl3.left(mouseX / 100)  
    }
    //sand 2
    ttl4.penDown();
    ttl4.setWeight(10);
    col4 = color(250, 230, 200);
    ttl4.setColor(col4);
    for(var i = 0; i < 10; i++){
        ttl4.forward(-mouseY / 5);
        ttl4.right(-mouseX / 50); 
        ttl4.left(mouseX / 100);  
    }

    ttl5.penDown();
    ttl5.setWeight(10);
    col5 = color(250, 220, 200);
    ttl5.setColor(col5);
    for(var i = 0; i < 10; i++){
        ttl5.forward(-mouseY / 4);
        ttl5.right(-mouseX / 50); 
        ttl5.left(mouseX / 100);
    }

}

function keyPressed(){
    background(240, 90, 15);

}

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 focus on mouse interactivity and how turtles could be used to create an overall picture. Using a few different turtles, I was able to make a desert landscape with different colors of sand and a sun that can be included depending on the person using it.

earlier iteration
final iteration with crescent sun
Final iteration

Eunice Choe – Project-11 – Composition

sketch

/* Eunice Choe
Section E
ejchoe@andrew.cmu.edu
Project-11*/


var r;
var g;
var b;
var turtle =[];

function setup() {
    createCanvas(400, 400);
    background(255, 206, 198);
    for (var t = 0; t < 5; t ++) {
        turtle[t] = makeTurtle(width / 2, height / 2); // sets initial position
        turtle[t].penDown;
    }
}

function draw() {
    for (var t = 0; t < turtle.length; t ++) {
        r = random(100, 255);
        g = random(10, 255);
        b = random(50, 255);
        turtle[t].setColor(color(r, g, b)); // random turtle colors
        turtle[t].setWeight(random(-0.5, 5)); // random weights
        turtle[t].penDown();
        turtle[t].forward(random(10, 70)); // random lengths
        turtle[t].right(-100, 50); // random directions
        turtle[t].penUp();
  }
  frameRate(5);
}

function mousePressed()  {
    var turtle = makeTurtle(mouseX, mouseY);
    turtle.penDown();
    turtle.setColor(255);
    for (var i = 0; i < 20; i++) { // makes random white stroke shapes
        turtle.forward(random(10, 20));
        turtle.right(200);
        turtle.forward(random(10, 20));
    }
    turtlePenUp();
}

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 my project, I wanted to create an abstract composition that shows a sense of randomness. I incorporated the randomness through randomized colors, strokes, and turtle directions. Someone interacting with this composition can also click the mouse and randomized white strokes will appear. Overall, I think the randomness makes the composition interesting.

The beginning of the composition.

The composition after some time passes and the added white strokes.