I ended up working with Beverly on this project. I helped her put together a triptych piece. The three pieces were boxes similar to my original idea of playing with windows. The boxes, Red, Green and Blue each had different lighting events happening when viewers triggered proximity sensors. Environmental pieces which react to the on-goings of the room around them in different ways.
All the boxes had x-mas lights on them, so that in a dark non-interactive state, they were slightly lighted up. If someone initiated the red box, the x-mas lights would turn off and a heat light would turn on. The heat light would turn some ink squares from dark blue to light. This box we considered to be the linear or formatted box. The green one was considered to be organic in nature. When the x-mas lights were turned off, small incandescent lights would light up. The incandescence were arranged in a non-linear form and attached to a switch, which would move to connect different arrays of the lights. The blue box was a video piece. When someone tripped the prox sensor a "switch" would turn on a video projection of the room. The image projected was pasteurized and of the room around them. Inside the blue box we taped textured paper and velum to create a feeling of depth.
Well, that was how the piece was supposed to work. We actually got it working for the most part the night before we were to present it in class. But as luck or Murphy continues to remind us something will always go wrong. The first problem is the BX environment. It continually does not read files, upload files or really work in any consistent manor. Then once we (Beverly) did get it working the board shorted out or something over heated. The wires connecting the servo for the video were in the way of people walking and got pulled out a few too many times as well as reconnected wrong causing the servo to smoke. It’s only funny when something’s burning.

My impressions of the process:


First off, I wanted to make each box one at a time so that we knew that they worked and would have something, anything, to present. That is why I worked on getting the video projection done. I worked on the code for the director piece a few weeks ago and played with the best way to project from the computer. I used s-video cable connected to a Sony projector. The computer was set to video mirroring. Video mirroring allows you to project the contents of the screen, but it’s a bit confusing to get started. The video mirroring is found on the control strip on the Mac, but sometimes its not there and must be placed in the control strip modules. Then I think you need to restart the computer. I would have like to work more with the video and projecting aspect of the project, making it more interesting and abstract.


Beverly put a lot of time and energy into this project. She built the boxes, stained them and did most of the wiring of them. She also purchased all the material and worked hard to develop the concept. In some ways I felt I was more of a helper, though we did discuss how to do things and what looked best in terms of presentation of the boxes. We did not have a systematic way of working, so that sometimes we took apart stuff we had already spent hours putting together. This had somewhat do to the ever-evolving nature of the project.


 


On the night before we were to present the boxes, the lights and switches seemed to work ok. Not great, but at least the proximity sensor would turn on and off lights and control the servo. However, on Friday morning, nothing seemed to work. We seemed to be having a grounding problem or something. So we were only able to demonstrate how it was supposed to work. It’s all a learning process.
My real goal with this project was to project live video in an interesting way. To have people see the world around them in a different light. I worked with using Director and "track them colors" to distort the live image. It was actually easier than I thought it would be. I just had to figure out the lingo. I could have been more elaborate with using TTC, I really did not use it to its fullest extent or even in a very profound way. But what was interesting was the use of the box and the depth we created with the layers of different textured paper.

Lingo Code:
Movie Script:
global TrackObj, videoWidth, videoHeight, horizontal, vertical

on StartMovie

set horizontal = 40
set vertical = 70
set videoWidth = 600
set videoHeight = 400
OpenXtra
InitVideo(TrackObj, 2, rect(0, 0, videoWidth, videoHeight), 1)
The number 1 at the end of the line can be changed depending on the type of input, to a 2 or 0 – very important to remember!
set colorlist = [0,0,0, rect(0,0,VideoWidth,VideoHeight)]
end StartMovie

on StopMovie
global TrackObj
CleanUp(TrackObj)
set TrackObj = 0
endon OpenXLib
openXlib "TTCPro-Fat"
if not TrackObj then
set temp = Xtra "TTCPro"
set TrackObj = new(temp)
end if


endBehavior Script:
global trackObj, sourceRect, targetRect, VideoWidth, VideoHeight, horizontal, vertical
on exitFrame me

this is the filter for the posterization or threshold, changing the number 70 changes the amount of black or white represented in the image.
-- Filter(TrackObj,[[integer(2), integer(20)]])
Filter(TrackObj,[[integer(13), integer(70)]])

set sourceRect = rect(0,0,VideoWidth,VideoHeight)
set TargetRect = offset(sourceRect, horizontal, vertical)


ShowVideo(TrackObj, [sourceRect,targetRect])

GraboneFrame(TrackObj)

-- GetSomeFrames(TrackObj, 1, 1)


go the frame

end

The code for the servo was a bit difficult to figure out. I had the code for the prox sensor and the code for the servo, so marrying them was the strange part. The prox sensor we used was an ultrasonic one. It works great and is not that difficult to hook up. On the advice of Katherine Bruce I used a phone cable to connect the five pins on the SRF to the bread board.

sub flashme(byVal flashx as byte)
dim x as byte
debug.print"RESTART"
for x = 0 to flashx
call putpin(25, 0)
delay(0.1)
call putpin(25, 1)
delay(0.1)
next
call putpin(26, 0)
end sub


dim distance as integer
dim prox as integer
dim minPulse as single
dim maxPulse as single
dim pulse as single
dim refreshPeriod as single


Sub Main()
call flashme(6)
minPulse = 0.001
maxPulse = 0.0018
refreshPeriod = 0.02
pulse = minPulsedo
call pulseOut(13, pulse, 1)

delay(0.002)
call pulseOut(12, 2.0, 1)' must be brought high for a min of 10microseconds (10us)
prox = pulseIn(11, 1)
prox = prox \ 74 'use 74 for distance to be in inches
'use 29 to convert distance to cm
debug.print; cStr(prox)
call sleep(refreshPeriod)
if prox > 20 then
pulse = minpulse
end if
if prox < 20 then
if pulse < maxpulse then
' pulse = pulse + 0.0001
pulse = maxpulse
end if
'pulse = maxpulse
end if

loop
End Sub