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