|
The Softness of Things
Breathing Architecture
Perhaps it was because I was in a bad mood Friday. I started off by
building a mobile like structure, after soliciting an opinion, Tom said
it looked fine but was too small to affect the space around it. I
agreed. So, I scaled up and made a three foot triangle out of wooden
dowel. It was fragile. Why not take this fragile geometric shape,
the simplest self-sustaining structure there is, and hang it by chains
as if to string the scientific method by its proverbial toes. To it I
would then attach a weight, and that weight would hang precariously over
a naked light bulb laying on the floor. Scientific method crushing
creativity and intuition. These were my thoughts as I waited in line to
buy my wooden dowels.
After a good nights sleep, my thoughts strayed from building this
structure, mostly because it felt too much like an installation.
Interesting, but it didn't feel productive. I felt as if I were being
showy, doing it to prove something rather than something I found truly
interesting. So I started thinking about lights and a MIDI dimmer which
was recently used in another class. What a better way to change space
than by light?
Saturday evening revealed the dimmer's secrets, which weren't many.
They are documented here. Why work with just light?
To create a more immersive experience, and give the project more
potential by working with another, I asked Ithai if he were interested
in collaborating. Ithai's first, and very valid question was, "How does
sound factor into the lighting element?" We threw ideas around; LJ
mixed with DJ, synchronizing the sounds, displaying video with a short
story and work with that... Sunday we ended on an open note.
The defining moment came Tuesday evening. After 9 pm, when all classes
in room 445 (I think that's the right number) were finished, I set the
dimmer and lights up to see what it would actually look like. The
first, and only, problem I ran into was technical. I wanted to control
multiple lights at the same time through the Atmel chip, but it can only
process one thing at a time. This means I would have to program control
of the lights to accommodate this. If I wanted light 1 to go to 50%
brightness over 5 seconds, and light 2 to 100% during the 5th second, I
have to issue commands for each light in parallel, and keep track of the
timing. I ended up coding a halfway solution.
// MIDI Light Dimmer Code
// by Alexander Reeder, Oct. 26 2007
#define LEDpin 13
#define L1 0
#define L2 1
#define L3 2
#define L4 3
#define NUMLIGHTS 4
int i = 0;
int j = 0;
int lights[4] = {0};
void setup() {
Serial.begin(31250); // set MIDI baud rate
blink(3);
}
void loop() {
// turn all the lights off to start, just in case
noteOn(0x90,0,0);
noteOn(0x90,1,0);
noteOn(0x90,2,0);
noteOn(0x90,3,0);
// light program, 4 minutes in length
fadeUp(1, 5000, 0, 30);
fadeDown(1, 5000, 30, 0);
fadeUp(1, 5000, 0, 30);
fadeDown(1, 5000, 30, 0);
fadeUp(1, 5000, 0, 30);
fadeDown(1, 5000, 30, 0);
// 30s
fadeUp(0, 5000, 0, 30);
fadeDown(0, 5000, 30, 0);
fadeUp(0, 5000, 0, 30);
fadeDown(0, 5000, 30, 0);
fadeUp(1, 5000, 0, 30);
fadeUp(0, 5000, 0, 30);
// 60s
fadeUp(2, 5000, 0, 30);
fadeDown(2, 5000, 30, 0);
fadeUp(2, 5000, 0, 30);
fadeDown(2, 5000, 30, 0);
fadeUp(2, 5000, 0, 30);
fadeUp(3, 5000, 0, 30);
// 90s
fadeUp(0, 2000, 30, 40);
fadeUp(1, 2000, 30, 40);
fadeUp(2, 2000, 30, 40);
fadeUp(3, 2000, 30, 40);
fadeUp(0, 2000, 40, 50);
fadeUp(1, 2000, 40, 50);
fadeUp(2, 2000, 40, 50);
fadeUp(3, 2000, 40, 50);
fadeUp(0, 2000, 50, 60);
fadeUp(1, 2000, 50, 60);
fadeUp(2, 2000, 50, 60);
fadeUp(3, 2000, 50, 60);
fadeUp(0, 2000, 60, 80);
fadeUp(1, 2000, 60, 80);
// 120s
fadeUp(2, 2000, 60, 80);
fadeUp(3, 2000, 60, 80);
fadeUp(0, 2000, 80, 100);
fadeUp(1, 2000, 80, 100);
fadeUp(2, 2000, 80, 100);
fadeUp(3, 2000, 80, 100);
lights[0] = 1;
lights[1] = 1;
lights[2] = 1;
lights[3] = 1;
fadeDownMulti(lights, 5000, 100, 0);
fadeUpMulti(lights, 5000, 0, 100);
fadeDownMulti(lights, 5000, 100, 0);
fadeUpMulti(lights, 5000, 0, 50);
// 150s
fadeDownMulti(lights, 5000, 50, 0);
fadeUpMulti(lights, 5000, 0, 30);
fadeDownMulti(lights, 5000, 30, 0);
// 165s
// just put her to sleep b/c we are done
delay(10000000);
}
void fadeUp(int channel, int time, int from, int to)
{
int timeDelay = (time) / (to - from);
for (i = from; i <= to; i++) {
noteOn(0x90, channel, i);
delay(timeDelay);
}
}
void fadeUpMulti(int channels[], int time, int from, int to)
{
int timeDelay = (time) / (to - from);
for (i = from; i <= to; i++) {
for (j = 0; j < NUMLIGHTS; j++)
if (channels[j])
noteOn(0x90, j, i);
delay(timeDelay);
}
}
void fadeDown(int channel, int time, int from, int to)
{
int timeDelay = (time) / (from - to);
for (i = from; i >= to; i--) {
noteOn(0x90, channel, i);
delay(timeDelay);
}
}
void fadeDownMulti(int channels[], int time, int from, int to)
{
int timeDelay = (time) / (from - to);
for (i = from; i >= to; i--) {
for (j = 0; j < NUMLIGHTS; j++)
if (channels[j])
noteOn(0x90, j, i);
delay(timeDelay);
}
}
// data1 should be from 0-5, and tells the dimmer which light group
// data2 should be from 0-127 and represents the brightness
void noteOn(char cmd, char data1, char data2) {
Serial.print(cmd, BYTE);
Serial.print(data1, BYTE);
Serial.print(data2, BYTE);
}
void blink(int howManyTimes) {
int i;
for (i=0; i< howManyTimes; i++) {
digitalWrite(LEDpin, HIGH);
delay(100);
digitalWrite(LEDpin, LOW);
delay(100);
}
}
Thankfully, the extension cords reached around the room. Next was the
core artistic problem: how to light the room? Of course I had the idea
in mind of lights fading in and out. I played with the code and lights,
and then realized that by slowly fading the lights in and out over a
fixed period, the room felt as if it were "breathing". Thus the theme
of our space project was decided: What would the space, architecture,
building we are in look like if it could breath? What will the people
inside feel? We will find out Thursday!
-- Wed, 31 Oct 2007 16:57 -0400
Copyright © 1996-2009 Alexander Reeder
All rights reserved unless otherwise noted
|
|