Skip to content

Instantly share code, notes, and snippets.

@ptone
Last active December 22, 2015 07:19
Show Gist options
  • Save ptone/6437039 to your computer and use it in GitHub Desktop.
Save ptone/6437039 to your computer and use it in GitHub Desktop.
Pycon 2014 talk proposal. I'm open to any and all feedback. Would you be interested in this talk? Are you more interested in the generalizations, or the specifics? What do you think would make this talk more interesting to an even broader pycon audience?

Blending art, technology, and light. Designing Birdfish, an expressive Python Library for interactive and real time LED installations

Category

Other

Python Level

Intermediate

Audience

Python programmers who have a closeted creative side, those interested in contributing to or designing for technical projects aimed at artists/creatives, technically proficient artists, anyone with an LED based project in mind looking for ways to control LEDs.

Objectives

Audience members will gain an basic understanding of: RGB LED technology, some background on lighting control protocols, an overview of some of the challenges in designing abstractions geared toward artistic expression, and a quick introduction to the BirdFish Python library.

Duration

30

Description

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 and one Python library designed to make their control easier, and learn about building real-time control of physical things.

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 supportive of user's end goals.

Outline

  • Intro (2-3 min)

    • Who am I (1 min)
    • Why are LEDs interesting (1 min)
  • The hardware 5 min

    • RGB LED anatomy
    • IC control and timing requirements
    • hobby and commercial control hardware
  • The control protocols 3-5 min

    • Origins in stage lighting - serial wire
    • the move to ethernet based delivery
    • Input protocols from triggers to gestures: MIME, OSC, TUIO
  • The software, current landscape and design considerations (10 minutes)

    • current offerings mostly commercial
    • OLA (linux) is the OSS swiss army knife (http://www.opendmx.net/index.php/Open_Lighting_Architecture)
    • 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
  • Demos and illustrations (5 min)

  • Q&A

Notes

I presented bits of this as a lightening talk at 2013 Pycon and got some positive feedback in terms of amount of interest

http://ptone.com/misc/pycon2013-birdfish-lighteningtalk/

Hardware demos! (backed up with prior recorded videos)

The work on this project is erratic, I typically sprint on it around Halloween and Christmas

Supporting Documents

https://github.com/ptone/BirdFish

https://birdfish.readthedocs.org/en/latest/index.html

####Successful and related projects:

http://blinkiverse.com/blinkytape/

http://moorescloud.com

@pydanny
Copy link

pydanny commented Sep 4, 2013

Yes, please!

@ashchristopher
Copy link

Want!

@kheremos
Copy link

kheremos commented Oct 6, 2014

BirdFish and LEDs reminded me of a picture I once made:
MusicFish

I also worked on something called the "Vertigo Dance Floor" at Washington University in St. Louis. That was an interesting project...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment