Research Critique: Glitch Aesthetics

 

Glitch art is the aestheticization of digital or analog errors, such as artifacts and other “bugs”, by either corrupting digital data or by physically manipulating electronic devices (for example by circuit bending).

In recent years it has found a central place in contemporary media art, particularly via the Internet where emergent low-resolution glitch forms and other so-called “accidents” of artifacts are often native to the medium. 

tumblr_mticoq91A51roo3oco1_r1_1280-e1390972312199


One of the key artists who have pioneered the art and theory of glitch aesthetics is Rosa Menkman. We will look at one of her famous works, The Collapse of PAL

The Collapse of PAL is a transmission art project that explores the performativity of television in light of the challenges brought about by a converging mediascape. Menkman’s performance dealt with obsolescence, death of media, and what is most interesting, media archaeology of signals and signal formats.

Instead of the focus on devices, even if at times lost and outside mainstream, we are seeing new perspectives that take in their focus components, processes and such “minor elements” of media history.

The screens were filled with electronic signal landscapes, of waveforms and at times recognizable Gestalts. The angel from future was the protagonist through whose mouth the Collapse of PAL painted a history of the PAL signal as loser to for example the DVB signal.
193500857_960
Despite the fact that I loved the piece, I also sensed the danger of nostalgia in this strong defensive reaction of history of losers – which was framed through an idea of progress as the force that blindly abandons all that it considers inefficient. A critique of rationalism and progress is not grounded enough. Thus there is a serious question for us to think about the answer: To what extent are we in danger of celebrating past media just for the sake of our emotional attachment to them as childhood memories and part of the collective media memories that are now in danger of being lost with new signal solutions and media environments? 

 

“I could only understand it as irrational and void of meaning, and so I walked away from it, confused and titillated”- Rosa Menkman.

 

Research Critique: Virtual Bodies in the Third Space

A virtual body is the state of being when inhabiting virtual reality or a virtual environment. The third space refers to a shared electronic social space where the physical and the virtual are blended. This topic is enigmatic and has been open to dispute.


telematic-Dreaming_low
Paul Sermon’s Telematic Dreaming was originally produced as a commission for the annual summer exhibition curated by the Finnish Ministry of Culture in Kajaani, with support from Telecom Finland, in June 1992.

Paul Sermon’s Telematic Dreaming (1992) turns a bed into the support of high-resolution images that might show a partner, intimately alive although being thousand kilometers away. The light-intense projection of the other results in a remarkable suggestion which turns the touch of the projected body into an intimate action.

But Sermon deliberately avoids providing an audio link so as to concentrate attention on the meeting of two bodies separated in real space but virtually conjoined: “human interaction was reduced to its simplest essence: touch, trust, vulnerability.”

Sermon aims at expanding the senses of the user, while it is obvious that the other cannot really be touched but that only swift, decisive, possibly tenderly reactive movements can experience the suggestion of touch—a moment of contemplation, as many users observed.

My response: The computerisation of human experience is generally thought to diminish the physical and emotional sides of life, yet the in the virtual world of Telematic Dreaming questions of privacy, intimacy and identity were central. Not only the performer but also many members of the public were overwhelmed by their experiences on the other bed.  The installation was paradoxical for not only using technology to provide a forum for experiencing the basics of human intimacy, but for situating this private interaction within a public domain.

Project Hyperessay #2: Conclusion

The objective of the collaborative project Touch was to investigate critical concepts and fundamental artistic concerns inherent in the emerging form of live networked performance in the third space, through creative dance movements, interactive wearables, smart textiles, audio-visual arts and the Critical Response Process (CRP).  

This collaboration between School of Art, Design & Media at Nanyang Technological University in Singapore and the School of Arts, Media & Engineering at Arizona State University took place on Thursday, April 21 (SGT) in a third space where the artist Angeline Young and students of ADM performed as a collective body. And the performance was being live broadcasted over the Internet to expand the experience of the networked performance to the global audience despite of the spatial divide.

23aaaaaa


My inspiration came from this project called “The Space Between Us” which was a collaborative electronic music and modern dance piece for computationally enhanced dancers and MAX/MSP, a programming language for interactive music and multimedia.

Link:

https://www.youtube.com/watch?v=msqol0w9NVs

pp1

One of the dancers’ (with the round skirt) costume combined LilyPad components and an XBee (wireless transmitter) together with pressure and flex sensors connected by conductive thread, which detected and transmitted the movements of the dancer to the composer’s laptop, which were then used to generate and control sound within a MAX/MSP environment.

So instead of a dancer’s movements being a slave to the fixed constraints of a pre-composed piece of music, the wireless dance costume put the power of live musical composition in the hands (body) of the dancer, who could explore and improvise new shapes and structures within an otherwise free musical environment. This became the concept for both my costume design and dance performance. 

 

The interactive mechanism of my costume was largely based on this idea. 

 

 

While conceptualising for the idea of the final performance, we had been explicating the concept of “touch” in the third space throughout the first half of the semester by exploring such topics as “the virtual body,” “distributed presence,” “third space,” “biometrics,””sensing garments and smart textiles,””glitch aesthetics,””dance movement” and etc. 

 

Some research critiques that helped me arrive at the final work I produced for the performance:

research2=2

This was part of a biomimicry project called braided beaded ball suit which was an emulation of the beautiful symmetry in nature. Artists who created this were very much inspired by the glowing creatures of the deep sea as well as weird formations in the human body to inform new approaches in design. This inspired my costume design of glowing LEDs in front of the background of the black velvet as well as the mesh structure created by wires which resembled vines in the nature. 

21aaaaaa

 

In my research critique of dance performance, Eiko & Koma’s iconoclastic work combined slow and nuanced movement vocabulary with bold theatrical design. Whether performing in a theater or in natural sites outdoors, Eiko & Koma often moved as if they were not human. Although this was not exactly what I imagined my dance movements in the final performance would look like, I did borrow the simpleness and directness from their dance. 

Essentially, dance is a way of communication. Without the fixed constraints of a pre-composed piece of music the artist’s personal narrative is embodied through pure movements – dance in its most pristine form.

Eiko and Koma

IMG_8736


He is a weaver of personal histories through sound, a composer, who conducts and orchestrates the sonic world that is generated by the movement and actions of Angeline and the colony. He carefully layers the sound to coordinate a sense of harmonic affiliation in the third space through the carefully blending of personal histories represented in sound. However, Yuhao’s efforts are often undermined and disrupted by the actions of Charlene and Feliciana. Yuhao seeks to overcome their resistance through mysterious answers from Angeline as to the amorphous and intangible nature of human communication in the third space to create a world of mutual understanding.

victorian_era_inverness_cape

 

Based on this character sketch, I designed and made my costume which was inspired by the Victorian Era men’s fashion. Most often associated with Sherlock Holmes, the inverness cape is a weatherproof outer coat which was often worn in 1880s London. 

 

IMG_8604

IMG_8605unspecified

With the costume in progress, I worked on electronic / wearables for incorporation into the piece. There were many possibilities for input sensing, from accelerometers to proximity sensors, and the goal was to create the ideal mapping of input and output, embedded appropriately in the garment or accessory for the performance.

Movement and gesture would be translated into sound. Each character emitted specific kinds of sounds. I spent a big portion of the time on codings especially the radio transmission of data used to generate and control sound within a MAX/MSP environment. We switched from bluetooth wireless to radio wireless as bluetooth had some connection problem with Mac causing the data transmission to be unstable.

nrf24L01-black

 

Under the guidance of Naga, I managed to transmit data between two nRF24L01 transceivers with one as the transmitter sending out the data and the other one receiving the data. The transmitter was connected to LilyPad which was sewn onto the costume. The receiver was connected to Randall’s Mac and Max software  extracted data from it to generate sound control.

Final performance

recording_4-14.01_18_03_08.Still001

recording_4-14.01_36_41_23.Still008 recording_4-14.02_01_46_14.Still011

 

Touch is not fundamentally about technology. Nor is it an attempt to define a new genre of art practice. It is about what we have been researching and exploring over the course of the semester which is called “the virtual embrace”. It is about experience. You will only know what it means after you experience it. The questions at the start of the project: What is “touch” in the third space?  How does it feel to “touch” without physically touching? How do our digital representations in the third space connect to our corporeal bodies during the “touch”? How has the “virtual embrace” transformed the way in which we engage in social media and digital communications? Maybe only six of us have an answer for ourselves and these answers don’t have to be the same. 

1aaaaaaa

Final Project: Project Update #4

Last week I worked on the wireless transmission of data between the costume (Arduino Lilypad Board) and the Max software on the laptop. After adopting the trial-and-error method, I managed to achieve a relatively smoother data flow. With both electronics and the clothes ready, the last thing to be done is to integrate everything and test the sounds/lights, and that the costume withstands duress from stretching, heat, and perspiration, etc.


 

IMG_8778

The first step toward a both functional and aesthetic costume is to sew electronic components onto the coat. My initial idea was to hide all the wires underneath the fabrics and exposing only sensors and LED lights. During the making process, I found that the exposed wires actually created unexpected aesthetic effects by adding another layer of texture on top of the black velvet material. Due to the elastic property of the wire, I was able to change its shape to construct a mesh in which LED lights were randomly yet evenly distributed.


IMG_8787
More wires and a more complicated mesh.

Another major concern was where to place the Lilypad main board. As it controls the functionality of the costume, it has very complex connections to rest of the circuit thus has lots of wires. I didn’t want it to be exposed so I made a slit near the collar and hid the slit with a fold.

IMG_8780

IMG_8784

 

IMG_8785


As a result the board was hid under the cape and would not affect the appearance of the costume. Moreover, I was able to adjust the direction to which the proximity sensor faced so it could give more accurate data.

 

And lastly, I tried dancing in the costume and it didn’t hinder most of my movements except some arm and shoulder ones because the existence of the cape and the wire mesh. I placed the power bank in my pants pocket and it worked normally. Another issue was that I had to adjust the angle of the proximity sensor from time to time as the wires connecting it tended to twist away from its original position.

 

Final Project: Project Update #3

Last week I finished most of the non-electronic aspect of the costume design.

On the performance day, I will wear a white shirt under the outer garment and probably black pants to look like a conductor of an orchestra.

IMG_8775


This week I focused more on codings especially the radio transmission of data used to generate and control sound within a MAX/MSP environment. We switched from bluetooth wireless to radio wireless (as shown in the picture below) as bluetooth had some connection problem with Mac causing the data transmission to be unstable.

nrf24L01-black
The nRF24L01 is a highly integrated, ultra low power (ULP) 2Mbps RF transceiver IC for the 2.4GHz ISM (Industrial, Scientific and Medical) band.

Basically there are two nRF24L01 transceivers with one as the transmitter sending out the data and the other one receiving the data. The transmitter will be connected to Lilypad which is sewn onto the costume. The receiver will be connected to Randall’s Mac and Max software will be extracting data from it to generate sound control.

Following is the code I have developed under the guidance of Naga. It is for both receiver and transmitter. Just change the value of the variable “role” to either “sender” or “receiver” when programming respective boards.

Probably you have noticed the big chunks of “if-else” clauses. They were written to ensure a gradual change of the parameter. As the proximity sensor sometimes gave us very sudden changes of the data, which in turn caused Max software unable to perceive and process it.

/* THIS PROGRAM IS SENDER AND RECEIVER FOR RADIO COMMUNICATION

SENDER HAS THE SENSOR CONNECTED
RECEIVER IS CONNECTED TO LAPTOP

*/

#include <SPI.h>
#include “nRF24L01.h”
#include “RF24.h”
#include “printf.h”

RF24 radio(9,10);
const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };

typedef enum { SENDER=1, RECEIVER} role_e;
const char* role_name[] = { “invalid”, “SENDER”, “RECEIVER”};

role_e role = SENDER;

int sensor_pin = A0;
int recv_values[3];
int sensor_values[3];
int ack_values[3];
int ar_size = 3;
uint8_t tmp;
uint8_t cnt;
bool read_status = false;
bool write_status = false;
int current_val ;
int previous_val;
int new_distance;
int old_distance;
int diff_distance;
int distance;

//LED section
int led = 8; // the PWM pin the LED is attached to
int brightness = 0; // how bright the LED is
int fadeAmount = 5; // how many points to fade the LED by

void setup()
{

pinMode(sensor_pin, INPUT);
// declare pin 8 to be an output:
pinMode(led, OUTPUT);
Serial.begin(57600);
printf_begin();
Serial.println(role_name[role]);

radio.begin();
radio.setRetries(15,15);
radio.setPayloadSize(sizeof(int)*ar_size);

if(role == SENDER)
{
radio.openWritingPipe(pipes[0]);
radio.openReadingPipe(1,pipes[1]);
}
if(role == RECEIVER)
{
radio.openWritingPipe(pipes[1]);
radio.openReadingPipe(1,pipes[0]);
}
radio.startListening();
radio.printDetails();
delay(20);

old_distance = analogRead(sensor_pin);
}

void loop()
{

if(role == SENDER)
{
radio.stopListening();
unsigned long time = millis();
//printf(“Now sending %lu…”,time);

new_distance = analogRead(sensor_pin);
diff_distance = new_distance – old_distance;

printf(“%d %d %d”, new_distance, old_distance, diff_distance);

if (diff_distance >=10){ //sudden change in data
//make sudden changes smooth
distance = old_distance;
printf(“%d”,distance);
//for (int counter = 0; counter < diff_distance; counter++) {
distance = distance + int(diff_distance/4);
if (distance <= 12) {
distance = 1;
} else if (distance <= 14){
distance = 2;
} else if (distance <= 16){
distance = 3;
} else if (distance <= 18 ){
distance = 4;
} else if (distance <= 20 ){
distance = 5;
} else if (distance <= 22 ){
distance = 6;
} else if (distance <= 24){
distance = 7;
} else if (distance <= 26){
distance = 8;
} else if (distance <= 28){
distance = 9;
} else if (distance <= 30){
distance = 10;
} else if (distance <= 32){
distance = 11;
} else if (distance <= 34){
distance = 12;
} else if (distance <= 36){
distance = 13;
} else if (distance <= 38 ){
distance = 14;
} else if (distance <= 40){
distance = 15;
} else if (distance <= 42){
distance = 16;
} else if (distance <= 44){
distance = 17;
} else if (distance <= 46){
distance = 18;
} else if (distance <= 48){
distance = 19;
} else if (distance <= 50){
distance = 20;
} else if (distance <= 52){
distance = 21;
} else if (distance <= 54 ){
distance = 22;
} else if (distance <= 56){
distance = 23;
} else if (distance <= 58){
distance = 24;
} else if (distance <= 60){
distance = 25;
} else if (distance <= 62){
distance = 26;
} else if (distance <= 64){
distance = 27;
} else if (distance <= 66){
distance = 28;
} else if (distance <= 68){
distance = 29;
} else if (distance <= 70 ){
distance = 30;
} else if (distance <= 72){
distance = 31;
} else if (distance <= 74){
distance = 32;
} else if (distance <= 76){
distance = 33;
} else if (distance <= 78){
distance = 34;
} else if (distance <= 80){
distance = 35;
} else if (distance <= 82){
distance = 36;
} else if (distance <= 84){
distance = 37;
} else if (distance <= 86 ){
distance = 38;
} else if (distance <= 88){
distance = 39;
} else if (distance <= 90){
distance = 40;
} else if (distance <= 92){
distance = 41;
} else if (distance <= 94){
distance = 42;
} else if (distance <= 96){
distance = 43;
} else if (distance <= 98){
distance = 44;
} else if (distance <= 100){
distance = 45;
} else if (distance <= 102){
distance = 46;
} else if (distance <= 104){
distance =47;
} else if (distance <= 106){
distance = 48;
} else if (distance <= 108 ){
distance = 49;
} else if (distance <= 110){
distance = 50;
}else if (distance <= 112){
distance = 51;
}else if (distance <= 114){
distance = 52;
}else if (distance <= 116){
distance = 53;
}else if (distance <= 118){
distance = 54;
}else if (distance <= 120 ){
distance = 55;
} else if (distance <= 122 ){
distance = 56;
} else if (distance <= 124){
distance = 57;
} else if (distance <= 126){
distance = 58;
} else if (distance <= 128){
distance = 59;
} else if (distance <= 130){
distance = 60;
} else if (distance <= 132){
distance = 61;
} else if (distance <= 134){
distance = 62;
} else if (distance <= 136){
distance = 63;
} else if (distance <= 138 ){
distance = 64;
} else if (distance <= 140){
distance = 65;
} else if (distance <= 142){
distance = 66;
} else if (distance <= 144){
distance = 67;
} else if (distance <= 146){
distance = 68;
} else if (distance <= 148){
distance = 69;
} else if (distance <= 150){
distance = 70;
} else if (distance <= 152){
distance = 71;
} else if (distance <= 154 ){
distance = 72;
} else if (distance <= 156){
distance = 73;
} else if (distance <= 158){
distance = 74;
} else if (distance <= 160){
distance = 75;
} else if (distance <= 162){
distance = 76;
} else if (distance <= 164){
distance = 77;
} else if (distance <= 166){
distance = 78;
} else if (distance <= 168){
distance = 79;
} else if (distance <= 170 ){
distance = 80;
} else if (distance <= 172){
distance = 81;
} else if (distance <= 174){
distance = 82;
} else if (distance <= 176){
distance = 83;
} else if (distance <= 178){
distance = 84;
} else if (distance <= 180){
distance = 85;
} else if (distance <= 182){
distance = 86;
} else if (distance <= 184){
distance = 87;
} else if (distance <= 186 ){
distance = 88;
} else if (distance <= 188){
distance = 89;
} else if (distance <= 190){
distance = 90;
} else if (distance <= 192){
distance = 91;
} else if (distance <= 194){
distance = 92;
} else if (distance <= 196){
distance = 93;
} else if (distance <= 198){
distance = 94;
} else if (distance <= 200){
distance = 95;
} else if (distance <= 202){
distance = 96;
} else if (distance <= 204){
distance = 97;
} else if (distance <= 206){
distance = 98;
} else if (distance <= 208){
distance = 99;
} else if (distance <= 210){
distance = 100;
} else if (distance <= 212){
distance = 101;
} else if (distance <= 214){
distance = 102;
} else if (distance <= 216){
distance = 103;
} else if (distance <= 218){
distance = 104;
} else if (distance <= 220){
distance = 105;
} else if (distance <= 222){
distance = 106;
} else if (distance <= 224){
distance = 107;
} else if (distance <= 226){
distance = 108;
} else if (distance <= 228){
distance = 109;
} else if (distance <= 230){
distance = 110;
} else if (distance <= 232){
distance = 111;
} else if (distance <= 234){
distance = 112;
} else if (distance <= 236){
distance = 113;
} else if (distance <= 238){
distance = 114;
} else if (distance <= 240){
distance = 115;
} else if (distance <= 242){
distance = 116;
} else if (distance <= 244){
distance = 117;
} else if (distance <= 246){
distance = 118;
} else if (distance <= 248){
distance = 119;
} else if (distance <= 250){
distance = 120;
} else if (distance <= 252){
distance = 121;
} else if (distance <= 254){
distance = 122;
} else if (distance <= 256){
distance = 123;
} else if (distance <= 258){
distance = 124;
} else if (distance <= 260){
distance = 125;
} else if (distance <= 262){
distance = 126;
} else if (distance <= 264){
distance = 127;
} else if (distance <= 266){
distance = 128;
} else if (distance <= 268){
distance = 129;
} else if (distance <= 500){
distance = 130;
}

// } //for loop end

old_distance = new_distance;

}else if (diff_distance <= -10) {
//make sudden changes smooth
distance = old_distance;

//for (int counter = 0; counter > diff_distance; counter–) {
distance = distance – int(diff_distance/4);
if (distance <= 12) {
distance = 1;
} else if (distance <= 14){
distance = 2;
} else if (distance <= 16){
distance = 3;
} else if (distance <= 18 ){
distance = 4;
} else if (distance <= 20 ){
distance = 5;
} else if (distance <= 22 ){
distance = 6;
} else if (distance <= 24){
distance = 7;
} else if (distance <= 26){
distance = 8;
} else if (distance <= 28){
distance = 9;
} else if (distance <= 30){
distance = 10;
} else if (distance <= 32){
distance = 11;
} else if (distance <= 34){
distance = 12;
} else if (distance <= 36){
distance = 13;
} else if (distance <= 38 ){
distance = 14;
} else if (distance <= 40){
distance = 15;
} else if (distance <= 42){
distance = 16;
} else if (distance <= 44){
distance = 17;
} else if (distance <= 46){
distance = 18;
} else if (distance <= 48){
distance = 19;
} else if (distance <= 50){
distance = 20;
} else if (distance <= 52){
distance = 21;
} else if (distance <= 54 ){
distance = 22;
} else if (distance <= 56){
distance = 23;
} else if (distance <= 58){
distance = 24;
} else if (distance <= 60){
distance = 25;
} else if (distance <= 62){
distance = 26;
} else if (distance <= 64){
distance = 27;
} else if (distance <= 66){
distance = 28;
} else if (distance <= 68){
distance = 29;
} else if (distance <= 70 ){
distance = 30;
} else if (distance <= 72){
distance = 31;
} else if (distance <= 74){
distance = 32;
} else if (distance <= 76){
distance = 33;
} else if (distance <= 78){
distance = 34;
} else if (distance <= 80){
distance = 35;
} else if (distance <= 82){
distance = 36;
} else if (distance <= 84){
distance = 37;
} else if (distance <= 86 ){
distance = 38;
} else if (distance <= 88){
distance = 39;
} else if (distance <= 90){
distance = 40;
} else if (distance <= 92){
distance = 41;
} else if (distance <= 94){
distance = 42;
} else if (distance <= 96){
distance = 43;
} else if (distance <= 98){
distance = 44;
} else if (distance <= 100){
distance = 45;
} else if (distance <= 102){
distance = 46;
} else if (distance <= 104){
distance =47;
} else if (distance <= 106){
distance = 48;
} else if (distance <= 108 ){
distance = 49;
} else if (distance <= 110){
distance = 50;
}else if (distance <= 112){
distance = 51;
}else if (distance <= 114){
distance = 52;
}else if (distance <= 116){
distance = 53;
}else if (distance <= 118){
distance = 54;
}else if (distance <= 120 ){
distance = 55;
} else if (distance <= 122 ){
distance = 56;
} else if (distance <= 124){
distance = 57;
} else if (distance <= 126){
distance = 58;
} else if (distance <= 128){
distance = 59;
} else if (distance <= 130){
distance = 60;
} else if (distance <= 132){
distance = 61;
} else if (distance <= 134){
distance = 62;
} else if (distance <= 136){
distance = 63;
} else if (distance <= 138 ){
distance = 64;
} else if (distance <= 140){
distance = 65;
} else if (distance <= 142){
distance = 66;
} else if (distance <= 144){
distance = 67;
} else if (distance <= 146){
distance = 68;
} else if (distance <= 148){
distance = 69;
} else if (distance <= 150){
distance = 70;
} else if (distance <= 152){
distance = 71;
} else if (distance <= 154 ){
distance = 72;
} else if (distance <= 156){
distance = 73;
} else if (distance <= 158){
distance = 74;
} else if (distance <= 160){
distance = 75;
} else if (distance <= 162){
distance = 76;
} else if (distance <= 164){
distance = 77;
} else if (distance <= 166){
distance = 78;
} else if (distance <= 168){
distance = 79;
} else if (distance <= 170 ){
distance = 80;
} else if (distance <= 172){
distance = 81;
} else if (distance <= 174){
distance = 82;
} else if (distance <= 176){
distance = 83;
} else if (distance <= 178){
distance = 84;
} else if (distance <= 180){
distance = 85;
} else if (distance <= 182){
distance = 86;
} else if (distance <= 184){
distance = 87;
} else if (distance <= 186 ){
distance = 88;
} else if (distance <= 188){
distance = 89;
} else if (distance <= 190){
distance = 90;
} else if (distance <= 192){
distance = 91;
} else if (distance <= 194){
distance = 92;
} else if (distance <= 196){
distance = 93;
} else if (distance <= 198){
distance = 94;
} else if (distance <= 200){
distance = 95;
} else if (distance <= 202){
distance = 96;
} else if (distance <= 204){
distance = 97;
} else if (distance <= 206){
distance = 98;
} else if (distance <= 208){
distance = 99;
} else if (distance <= 210){
distance = 100;
} else if (distance <= 212){
distance = 101;
} else if (distance <= 214){
distance = 102;
} else if (distance <= 216){
distance = 103;
} else if (distance <= 218){
distance = 104;
} else if (distance <= 220){
distance = 105;
} else if (distance <= 222){
distance = 106;
} else if (distance <= 224){
distance = 107;
} else if (distance <= 226){
distance = 108;
} else if (distance <= 228){
distance = 109;
} else if (distance <= 230){
distance = 110;
} else if (distance <= 232){
distance = 111;
} else if (distance <= 234){
distance = 112;
} else if (distance <= 236){
distance = 113;
} else if (distance <= 238){
distance = 114;
} else if (distance <= 240){
distance = 115;
} else if (distance <= 242){
distance = 116;
} else if (distance <= 244){
distance = 117;
} else if (distance <= 246){
distance = 118;
} else if (distance <= 248){
distance = 119;
} else if (distance <= 250){
distance = 120;
} else if (distance <= 252){
distance = 121;
} else if (distance <= 254){
distance = 122;
} else if (distance <= 256){
distance = 123;
} else if (distance <= 258){
distance = 124;
} else if (distance <= 260){
distance = 125;
} else if (distance <= 262){
distance = 126;
} else if (distance <= 264){
distance = 127;
} else if (distance <= 266){
distance = 128;
} else if (distance <= 268){
distance = 129;
} else if (distance <= 500){
distance = 130;
}

// } //end of for loop

old_distance = new_distance;

} else { //smooth change in data
distance = new_distance;
old_distance = new_distance;
if (distance <= 12) {
distance = 1;
} else if (distance <= 14){
distance = 2;
} else if (distance <= 16){
distance = 3;
} else if (distance <= 18 ){
distance = 4;
} else if (distance <= 20 ){
distance = 5;
} else if (distance <= 22 ){
distance = 6;
} else if (distance <= 24){
distance = 7;
} else if (distance <= 26){
distance = 8;
} else if (distance <= 28){
distance = 9;
} else if (distance <= 30){
distance = 10;
} else if (distance <= 32){
distance = 11;
} else if (distance <= 34){
distance = 12;
} else if (distance <= 36){
distance = 13;
} else if (distance <= 38 ){
distance = 14;
} else if (distance <= 40){
distance = 15;
} else if (distance <= 42){
distance = 16;
} else if (distance <= 44){
distance = 17;
} else if (distance <= 46){
distance = 18;
} else if (distance <= 48){
distance = 19;
} else if (distance <= 50){
distance = 20;
} else if (distance <= 52){
distance = 21;
} else if (distance <= 54 ){
distance = 22;
} else if (distance <= 56){
distance = 23;
} else if (distance <= 58){
distance = 24;
} else if (distance <= 60){
distance = 25;
} else if (distance <= 62){
distance = 26;
} else if (distance <= 64){
distance = 27;
} else if (distance <= 66){
distance = 28;
} else if (distance <= 68){
distance = 29;
} else if (distance <= 70 ){
distance = 30;
} else if (distance <= 72){
distance = 31;
} else if (distance <= 74){
distance = 32;
} else if (distance <= 76){
distance = 33;
} else if (distance <= 78){
distance = 34;
} else if (distance <= 80){
distance = 35;
} else if (distance <= 82){
distance = 36;
} else if (distance <= 84){
distance = 37;
} else if (distance <= 86 ){
distance = 38;
} else if (distance <= 88){
distance = 39;
} else if (distance <= 90){
distance = 40;
} else if (distance <= 92){
distance = 41;
} else if (distance <= 94){
distance = 42;
} else if (distance <= 96){
distance = 43;
} else if (distance <= 98){
distance = 44;
} else if (distance <= 100){
distance = 45;
} else if (distance <= 102){
distance = 46;
} else if (distance <= 104){
distance =47;
} else if (distance <= 106){
distance = 48;
} else if (distance <= 108 ){
distance = 49;
} else if (distance <= 110){
distance = 50;
}else if (distance <= 112){
distance = 51;
}else if (distance <= 114){
distance = 52;
}else if (distance <= 116){
distance = 53;
}else if (distance <= 118){
distance = 54;
}else if (distance <= 120 ){
distance = 55;
} else if (distance <= 122 ){
distance = 56;
} else if (distance <= 124){
distance = 57;
} else if (distance <= 126){
distance = 58;
} else if (distance <= 128){
distance = 59;
} else if (distance <= 130){
distance = 60;
} else if (distance <= 132){
distance = 61;
} else if (distance <= 134){
distance = 62;
} else if (distance <= 136){
distance = 63;
} else if (distance <= 138 ){
distance = 64;
} else if (distance <= 140){
distance = 65;
} else if (distance <= 142){
distance = 66;
} else if (distance <= 144){
distance = 67;
} else if (distance <= 146){
distance = 68;
} else if (distance <= 148){
distance = 69;
} else if (distance <= 150){
distance = 70;
} else if (distance <= 152){
distance = 71;
} else if (distance <= 154 ){
distance = 72;
} else if (distance <= 156){
distance = 73;
} else if (distance <= 158){
distance = 74;
} else if (distance <= 160){
distance = 75;
} else if (distance <= 162){
distance = 76;
} else if (distance <= 164){
distance = 77;
} else if (distance <= 166){
distance = 78;
} else if (distance <= 168){
distance = 79;
} else if (distance <= 170 ){
distance = 80;
} else if (distance <= 172){
distance = 81;
} else if (distance <= 174){
distance = 82;
} else if (distance <= 176){
distance = 83;
} else if (distance <= 178){
distance = 84;
} else if (distance <= 180){
distance = 85;
} else if (distance <= 182){
distance = 86;
} else if (distance <= 184){
distance = 87;
} else if (distance <= 186 ){
distance = 88;
} else if (distance <= 188){
distance = 89;
} else if (distance <= 190){
distance = 90;
} else if (distance <= 192){
distance = 91;
} else if (distance <= 194){
distance = 92;
} else if (distance <= 196){
distance = 93;
} else if (distance <= 198){
distance = 94;
} else if (distance <= 200){
distance = 95;
} else if (distance <= 202){
distance = 96;
} else if (distance <= 204){
distance = 97;
} else if (distance <= 206){
distance = 98;
} else if (distance <= 208){
distance = 99;
} else if (distance <= 210){
distance = 100;
} else if (distance <= 212){
distance = 101;
} else if (distance <= 214){
distance = 102;
} else if (distance <= 216){
distance = 103;
} else if (distance <= 218){
distance = 104;
} else if (distance <= 220){
distance = 105;
} else if (distance <= 222){
distance = 106;
} else if (distance <= 224){
distance = 107;
} else if (distance <= 226){
distance = 108;
} else if (distance <= 228){
distance = 109;
} else if (distance <= 230){
distance = 110;
} else if (distance <= 232){
distance = 111;
} else if (distance <= 234){
distance = 112;
} else if (distance <= 236){
distance = 113;
} else if (distance <= 238){
distance = 114;
} else if (distance <= 240){
distance = 115;
} else if (distance <= 242){
distance = 116;
} else if (distance <= 244){
distance = 117;
} else if (distance <= 246){
distance = 118;
} else if (distance <= 248){
distance = 119;
} else if (distance <= 250){
distance = 120;
} else if (distance <= 252){
distance = 121;
} else if (distance <= 254){
distance = 122;
} else if (distance <= 256){
distance = 123;
} else if (distance <= 258){
distance = 124;
} else if (distance <= 260){
distance = 125;
} else if (distance <= 262){
distance = 126;
} else if (distance <= 264){
distance = 127;
} else if (distance <= 266){
distance = 128;
} else if (distance <= 268){
distance = 129;
} else if (distance <= 500){
distance = 130;
}

} //end of else

sensor_values[0] = distance;
sensor_values[1] = (cnt)%10;
sensor_values[2] = (cnt)%100;
delay(20);
write_status = radio.write( &sensor_values[0], sizeof(int)* ar_size);
printf(“SENSOR VAL %d %d %d \n”, sensor_values[0], sensor_values[1], sensor_values[2]);
if( ! write_status)
{
Serial.println(“ERROR WRITE”);
}

radio.startListening();// Wait here until we get a response, or timeout (250ms)
unsigned long started_waiting_at = millis();
bool timeout = false;
while ( ! radio.available() && ! timeout )
if (millis() – started_waiting_at > 200 )
timeout = true;

brightness = distance * 2;
if (brightness > 255){
brightness = 255;
}
brightness = 255 – brightness;

// set the brightness of pin 8:
analogWrite(led, brightness);

}

if(role == RECEIVER)
{
if(radio.available())
{
read_status = false;
while(!read_status)
{
read_status = radio.read(&recv_values[0], sizeof(int) * ar_size );
delay(100);
}
//printf(“RECEIVED %d %d %d\n”, recv_values[0], recv_values[1], recv_values[2]);
radio.stopListening();
//radio.write( &recv_values[0], sizeof(int)*ar_size );

//Serial.println(recv_values[0]);
Serial.print(recv_values[0], DEC);
Serial.print(” “);
Serial.print(recv_values[1], DEC);
Serial.print(” “);
Serial.print(recv_values[2], DEC);
Serial.print(” “);
Serial.println(“\r”);
radio.startListening();
}
}
}

 

Besides the implementation of wireless transmission, the code contains the control of LED lights in response to the proximity with objects in the environment.

 

Final Project: Project Update #2

Last week I researched on the various electronic components that might be needed for the costume and tested some basic functional circuits off the fabrics( as things will get a tad complicated after the electronics are sewed onto the fabrics). Based on the concept of my costume, which is to explore the relationship between live music improvisation and dance choreography/freestyle, I explored:

  • Light-sensitive LED circuit (as the decoration on the costume as well as an indication of its interactivity with the environment)
  • Circuit with a buzzer as the output (which can generate sounds of different pitches)
  • Wireless transmission of data to the laptop using bluetooth (which is critical in the process of creating sounds from movements)
  • Motion-sensitive circuit with LED and buzzer (as a simulation of the functionality of the costume)

victorian_era_inverness_capeI mainly worked on the artistic aspect of the costume design in the week followed. I was inspired by the Victorian Era men’s fashion. Most often associated with Sherlock Holmes, the inverness cape is a weatherproof outer coat which was often worn in 1880s London. The inverness cape is a sleeveless outer garment, which was typically worn in 2 styles: a more formal version where the topcoat is finished with short lapels and the capes are set back behind them, as well as a less formal “coachman’s cape” which had no lapels.

I decided to go with the less formal “coachman’s cape” as the lapels might hinder head movements and it would be easier for me as an inexperienced fashion designer to start with.

 

 

IMG_8773

 

 

I found this black velvet material in one of the clothing outlet in Chinatown.

 

 

 

IMG_8605

 

I showed Galina the design and she taught
me the sewing basics including how to use the sewing machine to make different stitches.

 

 

 

IMG_8604

 

I finished the rest of the sewing on my own. It was a fulfilling learning experience.

 

 

 

 

This is the completed costume!

unspecified