annotate light8/README @ 1414:c35ec37c3c6e

sequencer reloads effecteval on the fly. plus some /stats support. Ignore-this: 964f4c9007de6532457e0a507d2106f1
author Drew Perttula <drewp@bigasterisk.com>
date Fri, 10 Jun 2016 06:56:34 +0000
parents 45b12307c695
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
1 Light 8 Lighting Control
45b12307c695 Initial revision
drewp
parents:
diff changeset
2 ------------------------
45b12307c695 Initial revision
drewp
parents:
diff changeset
3
45b12307c695 Initial revision
drewp
parents:
diff changeset
4 Installation
45b12307c695 Initial revision
drewp
parents:
diff changeset
5
45b12307c695 Initial revision
drewp
parents:
diff changeset
6 You'll need Python 2.2, Tk 8.x. Depending on your platform, you might
45b12307c695 Initial revision
drewp
parents:
diff changeset
7 need SWIG as well. We also assume you have the same hardware that
45b12307c695 Initial revision
drewp
parents:
diff changeset
8 we built. It shouldn't be too hard to adapt it to another system,
45b12307c695 Initial revision
drewp
parents:
diff changeset
9 but we leave that as an exercise to the reader.
45b12307c695 Initial revision
drewp
parents:
diff changeset
10
45b12307c695 Initial revision
drewp
parents:
diff changeset
11 1. SWIG the parallel port C code. (optional, depending on platform,
45b12307c695 Initial revision
drewp
parents:
diff changeset
12 compiler, etc.)
45b12307c695 Initial revision
drewp
parents:
diff changeset
13
45b12307c695 Initial revision
drewp
parents:
diff changeset
14 First,
45b12307c695 Initial revision
drewp
parents:
diff changeset
15
45b12307c695 Initial revision
drewp
parents:
diff changeset
16 shell> make parport_wrap.c
45b12307c695 Initial revision
drewp
parents:
diff changeset
17
45b12307c695 Initial revision
drewp
parents:
diff changeset
18 Then,
45b12307c695 Initial revision
drewp
parents:
diff changeset
19
45b12307c695 Initial revision
drewp
parents:
diff changeset
20 shell> make parportmodule.so
45b12307c695 Initial revision
drewp
parents:
diff changeset
21
45b12307c695 Initial revision
drewp
parents:
diff changeset
22 2. Create the necessary preference files.
45b12307c695 Initial revision
drewp
parents:
diff changeset
23
45b12307c695 Initial revision
drewp
parents:
diff changeset
24 shell> touch /tmp/light9.prefs
45b12307c695 Initial revision
drewp
parents:
diff changeset
25 shell> touch /tmp/light9.prefs.dummy
45b12307c695 Initial revision
drewp
parents:
diff changeset
26
45b12307c695 Initial revision
drewp
parents:
diff changeset
27 Sadly, we didn't have the 5 seconds to add this to the code.
45b12307c695 Initial revision
drewp
parents:
diff changeset
28
45b12307c695 Initial revision
drewp
parents:
diff changeset
29 3. You're done. Sadly, Light 8 needs to be run as root, due to the nature of
45b12307c695 Initial revision
drewp
parents:
diff changeset
30 of the parallel port interface. However, you can run it in dummy mode
45b12307c695 Initial revision
drewp
parents:
diff changeset
31 without being root.
45b12307c695 Initial revision
drewp
parents:
diff changeset
32
45b12307c695 Initial revision
drewp
parents:
diff changeset
33 Live mode:
45b12307c695 Initial revision
drewp
parents:
diff changeset
34 shell> su
45b12307c695 Initial revision
drewp
parents:
diff changeset
35 <enter password>
45b12307c695 Initial revision
drewp
parents:
diff changeset
36 shell> python light8.py real
45b12307c695 Initial revision
drewp
parents:
diff changeset
37
45b12307c695 Initial revision
drewp
parents:
diff changeset
38 or
45b12307c695 Initial revision
drewp
parents:
diff changeset
39
45b12307c695 Initial revision
drewp
parents:
diff changeset
40 Dummy mode:
45b12307c695 Initial revision
drewp
parents:
diff changeset
41 shell> python light8.py
45b12307c695 Initial revision
drewp
parents:
diff changeset
42
45b12307c695 Initial revision
drewp
parents:
diff changeset
43
45b12307c695 Initial revision
drewp
parents:
diff changeset
44 Introduction and Usage
45b12307c695 Initial revision
drewp
parents:
diff changeset
45
45b12307c695 Initial revision
drewp
parents:
diff changeset
46 Light 8 is a quick-and-dirty hack to produce a working
45b12307c695 Initial revision
drewp
parents:
diff changeset
47 DMX controller written in Python and Tk. Our website,
45b12307c695 Initial revision
drewp
parents:
diff changeset
48 http://light9.bigasterisk.com/danceshow, has more information.
45b12307c695 Initial revision
drewp
parents:
diff changeset
49 We hope to produce a more elegant and flexible solution, known as
45b12307c695 Initial revision
drewp
parents:
diff changeset
50 Light 9. Nevertheless, we found Light 8 useful, and perhaps other
45b12307c695 Initial revision
drewp
parents:
diff changeset
51 lighting designers will as well.
45b12307c695 Initial revision
drewp
parents:
diff changeset
52
45b12307c695 Initial revision
drewp
parents:
diff changeset
53 As an example, we have included the configuration files for the dance
45b12307c695 Initial revision
drewp
parents:
diff changeset
54 show that we used Light 8 on. Light 8 has two modes, dummy and live.
45b12307c695 Initial revision
drewp
parents:
diff changeset
55 Each has it's own configuration file. Dummy uses ConfigDummy.py and
45b12307c695 Initial revision
drewp
parents:
diff changeset
56 live uses Config.py. Speaking of which, you need to add something
45b12307c695 Initial revision
drewp
parents:
diff changeset
57 after the command line to enter real mode so that you don't accidently
45b12307c695 Initial revision
drewp
parents:
diff changeset
58 run the show (this may seem silly, but we were developing it on two
45b12307c695 Initial revision
drewp
parents:
diff changeset
59 computers and didn't want to accidentally run it on both).
45b12307c695 Initial revision
drewp
parents:
diff changeset
60
45b12307c695 Initial revision
drewp
parents:
diff changeset
61 Dummy mode:
45b12307c695 Initial revision
drewp
parents:
diff changeset
62 shell> ./rsn.py
45b12307c695 Initial revision
drewp
parents:
diff changeset
63
45b12307c695 Initial revision
drewp
parents:
diff changeset
64 Real mode:
45b12307c695 Initial revision
drewp
parents:
diff changeset
65 shell> ./rsn.py real
45b12307c695 Initial revision
drewp
parents:
diff changeset
66
45b12307c695 Initial revision
drewp
parents:
diff changeset
67 (you could actually type anything for 'real', it just counts
45b12307c695 Initial revision
drewp
parents:
diff changeset
68 arguments)
45b12307c695 Initial revision
drewp
parents:
diff changeset
69
45b12307c695 Initial revision
drewp
parents:
diff changeset
70 Config must include several structures. patch is a dictionary,
45b12307c695 Initial revision
drewp
parents:
diff changeset
71 mapping channels to dimmers. However, unlike most light boards,
45b12307c695 Initial revision
drewp
parents:
diff changeset
72 Light 8 supports named channels. Additionally, channels may have
45b12307c695 Initial revision
drewp
parents:
diff changeset
73 multiple names. Furthermore, there is a 1-to-1 patch of channels
45b12307c695 Initial revision
drewp
parents:
diff changeset
74 to dimmers. Here's an example patch to illustrate:
45b12307c695 Initial revision
drewp
parents:
diff changeset
75
45b12307c695 Initial revision
drewp
parents:
diff changeset
76 patch = {
45b12307c695 Initial revision
drewp
parents:
diff changeset
77 ('center neutral 1', 'main special') : 1,
45b12307c695 Initial revision
drewp
parents:
diff changeset
78 'SL blue' : 3,
45b12307c695 Initial revision
drewp
parents:
diff changeset
79 'SR blue' : 4,
45b12307c695 Initial revision
drewp
parents:
diff changeset
80 }
45b12307c695 Initial revision
drewp
parents:
diff changeset
81
45b12307c695 Initial revision
drewp
parents:
diff changeset
82 In this patch, we can refer to dimmer 1 by two names, 'center
45b12307c695 Initial revision
drewp
parents:
diff changeset
83 neutral 1' and 'main special'. We can also refer to it as '1' or 1
45b12307c695 Initial revision
drewp
parents:
diff changeset
84 (either a Python string or int. Heck, maybe even a float, but I'm
45b12307c695 Initial revision
drewp
parents:
diff changeset
85 not sure). Dimmer 2 can only be referred to as '2' or 2, since
45b12307c695 Initial revision
drewp
parents:
diff changeset
86 the patch omits a name. Dimmer 3 can be referred to as 'SL blue',
45b12307c695 Initial revision
drewp
parents:
diff changeset
87 '3', or 3. And so on...
45b12307c695 Initial revision
drewp
parents:
diff changeset
88
45b12307c695 Initial revision
drewp
parents:
diff changeset
89 Source file breakdown
45b12307c695 Initial revision
drewp
parents:
diff changeset
90 ---------------------
45b12307c695 Initial revision
drewp
parents:
diff changeset
91
45b12307c695 Initial revision
drewp
parents:
diff changeset
92 rsn.py - Main loop, I/O, GUI, persistence, etc
45b12307c695 Initial revision
drewp
parents:
diff changeset
93 Xfader.py - 2-group crossfader widget and algorithm
45b12307c695 Initial revision
drewp
parents:
diff changeset
94 Patch.py - Manages DMX channel naming
45b12307c695 Initial revision
drewp
parents:
diff changeset
95 util.py - Some cue arithmetic functions
45b12307c695 Initial revision
drewp
parents:
diff changeset
96 Subs.py - Submaster object, including effects gui api,
45b12307c695 Initial revision
drewp
parents:
diff changeset
97 Config.py - Show-specific names and effect code
45b12307c695 Initial revision
drewp
parents:
diff changeset
98 ConfigDummy.py - Show-specific names and effect code for dummy site
45b12307c695 Initial revision
drewp
parents:
diff changeset
99 parport* - Parallel port interface code