Mercurial > code > home > repos > light9
annotate bin/curvecalc @ 493:b8012dcb714b
increase curvecalc update frequency 50ms to 20ms
Ignore-this: 15b3ef4d685a0cb8ddba3cca384438c2
author | drewp@bigasterisk.com |
---|---|
date | Sat, 13 Jun 2009 21:21:15 +0000 |
parents | 0e3743492eae |
children | cbc98de2ab06 |
rev | line source |
---|---|
0 | 1 #!/usr/bin/python |
2 | |
197
ba2677823b35
zoom control and other cleanups. also reads song length now
drewp
parents:
196
diff
changeset
|
3 """ |
351
a6662d61ebcd
SC, KC, CC now run and seem to load and save ok. CC does not have any rdf for its data files
Drew Perttula <drewp@bigasterisk.com>
parents:
335
diff
changeset
|
4 now launches like this: |
a6662d61ebcd
SC, KC, CC now run and seem to load and save ok. CC does not have any rdf for its data files
Drew Perttula <drewp@bigasterisk.com>
parents:
335
diff
changeset
|
5 % bin/curvecalc http://light9.bigasterisk.com/show/dance2007/song1 |
a6662d61ebcd
SC, KC, CC now run and seem to load and save ok. CC does not have any rdf for its data files
Drew Perttula <drewp@bigasterisk.com>
parents:
335
diff
changeset
|
6 |
a6662d61ebcd
SC, KC, CC now run and seem to load and save ok. CC does not have any rdf for its data files
Drew Perttula <drewp@bigasterisk.com>
parents:
335
diff
changeset
|
7 |
a6662d61ebcd
SC, KC, CC now run and seem to load and save ok. CC does not have any rdf for its data files
Drew Perttula <drewp@bigasterisk.com>
parents:
335
diff
changeset
|
8 |
197
ba2677823b35
zoom control and other cleanups. also reads song length now
drewp
parents:
196
diff
changeset
|
9 todo: curveview should preserve more objects, for speed maybe |
ba2677823b35
zoom control and other cleanups. also reads song length now
drewp
parents:
196
diff
changeset
|
10 |
ba2677823b35
zoom control and other cleanups. also reads song length now
drewp
parents:
196
diff
changeset
|
11 """ |
0 | 12 from __future__ import division |
399
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
13 import xmlrpclib,time,socket,sys,textwrap,math,glob,random,os,optparse,traceback |
197
ba2677823b35
zoom control and other cleanups. also reads song length now
drewp
parents:
196
diff
changeset
|
14 from bisect import bisect_left,bisect,bisect_right |
0 | 15 import Tkinter as tk |
332
d4aff817a304
add compatibility with louie.dispatcher
drewp@bigasterisk.com
parents:
326
diff
changeset
|
16 try: |
d4aff817a304
add compatibility with louie.dispatcher
drewp@bigasterisk.com
parents:
326
diff
changeset
|
17 from dispatch import dispatcher |
d4aff817a304
add compatibility with louie.dispatcher
drewp@bigasterisk.com
parents:
326
diff
changeset
|
18 except ImportError: |
d4aff817a304
add compatibility with louie.dispatcher
drewp@bigasterisk.com
parents:
326
diff
changeset
|
19 import louie as dispatcher |
0 | 20 from twisted.internet import reactor,tksupport |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
21 import twisted |
0 | 22 from twisted.web.xmlrpc import Proxy |
473
9ed6c40b3d6a
new subterms get a good uri and label
drewp@bigasterisk.com
parents:
454
diff
changeset
|
23 from rdflib import Literal, URIRef, RDF, RDFS |
357
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
24 from rdflib.Graph import Graph |
400
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
25 import rdflib |
319
2193eab0650b
add startup logging to curvecalc
Drew Perttula <drewp@bigasterisk.com>
parents:
296
diff
changeset
|
26 import logging |
2193eab0650b
add startup logging to curvecalc
Drew Perttula <drewp@bigasterisk.com>
parents:
296
diff
changeset
|
27 log = logging.getLogger() |
2193eab0650b
add startup logging to curvecalc
Drew Perttula <drewp@bigasterisk.com>
parents:
296
diff
changeset
|
28 logging.basicConfig(format="%(asctime)s %(levelname)-5s %(name)s %(filename)s:%(lineno)d: %(message)s") |
2193eab0650b
add startup logging to curvecalc
Drew Perttula <drewp@bigasterisk.com>
parents:
296
diff
changeset
|
29 log.setLevel(logging.DEBUG) |
0 | 30 |
210
f41004d5a507
factored out some networking, new show/ layout, curvecalc works
drewp@bigasterisk.com
parents:
205
diff
changeset
|
31 import run_local |
399
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
32 from light9 import Submaster, dmxclient, networking, showconfig, prof, Patch |
293
1c590824dd14
chase logic is (mostly) fixed, integrate with curvecalc
David McClosky <dmcc@bigasterisk.com>
parents:
290
diff
changeset
|
33 from light9.TLUtility import make_attributes_from_args, dict_subset |
210
f41004d5a507
factored out some networking, new show/ layout, curvecalc works
drewp@bigasterisk.com
parents:
205
diff
changeset
|
34 from light9.zoomcontrol import Zoomcontrol |
211
9b360ee8636e
move patchdata into show/, pull out curve.py from curvecalc, more networking.py unification
drewp@bigasterisk.com
parents:
210
diff
changeset
|
35 from light9.curve import Curve, Curveview, Curveset, Curvesetview |
264
0f112a7dd6b3
fix window positoins for subcomposer and curvecalc. now saves geometry continuously
drewp@bigasterisk.com
parents:
248
diff
changeset
|
36 from light9.wavelength import wavelength |
0f112a7dd6b3
fix window positoins for subcomposer and curvecalc. now saves geometry continuously
drewp@bigasterisk.com
parents:
248
diff
changeset
|
37 from light9.uihelpers import toplevelat |
335 | 38 from light9.namespaces import L9 |
293
1c590824dd14
chase logic is (mostly) fixed, integrate with curvecalc
David McClosky <dmcc@bigasterisk.com>
parents:
290
diff
changeset
|
39 import light9.Effects |
1c590824dd14
chase logic is (mostly) fixed, integrate with curvecalc
David McClosky <dmcc@bigasterisk.com>
parents:
290
diff
changeset
|
40 |
0 | 41 class Music: |
42 def __init__(self): | |
43 self.player=None # xmlrpc Proxy to player | |
44 self.recenttime=0 | |
287
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
45 |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
46 dispatcher.connect(self.seekplay_or_pause,"music seek") |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
47 |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
48 def seekplay_or_pause(self,t): |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
49 self.music.seekplay_or_pause(t) |
197
ba2677823b35
zoom control and other cleanups. also reads song length now
drewp
parents:
196
diff
changeset
|
50 |
0 | 51 def current_time(self): |
52 """return deferred which gets called with the current time""" | |
53 if self.player is None: | |
402 | 54 print "connect to player" |
211
9b360ee8636e
move patchdata into show/, pull out curve.py from curvecalc, more networking.py unification
drewp@bigasterisk.com
parents:
210
diff
changeset
|
55 self.player = Proxy(networking.musicUrl()) |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
56 # d = self.player.callRemote("songlength") |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
57 # d.addCallback(lambda l: dispatcher.send("max time",maxtime=l)) |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
58 # d = self.player.callRemote("songname") |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
59 # d.addCallback(lambda n: dispatcher.send("songname",name=n)) |
0 | 60 d = self.player.callRemote('gettime') |
61 def sendtime(t): | |
62 dispatcher.send("input time",val=t) | |
63 return t # pass along to the real receiver | |
64 def error(e): | |
65 pass#self.player=None | |
66 d.addCallback(sendtime) | |
67 return d | |
277
e7630a2072bd
awesome curvecalc control of ascoltami
drewp@bigasterisk.com
parents:
274
diff
changeset
|
68 |
e7630a2072bd
awesome curvecalc control of ascoltami
drewp@bigasterisk.com
parents:
274
diff
changeset
|
69 def seekplay_or_pause(self,t): |
e7630a2072bd
awesome curvecalc control of ascoltami
drewp@bigasterisk.com
parents:
274
diff
changeset
|
70 self.player.callRemote('seekplay_or_pause',t) |
399
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
71 |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
72 class Expr(object): |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
73 """singleton, provides functions for use in subterm expressions, |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
74 e.g. chases""" |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
75 def __init__(self): |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
76 self.effectGlobals = light9.Effects.configExprGlobals() |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
77 |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
78 def exprGlobals(self, startDict, t): |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
79 """globals dict for use by expressions""" |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
80 |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
81 glo = startDict.copy() |
0 | 82 |
293
1c590824dd14
chase logic is (mostly) fixed, integrate with curvecalc
David McClosky <dmcc@bigasterisk.com>
parents:
290
diff
changeset
|
83 # add in functions from Effects |
399
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
84 glo.update(self.effectGlobals) |
293
1c590824dd14
chase logic is (mostly) fixed, integrate with curvecalc
David McClosky <dmcc@bigasterisk.com>
parents:
290
diff
changeset
|
85 |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
86 glo['nsin'] = lambda x: (math.sin(x * (2 * math.pi)) + 1) / 2 |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
87 glo['ncos'] = lambda x: (math.cos(x * (2 * math.pi)) + 1) / 2 |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
88 glo['within'] = lambda a, b: a < t < b |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
89 glo['bef'] = lambda x: t < x |
400
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
90 |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
91 |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
92 def smoove(x): |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
93 return -2 * (x ** 3) + 3 * (x ** 2) |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
94 glo['smoove'] = smoove |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
95 |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
96 def aft(t, x, smooth=0): |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
97 left = x - smooth / 2 |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
98 right = x + smooth / 2 |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
99 if left < t < right: |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
100 return smoove((t - left) / (right - left)) |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
101 return t > x |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
102 glo['aft'] = lambda x, smooth=0: aft(t, x, smooth) |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
103 |
399
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
104 def chan(name): |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
105 return Submaster.Submaster( |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
106 leveldict={Patch.get_dmx_channel(name) : 1.0}, |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
107 temporary=True) |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
108 glo['chan'] = chan |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
109 |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
110 def smooth_random(speed=1): |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
111 """1 = new stuff each second, <1 is slower, fade-ier""" |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
112 x = (t * speed) % len(self._smooth_random_items) |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
113 x1 = int(x) |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
114 x2 = (int(x) + 1) % len(self._smooth_random_items) |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
115 y1 = self._smooth_random_items[x1] |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
116 y2 = self._smooth_random_items[x2] |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
117 return y1 + (y2 - y1) * ((x - x1)) |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
118 |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
119 def notch_random(speed=1): |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
120 """1 = new stuff each second, <1 is slower, notch-ier""" |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
121 x = (t * speed) % len(self._smooth_random_items) |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
122 x1 = int(x) |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
123 y1 = self._smooth_random_items[x1] |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
124 return y1 |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
125 |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
126 glo['noise'] = smooth_random |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
127 glo['notch'] = notch_random |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
128 |
400
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
129 |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
130 |
399
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
131 return glo |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
132 |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
133 exprglo = Expr() |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
134 |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
135 class Subexpr: |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
136 curveset = None |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
137 def __init__(self,curveset,expr=""): |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
138 self.curveset = curveset |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
139 self.lasteval = None |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
140 self.expr=expr |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
141 self._smooth_random_items = [random.random() for x in range(100)] |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
142 def eval(self,t): |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
143 if self.expr=="": |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
144 dispatcher.send("expr_error",sender=self,exc="no expr, using 0") |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
145 return 0 |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
146 glo = self.curveset.globalsdict() |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
147 glo['t'] = t |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
148 |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
149 glo = exprglo.exprGlobals(glo, t) |
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
150 |
0 | 151 try: |
152 self.lasteval = eval(self.expr,glo) | |
153 except Exception,e: | |
154 dispatcher.send("expr_error",sender=self,exc=e) | |
155 else: | |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
156 dispatcher.send("expr_error",sender=self,exc="ok") |
0 | 157 return self.lasteval |
158 | |
159 def expr(): | |
160 doc = "python expression for level as a function of t, using curves" | |
161 def fget(self): | |
162 return self._expr | |
163 def fset(self, value): | |
164 self._expr = value | |
165 dispatcher("expr_changed",sender=self) | |
166 return locals() | |
167 expr = property(**expr()) | |
168 | |
169 class Subexprview(tk.Frame): | |
170 def __init__(self,master,se,**kw): | |
171 self.subexpr=se | |
172 tk.Frame.__init__(self,master,**kw) | |
173 self.evar = tk.StringVar() | |
212 | 174 e = self.ent = tk.Entry(self,textvariable=self.evar) |
175 e.pack(side='left',fill='x',exp=1) | |
0 | 176 self.expr_changed() |
177 self.evar.trace_variable('w',self.evar_changed) | |
178 dispatcher.connect(self.expr_changed,"expr_changed", | |
179 sender=self.subexpr) | |
212 | 180 self.error = tk.Label(self) |
0 | 181 self.error.pack(side='left') |
182 dispatcher.connect(lambda exc: self.error.config(text=str(exc)), | |
183 "expr_error",sender=self.subexpr,weak=0) | |
184 def expr_changed(self): | |
185 if self.subexpr.expr!=self.evar.get(): | |
186 self.evar.set(self.subexpr.expr) | |
187 def evar_changed(self,*args): | |
188 self.subexpr.expr = self.evar.get() | |
189 | |
190 class Subterm: | |
191 """one Submaster and its Subexpr""" | |
274
9bf9685f5aae
curvecalc exprs can return a whole Submaster now
David McClosky <dmcc@bigasterisk.com>
parents:
267
diff
changeset
|
192 def __init__(self, submaster, subexpr): |
9bf9685f5aae
curvecalc exprs can return a whole Submaster now
David McClosky <dmcc@bigasterisk.com>
parents:
267
diff
changeset
|
193 make_attributes_from_args('submaster', 'subexpr') |
9bf9685f5aae
curvecalc exprs can return a whole Submaster now
David McClosky <dmcc@bigasterisk.com>
parents:
267
diff
changeset
|
194 def scaled(self, t): |
9bf9685f5aae
curvecalc exprs can return a whole Submaster now
David McClosky <dmcc@bigasterisk.com>
parents:
267
diff
changeset
|
195 subexpr_eval = self.subexpr.eval(t) |
296
e99bd20dad85
curvecalc: fully catch and display errors in expr eval
David McClosky <dmcc@bigasterisk.com>
parents:
294
diff
changeset
|
196 # we prevent any exceptions from escaping, since they cause us to |
e99bd20dad85
curvecalc: fully catch and display errors in expr eval
David McClosky <dmcc@bigasterisk.com>
parents:
294
diff
changeset
|
197 # stop sending levels |
e99bd20dad85
curvecalc: fully catch and display errors in expr eval
David McClosky <dmcc@bigasterisk.com>
parents:
294
diff
changeset
|
198 try: |
e99bd20dad85
curvecalc: fully catch and display errors in expr eval
David McClosky <dmcc@bigasterisk.com>
parents:
294
diff
changeset
|
199 if isinstance(subexpr_eval, Submaster.Submaster): |
e99bd20dad85
curvecalc: fully catch and display errors in expr eval
David McClosky <dmcc@bigasterisk.com>
parents:
294
diff
changeset
|
200 # if the expression returns a submaster, just return it |
e99bd20dad85
curvecalc: fully catch and display errors in expr eval
David McClosky <dmcc@bigasterisk.com>
parents:
294
diff
changeset
|
201 return subexpr_eval |
e99bd20dad85
curvecalc: fully catch and display errors in expr eval
David McClosky <dmcc@bigasterisk.com>
parents:
294
diff
changeset
|
202 else: |
e99bd20dad85
curvecalc: fully catch and display errors in expr eval
David McClosky <dmcc@bigasterisk.com>
parents:
294
diff
changeset
|
203 # otherwise, return our submaster multiplied by the value |
e99bd20dad85
curvecalc: fully catch and display errors in expr eval
David McClosky <dmcc@bigasterisk.com>
parents:
294
diff
changeset
|
204 # returned |
e99bd20dad85
curvecalc: fully catch and display errors in expr eval
David McClosky <dmcc@bigasterisk.com>
parents:
294
diff
changeset
|
205 return self.submaster * subexpr_eval |
e99bd20dad85
curvecalc: fully catch and display errors in expr eval
David McClosky <dmcc@bigasterisk.com>
parents:
294
diff
changeset
|
206 except Exception, e: |
e99bd20dad85
curvecalc: fully catch and display errors in expr eval
David McClosky <dmcc@bigasterisk.com>
parents:
294
diff
changeset
|
207 dispatcher.send("expr_error", sender=self.subexpr, exc=str(e)) |
e99bd20dad85
curvecalc: fully catch and display errors in expr eval
David McClosky <dmcc@bigasterisk.com>
parents:
294
diff
changeset
|
208 return Submaster.Submaster('Error: %s' % str(e), temporary=True) |
0 | 209 |
210 class Subtermview(tk.Frame): | |
360
415c206f7534
fix sub loading and reloading in CC
Drew Perttula <drewp@bigasterisk.com>
parents:
357
diff
changeset
|
211 def __init__(self, master, graph, st, **kw): |
0 | 212 self.subterm = st |
213 tk.Frame.__init__(self,master,bd=1,relief='raised',**kw) | |
360
415c206f7534
fix sub loading and reloading in CC
Drew Perttula <drewp@bigasterisk.com>
parents:
357
diff
changeset
|
214 l = tk.Label(self, |
415c206f7534
fix sub loading and reloading in CC
Drew Perttula <drewp@bigasterisk.com>
parents:
357
diff
changeset
|
215 text="sub %s" % graph.label(self.subterm.submaster.uri)) |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
216 l.pack(side='left') |
0 | 217 sev=Subexprview(self,self.subterm.subexpr) |
218 sev.pack(side='left',fill='both',exp=1) | |
219 | |
220 class Output: | |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
221 lastsendtime=0 |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
222 lastsendlevs=None |
287
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
223 def __init__(self,subterms,music): |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
224 make_attributes_from_args('subterms','music') |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
225 |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
226 self.recent_t=[] |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
227 self.later = None |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
228 |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
229 self.update() |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
230 |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
231 def update(self): |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
232 d = music.current_time() |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
233 d.addCallback(self.update2) |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
234 d.addErrback(self.updateerr) |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
235 |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
236 def updateerr(self,e): |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
237 |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
238 print e.getTraceback() |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
239 dispatcher.send("update status",val=e.getErrorMessage()) |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
240 if self.later and not self.later.cancelled and not self.later.called: |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
241 self.later.cancel() |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
242 self.later = reactor.callLater(1,self.update) |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
243 |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
244 def update2(self,t): |
326
a3267d8c498e
leave in a comment about how to offset the audio time in case your sound card is lying
Drew Perttula <drewp@bigasterisk.com>
parents:
319
diff
changeset
|
245 |
a3267d8c498e
leave in a comment about how to offset the audio time in case your sound card is lying
Drew Perttula <drewp@bigasterisk.com>
parents:
319
diff
changeset
|
246 # spot alsa soundcard offset is always 0, we get times about a |
a3267d8c498e
leave in a comment about how to offset the audio time in case your sound card is lying
Drew Perttula <drewp@bigasterisk.com>
parents:
319
diff
changeset
|
247 # second ahead of what's really getting played |
a3267d8c498e
leave in a comment about how to offset the audio time in case your sound card is lying
Drew Perttula <drewp@bigasterisk.com>
parents:
319
diff
changeset
|
248 #t = t - .7 |
a3267d8c498e
leave in a comment about how to offset the audio time in case your sound card is lying
Drew Perttula <drewp@bigasterisk.com>
parents:
319
diff
changeset
|
249 |
287
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
250 dispatcher.send("update status", |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
251 val="ok: receiving time from music player") |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
252 if self.later and not self.later.cancelled and not self.later.called: |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
253 self.later.cancel() |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
254 |
493
b8012dcb714b
increase curvecalc update frequency 50ms to 20ms
drewp@bigasterisk.com
parents:
476
diff
changeset
|
255 self.later = reactor.callLater(.02, self.update) |
287
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
256 |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
257 self.recent_t = self.recent_t[-50:]+[t] |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
258 period = (self.recent_t[-1] - self.recent_t[0]) / len(self.recent_t) |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
259 dispatcher.send("update period", val=period) |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
260 self.send_dmx(t) |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
261 |
0 | 262 def send_dmx(self,t): |
362
fc87327e29c4
CC now attaches to hardware sliders and knobs. tres cool. KC gets a --sliders option to enable the sliders
Drew Perttula <drewp@bigasterisk.com>
parents:
361
diff
changeset
|
263 dispatcher.send("curves to sliders", t=t) |
0 | 264 scaledsubs=[] |
265 for st in self.subterms: | |
266 scl = st.scaled(t) | |
267 scaledsubs.append(scl) | |
268 out = Submaster.sub_maxes(*scaledsubs) | |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
269 levs = out.get_levels() |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
270 now=time.time() |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
271 if now-self.lastsendtime>5 or levs!=self.lastsendlevs: |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
272 dispatcher.send("output levels",val=levs) |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
273 dmxclient.outputlevels(out.get_dmx_list(), |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
274 twisted=1,clientid='curvecalc') |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
275 self.lastsendtime = now |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
276 self.lastsendlevs = levs |
0 | 277 |
202 | 278 def create_status_lines(master): |
197
ba2677823b35
zoom control and other cleanups. also reads song length now
drewp
parents:
196
diff
changeset
|
279 for signame,textfilter in [ |
ba2677823b35
zoom control and other cleanups. also reads song length now
drewp
parents:
196
diff
changeset
|
280 ('input time',lambda t: "%.2fs"%t), |
ba2677823b35
zoom control and other cleanups. also reads song length now
drewp
parents:
196
diff
changeset
|
281 ('output levels', |
ba2677823b35
zoom control and other cleanups. also reads song length now
drewp
parents:
196
diff
changeset
|
282 lambda levels: textwrap.fill("; ".join(["%s:%.2f"%(n,v) |
ba2677823b35
zoom control and other cleanups. also reads song length now
drewp
parents:
196
diff
changeset
|
283 for n,v in |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
284 levels.items()[:5] |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
285 if v>0]),70)), |
197
ba2677823b35
zoom control and other cleanups. also reads song length now
drewp
parents:
196
diff
changeset
|
286 ('update period',lambda t: "%.1fms"%(t*1000)), |
236
63601fe0c3b0
curvecalc cmdline checking, connection status now in gui
drewp@bigasterisk.com
parents:
230
diff
changeset
|
287 ('update status',lambda t: str(t)), |
197
ba2677823b35
zoom control and other cleanups. also reads song length now
drewp
parents:
196
diff
changeset
|
288 ]: |
ba2677823b35
zoom control and other cleanups. also reads song length now
drewp
parents:
196
diff
changeset
|
289 l = tk.Label(master,anchor='w',justify='left') |
ba2677823b35
zoom control and other cleanups. also reads song length now
drewp
parents:
196
diff
changeset
|
290 l.pack(side='top',fill='x') |
ba2677823b35
zoom control and other cleanups. also reads song length now
drewp
parents:
196
diff
changeset
|
291 dispatcher.connect(lambda val,l=l,sn=signame,tf=textfilter: |
ba2677823b35
zoom control and other cleanups. also reads song length now
drewp
parents:
196
diff
changeset
|
292 l.config(text=sn+": "+tf(val)), |
ba2677823b35
zoom control and other cleanups. also reads song length now
drewp
parents:
196
diff
changeset
|
293 signame,weak=0) |
ba2677823b35
zoom control and other cleanups. also reads song length now
drewp
parents:
196
diff
changeset
|
294 |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
295 class SubtermSetView(tk.Frame): |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
296 def __init__(self, master, *args, **kw): |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
297 tk.Frame.__init__(self, master, *args, **kw) |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
298 self.cur_row = 0 |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
299 self.cur_col = 0 |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
300 self.ncols = 2 |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
301 def add_subtermview(self, stv): |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
302 stv.grid(row=self.cur_row, column=self.cur_col, sticky='news') |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
303 self.columnconfigure(self.cur_col, weight=1) |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
304 |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
305 self.cur_col += 1 |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
306 self.cur_col %= self.ncols |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
307 if self.cur_col == 0: |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
308 self.cur_row += 1 |
202 | 309 |
360
415c206f7534
fix sub loading and reloading in CC
Drew Perttula <drewp@bigasterisk.com>
parents:
357
diff
changeset
|
310 def add_one_subterm(graph, subUri, curveset, subterms, root, ssv, expr=None): |
415c206f7534
fix sub loading and reloading in CC
Drew Perttula <drewp@bigasterisk.com>
parents:
357
diff
changeset
|
311 subname = graph.label(subUri) |
287
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
312 if expr is None: |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
313 expr = '%s(t)' % subname |
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
314 |
360
415c206f7534
fix sub loading and reloading in CC
Drew Perttula <drewp@bigasterisk.com>
parents:
357
diff
changeset
|
315 term = Subterm(Submaster.Submaster(graph=graph, sub=subUri), |
415c206f7534
fix sub loading and reloading in CC
Drew Perttula <drewp@bigasterisk.com>
parents:
357
diff
changeset
|
316 Subexpr(curveset,expr)) |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
317 subterms.append(term) |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
318 |
360
415c206f7534
fix sub loading and reloading in CC
Drew Perttula <drewp@bigasterisk.com>
parents:
357
diff
changeset
|
319 stv=Subtermview(ssv, graph, term) |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
320 # stv.pack(side='top',fill='x') |
210
f41004d5a507
factored out some networking, new show/ layout, curvecalc works
drewp@bigasterisk.com
parents:
205
diff
changeset
|
321 |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
322 ssv.add_subtermview(stv) |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
323 |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
324 return term |
0 | 325 |
351
a6662d61ebcd
SC, KC, CC now run and seem to load and save ok. CC does not have any rdf for its data files
Drew Perttula <drewp@bigasterisk.com>
parents:
335
diff
changeset
|
326 def sub_commands_tk(master, curveset, subterms, root, ssv, graph): |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
327 f=tk.Frame(master,relief='raised',bd=1) |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
328 newname = tk.StringVar() |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
329 |
398
c5f0b530ade5
curvecalc: easy curve+sub creation
David McClosky <dmcc@bigasterisk.com>
parents:
397
diff
changeset
|
330 def add_cmd(evt): |
473
9ed6c40b3d6a
new subterms get a good uri and label
drewp@bigasterisk.com
parents:
454
diff
changeset
|
331 uri = L9['sub/%s' % newname.get()] |
9ed6c40b3d6a
new subterms get a good uri and label
drewp@bigasterisk.com
parents:
454
diff
changeset
|
332 graph.add((uri, RDF.type, L9.Subterm)) |
9ed6c40b3d6a
new subterms get a good uri and label
drewp@bigasterisk.com
parents:
454
diff
changeset
|
333 graph.add((uri, RDFS.label, Literal(newname.get()))) |
9ed6c40b3d6a
new subterms get a good uri and label
drewp@bigasterisk.com
parents:
454
diff
changeset
|
334 add_one_subterm(graph, uri, |
397
c43691ddd39e
curvecalc: better default expr
David McClosky <dmcc@bigasterisk.com>
parents:
362
diff
changeset
|
335 curveset, subterms, root, ssv, None) |
398
c5f0b530ade5
curvecalc: easy curve+sub creation
David McClosky <dmcc@bigasterisk.com>
parents:
397
diff
changeset
|
336 if evt.state & 4: # control key modifier |
c5f0b530ade5
curvecalc: easy curve+sub creation
David McClosky <dmcc@bigasterisk.com>
parents:
397
diff
changeset
|
337 curveset.new_curve(newname.get()) |
281
e3362ad9a123
curvecalc gets "see time until end", C-r for reload, doc updates
David McClosky <dmcc@bigasterisk.com>
parents:
280
diff
changeset
|
338 newname.set('') |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
339 |
279
5bfcf309e1ad
Submaster objects listen for a signal to reload, curvecalc can broadcast it
David McClosky <dmcc@bigasterisk.com>
parents:
277
diff
changeset
|
340 def reload_subs(): |
5bfcf309e1ad
Submaster objects listen for a signal to reload, curvecalc can broadcast it
David McClosky <dmcc@bigasterisk.com>
parents:
277
diff
changeset
|
341 dispatcher.send('reload all subs') |
5bfcf309e1ad
Submaster objects listen for a signal to reload, curvecalc can broadcast it
David McClosky <dmcc@bigasterisk.com>
parents:
277
diff
changeset
|
342 |
281
e3362ad9a123
curvecalc gets "see time until end", C-r for reload, doc updates
David McClosky <dmcc@bigasterisk.com>
parents:
280
diff
changeset
|
343 tk.Button(f, text="reload subs (C-r)", |
e3362ad9a123
curvecalc gets "see time until end", C-r for reload, doc updates
David McClosky <dmcc@bigasterisk.com>
parents:
280
diff
changeset
|
344 command=reload_subs).pack(side='left') |
476
0e3743492eae
curvecalc: new keyboard shortcut hotness
drewp@bigasterisk.com
parents:
473
diff
changeset
|
345 tk.Label(f, text="new subterm named (C-Enter for curve too, C-n for focus):").pack(side='left') |
282
d482699decbd
curvecalc: "Enter" in the new term entry creates new term
David McClosky <dmcc@bigasterisk.com>
parents:
281
diff
changeset
|
346 entry = tk.Entry(f, textvariable=newname) |
d482699decbd
curvecalc: "Enter" in the new term entry creates new term
David McClosky <dmcc@bigasterisk.com>
parents:
281
diff
changeset
|
347 entry.pack(side='left', fill='x', exp=1) |
398
c5f0b530ade5
curvecalc: easy curve+sub creation
David McClosky <dmcc@bigasterisk.com>
parents:
397
diff
changeset
|
348 entry.bind("<Key-Return>", add_cmd) |
282
d482699decbd
curvecalc: "Enter" in the new term entry creates new term
David McClosky <dmcc@bigasterisk.com>
parents:
281
diff
changeset
|
349 |
476
0e3743492eae
curvecalc: new keyboard shortcut hotness
drewp@bigasterisk.com
parents:
473
diff
changeset
|
350 def focus_entry(): |
0e3743492eae
curvecalc: new keyboard shortcut hotness
drewp@bigasterisk.com
parents:
473
diff
changeset
|
351 entry.focus() |
0e3743492eae
curvecalc: new keyboard shortcut hotness
drewp@bigasterisk.com
parents:
473
diff
changeset
|
352 |
0e3743492eae
curvecalc: new keyboard shortcut hotness
drewp@bigasterisk.com
parents:
473
diff
changeset
|
353 dispatcher.connect(focus_entry, "focus new subterm", weak=False) |
0e3743492eae
curvecalc: new keyboard shortcut hotness
drewp@bigasterisk.com
parents:
473
diff
changeset
|
354 |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
355 return f |
287
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
356 |
357
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
357 def savesubterms(filename,subterms): |
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
358 raise NotImplementedError |
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
359 s="" |
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
360 for st in subterms: |
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
361 s=s+"%s %s\n" % (st.submaster.name, st.subexpr.expr) |
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
362 |
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
363 file(filename,'w').write(s) |
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
364 |
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
365 def createSubtermGraph(song, subterms): |
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
366 """rdf graph describing the subterms, readable by add_subterms_for_song""" |
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
367 graph = Graph() |
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
368 for subterm in subterms: |
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
369 uri = URIRef(song + "/subterm/" + subterm.submaster.name) |
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
370 graph.add((song, L9['subterm'], uri)) |
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
371 graph.add((uri, RDF.type, L9['Subterm'])) |
473
9ed6c40b3d6a
new subterms get a good uri and label
drewp@bigasterisk.com
parents:
454
diff
changeset
|
372 graph.add((uri, RDFS.label, Literal(subterm.submaster.name))) |
357
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
373 graph.add((uri, L9['sub'], L9['sub/%s' % subterm.submaster.name])) |
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
374 graph.add((uri, L9['expression'], Literal(subterm.subexpr.expr))) |
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
375 return graph |
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
376 |
335 | 377 def add_subterms_for_song(graph, song, curveset, subterms, root, ssv): |
378 for st in graph.objects(song, L9['subterm']): | |
400
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
379 try: |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
380 add_one_subterm(graph, graph.value(st, L9['sub']), curveset, subterms, |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
381 root, ssv, graph.value(st, L9['expression'])) |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
382 except rdflib.exceptions.UniquenessError: |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
383 print "working around curvecalc save corruption" |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
384 # curvecalc put all the expressions on one subterm, which is wrong |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
385 for expr in graph.objects(st, L9['expression']): |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
386 add_one_subterm(graph, graph.value(st, L9['sub']), |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
387 curveset, subterms, |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
388 root, ssv, |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
389 expr) |
b2858c2d4a4d
aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents:
399
diff
changeset
|
390 |
287
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
391 |
357
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
392 def graphPathForSubterms(song): |
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
393 return showconfig.subtermsForSong(showconfig.songFilenameFromURI(song)) + ".n3" |
351
a6662d61ebcd
SC, KC, CC now run and seem to load and save ok. CC does not have any rdf for its data files
Drew Perttula <drewp@bigasterisk.com>
parents:
335
diff
changeset
|
394 |
360
415c206f7534
fix sub loading and reloading in CC
Drew Perttula <drewp@bigasterisk.com>
parents:
357
diff
changeset
|
395 def read_all_subs(graph): |
415c206f7534
fix sub loading and reloading in CC
Drew Perttula <drewp@bigasterisk.com>
parents:
357
diff
changeset
|
396 """read all sub files into this graph so when add_one_subterm tries |
415c206f7534
fix sub loading and reloading in CC
Drew Perttula <drewp@bigasterisk.com>
parents:
357
diff
changeset
|
397 to add, the sub will be available""" |
415c206f7534
fix sub loading and reloading in CC
Drew Perttula <drewp@bigasterisk.com>
parents:
357
diff
changeset
|
398 subsDir = showconfig.subsDir() |
415c206f7534
fix sub loading and reloading in CC
Drew Perttula <drewp@bigasterisk.com>
parents:
357
diff
changeset
|
399 for filename in os.listdir(subsDir): |
415c206f7534
fix sub loading and reloading in CC
Drew Perttula <drewp@bigasterisk.com>
parents:
357
diff
changeset
|
400 graph.parse(os.path.join(subsDir, filename), format="n3") |
415c206f7534
fix sub loading and reloading in CC
Drew Perttula <drewp@bigasterisk.com>
parents:
357
diff
changeset
|
401 |
0 | 402 ####################################################################### |
403 root=tk.Tk() | |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
404 root.tk_setPalette("gray50") |
264
0f112a7dd6b3
fix window positoins for subcomposer and curvecalc. now saves geometry continuously
drewp@bigasterisk.com
parents:
248
diff
changeset
|
405 toplevelat("curvecalc",root) |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
406 root.tk_focusFollowsMouse() |
0 | 407 |
236
63601fe0c3b0
curvecalc cmdline checking, connection status now in gui
drewp@bigasterisk.com
parents:
230
diff
changeset
|
408 parser = optparse.OptionParser() |
435 | 409 parser.set_usage("%prog [opts] songURI") |
362
fc87327e29c4
CC now attaches to hardware sliders and knobs. tres cool. KC gets a --sliders option to enable the sliders
Drew Perttula <drewp@bigasterisk.com>
parents:
361
diff
changeset
|
410 parser.add_option("--sliders", action='store_true', |
fc87327e29c4
CC now attaches to hardware sliders and knobs. tres cool. KC gets a --sliders option to enable the sliders
Drew Perttula <drewp@bigasterisk.com>
parents:
361
diff
changeset
|
411 help='use hardware sliders') |
fc87327e29c4
CC now attaches to hardware sliders and knobs. tres cool. KC gets a --sliders option to enable the sliders
Drew Perttula <drewp@bigasterisk.com>
parents:
361
diff
changeset
|
412 parser.add_option("--skip-music", action='store_true', |
fc87327e29c4
CC now attaches to hardware sliders and knobs. tres cool. KC gets a --sliders option to enable the sliders
Drew Perttula <drewp@bigasterisk.com>
parents:
361
diff
changeset
|
413 help="ignore music and smooth_music curve files") |
fc87327e29c4
CC now attaches to hardware sliders and knobs. tres cool. KC gets a --sliders option to enable the sliders
Drew Perttula <drewp@bigasterisk.com>
parents:
361
diff
changeset
|
414 opts, args = parser.parse_args() |
236
63601fe0c3b0
curvecalc cmdline checking, connection status now in gui
drewp@bigasterisk.com
parents:
230
diff
changeset
|
415 |
63601fe0c3b0
curvecalc cmdline checking, connection status now in gui
drewp@bigasterisk.com
parents:
230
diff
changeset
|
416 try: |
335 | 417 song = URIRef(args[0]) |
236
63601fe0c3b0
curvecalc cmdline checking, connection status now in gui
drewp@bigasterisk.com
parents:
230
diff
changeset
|
418 except IndexError: |
435 | 419 raise SystemExit("song URI is required, e.g. 'http://light9.bigasterisk.com/show/dance2008/song3'") |
236
63601fe0c3b0
curvecalc cmdline checking, connection status now in gui
drewp@bigasterisk.com
parents:
230
diff
changeset
|
420 |
319
2193eab0650b
add startup logging to curvecalc
Drew Perttula <drewp@bigasterisk.com>
parents:
296
diff
changeset
|
421 log.debug("music") |
202 | 422 music=Music() |
0 | 423 |
197
ba2677823b35
zoom control and other cleanups. also reads song length now
drewp
parents:
196
diff
changeset
|
424 zc = Zoomcontrol(root) |
ba2677823b35
zoom control and other cleanups. also reads song length now
drewp
parents:
196
diff
changeset
|
425 zc.pack(side='top',fill='x') |
ba2677823b35
zoom control and other cleanups. also reads song length now
drewp
parents:
196
diff
changeset
|
426 |
362
fc87327e29c4
CC now attaches to hardware sliders and knobs. tres cool. KC gets a --sliders option to enable the sliders
Drew Perttula <drewp@bigasterisk.com>
parents:
361
diff
changeset
|
427 curveset = Curveset(sliders=opts.sliders) |
fc87327e29c4
CC now attaches to hardware sliders and knobs. tres cool. KC gets a --sliders option to enable the sliders
Drew Perttula <drewp@bigasterisk.com>
parents:
361
diff
changeset
|
428 csv = Curvesetview(root, curveset) |
197
ba2677823b35
zoom control and other cleanups. also reads song length now
drewp
parents:
196
diff
changeset
|
429 csv.pack(side='top',fill='both',exp=1) |
0 | 430 |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
431 ssv = SubtermSetView(root) |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
432 ssv.pack(side='top', fill='x') |
202 | 433 |
360
415c206f7534
fix sub loading and reloading in CC
Drew Perttula <drewp@bigasterisk.com>
parents:
357
diff
changeset
|
434 graphOrig = showconfig.getGraph() |
415c206f7534
fix sub loading and reloading in CC
Drew Perttula <drewp@bigasterisk.com>
parents:
357
diff
changeset
|
435 graph = Graph() # a copy, since we're going to add subs into it |
415c206f7534
fix sub loading and reloading in CC
Drew Perttula <drewp@bigasterisk.com>
parents:
357
diff
changeset
|
436 for s in graphOrig: |
415c206f7534
fix sub loading and reloading in CC
Drew Perttula <drewp@bigasterisk.com>
parents:
357
diff
changeset
|
437 graph.add(s) |
415c206f7534
fix sub loading and reloading in CC
Drew Perttula <drewp@bigasterisk.com>
parents:
357
diff
changeset
|
438 read_all_subs(graph) |
335 | 439 root.title("Curvemaster 3000MX - %s" % graph.label(song)) |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
440 |
335 | 441 musicfilename = showconfig.songOnDisk(song) |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
442 maxtime = wavelength(musicfilename) |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
443 dispatcher.send("max time",maxtime=maxtime) |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
444 dispatcher.connect(lambda: maxtime, "get max time",weak=0) |
454
fb888a771b42
curvecalc now starts up showing the whole time range
drewp@bigasterisk.com
parents:
435
diff
changeset
|
445 dispatcher.send("show all") |
360
415c206f7534
fix sub loading and reloading in CC
Drew Perttula <drewp@bigasterisk.com>
parents:
357
diff
changeset
|
446 curveset.load(basename=os.path.join(showconfig.curvesDir(), |
362
fc87327e29c4
CC now attaches to hardware sliders and knobs. tres cool. KC gets a --sliders option to enable the sliders
Drew Perttula <drewp@bigasterisk.com>
parents:
361
diff
changeset
|
447 showconfig.songFilenameFromURI(song)), |
fc87327e29c4
CC now attaches to hardware sliders and knobs. tres cool. KC gets a --sliders option to enable the sliders
Drew Perttula <drewp@bigasterisk.com>
parents:
361
diff
changeset
|
448 skipMusic=opts.skip_music) |
0 | 449 |
450 subterms = [] | |
351
a6662d61ebcd
SC, KC, CC now run and seem to load and save ok. CC does not have any rdf for its data files
Drew Perttula <drewp@bigasterisk.com>
parents:
335
diff
changeset
|
451 sub_commands_tk(root, curveset, subterms, root, ssv, graph).pack(side='top',fill='x') |
279
5bfcf309e1ad
Submaster objects listen for a signal to reload, curvecalc can broadcast it
David McClosky <dmcc@bigasterisk.com>
parents:
277
diff
changeset
|
452 |
357
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
453 try: |
360
415c206f7534
fix sub loading and reloading in CC
Drew Perttula <drewp@bigasterisk.com>
parents:
357
diff
changeset
|
454 graph.parse(graphPathForSubterms(song), format='n3') |
415c206f7534
fix sub loading and reloading in CC
Drew Perttula <drewp@bigasterisk.com>
parents:
357
diff
changeset
|
455 add_subterms_for_song(graph, song, curveset, subterms, root, ssv) |
357
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
456 except OSError, e: |
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
457 print e |
0 | 458 |
319
2193eab0650b
add startup logging to curvecalc
Drew Perttula <drewp@bigasterisk.com>
parents:
296
diff
changeset
|
459 log.debug("output") |
287
5322639d61e9
refactoring and little fixes in curvecalc and keyboardcomposer
Drew Perttula <drewp@bigasterisk.com>
parents:
284
diff
changeset
|
460 out = Output(subterms, music) |
0 | 461 |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
462 def savekey(*args): |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
463 print "saving",song |
357
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
464 g = createSubtermGraph(song, subterms) |
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
465 g.serialize(graphPathForSubterms(song), format="nt") |
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
466 |
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
467 curveset.save(basename=os.path.join(showconfig.curvesDir(), showconfig.songFilenameFromURI(song))) |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
468 print "saved" |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
469 |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
470 root.bind("<Control-Key-s>",savekey) |
281
e3362ad9a123
curvecalc gets "see time until end", C-r for reload, doc updates
David McClosky <dmcc@bigasterisk.com>
parents:
280
diff
changeset
|
471 root.bind("<Control-Key-r>", lambda evt: dispatcher.send('reload all subs')) |
476
0e3743492eae
curvecalc: new keyboard shortcut hotness
drewp@bigasterisk.com
parents:
473
diff
changeset
|
472 root.bind("<Control-Key-n>", lambda evt: dispatcher.send('focus new subterm')) |
0e3743492eae
curvecalc: new keyboard shortcut hotness
drewp@bigasterisk.com
parents:
473
diff
changeset
|
473 root.bind("<Control-Key-N>", lambda evt: dispatcher.send('focus new curve')) |
202 | 474 |
475 create_status_lines(root) | |
454
fb888a771b42
curvecalc now starts up showing the whole time range
drewp@bigasterisk.com
parents:
435
diff
changeset
|
476 for helpline in ["Bindings: C-s save subterms; Esc see current time; S-Esc see curtime to end; C-Esc show all; Mousewheel zoom; C-p play/pause music at mouse", |
361
ff914126f3ea
fix CC selection bindings
Drew Perttula <drewp@bigasterisk.com>
parents:
360
diff
changeset
|
477 "Curve point bindings: B1 drag point; C-B1 curve add point; S-B1 sketch points; Del selected points; 1..5 add point at time; B1 drag select points", |
399
40b6a06bd090
rework Effects.py to fix chase(). now uses chase lists from config.n3
Drew Perttula <drewp@bigasterisk.com>
parents:
398
diff
changeset
|
478 "Available in functions: nsin/ncos period=amp=1; within(a,b) bef(x) aft(x) compare to time; smoove(x) cubic smoothstep; chan(name); curvename(t) eval curve"]: |
228
9827df597f86
added help texts to subcomposer, curvecalc
drewp@bigasterisk.com
parents:
216
diff
changeset
|
479 tk.Label(root,text=helpline, font="Helvetica -12 italic", |
9827df597f86
added help texts to subcomposer, curvecalc
drewp@bigasterisk.com
parents:
216
diff
changeset
|
480 anchor='w').pack(side='top',fill='x') |
9827df597f86
added help texts to subcomposer, curvecalc
drewp@bigasterisk.com
parents:
216
diff
changeset
|
481 |
205
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
482 #def logprint(msg): |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
483 # print "log",msg |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
484 #twisted.python.log.addObserver(logprint) |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
485 |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
486 root.bind("<Control-Key-q>",lambda ev: reactor.stop) |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
487 root.bind("<Destroy>",lambda ev: reactor.stop) |
3905d3c92aaa
twisted mainloop, more row-change keys, xmlrpc fadesub command on port 8050
drewp
parents:
202
diff
changeset
|
488 root.protocol('WM_DELETE_WINDOW', reactor.stop) |
267
9de7bbf50267
curvecalc fixes, especially a slowdown of the updates that's working better
drewp@bigasterisk.com
parents:
264
diff
changeset
|
489 tksupport.install(root,ms=20) |
319
2193eab0650b
add startup logging to curvecalc
Drew Perttula <drewp@bigasterisk.com>
parents:
296
diff
changeset
|
490 log.debug("run") |
357
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
491 prof.run(reactor.run, profile=False) |
7771f37252da
curvecalc persistence, wavecurve -a option
Drew Perttula <drewp@bigasterisk.com>
parents:
351
diff
changeset
|
492 |