zhuoyinl-Lookingoutwards4

MIDI

This project is a portable, autO-powered MIDI controller that boots up into a variety of apps to integrate events with sounds. It indicates the sound and waves through the lights under the buttons which is inspired by both the monomer and tenori-on. By using loops in programming the apps, the inventor was able to visualize the sound played within the MIDI and control the output from the reinvent device with simple movement variables. The idea is inspiring to me because it visualized the acoustic field which is being overlooked by many people and making interaction with the invisible sound wave possible by cheaper and more accessible device.

Diana Connolly – Project 4

Project 4

function setup() {
    createCanvas(640,480); //assigned canvas size
    background(0); //black background
}

function draw() {
    //Letter holes
    fill(150); //fills the letter holes with gray
    noStroke(); //no outline for the letter holes
    var holeHeight = 280;
    var holeWidth = 200;
    var holeX = 95;
    arc(holeX, height/2, holeWidth, holeHeight, -PI/2, PI/2, CHORD); //D hole
    arc(width-holeX, height/2, holeWidth, holeHeight,PI/2, -PI/2, CHORD); //C hole, semi-circle portion
    rect(width-holeX, height/2 - holeHeight/2, holeWidth, holeHeight); //C hole, rectangle portion

    //Lines
    strokeWeight(2);
    for (var i=0; i<(width/2); i+=15) {
    stroke(-225,255,255);
    line(i, 0, width/2, i-height/8); //top left curve
    line(width/2, (height/2)-i, i+width/2+10, 0); //top right curve
    line(i, height, width/2, height-(i-height/8)); //bottom left curve
    line(width/2, (height/2)+i, i+width/2+10, height); //bottom right curve
    }

    for (var i=0; i<(height/2); i+=15) {
    stroke(255,0,0);
    line(0, i, i*1.5, height/2); //left top curve
    line(width, i, width - i*1.5, height/2); //right top curve
    line(0, height-i, i*1.5, height/2); //left bottom curve
    line(width, height - i, width - i*1.5, height/2); //right bottom curve
    }
}
  

For my project, I wanted to play around with curves that met in the middle of the screen. I drew 4 blue curves that all met at the center point. After drawing these I realized that the negative space looked like it was spelling my initials — DC! So I filled in letter holes to make the DC pop out more, and then topped the piece with 4 more red curves on top for added depth.

Isabella Hong – Looking Outwards – 04

For my Looking Outwards post this week, I decided to learn more about the album “Spicule” by Yaxu. Here’s the link to the article I read:

‘Spicule’ by Yaxu – Album as a live coding device on Pi Zero

Spicule is an album by Yaxu, also known as Alex McLean, that can be constantly edited using Pi Zero and the TideCycles live coding environment. This is not his first time working with sound and code – he has performed at festivals throughout Europe with artists Slub and Canute and has also helped pioneer the movement of live coding.

Yaxu’s music in terms of sound is all electronic, a very popular genre of music amongst today’s youth. His musical sound and method of creation align with each other and the audience that he is targeting at music festivals, another cultural craze amongst today’s youth.

I highly admire Yaxu for using code to produce his sound. It seems that these days anyone can create electronic music, presenting the idea that maybe it lacks a certain depth, meaning and intention. However, by manually controlling every aspect of the final sound, Yaxu demonstrates the amount of work that can go into producing this very popular sound.

mreyes-looking outward 04-The Global Synthesizer Project

The Global Synthesizer Project,Yuri Suzuki, 2016

e6f7af8ebb9d3d1b3ec029457b1d6765

The Global Synthesizer Project complies environmental sounds from around the globe into an interactive sound based installation. The installation exhibits various modules that represent different parts of the globe. The user may interact with the piece through high frequency cables that allow the user to customize a mini symphony.81049319e3755e412d97d214446eb015-1

Yuri Suzuki teamed up with Moog music to pair samples with modular synthesis and program a reverb algorithm which allows users to “time stretch”. this allows the user to edit the start and stop time of the sample and giving the user some control of the pitch. The reverb is also a convolution, which takes reponses from real space and applies it to an incoming signal.

I admire Suzuki’s ability to engage interaction in a gallery setting as that is not what is common in that setting and therefore hard to encourage. I Suzuki has claimed that he had long wanted to use sounds from around the world in a installation. While this project accomplishes that there are still more boundaries to push in this project both in level of interaction and in concept. I personally hope he continues to develop this work.

 

 

GarrettRauck-Project-4

sketch

//Garrett Rauck
//Section C
//grauck@andrew.cmu.edu
//Project-04

/////////////////////////////
// DECLARE VARS
/////////////////////////////
//canvas
var canvasWidth, canvasHeight, cx, cy, margin
//mouse
var xm, xy; //constrained mouseX and mouseY\
//color
var bgColor, nColor, hColor; //background, normal, and highlight colors

//Spiral
var r0, theta0; //initial values for recursive spiral

/////////////////////////////
// HELPER FNS
/////////////////////////////
function drawSpiralArt(r, theta) {
	//mouseX controls amount by which spiral lines are decimating
	//in length with each recursive call
	var reductionFactor = map(xm,0,canvasWidth,0,1);
	//mouseY controls rotational increment between strings in the
	//spiral. Varying this by numbers which are not factors of 2*pi
	//leads to different types of spirals. 
	var angleIncrement = int(map(xy, 0, canvasHeight, 1, 10));
	//get spiral points per call
	var p1x = cx + r*sin(theta);
	var p1y = cy + r*cos(theta);
	var p2x = cx - r*sin(theta);
	var p2y = cy - r*cos(theta);
	//draw grey strings
	stroke(nColor);
	line(0, 0, p1x, p1y); //top left to p1
	line(canvasWidth, 0, p1x, p1y); //top right to p1
	line(0, canvasHeight, p1x, p1y); //bottom left to p1
	line(canvasWidth, canvasHeight, p1x, p1y); //bottom right to p1
	line(0, 0, p2x, p2y); //top left to p2
	line(canvasWidth, 0, p2x, p2y); //top right to p2
	line(0, canvasHeight, p2x, p2y); //bottom left to p2
	line(canvasWidth, canvasHeight, p2x, p2y); //bottom right to p2
	//draw main strings; 
	stroke(hColor);
	line(p1x, p1y, p2x, p2y); //through center (core of spiral)

	//recursive call until base case is met
	if (r > 1) {
		drawSpiralArt(r*reductionFactor, theta + angleIncrement);
	}


}
/////////////////////////////
// RUN!
/////////////////////////////
function setup() {
    //init canvas vars
    canvasWidth = 640;
    canvasHeight = 480;
    cx = canvasWidth/2;
    cy = canvasHeight/2;
    margin = 30;
    //init color vars
    bgColor = color(255); //white
    nColor = color(136,136,136,35); //grey, semitransparent
    hColor = color(255,0,136); //fucia
    //init spiral vars
    r0 = canvasWidth/2
    theta0 = HALF_PI;
    //init canvas
    createCanvas(canvasWidth, canvasHeight);
}

function draw() {
	background(bgColor);
	//recalculate mouseX, mouseY with constraints
	xm = constrain(mouseX, margin, canvasWidth-margin);
    xy = constrain(mouseY, margin, canvasHeight-margin);
    //draw spiral
	drawSpiralArt(r0, theta0);
}

I wanted to use trigonometry to create a series of points predicated on circular geometry and then connect the points to various other points across the canvas. I ended up using recursion to generate a central spiral. I then used the mouse position to control the degree to which the length of strings in the spiral decimates (the rate at which the strings spiral towards the center) and to control the rotational rate of the strings in the spiral, so that spirals of various character could be created.

img_1987
Early sketches showing ideas relating to circular arrays of points.

 

img_1986

Later sketch focusing on spiral series generated from recursive rules.

 

Looking Outwards-Hannah K-04

The work I looked at this week is called Six Drawings, which is a joint collaborative effort between Maotik (generative visuals artist), Diego Espinosa (performer/composer), and David Adamcyk (composer). I was especially fascinated by this work because it creates an environment where it feels like one in inside a balloon. It was visually pleasing and a totally immersive experience. The audiovisual nature of this work made it especially powerful, and I would have liked to experience it in person.

It was presented as an instrumental audiovisual performance in May 2014 at Société des Arts Technologiques in Montreal during the IX Symposium. This project works by Diego Espinosa, the performer, controlling a custom made rubber orb (which looks like a balloon) to act as an all-powerful controller for the installation. The rubber orb was connected to microphones, sensors, and a computer which was running Max multimedia software. The orb also controlled the lights and the aural vibrations coming from the speakers. By using a program called TouchDesigner, Maotik was able to use the audio data to generate 3D visuals.

While I was able to gather information on the kinds of software that were used, there was little information available about what the actual creative process entailed.

Jinhee Lee; Looking Outwards 04

Mesa Musical Shadows from Daily tous les jours on Vimeo, published in 2016 by Greg J. Smith.

This project causes speakers to play various melodic and percussive sounds when sensors in the ground detect shadows over them. The sounds vary depending on the length of the shadows overlooking the sensors. e.g., morning would cast longer shadows, resulting in slower more ethereal music, while midday with its shorter shadows would result in more percussive and dynamic sounds.

From a computational standpoint, it seems that the system is built to respond to the shadows exclusively instead of the time of day. It is mentioned that each sensor unit has a custom PCB with a light sensor on top and an LED on its bottom, for nighttime illumination. I believe that the sounds could be organized in a library, chosen depending on the intensity of light reaching the sensors and how long the shadow stays (assuming the people keep the shadow in constant motion).

This assumption makes sense for a variety of reasons. Weather could affect the Sun’s visibility and the shadows to be cast, which might break the immersion if the sounds were calculated using time. And having the system respond to fluxes in the intensity of light reaching the sensors means that people could manipulate shadows to tailor the sounds to their liking.

Brandon Darreff – Project-04-String-Art

bdarreff_project_04

//Brandon Darreff

//Section A 

//bdarreff@andrew.cmu.edu

//Project-04

var diam; //circle diameters 
var h; //ribbon flared ends control
var x; //horizontal ribbon driver
var y; //vertical ribbon driver
var sd = 40; //starting diameter of circles

function setup() {
	createCanvas(480, 640); 
}


function draw() {

	background(23, 51, 68);

	noFill();

	for(diam = sd; diam <= 260; diam *= 1.1) { //background circle left
		stroke(75);
		strokeWeight(1);
		ellipseMode(CENTER); //modify ellipse drawing origin 
		ellipse(width / 2.4, height / 2.667, diam, diam);
	}

	for(diam = sd; diam <= 250; diam *= 1.1) { //background circle right
		stroke(75);
		ellipse(width / 1.37, height / 1.44, diam, diam);
	}

	h = 50; //assign flared end control value

	for (y = 200; y <= 400; y += 10) {

		stroke(200, 91, 111); //vertical ribbon color backdrop
		strokeWeight(.5);
		bezier(y + 80, 0, h + 5, 575, 450, 280, y + 75, height);

		stroke(220);		
		strokeWeight(0.75);	//vertical ribbon white overlay
		bezier(y + 100, 0, h, 550, 500, 270, y + 10, height);
		h -= 15 //flared end multiplier
	}

	for (x = 50; x <= 250; x += 15) {

		stroke(200, 91, 111);	//horizontal ribbon color backdrop
		strokeWeight(0.35);
		bezier(0, x - 30, 125, 305, 950, 300, 0, x + 370);
		
		stroke(200);		//horizontal ribbon white overlay
		strokeWeight(0.25);
		bezier(0, x - 50, 125, 285, 950, 300, 0, x  + 350);
		h -= 12; //flared end multiplier
	}


	for(diam = sd; diam <= 230; diam *= 1.05) {	//white circle left
		stroke(255);
		strokeWeight(1);
		ellipse(width / 2.133, height / 2.783, diam, diam);
	}

	for(var diam = sd; diam <= 150; diam *= 1.05) {	//white circle right
		stroke(215);
		ellipse(width / 1.574, height / 1.471, diam, diam);
	}

}

With this project I explored using arrayed curves to mimic ribbons across the defined canvas. By focusing in on the intersection points of the two ribbons using ellipses, the intent was to create depth using tone and varying line weights.

fullsizerender

Looking Outwards-04

As a circus performer, one of the many challenges of choreographing is finding a balance between the visual motions and the music. In SWEATSHOPPE’s video, instead of balancing music with dance, they are balancing music with creating art. A choreographer’s biggest job is making sure that the music meets the movements: a moment of silence in the music should be a moment of silence in the dance, usually following an explosive movement. SWEATSHOPPE has had to combine finding that balance with coding – something I admire incredibly.
I know that they have to create their own software to track the motion of the paintbrush to generate the images on the wall, but then they have to match up the music to the motion of the brush and the manifestation of the art on the wall. I suppose that part of this is human choice and part of it relies on adjusting the timing of the art’s generation to the moments in the music.

https://vimeo.com/39765217

Isabella Hong – Project 04 – String Art

It’s been hot for too long so I’m craving the sight of snow falling outside my window. Hence, my creation.

I coded this “blizzard” by creating my own “snow” function and using “for” loops in order to create the curves on the upper right and lower left corner that serve as my window frame. I think a difficult aspect of this project was getting the curves to look how I wanted and getting them to overlap in the corners. I’m quite pleased with the end result.

ijhong-04

// Isabella Hong
// Section A
// ijhong@andrew.cmu.edu
// Project-01

//string star point size
var c = 10; 

function setup(){ 
	createCanvas(480, 640);
}

function draw(){
	//midnight sky 
	background(0, 0, 52);
	//blizzard 
	for (var x = -75; x < width; x += 75){
		snow(x, 75);
		snow(x, 150); 
		snow(x, 225); 
		snow(x, 300); 
		snow(x, 375); 
	}
	//curve #1
	for (var a = 0; a < width; a += 5) {
		stroke(255);
		strokeWeight(1);
		line(a, 0, width, a); 
	}
	//curve #2
	for (var b = 0; b < height; b += 5) {
		stroke(150); 
		strokeWeight(1);
		line(b, 0, height - 100, b); 
	}
	//curve #3
	for (var c = 0; c < width; c += 5) {
		stroke(255);
		strokeWeight(2);
		line(c, 640, width - 640, c);
	}
	//curve #4
	for (var d = 0; d < height; d += 5) {
		stroke(150);
		strokeWeight(1); 
		line(d, 640, height - 640, d); 
	}

}

//draws all the elements that are being animated 
function snow(x, y) {
	push(); 
	translate(x, y);
	rotate(millis()/20); 
	push(); 
	angleMode(DEGREES); 
	stroke(150); 
	rotate(30); 
	line(100, 100, 25, 100);
	rotate(30); 
	line(100, 100, 175, 100);
	rotate(30); 
	line(100, 100, 100, 25);
	rotate(30);  
	line(100, 100, 100, 175);
	rotate(30);  
	line(100, 100, 75, 75);
	rotate(30);  
	line(100, 100, 125, 125);
	rotate(30);  
	line(100, 100, 125, 75);
	rotate(30);  
	line(100, 100, 75, 125); 
	stroke(255);
	strokeWeight(2); 
	fill(255); 
	rotate(20);
	ellipse(100, 100, 2 * c, 2 * c); 
	rotate(20); 
	ellipse(25, 100, c, c); 
	rotate(20); 
	ellipse(175, 100, c, c);
	rotate(20); 
	ellipse(100, 175, c, c);
	rotate(20); 
	ellipse(100, 25, c, c);
	rotate(20); 
	ellipse(75, 75, c / 2, c / 2); 
	rotate(20); 
	ellipse(125, 75, c / 2, c / 2); 
	rotate(20); 
	ellipse(125, 125, c / 2, c / 2);
	rotate(20);  	
	ellipse(75, 125, c / 2, c / 2); 
	rotate(40); 
	ellipse(200, 200, c / 4, c / 4);
	rotate(40); 
	ellipse(200, 200, c / 4, c / 4);
	rotate(40); 
	ellipse(200, 200, c / 4, c / 4);
	rotate(40); 
	ellipse(200, 200, c / 4, c / 4);
	rotate(40); 
	ellipse(200, 200, c / 4, c / 4);
	rotate(40); 
	ellipse(200, 200, c / 4, c / 4);
	rotate(40); 
	ellipse(200, 200, c / 4, c / 4);
	pop();
	pop(); 
}