HOLDING AND CONNECTING TO WATER
Recently Johnston Architects was selected to design the above grade portion Seattle Public Utility’s Ship Canal Water Quality project in Ballard. The site is at the head of an extensive underground well and tunnel system that will collect and hold Seattle’s Combined Sewer Overflow when the system is overwhelmed by storms.
Each year, on average, more than 300 Combined Sewage Overflows send millions of gallons of raw sewage and storm-water into Seattle’s creeks, lakes, the Ship Canal, the Duwamish River, and Elliott Bay. These CSO’s create significant health and environmental risks disrupting and killing wildlife and preventing Seattle’s citizens from enjoying the water that surrounds them.
SPU is undertaking multiple projects throughout the City to contain overflow water and prevent CSO events from entering our waterways. It is an enormous infrastructure project that is essentially invisible.
The SPU Pump Station site in Ballard is the only place that the Ship Canal Water Quality Project comes out of grade. It is an opportunity for SPU to illustrate, educate, and celebrate the importance of the project in keeping our waterways healthy and sustainable and to emphasize the important role that SPU plays in our City. To begin the project it was crucial to document the Goals and then create a design that thoughtfully executed them.
The mock-up itself is 4 feet wide by 8 feet deep. Before attaching it to our ceiling at JA, we supported it over a couple of chairs to lay in the Christmas lights, taking care to evenly distribute the light and to mind where the power was coming in from. We then clamped our mockup to the steel I-beams of our ceiling and plugged in the lights. We were all very pleased with the result: a soft, undulating light playing across our fabric terrain.
Up to now, the concept was simple and straight forward. We could alter the lengths of the fabric rectangles to provide texture and shape, creating interest with its irregularities. But we wanted something a little more reactive, that would feel special and unique to the viewer. Enter the programmable RGB LEDs. These types of LEDs come on strands and allow one to programmatically change the color of each LED individually. When you lay the strand out in a grid, you can create images and 2D patterns. This is where the project began to take on exciting character.
One of the skills we needed to pick up was wiring electronics. Soldering wires to breadboards, understanding resistances and amperes, and modulating power to avoid fires isn’t usually what one finds themselves learning during an architecture project, but the great thing about architecture is that one usually finds themselves learning a great deal about things that are not strictly defined as architecture. We stumbled through some bad wiring and faulty components, but eventually everything was working just as intended.
We chose to program using the Python programming language. While there are other languages more suited to programming LEDs, Python has many libraries which allow us to vary the types of controls we employ. Using the Raspberry Pi and Linux as our operating system gives us the computing power we need to bring our vision to life. The choices for creating color patterns is overwhelming. We could programmatically create small animations, we could use it as a sort of coarse viewing screen and play videos and animated gifs, or we could employ algorithms to modulate color and intensity. So, we gave them all a go.
Programming the LEDs to act as a 2D screen wasn’t terribly difficult. It has been done thousands of times, and there is a how-to blog or video for just about every attempt. We eventually learned to play animated GIFs, stream YouTube videos and even webcam footage to the ceiling display.
Now that it inhabits our office, we usually play a variation of 2D ‘Perlin noise’ – an algorithm developed to mimic the organic randomness found in nature. Video games and CGI artists use Perlin noise to simulate clouds, waves, fire, mountains, fog and much more. Our application of the algorithm displays a slow, undulating, random field of varying colors. We implemented a few controls over how it appears, building in a web front-end to control speed and color intensities on the fly. We even implemented a webcam library in Python to track movement and shift the colors accordingly.
We are currently looking at next steps. We’ve fleshed out the practical aspects of running a large, horizontal LED screen covered in fabric, and now face the challenge of adding more interaction. One approach we are looking forward to is motion tracking people through the space, creating wakes as though through an upside-down body of colorful water. We can also update the patterns to reflect external conditions – perhaps moody light on cloudy days, hints of lightning during rainstorms, or oranges and reds during Halloween. The flexibility and variations afforded by the LEDs and their programming means we can update and change well into the future.