changeset 400:b2858c2d4a4d

aft() has smooth arg; workaround for CC writing poor subterms
author Drew Perttula <drewp@bigasterisk.com>
date Sun, 17 Jun 2007 02:20:17 +0000
parents 40b6a06bd090
children 3e3ba0e3d4b8
files bcf2000.py bin/curvecalc light9/Effects.py
diffstat 3 files changed, 33 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/bcf2000.py	Sat Jun 16 19:12:48 2007 +0000
+++ b/bcf2000.py	Sun Jun 17 02:20:17 2007 +0000
@@ -29,8 +29,10 @@
                89 : "button-corner1", 90 : "button-corner2",
                91 : "button-corner3", 92 : "button-corner4",
                }
-               
-    def __init__(self, dev="/dev/snd/midiC1D0"):
+
+    def __init__(self, dev="/dev/snd/midiC0D0"):
+        """device was usually /dev/snd/midiC1D0 but then it showed up
+        once as C0D0. It should be autodetected"""
         self.devPath = dev
         self.dev = None
         self.lastValue = {} # control name : value
--- a/bin/curvecalc	Sat Jun 16 19:12:48 2007 +0000
+++ b/bin/curvecalc	Sun Jun 17 02:20:17 2007 +0000
@@ -22,6 +22,7 @@
 from twisted.web.xmlrpc import Proxy
 from rdflib import Literal, URIRef, RDF
 from rdflib.Graph import Graph
+import rdflib
 import logging
 log = logging.getLogger()
 logging.basicConfig(format="%(asctime)s %(levelname)-5s %(name)s %(filename)s:%(lineno)d: %(message)s")
@@ -85,8 +86,19 @@
         glo['ncos'] = lambda x: (math.cos(x * (2 * math.pi)) + 1) / 2
         glo['within'] = lambda a, b: a < t < b
         glo['bef'] = lambda x: t < x
-        glo['aft'] = lambda x: x < t
-        glo['smoove'] = lambda x: -2 * (x ** 3) + 3 * (x ** 2)
+
+
+        def smoove(x):
+            return -2 * (x ** 3) + 3 * (x ** 2)
+        glo['smoove'] = smoove
+
+        def aft(t, x, smooth=0):
+            left = x - smooth / 2
+            right = x + smooth / 2
+            if left < t < right:
+                return smoove((t - left) / (right - left))
+            return t > x
+        glo['aft'] = lambda x, smooth=0: aft(t, x, smooth)
 
         def chan(name):
             return Submaster.Submaster(
@@ -113,6 +125,8 @@
         glo['noise'] = smooth_random
         glo['notch'] = notch_random
 
+        
+
         return glo
 
 exprglo = Expr()
@@ -352,8 +366,18 @@
 
 def add_subterms_for_song(graph, song, curveset, subterms, root, ssv):
     for st in graph.objects(song, L9['subterm']):
-        add_one_subterm(graph, graph.value(st, L9['sub']), curveset, subterms,
-                        root, ssv, graph.value(st, L9['expression']))
+        try:
+            add_one_subterm(graph, graph.value(st, L9['sub']), curveset, subterms,
+                            root, ssv, graph.value(st, L9['expression']))
+        except rdflib.exceptions.UniquenessError:
+            print "working around curvecalc save corruption"
+            # curvecalc put all the expressions on one subterm, which is wrong
+            for expr in graph.objects(st, L9['expression']):
+                add_one_subterm(graph, graph.value(st, L9['sub']),
+                                curveset, subterms,
+                                root, ssv,
+                                expr)
+                
 
 def graphPathForSubterms(song):
     return showconfig.subtermsForSong(showconfig.songFilenameFromURI(song)) + ".n3"
--- a/light9/Effects.py	Sat Jun 16 19:12:48 2007 +0000
+++ b/light9/Effects.py	Sun Jun 17 02:20:17 2007 +0000
@@ -1,3 +1,4 @@
+from __future__ import division
 import random
 import light9.Submaster as Submaster
 from chase import chase as chase_logic
@@ -23,7 +24,6 @@
         lev[dmx] = value
 
     ret = Submaster.Submaster(leveldict=lev, temporary=True)
-    print ret
     return ret
 
 def configExprGlobals():
@@ -37,4 +37,3 @@
 
     ret['chase'] = chase
     return ret
-