Intro to Computational Media · Uncategorized










I would like to talk about the process, about my process at ICM and this final work.

As you might recall it began with clouds and marble sculptures, well actually it began with looking up, looking into the blue skies and finding myself amazed with the movement of white.

So I decided to study particle systems and clearly Shiffman’s tutorials were not enough, but I found myself looking for more, trying to understand how nature works how we work. I couldn’t understand the math or the physics really but there was something I felt i did understand something that seemed very logic and visual to me but very abstract when I tried to define it.

I decided to stop the online tutorials for a moment and I went back to books. I think it was the best decision I made because I realized that all of those interesting, complex and fascinating ideas that I read about in my books on anthropology, sociology and art theories I now imagined them being created or expressed in p5 sketches and suddenly a door opened!

I kept on reading and mixing my books with new books on physics and code; in the midst of my research a thought came to me: “an acoustics of change begins with an encounter”1 …

Somehow, I thought this quote explained the logic behind particle systems. And I wondered, How can I express this with code?

Acoustics= waves/amplitude

Encounter= the immediate thought is: to meet someone or something else, but isn’t the first encounter with ourselves?

We see the canvas or space as empty, as waiting for our creativity and information to be deployed, but in reality the canvas is already full, how much information: layers of information make it. x y z , etc plus our own images assumptions information etc, therefore what we do as we approach canvas is to delineate, to subtract, understand.

An encounter implies space and time. – as we attempt to delimit our own geographies by following our vibrations we realize that in order for this to happen the other most exist, a wave will not delimit our geometry if there was no distance, if we didn’t position ourselves in space and in relation to others.

Like particles  as they grow together.

I went back to my old notes from the first ICM classes and realized I have been wondering around the same concepts.

“It is our task to organize the silence in which we begin.”

“That is, the software “corrects” us through the assumptions of approximation.”

“Our most ancient and exquisite self-correcting tool has always been neither the pen nor the scalpel, but the algorithm.6″

“If we operate according to an acoustics of change, the one who holds the microphone listens in the space of silence. Silence is the desire of the other. It organizes a politics of many. If the microphone is only used to amplify oneself, then one may as well have grabbed a hammer.”


Ultra-red, “Some theses on militant sound investigation, or, listening for a change.”

Francesca Hughes, “Facilities for Correction”


//computer tell me something that makes me think, that moves me.
//Then I click and I see an encounter. Show me a virtual encounter, show me a real encounter. Which one happens first? 
//An encounter seems to be with the other, but isn't it always with ourselves first? For the point to exist, does it need a line? It needs another point. 

var weWantToShowTheVideo = false;
var mic;
var micLevel;
var points = [];
var prevFrame;
var threshold = 100;
function preload() {
 img = loadImage("titulo.JPG");
 capture = createCapture(VIDEO);
function setup() {
 var cnv = createCanvas(windowWidth, windowHeight);
 mic = new p5.AudioIn()
function draw() {
 background(255, 17);

if (weWantToShowTheVideo) {
image(capture, windowWidth / 2, windowHeight / 2);
 } else {
image(img, windowWidth / 3, windowHeight / 2, 450, 50);
micLevel = mic.getLevel();
for (i = 0; i < points.length; i++) {
function mouseMoved() {
 if (weWantToShowTheVideo) {
 var newPoint = new Point();
 newPoint.xpos = mouseX;
 newPoint.ypos = mouseY;
function Point() {
 this.xpos = 0;
 this.ypos = 0;
 this.display = function(micLevel) {
ellipse(this.xpos, constrain(this.ypos - micLevel * this.ypos * 10, 0, this.ypos), 10, 10);
ellipse(this.xpos, constrain(this.ypos - 40 + micLevel * this.ypos * 10, 0, this.ypos), 10, 10);
function mousePressed() {
weWantToShowTheVideo = true;
//I enjoy the movement of the console.


Code 2:

//initial positions

var posInitX1;
var posInitX2;
var posInitY1;
var posInitY2;

//current position
var posX1;
var posX2;
var posY1;
var posY2;

//movement for updating position
var incrementX;
var directionX;
var incrementY;
var directionY;
var myDiameter;

var mic;
function setup(){
 mic = new p5.AudioIn()
 //first ellipse starts in upper left corner
 posInitX1 = 0;
 posInitY1 = 0;
 //second ellipse starts in lower right corner
 posInitX2 = width;
 posInitY2 = height;
 //initialization of position
 posX1 = posInitX1;
 posY1 = posInitY1;
 posX2 = posInitX2;
 posY2 = posInitY2;
 //diameter of ellipses
 myDiameter = 10;
 //define movement direction and amount
 incrementX = 1;
 directionX = 1;
 incrementY = 1;
 directionY = 1;
function draw(){
 background(255, 17);
 micLevel = mic.getLevel();
 //ellipse(width/2, constrain(height-micLevel*height*5, 0, height), 10, 10);
 //ellipse(width/2, constrain(0+micLevel*height*5, 0, height), 010, 1);
 // incrementX = 5*micLevel;
 //update position of ellipses
 if (micLevel > 0.02 && (dist(posX1, posY1, posX2, posY2) > 1)) {
 posX1 = posX1 + incrementX*directionX;
 posX2 = posX2 - incrementX*directionX;
 posY1 = posY1 + incrementY*directionY;
 posY2 = posY2 - incrementY*directionY;
 ellipse(posX1, posY1, myDiameter, myDiameter);
 ellipse(posX2, posY2, myDiameter, myDiameter);
 //ellipse(mouseX, mouseY, 70,50);


var vid;
var mic;
function preload(){
 vid = createVideo("");
function setup(){
 createCanvas(400, 400, WEBGL);
 mic = new p5.AudioIn()

function draw(){
 //pass video frame as texture
 micLevel = mic.getLevel();
 plane(200,constrain(height-micLevel*height*5, 0, height));
 micLevel = mic.getLevel();


Loading Facebook Comments ...

Leave a Reply

Your email address will not be published.