Files
@ b84379060cdd
Branch filter:
Location: light9/bin/inputquneo - annotation
b84379060cdd
2.2 KiB
text/plain
vidref asked for too big a window
Ignore-this: af53633e7293a893069d485ffb9247e8
Ignore-this: af53633e7293a893069d485ffb9247e8
c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 c756638275d6 | #!bin/python
"""
read Quneo midi events, write to curvecalc and maybe to effects
"""
from __future__ import division
from run_local import log
import cyclone.web, cyclone.httpclient
from rdflib import URIRef
from twisted.internet import reactor, task
from light9.curvecalc.client import sendLiveInputPoint
import sys
sys.path.append('/usr/lib/python2.7/dist-packages') # For pygame
import pygame.midi
curves = {
23: URIRef('http://light9.bigasterisk.com/show/dance2014/song1/curve/c-2'),
24: URIRef('http://light9.bigasterisk.com/show/dance2014/song1/curve/c-3'),
25: URIRef('http://light9.bigasterisk.com/show/dance2014/song1/curve/c-4'),
6:URIRef('http://light9.bigasterisk.com/show/dance2014/song1/curve/c-5'),
18: URIRef('http://light9.bigasterisk.com/show/dance2014/song1/curve/c-6'),
}
class WatchMidi(object):
def __init__(self):
pygame.midi.init()
dev = self.findQuneo()
self.inp = pygame.midi.Input(dev)
task.LoopingCall(self.step).start(.05)
self.noteOn = {}
def findQuneo(self):
for dev in range(pygame.midi.get_count()):
interf, name, isInput, isOutput, opened = pygame.midi.get_device_info(dev)
if 'QUNEO' in name and isInput:
return dev
raise ValueError("didn't find quneo input device")
def step(self):
if not self.inp.poll():
return
for ev in self.inp.read(999):
(status, d1, d2, _), _ = ev
print status, d1, d2
for group in [(23,24,25), (6, 18)]:
if d1 in group:
if not self.noteOn.get(group):
print "start zero"
for d in group:
sendLiveInputPoint(curves[d], 0)
self.noteOn[group] = True
else: # miss first update
sendLiveInputPoint(curves[d1], d2 / 127)
if status == 128: #noteoff
for d in group:
sendLiveInputPoint(curves[d], 0)
self.noteOn[group] = False
wm = WatchMidi()
reactor.run()
|