Spotlight on Python

Preview:

DESCRIPTION

Kiwi PyCon 2011, Wellington, Spotlight on Python by Nick Cave-Lynch, Spotlight on Python. Covers development and use of a Python-powered system designed for lighting bands in small venues. Covers (among other things): the problems of lighting bands; the development process; the results; lessons learned.

Citation preview

Spotlight on. Python

Python for realtime controlof stage lighting

Nic Cave-Lynch – Tymar Lighting

The problem Current architecture Version 2 architecture DMX Engine RDDD (Rubber Duck Driven Development) Observations

Spotlight on. Python

The problem

Lighting bands, typically in small-ish venues

DMX: 40 updates/second, 200-500 channels

Moving lights (HTP/LTP)

Music usually new to me

'Busking' in 4 dimensions

Enhance the music

Enhance the show

Current architecture

Mimic (wxPython)

asynchatsendsDMX

DMX engineHTP/LTP ->

channel value

Input wing:fadersbuttons

asynchatgathers

wing input

DMXgenerator

serial USB

trackball(fcntl)

capturetrackball

moving lightmanager

USB

Version 2 architecture

Config UI / mimic

DMXgeneratorcontroller

DMXengine

Input wing:fadersbuttons

trackballs

Input wingcontroller

DMXgenerator

USB/serial/MIDI ZeroMQ

struct

ZeroMQprotocolbuffers

ZeroMQprotocol buffers

USB/serial/Wifi

ZeroMQ

struct

DMX Engine

Engine()

– Holders for Valgens, Scenelets, Fixtures

– dispatches zmq messages from wing/UI

Valgens know which Scenelets they drive

Scenelet sends multiple of Valgen value to Fixture channels

Fixture has channel for each aspect of the light

– output function eg calculate pan/tilt values from (x,y,z)

Speed important:

– reduce lookups

– integer dict keys

– Valgen->Scenelet->Fixture single function call

– struct module

RDDD

Architecture took ages Rubber Duck Driven Development "make something that doesn't work"

Observations

Unit tests inhibit experimentation Deciding to Open Source can be an inhibitor Spoilt for choice in libraries/frameworks/etc.

Analysis paralysis

Surprising results in some performance areas struct module string/integer dict keys

I hate OpenOffice.org Impress 3.2: it's barely useable

For more live Python action

200 metres from dinner venue:

● Left out of Tulsi

● 20 metres to Guznee St

● Right up Ghuznee St

● One block up

● Straight over traffic lights

● Bodega is on the left