Upload
dn
View
1.315
Download
9
Tags:
Embed Size (px)
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