Timothy Liu — Project 04 — String Art

tcliu-openended-04

// Timothy Liu
// 15-104 Section C
// tcliu@andrew.cmu.edu
// Openended-04

// initializing variables!
var x1;
var y1;
var x2;
var y2;

var x3;
var y3;
var x4;
var y4;

var x5;
var y5;
var x6;
var y6;

var x7;
var y7;
var x8;
var y8;

var x;
var y;

var sx1;
var sy1;
var sx2;
var sy2;

var angle = 0;

function setup() {

    createCanvas(400, 300);

    // initial coordinates for star
    sx1 = -5;
    sy1 = -5;
    sx2 = 5;
    sy2 = 5;

    // initial coordinates for lower left dark blue lines
    x1 = 0;
    y1 = -250;
    x2 = 0;
    y2 = height;

    // initial coordinates for upper right cyan lines
    x3 = -150;
    y3 = 0;
    x4 = width;
    y4 = 0;

    // initial coordinates for upper left gold lines
    x5 = 0;
    y5 = height + 250;
    x6 = 0;
    y6 = 0;

    // initial coordinates for lower right light teal lines
    x7 = -150;
    y7 = height;
    x8 = width;
    y8 = height;

}

function draw() {

    // variables that make sure the mouse is constrained within the canvas
    x = max(min(mouseX, 400), 0);
    y = max(min(mouseY, 300), 0);

    // background color
    background("#010a43");
    
    // dark blue lines in the lower left. This for loop makes the lines flare out to form a convex curve
    // facing up and right; x and y (variables with mouseX and mouseY) allow the lines to ripple as the mouse moves.
    for (var a = 0; a < 900; a += 8) {
        stroke("#394a6d");
        line(x1, y1 + a - y / 2, x2 + a - x / 2, y2);
    }

    // cyan lines in the upper right. This for loop makes the lines flare out to form a convex curve
    // facing down and left; mouseX and mouseY allow the lines to ripple as the mouse moves.
    for (var b = 0; b < 900; b += 8) {
        stroke("#216583");
        line(x3 + b - y / 2, y3, x4, y4 + b - x / 2);
    }

    // gold lines in the upper left. This for loop makes the lines flare out to form a convex curve
    // facing down and right; x and y allow the lines to ripple as the mouse moves.
    for (var c = 0; c < 900; c += 8) {
        stroke("#f7be16");
        line(x5, y5 - c - x / 2, x6 + c - y / 2, y6);
    }   

    // light teal lines in the lower right. This for loop makes the lines flare out to form a convex curve
    // facing up and left; x and y allow the lines to ripple as the mouse moves.
    for (var d = 0; d < 900; d += 8) {
        stroke("#00818a");
        line(x7 + d + x / 2, y7, x8, y8 - d + y / 2);
    }

    // star that follows the mouse. The rotating star is meant to convey the dynamic nature of my piece,
    // as well as imply the fact that the user can move the mouse to alter the piece.
    push();
    translate(mouseX, mouseY);
    rotate(radians(angle));
    for (var s = 0; s < 16; s += 15) {
        stroke("#f7be16");
        line(sx1, sy1 + s / 4, sx2, sy2 - s / 4);
    }
    for (var s = 0; s < 16; s += 15) {
        stroke("#f7be16");
        line(sx1 + s / 4, sy1, sx2 - s / 4, sy2);
    }
    for (var s = 0; s < 16; s += 15) {
        stroke("#f7be16");
        line(sx1, sy1 + s / 2, sx2, sy2 - s / 2);
    }
    for (var s = 0; s < 16; s += 15) {
        stroke("#f7be16");
        line(sx1 + s / 2, sy1, sx2 - s / 2, sy2);
    }
    pop();
    angle = angle + 1;

}

My project this week was inspired by the color palette from Van Gogh’s “Starry Night.” I wanted my string art to feel both clean and dynamic, and I immediately knew I wanted to have multiple convex curves framing the center of my piece. I was also inspired by my Looking Outward piece from last week; I looked at a piece of wood that had a rippling effect, and I wanted to convey that sense of dynamic motion as well. In order to do that, I chose to have my strings be responsive to the mouse’s motion, and I created a spinning yellow star that follows the mouse to further imply motion.

Van Gogh’s “Starry Night,” which is comprised of similar blue, teal, and yellow colors as the ones in my piece.
A wooden-ripple work by Christoph Hermann that I reviewed for my Looking Outwards 03.

Katrina Hu – Project 04 – String Art

sketch_project4

/*Katrina Hu
15104-C
kfh@andrew.cmu.edu
Project-04-String Art*/


function setup() {
    createCanvas(400, 300);
    background(0);
}

function draw() {
    background(0);
    //yellow curve
    for(var i = 0; i < 400; i += 5) {
        stroke(255, 250, 158);
        strokeWeight(0.5);
        line(i, mouseY, 400 , i);
    }
    //green curve
    for(var b = 0; b < 400; b += 5) {
        stroke(167, 255, 158);
        strokeWeight(0.5);
        line(b, mouseX, 400 , b);
    }
    //pink curve
    for(var a = 0; a < 400; a += 5) {
        stroke(255, 158, 158);
        strokeWeight(0.5);
        line(mouseY, a, a, 300);
    }
    //blue curve
    for(var c = 0; c < 400; c += 5) {
        stroke(158, 243, 255);
        strokeWeight(0.5);
        line(mouseX, c, c, 300);
    }
}

This was a fun project to do to experiment with different lines and colors. It was also interesting so see how the lines shifted with the mouse.

lee chu – project 04 – string art

lrchu

// lee chu
// section c
// lrchu@andrew.cmu.edu
// project - 04

var x1 = 0;
var y1 = 0;
var x2 = 0;
var y2 = 0;
var xSpacing;
var ySpacing;
var offset = 5;

function setup() {
    createCanvas(400, 300);
    fill(100);
    strokeWeight(0.25);
    xSpacing = width / 100;
    ySpacing = height / 100;
}

function draw() {
    background(50);
    triangle(0, 0, width, 0, width, height);

    // mouse control
    if (height / 2 < mouseY & mouseY < height) {
        offset = (mouseY - height / 2) / (height / 2) * 30;
    }
    if (height / 2 > mouseY & mouseY > 0) {
        offset = (mouseY - height / 2) / (height / 2) * 30;
    }

    // see functions below
    whiteLines();
    orangeLines();
    cyanLines();
}


function whiteLines() {
    stroke('lightGray');
    x2 = xSpacing * offset;
    y2 = ySpacing * offset;

    // left
    for (var y1 = 0; y1 < height + offset * ySpacing; y1 += ySpacing) {
        line(x1, y1, width + x2, height + y2);
        x2 -= xSpacing;
        y2 -= ySpacing;
    }
    x2 = xSpacing * -offset;
    y2 = ySpacing * -offset;

    // right
    for (var y1 = height; y1 > -offset * ySpacing; y1 -= ySpacing) {
        line(width, y1, x2, y2);
        x2 += xSpacing;
        y2 += ySpacing;
    }
    x2 = 0;
    y2 = 0;
}


function orangeLines() {
    stroke('orange');

    // left
    for (var y1 = 0; y1 < height; y1 += ySpacing) {
        line(x1, y1, width - x2, height - y1);
        x2 += xSpacing;
    }
    x2 = 0;

    // right
    for (var y1 = height; y1 > 0; y1 -= ySpacing) {
        line(width, y1, x2, height - y1);
        x2 += xSpacing;
    }
    x2 = 0;
}

function cyanLines() {
    stroke('cyan');
    x2 = xSpacing * offset;
    y2 = ySpacing * offset;

    // left
    for (var y1 = 0; y1 < height - offset * ySpacing; y1 += ySpacing) {
        line(x1, y1, width - x2, height - y2);
        x2 += xSpacing;
        y2 += ySpacing;
    }
    x2 = xSpacing * offset;
    y2 = ySpacing * offset;

    // right
    for (var y1 = height; y1 > offset * ySpacing; y1 -= ySpacing) {
        line(width, y1, x2, y2);
        x2 += xSpacing;
        y2 += ySpacing;
    }
    x2 = 0;
    y2 = 0;
}

I wanted to create a sense of depth by offsetting line functions and including contrasting yet complementary colors. An interesting aspect is that the colors seem to shift as the lines change in overlap.

Jasmine Lee – Looking Outwards – 04

A great example of music and computation is Wintergatan‘s Marble Machine. The music is visualized physically using metal marbles running on a track. These marbles are carried up using a wheel (physically operated by the musician), dropping onto various surfaces such as vibraphone, bass guitar, and cymbals. Other instruments, such as the the kick drum and snare drum are emulated using contact microphones and other software. The music “scores” are actually two giant wooden wheels arranged with LEGO pegs. These pegs, when turning, knock into specific keys which then trigger the release of a marble above a certain vibraphone key.

The person responsible for the machine, Martin Molin, designed and built the machine with the use of a 3D printer and a CNC machine. While not purely a computational project, this project involves the use of computers for the purpose of emulating drums as well as overlaying the music tracks onto each other. It is also computational in the sense that this machine and its parts all had to be carefully calculated and coordinated in order to work. What I admire most about this project is the way in which Molin chose to design the machine. It could’ve been very possible to manifest it as a linear marble track, but Molin chose to design a self-contained machine in which the loop of the marbles is closed. It is also amazing to see the actual physical movements behind the sound that is being produced.

Wintergatan sells blueprint posters of their “Marble Machine” in light of their success with this project.

Sarah Kang – Looking Outwards – 04

Deguster L’augmente by Erika Marthins

For her recent graduate design project, a collaborative with ECAL (Bachelor Media & Interaction Design), Swedish designer Erika Marthins explored the ways to elevate the every day aspect of food by adding another of dimension of sensory effect. The initial picture of a slab of chocolate on a record player seems like just an artsy edit, but to imagine that the chocolate actually functions as a record was amazing to me. The chocolate record player is one of three desserts explored; Marthins embeds poetry into a lollipop and creates edible robotics.

Déguster l'augmenté ECAL/Erika Marthins from ECAL on Vimeo.

The chocolate record performs the same way as a typical vinyl record. The sounds produced by the chocolate round are made by grooves on its surface and when the record needle comes into contact with the moving surface, one can hear a high-pitched, wavering sound playing. Erika Marthin’s explorations as a designer is manifested through this successful project; she manages to create a poetic experience by achieving her goal to enable the diner to not only hear the sound of the chocolate, but to taste it.

http://erikamarthins.com/

Nawon Choi— Looking Outward 04

Cycling Wheel: The Orchestra

“Cycling Wheel” by Keith Lam, Seth Hon and Alex Lai

This performance/installation caught my attention because of the way the artists transformed a non-traditional medium (bicycle wheels and lights) into a work of visual and sonic art.

The artists noted that they took inspiration from Marcel Duchamp’s Bicycle Wheel, an installation piece that originally was made in 1913. I appreciate the way the artists reimagined this piece to be one that is interactive and dynamic. They transformed the mechanics of the wheel to control the light and sound, turning the bicycle wheel into a performative instrument.

Image result for marcel duchamp bicycle wheel
Marcel Duchamp’s “Bicycle Wheel” (1951)

I love the way that the artists incorporated both audio and visual elements into this piece and carefully crafted their performance/installation to highlight both elements. The performance was held at night, with the addition of a smoke machine to enhance the visual experience and also creating stunning photographs and documentation.

According to this article, some of the technical aspects of this installation include, a tailor-made control panel software that was created with an open-source programming language called “Processing” that is used to create animations and interactions. It also has three different units that control the music, light beams, and LED strips.

Below is a video of the performance—

Sean Meng-Project 04-String Art

hmeng assignment-03-A

//Sean Meng
//Section C
//hmeng@andrew.cmu.edu
//Project-03-String-Art

function setup() {
    createCanvas(400, 300);    
}

function draw() {
	background(0);
    
    for(var i = 0; i <= 400; i += 10){
 //the darkest blue lines
        stroke(0, 0, 255);
    	line(i, 0, 400, i);
//second layer of blue lines with lighter color
    	stroke(100, 100, 255);
    	line(i, 50, 400, i);
//third layer of blue lines with ligher color
    	stroke(150, 150, 255);
    	line(i, 100, 400, i);
//the lightest blue lines
    	stroke(200, 200, 255);
    	line(i, 150, 400, i);
 //the darkest red lines
    	stroke(255, 0, 0);
    	line(i, 300, 0, i);
 //second layer of red lines
    	stroke(255, 100, 100);
    	line(50, i, i, 300);
 //third layer of red lines
    	stroke(255, 150, 150);
    	line(100, i, i, 300);
 //the darkest blue lines
    	stroke(255, 200, 200);
    	line(150, i, i, 300);
    }
    
}

In this project, I intended to create a wavy graphic using string art form. I was also experimenting with visual readability and hierarchy by adding different tones of color and complementary colors to the graphics.

Taisei Manheim – Project 04 – String Art

sketch

//Taisei Manheim
//Section C
//tmanheim@andrew.cmu.edu
//Assignment-04

function setup() {
    createCanvas(400,300);
}

function draw() {
    var x = 0; //used to define color
    background(0);
    strokeWeight(1);
    stroke(255);
    for (var i = 0; i < 400; i+=10){
        stroke(255);
        line(0, height - i, i, 0); //top left curved lines
        
        line(i, i, width, height -i); //top half of bottom right curved lines
        line(i, i, width - i, height); //bottom hald of bottom right curved lines

        //changes lines from white to magenta depending on mouse location
        if (mouseX > width / 2) {
            x = 0;
        }
        if (mouseX <+ width / 2) {
            x = 255;
        }

        //lines that turn magenta
        stroke(255, x, 255);
        line(0, height, i, i); //bottom left
        line(width, 0, i, i); //top right

        //sky blue lines
        stroke(135, 206, 235);
        line(width, height, 0, i); //bottom half
        line(0, 0, width, i); //top half
    }

}

When creating this I tried to create a fairly balanced composition with some areas having a denser amount of lines and some areas having not as many lines. I wanted to have some element of color change in order to change the way you perceive the drawing.

Timothy Liu — Looking Outwards — 04

This is Weather Thingy, a “Real-Time Climate Sound Controller.”

For this week’s Looking Outwards on Sound Art, I examined a work called “Weather Thingy” by Adrien Kaeser at ECAL’s Media and Interaction Design Unit. At first glance, the piece seems whimsical, fun, and even a bit weird. But upon further inspection, Kaeser’s work has a striking level of complexity that allows it to interact with its surrounding environment and produce sound and art.

Another photo of Weather Thingy in a different setting.

At its most basic core, Weather Thingy is designed to convert weather signals into musical sound. Three climate sensors detect rain, precipitation, and wind speed and translate those into parameters using an interface equipped with a brightness sensor. Using Arduinos and other computational components, Kaesar fitted Weather Thingy with the ability to react to climate changes in real time with different types of sounds. This is one of the things that really stood out to me; most sound art reacts to sound and produces a visual effect, but Weather Thingy reacts to the climate and produces sound. In other words, the piece is a real-time, reactionary piece of art.

Kaesar mentions that he hopes Weather Thingy can serve as an inspiring tool to help musicians come up with song ideas. It seems that the sheer randomness of wind, precipitation, and climate can lead to some pretty incredible and unique sound effects. In reading about the mechanics of Weather Thingy that are mentioned in the article, I noticed a few clear connections to programming languages. The conversion of weather cues to parameters allows them to be called by Arduinos in Weather Thingy, essentially serving as a function that generates sound. It’s amazing what computational art can create with sound!

Sources:

This is the article I referenced for my Looking Outwards this week.

Fanjie Mike Jin – Project 04 – String Art

sketch3

//Fanjie Mike Jin
//Section C
//fjin@andrew.cmu.edu
//Project-04

function setup() {
    createCanvas(400, 300);
}

function draw() {
    background(0);

    for (var i = 0; i < 401; i += 10){
 //top left curved lines
      stroke(179, 223, 242);
      line(i, 300, 0, i);
 //top left curved lines
      stroke(179, 183, 242);
      line(400 + i, 300, 0, i);
 //bottom right curved lines
      stroke(115, 236, 235);
      line(i, 300, 0, i / 2);
 //bottom right curved lines
      stroke(179, 223, 242);
      line(400 - i, 300, 400, i / 2);
//top right curved lines
      stroke(179, 223, 242);
      line(400 - i, 300, 400, i);
//top right curved lines
      stroke(179, 183, 242);
      line( - i, 300, 400, i);
//bottom left curved lines
      stroke(179, 223, 242);
      line(i , 0, 400, i * height / width / 2);
//bottom left curved lines
      stroke(115, 236, 235);
      line(i, 0, 400, i * height / width);
//top right curved lines
      stroke(115, 236, 235);
      line(400 - i, 0, 0, i * height / width / 2);
//top right curved lines
      stroke(115, 236, 235);
      line(400 - i, 0, 0, i * height / width);
// center line
      stroke(115, 236, 235);
      line(i ,0 ,0 ,i);
// center line
      stroke(115, 236, 235);
      line(400 - i ,0 ,400, i);
    }
}

In this project, I was interested in using a repetitive pattern to create an interesting composition. I was trying to use different curved lines to show depth of the layers and ultimately create a strong sense of different hierarchies.