annotate bin/inputquneo @ 1103:771f50f19b4b

single-line effect code now evals by changing <uri> into a suitable python object Ignore-this: cde829f021be54bc7cfd63bddde43aa9
author Drew Perttula <drewp@bigasterisk.com>
date Mon, 09 Jun 2014 07:10:39 +0000
parents c756638275d6
children 78973ed9e986
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1069
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
1 #!bin/python
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
2 """
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
3 read Quneo midi events, write to curvecalc and maybe to effects
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
4 """
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
5 from __future__ import division
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
6 from run_local import log
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
7 import cyclone.web, cyclone.httpclient
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
8 from rdflib import URIRef
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
9 from twisted.internet import reactor, task
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
10 from light9.curvecalc.client import sendLiveInputPoint
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
11
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
12 import sys
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
13 sys.path.append('/usr/lib/python2.7/dist-packages') # For pygame
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
14 import pygame.midi
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
15
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
16 curves = {
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
17 23: URIRef('http://light9.bigasterisk.com/show/dance2014/song1/curve/c-2'),
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
18 24: URIRef('http://light9.bigasterisk.com/show/dance2014/song1/curve/c-3'),
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
19 25: URIRef('http://light9.bigasterisk.com/show/dance2014/song1/curve/c-4'),
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
20 6:URIRef('http://light9.bigasterisk.com/show/dance2014/song1/curve/c-5'),
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
21 18: URIRef('http://light9.bigasterisk.com/show/dance2014/song1/curve/c-6'),
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
22 }
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
23
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
24 class WatchMidi(object):
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
25 def __init__(self):
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
26 pygame.midi.init()
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
27
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
28 dev = self.findQuneo()
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
29 self.inp = pygame.midi.Input(dev)
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
30 task.LoopingCall(self.step).start(.05)
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
31
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
32 self.noteOn = {}
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
33
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
34 def findQuneo(self):
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
35 for dev in range(pygame.midi.get_count()):
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
36 interf, name, isInput, isOutput, opened = pygame.midi.get_device_info(dev)
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
37 if 'QUNEO' in name and isInput:
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
38 return dev
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
39 raise ValueError("didn't find quneo input device")
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
40
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
41 def step(self):
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
42 if not self.inp.poll():
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
43 return
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
44 for ev in self.inp.read(999):
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
45 (status, d1, d2, _), _ = ev
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
46 print status, d1, d2
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
47
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
48 for group in [(23,24,25), (6, 18)]:
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
49 if d1 in group:
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
50 if not self.noteOn.get(group):
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
51 print "start zero"
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
52 for d in group:
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
53 sendLiveInputPoint(curves[d], 0)
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
54 self.noteOn[group] = True
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
55 else: # miss first update
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
56 sendLiveInputPoint(curves[d1], d2 / 127)
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
57
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
58 if status == 128: #noteoff
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
59 for d in group:
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
60 sendLiveInputPoint(curves[d], 0)
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
61 self.noteOn[group] = False
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
62
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
63
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
64 wm = WatchMidi()
c756638275d6 quneo input demo. optimize curve display a little.
Drew Perttula <drewp@bigasterisk.com>
parents:
diff changeset
65 reactor.run()