lcd.print("The greatest medicine is the emptiness of everything.");
slowly working on what I am now calling 'the Buddha Box', when you open it the LCD displays an apposite Buddhist saying, I've just ordered a voice synth shield so it should talk next....
Sunday, 28 November 2010
Thursday, 25 November 2010
I just handed my thesis in, and what a giant anti-climax that was! I felt ike Aspley Cherry-Garrard delivering penguin eggs to the Royal Geographic Society (or whatever it was) after he had collected them from Antarctica, with much loss of digits, life and sanity etc. Read The Worst Journey in the World and you'll know exactly what I mean..
anyway, it is done, the point of no return has been reached. This should be a landmark point in my PhD journey, and this blog, the moment it was all heading for (before the final exam of course), but this is possibly imposing too teleological an interpretation upon the doctoral experience, which is processual....
anyway, it is done, the point of no return has been reached. This should be a landmark point in my PhD journey, and this blog, the moment it was all heading for (before the final exam of course), but this is possibly imposing too teleological an interpretation upon the doctoral experience, which is processual....
Friday, 19 November 2010
Friday, 12 November 2010
Thinking about manipulating pixel arrays in Open Frameworks, some notes:
Thinking about manipulating pixel arrays in Open Frameworks, some notes:
http://vormplus.be/blog/article/mirroring-video-with-openframeworks">http://vormplus.be/blog/article/mirroring-video-with-openframeworks
http://www.designdrop.net/blog/?tag=openframeworks
this is great too, I like the catch phrase:Analog Pixel Digital to Analog is the new Analog to Digital
Remnds me of the de-mediating video I saw the other day, seems to be a growing trend
http://vormplus.be/blog/article/mirroring-video-with-openframeworks">http://vormplus.be/blog/article/mirroring-video-with-openframeworks
http://www.designdrop.net/blog/?tag=openframeworks
this is great too, I like the catch phrase:Analog Pixel Digital to Analog is the new Analog to Digital
Remnds me of the de-mediating video I saw the other day, seems to be a growing trend
MAC VERSION of South software now available here:
MAC VERSION of South software now available here:
http://www.doc.gold.ac.uk/~ma501ed/south/south_Download.html
and final edition of the book before my final exam:
http://www.lulu.com/product/paperback/south/13520786?showPreview
http://www.doc.gold.ac.uk/~ma501ed/south/south_Download.html
and final edition of the book before my final exam:
http://www.lulu.com/product/paperback/south/13520786?showPreview
Tuesday, 9 November 2010
Yup - works pretty well with Ess:
//based on Graph // by David A. Mellis
import processing.serial.*;import krister.Ess.*; //import this sound library//declare 3 channels for 3 sound files:AudioChannel myChannel, myChannel2, myChannel3;
Serial port;String buff = "";String buff1 = "";String buff2 = "";//String buff3 = ""; //meint index = 0;int NEWLINE = 10;
// Store the last 256 values received so we can graph them.int[] valuesx = new int[256];int[] valuesy = new int[256];//int[] button_value = new int[256];//mevoid setup(){ size(512, 512); Ess.start(this);
port = new Serial(this, "COM7", 9600); //selection of drumb sounds: //myChannel=new AudioChannel("bass.wav"); myChannel=new AudioChannel("tamb.wav"); // myChannel=new AudioChannel("bass2.wav"); // myChannel=new AudioChannel("bass3.wav"); // myChannel=new AudioChannel("bass4.wav"); // myChannel=new AudioChannel("bass5.wav"); // myChannel=new AudioChannel("bass6.wav");
myChannel2=new AudioChannel("bass6.wav"); myChannel3=new AudioChannel("bass2.wav");
// If you know the name of the port used by the Arduino board, you // can specify it directly like this. //port = new Serial(this, "COM1", 9600);
}
void draw(){ background(250);
stroke(0);
// Graph the stored values by drawing a lines between them. for (int i = 0; i <> 0){ serialEvent(port.read()); } // image(etch,0, 0, width, height);}
void serialEvent(int serial){ if (serial != NEWLINE) { // Store all the characters on the line. buff += char(serial); } else { // The end of each line is marked by two characters, a carriage // return and a newline. We're here because we've gotten a newline, // but we still need to strip off the carriage return. buff = buff.substring(0, buff.length()-1); index = buff.indexOf(","); buff1 = buff.substring(0, index); buff2 = buff.substring(index+1, buff.length());
// Parse the String into an integer. We divide by 4 because // analog inputs go from 0 to 1023 while colors in Processing // only go from 0 to 255. int x = Integer.parseInt(buff1)/2; int y = Integer.parseInt(buff2)/2;
// Clear the value of "buff" buff = "";
// Shift over the existing values to make room for the new one. for (int i = 0; i < 255; i++) { valuesx[i] = valuesx[i + 1]; valuesy[i] = valuesy[i + 1]; }
// Add the received value to the array. valuesx[255] = x; valuesy[255] = y; if(x >= 10){ myChannel.play(); println(" "+x + "x "); }
else if(y >=60){
myChannel2.play(); println(" "+y + "y "); } }
}
public void stop() { Ess.stop(); super.stop();}
//based on Graph // by David A. Mellis
import processing.serial.*;import krister.Ess.*; //import this sound library//declare 3 channels for 3 sound files:AudioChannel myChannel, myChannel2, myChannel3;
Serial port;String buff = "";String buff1 = "";String buff2 = "";//String buff3 = ""; //meint index = 0;int NEWLINE = 10;
// Store the last 256 values received so we can graph them.int[] valuesx = new int[256];int[] valuesy = new int[256];//int[] button_value = new int[256];//mevoid setup(){ size(512, 512); Ess.start(this);
port = new Serial(this, "COM7", 9600); //selection of drumb sounds: //myChannel=new AudioChannel("bass.wav"); myChannel=new AudioChannel("tamb.wav"); // myChannel=new AudioChannel("bass2.wav"); // myChannel=new AudioChannel("bass3.wav"); // myChannel=new AudioChannel("bass4.wav"); // myChannel=new AudioChannel("bass5.wav"); // myChannel=new AudioChannel("bass6.wav");
myChannel2=new AudioChannel("bass6.wav"); myChannel3=new AudioChannel("bass2.wav");
// If you know the name of the port used by the Arduino board, you // can specify it directly like this. //port = new Serial(this, "COM1", 9600);
}
void draw(){ background(250);
stroke(0);
// Graph the stored values by drawing a lines between them. for (int i = 0; i <> 0){ serialEvent(port.read()); } // image(etch,0, 0, width, height);}
void serialEvent(int serial){ if (serial != NEWLINE) { // Store all the characters on the line. buff += char(serial); } else { // The end of each line is marked by two characters, a carriage // return and a newline. We're here because we've gotten a newline, // but we still need to strip off the carriage return. buff = buff.substring(0, buff.length()-1); index = buff.indexOf(","); buff1 = buff.substring(0, index); buff2 = buff.substring(index+1, buff.length());
// Parse the String into an integer. We divide by 4 because // analog inputs go from 0 to 1023 while colors in Processing // only go from 0 to 255. int x = Integer.parseInt(buff1)/2; int y = Integer.parseInt(buff2)/2;
// Clear the value of "buff" buff = "";
// Shift over the existing values to make room for the new one. for (int i = 0; i < 255; i++) { valuesx[i] = valuesx[i + 1]; valuesy[i] = valuesy[i + 1]; }
// Add the received value to the array. valuesx[255] = x; valuesy[255] = y; if(x >= 10){ myChannel.play(); println(" "+x + "x "); }
else if(y >=60){
myChannel2.play(); println(" "+y + "y "); } }
}
public void stop() { Ess.stop(); super.stop();}
Two Piezos used as knock sensors.
Arduno code:
#include
const int buttonPin = 2; //DIGITAL 2const int ledPin = 13;int buttonState = 0; ///above = button stuff
int xCoord;int yCoord;char coords[10];
void setup(){ // initialize the LED pin as an output: pinMode(ledPin, OUTPUT); // initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT); Serial.begin(9600);}
void loop(){ buttonState = digitalRead(buttonPin);
xCoord = analogRead(0); yCoord = analogRead(1); sprintf(coords, "%d,%d", xCoord, yCoord); Serial.println(coords); delay(50); }
Processing code
// based on Graph // by David A. Mellis
import processing.serial.*;
Serial port;String buff = "";String buff1 = "";String buff2 = "";//String buff3 = ""; //meint index = 0;int NEWLINE = 10;
// Store the last 256 values received so we can graph them.int[] valuesx = new int[256];int[] valuesy = new int[256];//int[] button_value = new int[256];//mevoid setup(){ size(512, 512);
port = new Serial(this, "COM7", 9600); // If you know the name of the port used by the Arduino board, you // can specify it directly like this. //port = new Serial(this, "COM1", 9600);
}
void draw(){ background(250);
stroke(0); // Graph the stored values by drawing a lines between them. for (int i = 0; i <> 0){ serialEvent(port.read()); } // image(etch,0, 0, width, height);}
void serialEvent(int serial){ if (serial != NEWLINE) { // Store all the characters on the line. buff += char(serial); } else { // The end of each line is marked by two characters, a carriage // return and a newline. We're here because we've gotten a newline, // but we still need to strip off the carriage return. buff = buff.substring(0, buff.length()-1); index = buff.indexOf(","); buff1 = buff.substring(0, index); buff2 = buff.substring(index+1, buff.length()); // Parse the String into an integer. We divide by 4 because // analog inputs go from 0 to 1023 while colors in Processing // only go from 0 to 255. int x = Integer.parseInt(buff1)/2; int y = Integer.parseInt(buff2)/2;
// Clear the value of "buff" buff = ""; // Shift over the existing values to make room for the new one. for (int i = 0; i < font =" loadFont(" mychannel="new" mychannel="new" mychannel="new" mychannel="new" mychannel="new" mychannel="new" mychannel="new" mychannel2="new" mychannel3="new" rando =" (int)random(1," rando ="=" rando ="=" rando ="=" mousepressed ="=">
Arduno code:
#include
const int buttonPin = 2; //DIGITAL 2const int ledPin = 13;int buttonState = 0; ///above = button stuff
int xCoord;int yCoord;char coords[10];
void setup(){ // initialize the LED pin as an output: pinMode(ledPin, OUTPUT); // initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT); Serial.begin(9600);}
void loop(){ buttonState = digitalRead(buttonPin);
xCoord = analogRead(0); yCoord = analogRead(1); sprintf(coords, "%d,%d", xCoord, yCoord); Serial.println(coords); delay(50); }
Processing code
// based on Graph // by David A. Mellis
import processing.serial.*;
Serial port;String buff = "";String buff1 = "";String buff2 = "";//String buff3 = ""; //meint index = 0;int NEWLINE = 10;
// Store the last 256 values received so we can graph them.int[] valuesx = new int[256];int[] valuesy = new int[256];//int[] button_value = new int[256];//mevoid setup(){ size(512, 512);
port = new Serial(this, "COM7", 9600); // If you know the name of the port used by the Arduino board, you // can specify it directly like this. //port = new Serial(this, "COM1", 9600);
}
void draw(){ background(250);
stroke(0); // Graph the stored values by drawing a lines between them. for (int i = 0; i <> 0){ serialEvent(port.read()); } // image(etch,0, 0, width, height);}
void serialEvent(int serial){ if (serial != NEWLINE) { // Store all the characters on the line. buff += char(serial); } else { // The end of each line is marked by two characters, a carriage // return and a newline. We're here because we've gotten a newline, // but we still need to strip off the carriage return. buff = buff.substring(0, buff.length()-1); index = buff.indexOf(","); buff1 = buff.substring(0, index); buff2 = buff.substring(index+1, buff.length()); // Parse the String into an integer. We divide by 4 because // analog inputs go from 0 to 1023 while colors in Processing // only go from 0 to 255. int x = Integer.parseInt(buff1)/2; int y = Integer.parseInt(buff2)/2;
// Clear the value of "buff" buff = ""; // Shift over the existing values to make room for the new one. for (int i = 0; i < font =" loadFont(" mychannel="new" mychannel="new" mychannel="new" mychannel="new" mychannel="new" mychannel="new" mychannel="new" mychannel2="new" mychannel3="new" rando =" (int)random(1," rando ="=" rando ="=" rando ="=" mousepressed ="=">
Sunday, 7 November 2010
Lie Detector
The box at the end is a mock up for an idea but the circuit above is working as of this afternoon.
I've been trying to build my own lie detector - perhaps as an interface to a narrative building system. Anyway it works! At least it is measuring the amount of resistance my fingers supply to the circuit, enough to decide whether to flash a red light or a green light. Of course it isn't really a lie detector, but it is reading fluctuations in my body. I've just ordered '30 Arduino Projects for The Evil Genius' because its got a much more interesting circuit..
This is my ultra simple Arduino Code, a variation on Tom Igoe's Analog Input example:
http://arduino.cc/en/Tutorial/AnalogInput */int liePin = 8; int sensorPin = 0; // select the input pin for the potentiometerint ledPin = 13; // select the pin for the LEDint sensorValue = 0; // variable to store the value coming from the sensor
void setup() { Serial.begin(9600); // declare the ledPin as an OUTPUT: pinMode(ledPin, OUTPUT); pinMode(liePin, OUTPUT); }
void loop() { // read the value from the sensor: sensorValue = analogRead(sensorPin); // turn the ledPin on //digitalWrite(ledPin, sensorValue); // stop the program formilliseconds:
// turn the ledPin off: digitalWrite(ledPin, LOW); // stop the program for formilliseconds: Serial.println(sensorValue); if(sensorValue >800){ digitalWrite(ledPin, HIGH); digitalWrite(liePin, LOW); } if(sensorValue <500){>
void setup() { Serial.begin(9600); // declare the ledPin as an OUTPUT: pinMode(ledPin, OUTPUT); pinMode(liePin, OUTPUT); }
void loop() { // read the value from the sensor: sensorValue = analogRead(sensorPin); // turn the ledPin on //digitalWrite(ledPin, sensorValue); // stop the program for
// turn the ledPin off: digitalWrite(ledPin, LOW); // stop the program for for
Saturday, 6 November 2010
I went to see Christan Marclay's The Clock today at the White Cube, and can dazedly report an unfathomably beguiling experience - given that there is no narrative and the film is made from thousands of fragments, in which time is accurately sampled from myriad of film clips (a process my collegue Mick Grierson was involved in). I experienced it as an intensified 'now', with the overwhelming theme of time somehow relieving me from its normal constraints. The film generates a meta-time, a series of disjunctions that are punctuated by sounds running ahead of or behind the clips. when I came out of the White Cube I started noticing clocks everywhere...began to wonder if time has any meaning -beyond the subjective, ofcourse this is the provocation..Fantastic.
'The Clock' is constructed out of moments in cinema when time is expressed or when a character interacts with a clock, watch or just a particular time of day. Marclay has excerpted thousands of these fragments and edited them so that they flow in real time. While 'The Clock' examines how time, plot and duration are depicted in cinema, the video is also a working timepiece that is synchronised to the local time zone. At any moment, the viewer can look at the work and use it to tell the time. Yet the audience watching 'The Clock' experiences a vast range of narratives, settings and moods within the space of a few minutes, making time unravel in countless directions at once. Even while 'The Clock' tells the time, it ruptures any sense of chronological coherence.'The Clock' plays with how audiences experience narrative in cinema, examining the conventions and devices through which filmmakers create a persuasive illusion of duration. When watching a film, an audience is removed from normal time and swept up in a new register that corresponds to the narrative at hand. 'The Clock' transforms this condition of cinema: time, in this case, corresponds precisely to the actual time beyond the work. The audience will have the peculiar awareness of experiencing a fictional event, or countless events, at what appears to be the same time as when they watch it in the gallery'
Friday, 5 November 2010
When I think of Nam June Paik's TV Buddha of 1974 an infinite loop unspools, in which, as Rupert Spira says, Presence Only Knows Itself.
'In reality the Self is only identical with itself, only one with itself. There is nothing else present with which it could be identical. There are not 'two things.'
..However, the personal 'I' is nothing other than the thought that thinks it.'
http://non-duality.rupertspira.com/page.aspx?n=3ab20a74-0b4a-4f29-b712-7cc38ab47fd2
'In reality the Self is only identical with itself, only one with itself. There is nothing else present with which it could be identical. There are not 'two things.'
..However, the personal 'I' is nothing other than the thought that thinks it.'
http://non-duality.rupertspira.com/page.aspx?n=3ab20a74-0b4a-4f29-b712-7cc38ab47fd2
The other day in the Creative Coding workshops we were working with two cameras facing each other and feeding an inifinite loop of self-observation, only both images were disturbingly offset and assymetric, it was hard to understand what we were observing, as if we were watching time-lapsed mirrors in which our own presence was occluded.
check out the Toaster Project - fantastic!
http://www.thetoasterproject.org/
check out Hunch, fun recommendation engine
http://hunch.com/
It suggested some programming languages for me!
such as Lua and Clojure - 'a modern dialect of the Lisp programming language'
check out literary minimilasm at accelerated texts:
http://twitter.com/acceleratedtext
http://www.thetoasterproject.org/
check out Hunch, fun recommendation engine
http://hunch.com/
It suggested some programming languages for me!
such as Lua and Clojure - 'a modern dialect of the Lisp programming language'
check out literary minimilasm at accelerated texts:
http://twitter.com/acceleratedtext
Tuesday, 2 November 2010
Olga Massanet's talk about the Deep Media Research project today was very inspiring and helpful for my ongoing thoughts about post-doctoral research, provoking good ideas for a way of melding my interests in embodied hardware and memory studies. Olga's project is concerned with non-symbolic modes of transmission between bodies - such as sweat, electrical signals,
'non-verbal, unconscious, infra-empircal communication processes', (her site below also has a very useful link to making a galvanic skin response machine the dmoo1 -
'Simply speaking DM001 is a device that takes measurements of the Galvanic Skin Response of two people. These different streams of data are then mapped onto two different motors. Each person is able to feel the fluctuations in skin conductivity of the other.' In exploring lost memories I have been considering ways in which embodied traces of events might be re-enacted without actually representing the events themselves, so devices that can communicate micro-gestures, or 'infra-verbal bodily comunications' would be one such way.
Mick Grierson mentioned Naim June Paik's TV Buddha (1974) today, this is also really interesting - raising questions of cause and effect, techno-mysticism - which Olga also mentioned.
Subscribe to:
Posts (Atom)