Sky Spectrum revisited

6 March 2012

Sky Spectrum (fixture view, detail)

Sky Spectrum (fixture view, detail)


Around this time last year, I completed a “data driven” light fixture called Sky Spectrum, for a show at Cube Gallery.  The concept behind Sky Spectrum is to analyze the Parliament Hill webcam to determine the average red, green, and blue values found in the image of the sky throughout the day, and use that data to control a remote light installation.  The original Sky Spectrum fixture used the real-time sky colour values to control LED lighting patterns based on the relationships between the red, green, and blue (RGB) values.  You can read all about the original fixture in this previous blog post.

From the onset, I was intrigued by the scalability of the project, in terms of all the additional ways the data could be presented across various different light sources or projections.  While the original fixture only reacted to the real-time, current sky conditions, I’ve since started to save the data to create an on-going data set of Ottawa’s sky conditions (as seen looking North at Parliment Hill).

With an upcoming, projection-based exhibition scheduled for May 2012 (more details coming soon), what better time to revisit the Sky Spectrum concept and make a version specifically for projection, taking advantage of this unique data set?

Collecting data

The link between the original Sky Spectrum fixture and the new projection-based work is a PHP script that grabs the current photo from the Parliament Hill webcam site, and analyses the image for the RGB colour components.  While the original, internet connected Sky Spectrum fixture requested this data in real-time as needed, I have since automated the data collection via a CRON job on my server that fetches the data every five minutes — the refresh rate of the webcam — and stores the result in a database on my server.

For a screen-based work, this has a huge advantage in that I have a log of many previous days of sky conditions that I can display instantly, adding new conditions as they become available; as opposed to starting from scratch each time I run the visualizing program and only having access to real-time data as it slowly becomes available (every five minutes).

Experiments in visualizing data

I’ve started to display the data w/ Processing, and am in the beginning to make the subjective decisions as to what to actually *do* w/ the data so as to make it interesting/aesthetic in an exhibition setting.

Beyond knowing that I want the display to be modulated (either by remote wind conditions or local sensors in the exhibition venue) and potentially interactive, I am still in the “exploratory” stages of working with the data.

Which brings me to the main reason for this post . . . The more I play with the data, the more I want to compare different versions of the visualization, so I figured my blog would be the best place to keep a record of my experiments as I move forward . . .

First, here is a view of the “dry” data, where each vertical line (one pixel wide) is one data record (representing five minutes), shown as the mixed RGB colour of the average sky colour at a particular time.  The newest data is at the right, going back in time toward the left.  The thicker dark and light bands show the passing of the previous few days and nights.  Since it’s late winter here in Ottawa, the results are fairly black and white ;)

Sky Spectrum dry data

Sky Spectrum dry data

Some form of this will probably serve as the background for a more “active” foreground feature.

The next pic shows the dry background data overlayed with raw, seperate RGB values, with red as the last (top) layer since it is usually the lowest value, followed by green, then blue.

Sky Spectrum raw data + raw r,g,b

Sky Spectrum raw data + raw r,g,b

Next in the foreground I have a “delta” graph showing the difference between the current and previous average RGB colour (the actual color of the sky) which essentially shows increases/decreases in overall light level (due to clouds, night, and day):

Sky Spectrum dry data + delta

Sky Spectrum dry data + delta

Naturally there’s sharp strikes between the day/night tranisitions, but it’s interesting to see the variant in light level fluctuation from day to day . . .

That’s it for now, I’ll update this post as my experiments evolve.

I’d love to hear your thoughts and ideas in the comments!


During my work with Processing and data visualizations, here are some resources I’ve been turning to:

FORM + CODE (Casey Reas) — this book about the aesthetics of coded (art)work has a lot of inspiring examples and I’m looking forward to playing with some of the sample code.

Visualizing Data (Ben Fry) — just starting in this one, but it’s an entire text dedicated to data visualization w/ Processing, and includes some example code as well.

Getting Started in Processing (Casey Reas and Ben Fry) — although I got started w/ Processing sometime ago, this book still remains a handy reference, and I’ve picked up a few nice coding tricks from it.

Algorithms for Visual Design (Kostas Terzidis) — a more general book on Processing, not specifically aimed at data visualization, and has a few scathing reviews on Amazon . . . haven’t started this one, but it’s in the queue . . .

And naturally, just searching for stuff directly on the Processing site often leads to plenty of useful info, too.

Similar work

Nunavut Lights / Constructed Land — works based around a database of images scraped from a weather web cam, exhibited with a hands-on control panel for navigating the video/data; I’ve been thinking of incorporating a user interface to allow users to explore the Sky Spectrum data in the time and colour axis.

NSKYC — a web-based piece displaying the average colour of the NYC sky, updated every five minutes; a web version of Sky Spectrum is definitely in the works . . .

Comments (0) | Tags: , , , | More: Blog

Leave a Reply

Your email address will not be published. Required fields are marked *


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>