Assignment 4: Automation & Emergence

  1. Utilize Node.js and Arduino to create a communication via MQTT that sends and receives data from different remote users/systems. Create an installation scenario – where is this used, and why?

Synesthesia is a perceptual phenomenon in which stimulation of one sensory or cognitive pathway leads to involuntary experiences in a second sensory or cognitive pathway. Photism is a specific type of synesthesia in which colors involuntarily evoke a certain sound or any other synesthetic visual experience. For this assignment, we are building a device that recreates that sensory connection between visual and audio experiences. It is an experimental attempt to manifest photism synesthesia using machines. We imagine a technology that translates visual artworks into music and melodies, which became a new cross-disciplinary form of artistic creation. The process of creating artwork can also be documented in real-time using audio forms, just like a live concert for visual art. Through MQTT communication, the translated music can then be streamed to the world.

Our device contains a color sensor as input and a buzzer as output to transfer colors to sounds. The mechanism is really simple: A specific sound is triggered by a certain range of colors. A painting can then be transformed into a melody.

Arduino Code:

int inVal = 0;
int n ;

void setup() {
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
pinMode(4, OUTPUT);
}

void loop() {
if (Serial.available()) {
delay(10);
char str[10];
byte index = 0;
while (Serial.available() && index < sizeof(str) – 1) {
str[index++] = Serial.read();
str[index] = ‘\0’;
inVal = atoi(str);
//n = inVal;
}
}
analogWrite(4, inVal);
//inVal = map(inVal,5000,30000,50,14000);

if (inVal<10000){
tone(4,261, 200);
} else if (inVal>10000 && inVal<15000){
tone(4,293,200);
}
else if (inVal>15000 && inVal<17000){
tone(4,239,200);
}
else if (inVal>17000 && inVal<18000){
tone(4,293,200);
}
else if (inVal>18000 && inVal<20000){
tone(4,329,200);
}
else if (inVal>20000 && inVal<25000){
tone(4,349,200);
}
else if (inVal>25000 && inVal<30000){
tone(4,392,200);
}
else if (inVal>30000 && inVal<50000){
tone(4,440,200);
}else{
tone(4,523,200);
}
//buzzer();
//Serial.println(n);
//Serial.println(inVal);
}

MQTT&nodeRecieve(Stream).js on Atom:

2. Read this article, and present your thoughts and ideas in a blog post that discusses about responsive design within a space shuttle (provide literature reference(s) to support your argument).

Leave a Reply

Your email address will not be published. Required fields are marked *