Enter Sandman


We listen every day to the specters of many living artists and also dead. Technology allows us to preserve their thoughts and feelings in the form of waveforms and also as words.

When I was turning 18 I received my first dose of Morphine. A friend gave me my first Morphine cd. I can still recall the moment when I played the record on my sisters Sony silver portable player. It was real, real love… Love at first listen… I then started downloading music from this amazing band as crazy as a Morphine Junkie looking for the next hit. When I was able to go to Tower Records to look for their other records I was so happy to spend my aunts birthday money on them. Suddenly I read “Dedicated to Mark Sandman” and then I see: “Mark Sandman, 2 string bass and vocals” then after some neural activity my blood was cold… I felt the shock of losing a very close person who I never met before.  I found out he died at a young age. He took a plunge to the other side as only true rockstar do: he died on stage from a heart attack.

Here, we are summoning the spirit of Mark Sandman. The goal is to share his unique, fun, controversial, sometimes poetic, other times funny, or spicy or fun, as life itself.  He almost fulfilled his wish of sitting on his back porch in 9, 9 , 1999 singing french fries with pepper!. But he didn’t, he passed a couple of months earlier to that date. So now we are giving him some nice as a way to trade it for some of his words and thoughts, that thanks to technology allow him to exist in a virtual way among us.

For this purpose, we are relaying now on computer vision, pepper and some lines of magic spells, also known as code. All randomness in this magical system comes from the physical action of the computer counting pepper and Mr Sandmans spirit assigning a phrase to that number.

This project plays with different ideas such as the practice of Necromancy, in a metaphorical way.  Also with the idea of the ready-made and the practice of decontextualizing, and the idea of appropriation. Concepts inherited from the avant-garde times. Also from the idea of the monument to commemorate the life of an important person and to keep his memory. The idea of the monument as a way to raise interest in the work done by Mark Sandman.

If you are curious about Mark, a good way to start to know about him could be looking at this article about him from the Washington Post. But also I would advise you to listen to his music on YouTube or other web music platforms. There’s also a documentary called “Morphine, a Journey of dreams”. I would definitely advise you to listen to Morphine’s last record “The night”, with a great stereo or headphones.


The technical process

The process for the code was tricky. The problem to be solved was how to use the “random” number that came from counting the pepper and being able to use it to match the range of the phrases from the songs from Mark Sandman’s lyrics. Using the random function from the computer was a possibility, but it was an easy and boring solution.  And we also wanted the result to be linked closely to the pepper’s amount. So after some thinking, I realized I could use a list of different JSON files, each from a single song, and then use the pepper count number again inside the selected song JSON file. Another issue was the problem of having a larger pepper count number than the amount of JSON song files and of lines inside the son JSON song files. After days of code struggle and headaches and suffering, I could finally write a  for loop to change the position inside the array if the incoming pepper count number was larger then the JSON array size.

Another issue at first was working with JSON files. I didn’t realize the importance of the end the lines until I had formatted almost 30 songs. After struggling with incomprehensible mistakes I finally understood how they had to be written, and how a missing coma or double quote could mean a total disaster. I heard Marks Sandmans voice in my mind singing “Have patience, everything will be alright”

The physical part

The next problem to solve was the physical part. I figured out that I needed specific requirement for the code to work. The hat needed to have enough distance to be able to have a proper pepper count reading and also to be able to show an interesting ambiguous “spectral-looking” image.  So the initial simple design had to be modified, and a box was required to solve this issue.  There’s still work to do to make it a more sophisticated and good looking device.  A better visual design for the interface is also needed.

The interaction with the user

The interaction from taping the hat is interesting and works. Some voice recognition could be added to make it better and more magical. Also by adding the sound output to the text would be great.


The Proccesing magic spell:

This code has been written thanks to the help of Danny Rozin, Lisa Jamhoury, Daniel Castano and Leon Eckert!!!
It requires the OPENCV for Processing library installed

import processing.video.*;
import gab.opencv.*;
import processing.pdf.*;
import processing.serial.*;
//Pi mage is a way of refering to images by open cv
PImage src;
OpenCV opencv;
Capture video;
int count = 0;
ArrayList<Contour> contours;
Serial myPort;
//images array
//PImage[] images = new PImage[10]; FOR USING WITH THE DIE
//PImage[] images = new PImage[70];
//PImage img = new PImage();
//inicialize random
//int imageNumber; // **** (is going to be used as the open cv number)

//ArrayList<DrawDice> drawDiceResults;
JSONArray introWords; //frases de instrucciones
String introWordsLine=””;
JSONArray songs; // jason array de coleccion de canciones
String line=””; //linea de la cancion que va a ser seleccionada
JSONArray hiSandman; // mensaje de saludo de Mark #1
String hiSandmanLine=””;
JSONArray sandmanSays; // mensaje de saludo de Mark #1
String sandmanSaysLine=””;

void setup() {
size(1900, 1200);

myPort = new Serial(this, Serial.list()[7], 9600); // 7 puede cambiar segun el puerto de conexion

String[] cameras=Capture.list();
if (cameras.length == 0) {
println(“There are no cameras available for capture.”);
} else {
println(“Available cameras:”);
for (int i = 0; i < cameras.length; i++) {
println(“Id: ” + i + “–> ” +cameras[i]);

video = new Capture(this, 960, 540, cameras[19], 15); //camera id(19) 15 (frame rate)match the space for open cv to work to the same camera space
opencv = new OpenCV(this, 960, 540);

hiSandman = loadJSONArray(“hisandman.json”); // my name is mark, do you like french fries?
sandmanSays = loadJSONArray(“sandmansays.json”); // hey,
songs = loadJSONArray(“alltexts.json”);

void draw() {
background (0);

opencv.useGray(); // turn our pic to grayscale
image(video, 444 , 230, 950, 750); // visualize the open cv filtered image
fill(255, 255, 255, 200);
text(“Hello my name is Mark Sanman, I used to play with a band called Morphine, but crossed to the other side in 1999. My spirit lives now as data inside this computer.”, 160, 60);
text(“All I eat now are imaginary french fries, but I would appreciate nice and spicy real pepper, so I can turn it into ghost pepper!”, 280, 105);
text(“Pour some pepper on a plate for me. Soflty whisper Sandman and tap the top of the hat and I’ll tell you whats going through my mind”, 395, 155);

fill(255, 255, 255, 200);
text(line, 50, 1050); // hisandman
fill(255, 255, 255, 200);
text(hiSandmanLine, 720, 195); // hisandman
text(sandmanSaysLine, 850, 1111); // hisandman


void mousePressed() { //change for serial event using read line

void serialEvent(Serial p) {
String inString = p.readString();
if (inString.equals(“s”)){

void doProcess(){

opencv.threshold(205); //opencv.threshold(225); // dice and water and oil and paper tolerance adjustment for the blob recognition with open cv.

opencv.blur(1); //opencv.blur(11); //for water and oil and paper

contours = opencv.findContours(); // tell opencv to find the contours and return as an array list
int countPepperGrounds=0; //count blobs
for (Contour thisContour : contours) { // visit all elements of the array list “contour” naming each one as “thisContour”
stroke(204, 102, 0);
countPepperGrounds=countPepperGrounds+1; //count++;
if(countPepperGrounds == 0){ // to prevent that counter = 0


// *** code below working only with open cv random using blob count
int songSelector= (countPepperGrounds-1)%songs.size(); // number will always be between 0 and the total size of the array
JSONArray songLines = songs.getJSONArray(songSelector); //-1 == correccion de la cuenta SELECTING THE SONG FROM THE ARRAY LIST (FIRST FILTER)
// print(song);

int songLineSelector = (countPepperGrounds-1)%songLines.size();
line = songLines.getString(songLineSelector); // Line is declared as a global variable so we can called in daw functionSELECTING LINES FROM THE SELECTED SONG
// println(line);

int hiSandmanSelector = (countPepperGrounds-1)%hiSandman.size();
hiSandmanLine = hiSandman.getString(hiSandmanSelector);

// println(hiSandmanLine);

int sandmanSaysSelector = (countPepperGrounds-1)%sandmanSays.size();
sandmanSaysLine = sandmanSays.getString(sandmanSaysSelector); // SELECTING LINES FROM THE SELECTED SONG

// println(sandmanSaysLine);


void captureEvent(Capture c) {

Computer Pseudo Random vs Physical Pseudo Random

The idea of this exercise was to think about randomness and to try to create a random function that can be used with a computer, without using the random function used by the computer. A complex mathematical operation which is an algorithm that simulates randomness in a way that is very good for the eye of most people.  But if inspected closely it can show some repetitive patterns.

In this case, we are comparing the random function used by Processing with a random function created using computer vision to “read” images from the real world and Processing code to translate that input into values that would be the alternative random.

For this purpose we tested the system with water with oil, pure water, pieces of white paper over a dark background and paper on water, mixed with oil.

The results are interesting. The “analog” randomness resulted to be more predictable that one could expect. Depending on the interaction with the elements, the resulting number would be shifted towards certain numbers. An interesting fact is that close numbers are repeated but there’s no absolute certainty that when clicking the mouse to read the random result you will get the same number twice, even if the recipient and the elements haven’t been manipulated recently.

On the other hand, it seems like the Processing random function has an even distribution, that once in a while repeats a result, just to look like it is a real random function. We can see more result diversity with this system than with the current analog system.


Die is the answer!


Die is the answer!

For this meditation I chose to play with the idea of automatic writing, the concept of the authorship, and also with the idea of randomness as a topic. I took the given example using the Markov chain, provided in class, to make a ready made of this code, in order to make an automatic writing program that creates enigmatic phrases about randomness in a very intriguing, and if we want to use the words poetic and funny way. I was struck by the idea of how the authorship is a very flexible and questionable concept since modern times, and since postmodern philosophy. We do we start building something? Where do we stop? What happens with the legacy of the many people in the contribution chain that led to the achievements? Is their authorship dead? I prefer to think that this contributions and achievements are a way of immortality of the authors. These legacies will be modified and affected by the actions of the next contributors. In this particular case, the idea was to give way to a random speech about randomness, while also putting into dialogue different voices of authors who wrote about randomness. A selection of texts from song lyrics, quotes and a paper about science, and some Dadaist poetry are part of the “subconscious” of Mr Die. Some other point I want to talk about is the weird feeling I sometimes have when reading a book or listening to a song. I always feel as if the author where ghosts, but not in a creepy way. I feel like they are sending messages from another time and place. So I feel that this is a nostalgic way of invoking their voices and inviting them “back to life” to continue playing, collaborating and “creating” as they did before.

So what is randomness? I still don’t know, you can read some books about it. You can also talk to professors from different areas of knowledge like Physic’s, Math’s, Philosophy, Art’s, Theology, Chemistry, Literature and others. If you are still not satisfied, I will definitely advice you to Ask Mr Die for his current thoughts about it’s nature. I cant say he is right, but I can assure you his replies will be as valid as all the rest that you are going to find anywhere else!

Once the speech was fed with the proper material to create the proper language to reflect the topic of chance in a not so narrow way, then the design problem arise. I wanted to create a very fluid interaction between the user and Mr Dice. I want to have the possibility to make Mr dice relate his speech to a random author form the list of people from which the text was fed to the Markov chain model. So far I have struggled with P5 and haven’t still got to the point of being able o create a very satisfying and beautiful and fully functional interface. I can’t say how frustrating this process have been, and how I have been crashing against the walls over and over again (but that’s a different story). Something I would like to have is the possibility to tweet these phrases to create a memory of this hilarious, beautiful, and sometimes “pretentious-like” voice.

An important improvement I would like to ad, is including part of the users input in the quotes provided by Mr Die. That would probably give the quotes a little bit of more interest and “sense” for the user, making them feel as their existence and presence is key, and also giving Mr Die more credibility and authority as a Random Guru, “Thast’s my Moto”.

A design aspect I would like to have would be also “rolling” this dice every time, so you can also get a “true random fact” if you can say that exist.

The code reference written by Allisson Parrish  example used for this sketch is the following: http://alpha.editor.p5js.org/allison.parrish/sketches/S1Eangfax

The Photo Query

The photo Query is a program made for you to make a question about a particular concern that is in your mind, and to get an answer in the form of photographs, to be interpreted by you and a reader that you pick to have a conversation with.  The idea is that the reader will be someone you feel comfortable talking to.

The images come from a photo library with different photos from many subjects and places. When you open the application, it randomly gives you three rows made out of images. The first represents the past, the second the present, and the third one the future. The idea is that you pick one of each row.  Then, you create a narrative that will try to explain your concern connecting it with the image you chose, in terms of the past issues that could have taken you to the current situation. Then, the reader you picked for the reading, will give you his/her thoughts about the situation. You will then repeat the same process with the present row and the future.

After talking about the future, the reader will ask you we you didn’t picked the other images on each rows. The idea is to think if you are linking this images to ideas of things you are rejecting for some reason.


As you can see when running the program, you can only see a very limited amount of images. That is design problem caused by the P5 editor not allowing to upload more than that very limited number. Below you can see screenshots taken form the program run locally in the computer, so you can see how it is meant to work.

Why pictures?

Photography is a medium that uses the illusion of time. It collects footprints that being just a selection of a particular moment and place, creating the illusion of memory.  This images have no meaning on their own. By themselves they are only results of a technical and mechanical process. it’s each viewer that makes sense out of them. The potential  “meaning of the images” is very powerful. Only the author or authors of the images know the context and process of how the image was created. To others the pictures are some kind of riddle. When we see something we try to make sense out of it by making associations with our past experiences and knowledge. That’s why one picture is potentially a billion of pictures: it comes alive when someone looks at it and makes sense of it. An interesting aspect about human beings is the tendency to create symbols and narratives out of images, and also to use images and words to share ideas and narratives with others. As and example we can think of the use of photography as a documentation tool used by professionals in different disciplines as ethnography, anthropology, science, history, among others… The use of photography is a fascinating and rich subject, that could not be addressed even with a thousand pages book! But what is important here to mention is the contradiction in photography regarding objectivity and subjectivity. In this case we are using the potential of photography as a trigger or tool to make subjective interpretations, and not as a document that pretends to give information or point out a true fact.

Another big improvement for a future version could be a key part of this idea. It would be allowing the user to upload a photo archive of his own, previously to doing the reading. Somehow using unknown images and familiar images could be both interesting ways to trigger our unconscious and imagination to start a dialogue and analysis about a situation. It’s something that would be interesting to try.

Finally, it’s interesting for me to say how the process of collecting the images from the huge photo archive was an interesting and strong process from an emotional and rational point of view. The images triggered many thoughts, sensations and feelings that made me think about my past, my present and my future. They revealed how powerful and magical pictures can be. Magical in a more open sense than just a positive way.


Consfess! by Nathier Fernandez and Nicolas Sanin

Confess and repent!!!

Nathier and I were raised in Colombia, a country with a very strong Catholic culture and values. The church has many rituals, rules, dogmas and sacraments. We chose to create a ritual besad on one of those sacraments: confession. Confession is for us a very interesting one for various reasons. It seems like an old way of having a therapist listening to you and also giving you advice. Also we can see it as a control mechanism for the church to control thoughts and behaviors from people.

From our own experience, we felt a bit traumatized in our childhood from being forced to tell our sins and bad behaviors and thoughts to a stranger. We felt that our intimacy was violated and we felt we didn’t have reasons to trust this stranger or to feel confortable revealing our darkest parts of us to them.

We decided to do a ritual to exorcise this trauma throw the use of irony and humor. As part of confession as a ritual of clearance of conscience a purge its necesary to go clean. And that its the parto on this code that  is still  under construction.