Wednesday, 21 December 2011
Microscopic image of onion skin captured in Processing
So I managed to hack the Biolux usb camera and now it works with a mac through my Microscope, amazing, like entering a new world, the world of onion skin
Saturday, 10 December 2011
Staging illusion
Despite horrendous storminess this was a great event, I didn't realise some of the other delegates and academics were also illusionists/magicians and members of the magic circle. I'm glad I didnt show anyone how my Pepper's Ghost Buddha works or I would have been in big trouble..drummed out of Brighton at least.
Sunday, 27 November 2011
Weird Big Bang Trigonometry
Now I know how the universe began,mucking around with Trigonometry..suddenly stuff like this happens. It's the wicked atan() function..
void setup() {
size(500, 500);
background(0, 12);
smooth();
}
void draw() {
translate(width/2, height/2);
for (int i = 0;i<680;i++) {
stroke(random(55), random(55), random(255), 75);
point(cos(i)*frameCount%width, sin(i)*frameCount%height);
strokeWeight(1.2);
stroke(random(53), random(55), random(255), 120);
point(cos(i*atan(frameCount))*width, sin(i)*height);
stroke(random(253), random(55), random(255), 123);
line(tan(i*frameCount)*width, tan(i)*121, tan(i*frameCount)*height, tan(i)*120);
}
filter(BLUR);
filter(DILATE);
if (frameCount%width*55==0) {
setup();
}
}
Friday, 18 November 2011
Friday, 16 September 2011
Tuesday, 13 September 2011
Link to Istanbul papers
ENCOUNTERING THE BODY IN ART, ONLINE: VAINS (VISUAL ART INTERROGATION AND NAVIGATION SYSTEM) THE ABJECTION APPLICATION AND THE NEURAL ART NAVIGATION TOOL
VAINS is a curatorial art platform, focusing on repository, search and content recommendation tools adjusted to art content online. It is dedicated to repositioning the body in HCI and deploying thr embodied and situated nature of human users as core resources. curatorial methodologies and ways in which digital art is reshaping curatorial practice are discussed. Experimentation with Abjection Application and Neural Art Navigation tool described .
AUTHOR(S)
Lee Weinberg
Dr Eleanor Dare
Wednesday, 7 September 2011
Preparing for Istanbul
Lee and Alexandra and I have all been preparing for Istanbul ISEA next week. I'm not going but have done short, weirdy film intros for both of the collaborative papers. This is a still from the intro Lee and I recorded today, this is the future of conferencing, or should be, saves on air-miles and travel anxieties. Wonder if anyone will notice the frog on my shoulder? It drove everyone in the GDS mad with its constant croacking.. until we did an operation on it and removed the croak.
Sunday, 28 August 2011
Draw an ellipse with pixels only
/*
E.Dare August 2011
Draw an ellipse with pixels only
*/
int x = 150;
int y =150;
float radius =80;
void setup() {
size(300, 300);
}
void draw() {
background(255);
color col2 = color(0, 0, 255);
//if i and j are within half radius width of x and y (centre) fill with blue
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
if ((dist(i, j, x, y)<=radius/2)) {
set(i, j, col2);
}
}
}
}
Friday, 26 August 2011
Saturday, 9 July 2011
Model realistic movement that is subject to friction
Model realistic movement that is subject to friction
and therefore non-uniform acceleration/deceleration.
*/
float velocity = 50.0; //added to y coordinate
float friction = 0.99;
/*velocity is multiplied by friction, because friction
is less than 1, friction decreases the velocity with each frame
so the 'ball' slows down, until we re-boost it with a mouse press */
float y =0;
void setup() {
size(400, 400);
}
void draw() {
background(255);
fill(255, 0, 0);
ellipse(55, y, 45, 45);
velocity*=friction; //this decreases velocity with every frame.
y +=velocity;//add this to y;
//check for edges:
if ((y>height) ||(y<0)) {
velocity=-velocity;
}
println(velocity);
}
//reboost the 'ball'
void mousePressed() {
velocity =10;
}
Visualising name, age, height, data
Friday, 8 July 2011
Thursday, 7 July 2011
Visualisation of 'Chakra' test results
Results from my Chkara Test, 07/07/11. Chakra test available at : http://www.eclecticenergies.com/chakras/chakratest.php, and mapped to my body.
Sequences of EEG readings mapped to my image
The brainwave frequencies are mapped to colours that tint the video as I capture my EEG readings, by coincidence they look like 'aura' images or images of Chakras ('wheel-like vortices which, according to traditional Indian medicine, are believed to exist in the surface of the 'etheric double' of man' (wikipoodia where else). I used the crude background subtraction and transparency effect I wrote the other day in Processing.
Wednesday, 6 July 2011
I'm trying to obtain images inbetween 'fractional fixations', capturing the ninety waking minutes a day each of us reputedly spends in total darkness...I'm not sure if that's really the same thing as a blink, or if a saccade is even smaller, but even a blink seems to represent cognitively indiscrete moments of darkness, a partial loss of awareness, when 'we are basically sightless' (Cognitive Impact of Eye Movements in Picture Viewing, Gufran Ahmad, Yukio Ohsawa, Yoko Nishihara, International Journal of Intelligent Information Processing, Volume 2, Number 1, March 2011)
Tuesday, 5 July 2011
Various ways of converting from decimal to binary
Various ways of converting from decimal to binary
In order to convert a decimal number to its
binary equivalent, you repeatedly divide
the decimal number by 2, the base of the binary system.
Division by 2 will either give a remainder of 1 (dividing an odd number)
or no remainder (dividing an even number). Collecting the remainders
from our repeated divisions will give us the binary answer....
*/
void setup() {
//convert decomal to binary
int mynum = 13; // num to unpack
for (int i=mynum; i >= 0; --i) { // start at 31, go down to 0
int bit = 1 << i; //clever bit wise operator
if ((mynum & bit) == bit) {
print(" 1 ");
}
else {
print(" 0 ");
}
}
println("\n ");
//could also just cheat and do
println(" CHEAT:" +Integer.toBinaryString(13));
//another way:
int dec, rem;
int i=1;
int sum=0;
dec =13;
do
{
rem=dec%2;
sum=sum + (i*rem);
dec=dec/2;
i=i*10;
}
while (dec>0);
println("The binary of the given number is:"+sum);
//even simpler:
int x =13;
while (x>0)
{
int y=x%2;
x=x/2;
System.out.print(y); //reverse numbers to get the proper binary number
/**
The while loop will run until the variable x is equal to 0. While running,
this loop will get the remainder of x divided by 2, assign the remainder to variable y,
divides x by 2, and prints out y to display to the user The process repeats until x is 0.
*/
}
}
Monday, 4 July 2011
Ganesh calming Android phone app
Ganesh calming Android phone app
very simple:
PImage gan;
int counter;
void setup() {
gan =loadImage("ganesh.png");
background(#FF99FF);
}
void draw() {
imageMode(CENTER);
counter =frameCount;
translate(width/2, height/2);
image(gan, 0, 0, width, height);
rotate(counter*TWO_PI/360);
strokeWeight(5);
stroke(#CC527A);
fill(#FF99FF);
tint(255, frameCount%5);
noTint();
tint(255, 124);
image(gan, 0, 0, 400, 400);
noTint();
tint(255, frameCount%120);
image(gan, 0, 0);
}
Saturday, 2 July 2011
The Global Consciousness Project Meaningful Correlations in Random Data
http://noosphere.princeton.edu/
Subtle interactions link us with each other and the Earth
"When human consciousness becomes coherent and synchronized, the behavior of random systems may change. Quantum event based random number generators (RNGs) produce completely unpredictable sequences of zeroes and ones. But when a great event synchronizes the feelings of millions of people, our network of RNGs becomes subtly structured. The probability is less than one in a billion that the effect is due to chance. The evidence suggests an emerging noosphere, or the unifying field of consciousness described by sages in all cultures.
The Global Consciousness Project is an international, multidisciplinary collaboration of scientists and engineers. We collect data continuously from a global network of physical random number generators located in 70 host sites around the world. The data are transmitted to a central archive which now contains more than 12 years of random data in parallel sequences of synchronized 200-bit trials every second"
Thursday, 30 June 2011
Lullaby: sleep play
http://www.barbican.org.uk/theatre/event-detail.asp?ID=11432
http://www.bbc.co.uk/news/world-latin-america-13962730
A theatre production designed to make people sleep!
Wednesday, 29 June 2011
Video Transparency hack part II
/**
* hacked background subtraction and transparency effect in live video - needs refining!!
* E.DARE 2011
*/
import processing.video.*;
PImage star;
Capture cam;
void setup() {
size(320, 240);
cam = new Capture(this, 320, 240);
star =loadImage("back.jpg");
}
void draw() {
image(star, 0, 0, cam.width, cam.height);
if (cam.available() == true) {
cam.read();
cam.loadPixels();
color cc =color(255, 0); //
for (int x = 0; x < cam.width; x++) {
for (int y = 0; y < cam.height; y++ ) {
int loc = x + y*cam.width;
if (brightness(cam.pixels[loc])>=120) { //set your threshold here
cam.pixels[loc] = cc;//
}
}
}
}
cam.format = ARGB;
cam.updatePixels();
image(cam, 0, 0);
}
Remove background and make it transparent
removes a black background from the vase picture and replaces it with translucent pixels, so the image behind the vase is revealed
*/
PImage img, img3, destination;
void setup() {
size(300, 300);
img = loadImage("vase.jpg");
destination = createImage(img.width, img.height, RGB);
img3 = loadImage("star.jpg");
}
float threshold = 12;
void draw() {
//noLoop();
background(255);
img.loadPixels();
destination.loadPixels();
color cc =color(255, 255, 255, 0); //with transluscent alpha channel
//could just write 255, 0
color cc2 =color(0, 0, 255);
for (int x = 0; x < img.width; x++) {
for (int y = 0; y < img.height; y++ ) {
int loc = x + y*img.width;
if (brightness(img.pixels[loc])>=threshold) {
destination.pixels[loc] = img.pixels[loc];// the vase , could be a color fill too i.e =cc2;
}
else if(brightness(img.pixels[loc])<=threshold) {
destination.pixels[loc] = cc;
}
}
}
destination.format = ARGB; //this is the crucial line
destination.updatePixels();
image(img3, -20, -20);
image(destination,0,0);
}
Tuesday, 28 June 2011
Creativity and Cognition artwork accepted for Atlanta conference
Creativity and Cognition
Had my artwork proposal (the Lost Memories project) accepted to be exhibited/performed at the Atlanta conference, Creativity and Cognition 2011:The 8th ACM Conference on Creativity and Cognition will be held from November 3rd through November 6th at Georgia Institute of Technology in Atlanta, Georgia, USA. Starting in 1993, the Creativity & Cognition (C&C) conference series have evolved into lively interdisciplinary meetings, bringing together artists and scientists, designers and educators, researchers and practitioners.
The theme of Creativity and Cognition 2011 is Creativity and Technology. We seek to understand human creativity in its many manifestations, to design new interactive techniques and tools to augment and amplify human creativity, and to use computational media technologies to explore new creative processes and artifacts in all human endeavors ranging from the arts to science, from design to education.
Saturday, 25 June 2011
The I Ching in 8 Bytes: 00000010010001010100001101001100101101100011101011 10011110111111
I really like the idea of this circular sequence as the whole of the I Ching, a 64 bit number which I stumbled upon tonight while looking for visual mappings of the hexagrams to binary numbers.
http://www.onlineclarity.co.uk/friends/showthread.php?t=5212
So from left ro right, 000000 is the hexagram kūn, Earth, the receptive:
_ _
_ _
_ _
image from http://proporzionedivina.blogspot.com/2009/06/i-ching-as-binary-system.html
00000010010001010100001101001100101101100011101011 10011110111111
6*64 = 384 lines to represent the entire realm of change...
Friday, 24 June 2011
Simple visual version of Bubble Sort
Simple visual version of Bubble Sort, adapted from previous code
<----void draw() {
// If the mouse is pressed sort the array
if (mousePressed == true) {
bubbleSort(myArray);
for(int i=0;i
ellipse(50, +i*25, myArray[i]*2, myArray[i]*2);
print(" " + myArray[i]);
}
}
}
------>
Bubble Sort algorithm
Nice bubble sort example from Kevin, I've made a simpler version below
/*
demonstrates a bubble sort algorithm, a variety of 'comparison sort'.
involves repeatedly stepping through the list to be sorted, comparing each pair of adjacent
items and swapping them if they are in the wrong order. The pass through the list is
repeated until no swaps are needed, which indicates that the list is sorted.
The algorithm gets its name from the way smaller elements "bubble" to the top of the list
adapted from Kevin:
http://processing.org/discourse/yabb/YaBB.cgi?board=Programs;action=display;num=1059766998
**/
//NASTY BLOG DOESNT WANT TO DISPLAY CODE PROPERLY
void bubbleSort(int array[])
{
int i, j;
boolean sorted = false;
// while the array isn't sorted
while (!sorted) {
sorted = true;
// loop through array
for (i=0;i
// swap values
j = array[i];
array[i] = array[i+1];
array[i+1] = j;
//println(array);
// trigger's been hit, array isn't sorted.
sorted = false;
}
}
}
}
Thursday, 23 June 2011
Factorials: 5 ! = 5 * 4 *3 *2 * 1 = 120 \
- (! means factorial) The factorial function (symbol: !) means to multiply a series of descending natural numbers. Can be used to find permutations and combinations, especially of large numbers
- Here first 20 factorials:
- void setup() {
for(int i=0;i<20;i++) {
long N = i;
println(i+ " :" +factorial(N));
}
}
long factorial(long n) {
if (n < 0) throw new RuntimeException("Underflow error in factorial");
else if (n > 20) throw new RuntimeException("Overflow error in factorial");
else if (n == 0) return 1;
else return n * factorial(n-1);
}
//Processing variation adapted from http://introcs.cs.princeton.edu/java/23recursion/Factorial.java.html
- Output from code:
0 :1
1 :1
2 :2
3 :6
4 :24
5 :120
6 :720
7 :5040
8 :40320
9 :362880
10 :3628800
11 :39916800
12 :479001600
13 :6227020800
14 :87178291200
15 :1307674368000
16 :20922789888000
17 :355687428096000
18 :6402373705728000
19 :121645100408832000
Wednesday, 22 June 2011
Find prime numbers/prime factors
depending on the value of N
void setup() {
long N =463;
for (long i = 2 ; i <= N ; i++) {
while (N % i == 0) {
System.out.println(i);
N = N/i;
}
}
}
Heron of Alexandria/Babylonian Algorithm to find square roots
'imperative programs define sequences of commands for the computer to perform.'
Heron of Alexandria/Babylonian Algorithm to find the square root of a number, 3 versions here:
/*
1. Start with an initial guess (g) of what the square root of some number
(call it n) might be. The initial guess doesn't even have to be close. For simplicity's sake, let's always choose g = 1.
2. Compute result = ((n/g) + g)/2. Let g be the result just computed.
3. Repeat step 2 until the last two results obtained are the same.
sucessive approximation? Adapted from some C++ code I found on the web
*/
void setup() {
}
void draw() {
//doesn't really need to be in draw()
heronSqrt(44);
}
double heronSqrt(int number) {
double x = number/2;
for (int i = 0; i< 10; i++) {
x = (x + number/x)*0.5; //0.5
println("next approximate: " +x);
}
println("Processing guess: " + sqrt(number));
return x;
}
}
////another 2 variants:
//heron 2
void setup() {
heronTwo(44);
println(" ");
println(heron3(44));
}
double heronTwo(int n) {
double guess = n/2;
double r = 0.00;
for(int i = 0; i < 10; i++)
{
r = n / guess;
guess = (guess + r) / 2;
System.out.println(guess);
}
System.out.println("The square root of "+n+" is:");
System.out.printf(" [ %4.2f ]", r);//printf = formatted according to flags
return r;
}
double heron3(double number)
{ //square root Babylonian method
double estimate=number;
double divisor=2;
//below 100 is arbitrary, for very small decimals i values must be large
for(int i=0; i<100; i++)
{
estimate=number/divisor;
estimate=(estimate+divisor)/2; //find average estimate & divisor
divisor=estimate;
}
return estimate;
}
LCM and HCF algorithms
fit into the two numbers
and the lowest common multiple
i.e the smallest whole number which is a multiple of the two numbers
i.e 12 and 15
*/
/*the two numbers I'm working out LCM and HCF for */
long a =12;
long b =15;
long d=2;
long s=1;
void setup() {
while(a>=d && b>=d)
{
if((a%d==0) && (b%d==0)) {
s=s*d;
a=a/d;
b=b/d;
}
else
{
d++;
}
}
println("HCF = " + s);
println("LCM= " + s*a*b);
}
void draw() {
//do nothing here
}
Great Writing Conference
Friday, 3 June 2011
Thursday, 2 June 2011
Dreamt I was in a crashing plane
The last few weeks I've been discussing lucid dreaming with a number of different people, several of whom have said you should try to read a book or look at your hands to see if you can recogonise patterns etc while dreaming, since those conversations I've had two more lucid dreams in which I've remembered to find something to read and to look at my hands, then turn them over and try to remember the lines on them. Last night I dreamt I was in a plane that was crashing, as it was about to hit a bridge I thought, 'this is really going to hurt' then I realised it was a dream and said to myself 'it cant hurt' and just went straight through the concrete and out the other side. I looked at my hands to remember the patterns on them, I'd done that before, but they were blue, this time they were my normal hands and I could remember the patterns, I found a boy reading a book and I looked at the title, it was a book on Coffee...I woke up and it was morning...the most lucid dream I've had so far.
Wednesday, 1 June 2011
Derek Jarman's Wittgenstein
Found Derek Jarman's Wittgenstein on the web, I'm framing the Buddha box/Zen garden as an investigation into the limits of symbolic logic, carefully (and slowly!) reading the The Tractatus Logico-Philosophicus ("Logical-Philosophical Treatise"). Section 4 is the tricky one:
4.1 Propositions represent the existence and non-existence of states of affairs.
4.11 The totality of true propositions is the whole of natural science (or the whole corpus of the natural sciences).
4.111 Philosophy is not one of the natural sciences. (The word "philosophy" must mean something whose place is above or below the natural sciences, not beside them.)
4.112 Philosophy aims at the logical clarification of thoughts. Philosophy is not a body of doctrine but an activity. A philosophical work consists essentially of elucidations. Philosophy does not result in "philosophical propositions", but rather in the clarification of propositions. Without philosophy thoughts are, as it were, cloudy and indistinct: its task is to make them clear and to give them sharp boundaries.
4.113 Philosophy sets limits to the much disputed sphere of natural science.
4.114 It must set limits to what can be thought; and, in doing so, to what cannot be thought. It must set limits to what cannot be thought by working outwards through what can be thought.
4.115 It will signify what cannot be said, by presenting clearly what can be said.
With the Buddha Box you can never see directly in it, only via a camera, and then only when Brainwave states are those synonymous with 'higher consciousness'.
Sunday, 29 May 2011
Back to the gene garden
back to the gene garden:
float xoff = 0.0;
float xincrement = 0.01;
int THRESH = 100;//size of best int
int POP_MAX = 1200;
int maxSIZE = 122;//max cell size
int[] pop = new int[POP_MAX];
//int[] fit = new int[10];
ArrayList fittest;
ArrayList babies;
int b, c, bab, baby;
//int cycles = 9;
void setup() {
size(900, 200);
fittest = new ArrayList();
babies = new ArrayList();
for (int i=0; i < POP_MAX; i++) {
pop[i] = (int)random(0, maxSIZE);//fill first population
}
}
void draw() {
// noLoop();
frameRate(2);
babies.clear(); //kilfuture parents
int ran2 = (int)random(maxSIZE, maxSIZE+maxSIZE/2);
for (int yy = 0;yy<5;yy++) {
babies.add(ran2);//couple of mutants
}
float n = noise(xoff)*width;
// With each cycle, increment xoff
xoff += xincrement;
fill(255);
rect(0, 0, width, height);
//initial population
for (int i=0; i < POP_MAX; i++) {
// println(" " +pop[i] + " ");
// ellipse(i+30, 50, 25, 25);
getFit(pop[i]); //asess for fitness
}
for (int i=0; i < fittest.size(); i++) {
Integer a = (Integer)fittest.get(i);
//println(" " +a + " ");
}
//best babies bred from best of population:
for (int i=0; i < babies.size(); i++) {
Integer tempbab = (Integer)babies.get(i);
bab = tempbab;
noStroke();
fill((int)random(bab*2), (int)random(bab*3), (int)random(bab*2), bab);
// ellipse(i+bab+bab/2, 100, bab, bab);
ellipse(i+bab+bab/2, 100, bab, bab);
// ellipse((int)random(n),height/2,bab, bab);
}
/*for(int i=0;i
// println(" " +check + " ");
fittest.add(check);
breed(check);
}
}
///add biggest together
void breed(int a) {
int ran = (int)random(fittest.size());
for (int i=0; i < ran; i++) {
Integer tempb = (Integer)fittest.get(i);
b = tempb;
}
for (int i=ran; i > ran; i++) {
Integer tempc = (Integer)fittest.get(i);
c = tempc;
}
// fill((int)random(20, 255), 20);
///println(b+c);
// translate(20, 20);
//ellipse(b, c, 20, 20);
// baby =b+c+(int)random(-200); //breed and mutate
baby =b+c; //slight mutation
babies.add(baby);
}
World world;
void setup() {
size(1100, 200);
world = new World(15); //20
smooth();
}
void draw() {
background(255);
world.run();
}
void mousePressed() {
aahha
save(frameCount+".jpg");
}
////
class Food {
ArrayList food;
ArrayList ellie; //my random size variables
int eloc;
int a =80;
Food(int num) {
// Start with some food
food = new ArrayList();
ellie = new ArrayList();//random sizes
for (int i = 0; i < num; i++) {
food.add(new PVector(random(width), random(height)));
}
for (int i = 0; i < food.size(); i++) {
ellie.add(int(random(10, 78)));
}
}
void run() {
for (int i = 0; i < food.size(); i++) {
PVector loc = (PVector) food.get(i);
ellipseMode(CENTER);
eloc = (Integer) ellie.get(i);
fill(loc.x, eloc, loc.y);
ellipse(a+i*53, 80, eloc, eloc);
// rect(a+i*50, 80, eloc, eloc);
}
}
// Return the list of food
ArrayList getFood() {
return food;
}
}
/////
class World {
Food food;
// Constructor
World(int num) {
food = new Food(num);
}
void run() {
// Deal with food
food.run();
}
}
//thanks to D. Shiffman...
Friday, 27 May 2011
Photographing God Part II
'Focus your camera lens on God and you will see God looking back at you. Seeing God is seeing divine light reflected from every facet of your life.' http://photographgod.blogspot.com/
I Haven't thought yet how to frame my project, but I suspect, it's underpinned by a search for the possibilty of experiencing an absence of dread, an absence of specific subjectivity as well as the more laudable academic quest for the unrepresentable - exploring the limits of symbolic representation. Can we have a 'direct experience', for example? This is an analogue device in which there is no inscriptive technology at play, only a fleeting im-material presence. What the viewer sees is only light, which we can pass our hands right through - through God and out the other side, leaving us wondering if we have seen anything at all.