Few months ago I asked Alex Beim of Tangible Interaction to send us a little info about Lucia, their 112×20 LED matrix light device. Lucia is a project the team had in their heads for the last 2 years, to create a lighting device we can have at home, something that will generate an atmosphere, something we would want to stare at, maybe even take the place of the TV.
I have always been fascinated with LED matrixes, by both the look of the matrix and by the light they emit. I find myself often staring at horrible signs with bad animations just because I like the device itself. I think these devices are poorly used and I always wanted to get my hands on one of them to make the whole genre proud.
Lucia is a standing column, about 1.2m by 0.2, with a simple interface controllable through a rotary encoder at the top. There is a menu system to change setting and load new generative patterns or animations. These animations change with time and can also be affected by presence, light and sounds.
Now I hand it over to Alex:
Before getting into details we had to make some important technical and design decisions, which were based on the following requirements we had in mind:
• The final product should be able to load and play animations dynamically.
• Programing new animations should be as easy as possible (and cross platform).
• We want a simple interface to select different animations and options.
The first thing we played through was how we could load and play different animations at program runtime. Since we were working on linux in c++ (using openFrameworks) we basically had two options which were using dynamic libraries that then could be loaded at runtime or using a scripting language to write the animations in. The biggest advantage about using dynamic libraries is that you can use c++ directly and thus have best performance possible. Anyways the drawbacks outweighed this advantage since using DLLs can be quite a pain. Especially cross platform development would have been hard using this approach. We decided to use a scripting language instead and went with LUA as our weapon of choice. We made a binding of all of openFrameworks functionality we needed for animations as well as some custom ones which allowed us to program all content in LUA. In terms of performance the speed was still fast enough since the rendering only happened at a resolution of 112×20 pixels. To control the whole system our goal was to only use one button, which works similar to a mousewheel, to make different selections, and a „down“ function to confirm your selection. Another question was how to render the menu on such a low resolution. We decided to only render one item at a time using a crisp pixel font to enhance readability. In terms of content we tried different approaches. Our first idea was to stick to a per pixel look which underlines the physical properties of the screen. After we did some first successful sketches in this direction, we noticed that only animating on a per pixel level became a limitation quickly. That’s why we also added the functionality to make use of antialiasing and ended up with alot of different animations stylewise. Even 3D animations turned out to be a success on such a small resolution. Most of them are audio driven with a simple beat-detection we wrote. So you can plug in your Ipod and enjoy.
The idea all along was to allow anybody to play with it and create generative animations, we are still thinking about that so if there are interested people we would love to know.