Mercurial > code > home > repos > light9
annotate bin/effectsequencer @ 1912:da950e4619f3
fix sorting of points within a note. they would randomly scramble
Ignore-this: 6fdffe0ac309ebaacc3ecf9406dba03b
author | Drew Perttula <drewp@bigasterisk.com> |
---|---|
date | Sat, 01 Jun 2019 11:02:54 +0000 |
parents | f066d6e874db |
children | 91bcc6c76934 |
rev | line source |
---|---|
1373 | 1 #!bin/python |
2 """ | |
3 plays back effect notes from the timeline | |
4 """ | |
1859
f066d6e874db
2to3 with these fixers: all idioms set_literal
drewp@bigasterisk.com
parents:
1858
diff
changeset
|
5 |
1373 | 6 from run_local import log |
7 from twisted.internet import reactor | |
8 from light9.greplin_cyclone import StatsForCyclone | |
1692 | 9 from rdfdb.syncedgraph import SyncedGraph |
1373 | 10 from light9 import networking, showconfig |
11 from greplin import scales | |
12 import optparse, sys, logging | |
13 import cyclone.web | |
14 from rdflib import URIRef | |
1830 | 15 from light9.effect.sequencer import Sequencer, Updates |
16 from light9.collector.collector_client import sendToCollector | |
17 | |
1698
f140153c087c
bring back clientsession which doesn't belong in rdfdb
Drew Perttula <drewp@bigasterisk.com>
parents:
1692
diff
changeset
|
18 from light9 import clientsession |
1373 | 19 |
1858 | 20 |
1373 | 21 class App(object): |
1858 | 22 |
1373 | 23 def __init__(self, show, session): |
24 self.show = show | |
25 self.session = session | |
26 | |
27 self.graph = SyncedGraph(networking.rdfdb.url, "effectSequencer") | |
28 self.graph.initiallySynced.addCallback(self.launch) | |
29 | |
1858 | 30 self.stats = scales.collection( |
31 '/', | |
32 scales.PmfStat('sendLevels'), | |
33 scales.PmfStat('getMusic'), | |
34 scales.PmfStat('evals'), | |
35 scales.PmfStat('sendOutput'), | |
36 scales.IntStat('errors'), | |
37 ) | |
1373 | 38 |
39 def launch(self, *args): | |
1391
4a7594476905
hack up KC so it edits effect strengths instead
Drew Perttula <drewp@bigasterisk.com>
parents:
1373
diff
changeset
|
40 self.seq = Sequencer( |
1858 | 41 self.graph, lambda settings: sendToCollector( |
42 'effectSequencer', self.session, settings)) | |
1373 | 43 |
44 self.cycloneApp = cyclone.web.Application(handlers=[ | |
1858 | 45 (r'/()', cyclone.web.StaticFileHandler, { |
46 "path": "light9/effect/", | |
47 "default_filename": "sequencer.html" | |
48 }), | |
1776 | 49 (r'/updates', Updates), |
1373 | 50 (r'/stats', StatsForCyclone), |
51 ], | |
52 debug=True, | |
1776 | 53 seq=self.seq, |
1373 | 54 graph=self.graph, |
55 stats=self.stats) | |
56 reactor.listenTCP(networking.effectSequencer.port, self.cycloneApp) | |
57 log.info("listening on %s" % networking.effectSequencer.port) | |
58 | |
59 | |
60 if __name__ == "__main__": | |
61 parser = optparse.OptionParser() | |
1858 | 62 parser.add_option( |
63 '--show', | |
1373 | 64 help='show URI, like http://light9.bigasterisk.com/show/dance2008', |
1858 | 65 default=showconfig.showUri()) |
66 parser.add_option("-v", | |
67 "--verbose", | |
68 action="store_true", | |
1373 | 69 help="logging.DEBUG") |
1858 | 70 parser.add_option("--twistedlog", |
71 action="store_true", | |
1373 | 72 help="twisted logging") |
73 clientsession.add_option(parser) | |
74 (options, args) = parser.parse_args() | |
75 log.setLevel(logging.DEBUG if options.verbose else logging.INFO) | |
76 | |
77 if not options.show: | |
78 raise ValueError("missing --show http://...") | |
1858 | 79 |
1373 | 80 session = clientsession.getUri('effectSequencer', options) |
81 | |
82 app = App(URIRef(options.show), session) | |
83 if options.twistedlog: | |
84 from twisted.python import log as twlog | |
85 twlog.startLogging(sys.stderr) | |
86 reactor.run() |