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:
- Intermediate
- Category:
- Other
Description
Abstract
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.