changeset 1182:78973ed9e986

start to make inputquneo able to add effects to current song Ignore-this: d56554a7a10411346e709007006bc4dd
author Drew Perttula <drewp@bigasterisk.com>
date Sun, 15 Jun 2014 15:47:47 +0000
parents c677bf37a1b4
children 02f74275a21f
files bin/inputquneo show/dance2014/effectClass.n3
diffstat 2 files changed, 29 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/bin/inputquneo	Sun Jun 15 15:47:15 2014 +0000
+++ b/bin/inputquneo	Sun Jun 15 15:47:47 2014 +0000
@@ -4,10 +4,14 @@
 """
 from __future__ import division
 from run_local import log
+import logging
 import cyclone.web, cyclone.httpclient
 from rdflib import URIRef
 from twisted.internet import reactor, task
 from light9.curvecalc.client import sendLiveInputPoint
+from light9.namespaces import L9, RDF, RDFS
+from light9.rdfdb.syncedgraph import SyncedGraph
+from light9 import networking
 
 import sys
 sys.path.append('/usr/lib/python2.7/dist-packages') # For pygame
@@ -22,7 +26,8 @@
 }
 
 class WatchMidi(object):
-    def __init__(self):
+    def __init__(self, graph):
+        self.graph = graph
         pygame.midi.init()
 
         dev = self.findQuneo()
@@ -30,6 +35,16 @@
         task.LoopingCall(self.step).start(.05)
 
         self.noteOn = {}
+
+        self.effectMap = {} # note: effect class uri
+        self.graph.addHandler(self.setupNotes)
+
+    def setupNotes(self):
+        for e in self.graph.subjects(RDF.type, L9['EffectClass']):
+            qn = self.graph.value(e, L9['quneoNote'])
+            if qn:
+                self.effectMap[int(qn)] = e
+        log.info("setup with %s effects", len(self.effectMap))
         
     def findQuneo(self):
         for dev in range(pygame.midi.get_count()):
@@ -45,10 +60,15 @@
             (status, d1, d2, _), _ = ev
             print status, d1, d2
 
+
+            # if noteOn and it's in effectMap,
+            # POST http://localhost:8070/songEffects drop=<effect>
+            
             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
@@ -60,6 +80,10 @@
                         sendLiveInputPoint(curves[d], 0)
                     self.noteOn[group] = False
 
+def main():
+    log.setLevel(logging.DEBUG)
+    graph = SyncedGraph(networking.rdfdb.url, "inputQuneo")
+    wm = WatchMidi(graph)
+    reactor.run()
 
-wm = WatchMidi()
-reactor.run()
+main()
--- a/show/dance2014/effectClass.n3	Sun Jun 15 15:47:15 2014 +0000
+++ b/show/dance2014/effectClass.n3	Sun Jun 15 15:47:47 2014 +0000
@@ -17,10 +17,12 @@
 
   
 effect:cycToMusic a :EffectClass; rdfs:label "cyc to music";
+:quneoNote 26;
 :code "out = <http://light9.bigasterisk.com/show/dance2013/sub/cyc> * music * env" .
 
 effect:blacklight a :EffectClass;
   rdfs:label "blacklight";
+  :quneoNote 23;
   :code 
     "env = <http://light9.bigasterisk.com/show/dance2014/song1/curve-1>",
     "out = [env * p1, env * p2, env * p3, env * p4]",