Friday 4:30 p.m.–5 p.m.

Blending art, technology, and light, Python for interactive and real time LED installations

Preston Holmes

Audience level:


Blinking colored lights bring out the child in all of us. Color LED lighting technology is becoming more available and affordable. Layers of hardware, lighting protocols, and effects design can make doing anything more complex than blinking these lights tricky. Come learn about LEDs how to control them with Python, and about building real-time control of physical things.


RGB LEDs are not so much a new technology, but they are becoming increasingly available and affordable. Many people use a simple blinking single-color LED as their first arduino project, because making things change in the physical world in response to code is just so darn satisfying. To get an effective animation on a strip that contains 50 lights involves sending 150 (R + G + B x 50) values at 30 frames per second, larger projects might contain thousands of these lights. Getting really interesting effects and patterns out of full color LEDs requires a degree of abstraction in the code that sends these values to the hardware. How should the design of a library intended as a creative tool be approached? Three threads of this story will be woven together in this talk: 1) What are the hardware limits and considerations of the current LED technology * voltage requirements * line losses * whole strip control, vs individual node/pixel control * integrated ICs and dedicated controllers * suppliers and sources 2) Design considerations of a library with creativity and interaction as principal design guidelines, with BirdFish used as an illustrating example * analogy: the choreographer doesn't care about the muscle fibers of the dancers * hard real time vs soft real time, OS kernel limitations * the perception of animations, and adaptive framerate * Using envelopes and easing functions as design components for non-linear organic motions * Defining a vocabulary of input types, from simple events to gestures * Be agnostic about inputs and outputs Many parallels exist between creative lighting control presented here and old-school hardware based music synthesizer design. Both involve the real-time generation of perceptually experienced output in response to both trigger (on/off) events, and modifications mid-output (think whammy bar vibrato). In both cases, there is a need for understanding some nitty gritty technical hardware details, but then abstracting these into an API or interaction set that is intuitive and supportive of user's end goals.