changeset 1458:038eca7ff708

nsin and other effect shorthands Ignore-this: 52f02611ab504e966d6addf8ff2a16c
author drewp@bigasterisk.com
date Sun, 12 Jun 2016 01:49:32 +0000
parents a7a17dd7dc20
children a156742f2005
files light9/effect/effecteval.py show/dance2016/effect.n3
diffstat 2 files changed, 22 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/light9/effect/effecteval.py	Sun Jun 12 00:27:41 2016 +0000
+++ b/light9/effect/effecteval.py	Sun Jun 12 01:49:32 2016 +0000
@@ -8,6 +8,13 @@
 def literalColor(rnorm, gnorm, bnorm):
     return Literal(rgb_to_hex([rnorm * 255, gnorm * 255, bnorm * 255]))
 
+def nsin(x): return (math.sin(x * (2 * math.pi)) + 1) / 2
+def ncos(x): return (math.cos(x * (2 * math.pi)) + 1) / 2
+def nsquare(t, on=.5):
+    return (t % 1.0) < on
+def lerp(a, b, t):
+    return a + (b - a) * t
+
 def scale(value, strength):
     if isinstance(value, Literal):
         value = value.toPython()
@@ -89,16 +96,24 @@
             ] * (strength>0))
         elif self.effect == L9['effect/Curtain']:
             out.extend([
-                (L9['device/lowPattern%s' % n], L9['color'], literalColor(0*strength, strength, strength)) for n in range(301,308+1)
+                (L9['device/lowPattern%s' % n], L9['color'],
+                 literalColor(0*strength, strength, strength))
+                for n in range(301,308+1)
                 ])
         elif self.effect == L9['effect/animRainbow']:
             for n in range(1, 5+1):
+                scl = strength * nsin(songTime + n * .3)**3
                 col = literalColor(
-                        strength * (.5 + .5 * math.sin(songTime*6+n)),
-                        strength * (.5 + .5 * math.sin(songTime*6+2+n)),
-                        strength * (.5 + .5 * math.sin(songTime*6+4+n)))
-                out.append((L9['device/aura%s' % n], L9['color'], col))
-                
+                        scl * nsin(songTime + n * .2),
+                        scl * nsin(songTime + n * .2 + .3),
+                        scl * nsin(songTime + n * .3 + .6))
+                col = literalColor(scl * .6, scl * 0, scl * 1)
+                dev = L9['device/aura%s' % n]
+                out.append((dev, L9['color'], col))
+                out.append((dev, L9['zoom'], .9))
+                ang = songTime * 4
+                out.append((dev, L9['rx'], lerp(.27, .7, (n-1)/4) + .2 * math.sin(ang+n)))
+                out.append((dev, L9['ry'], lerp(.46, .52, (n-1)/4) + .5 * math.cos(ang+n)))
                     
         elif self.effect == L9['effect/Strobe']:
             attr, value = effectSettings[0]
--- a/show/dance2016/effect.n3	Sun Jun 12 00:27:41 2016 +0000
+++ b/show/dance2016/effect.n3	Sun Jun 12 01:49:32 2016 +0000
@@ -16,25 +16,8 @@
 effect:Strobe a :Effect; rdfs:label "strobe"; :publishAttr :duty, :offset, :rate, :strength .
 
 
-effect:animRainbow a :Effect; rdfs:label "animRainbow"; :publishAttr :strength, :rate;
-
-     :setting effect:animRainbow_set1, effect:animRainbow_set10, effect:animRainbow_set11, effect:animRainbow_set12, effect:animRainbow_set13, effect:animRainbow_set14, effect:animRainbow_set15, effect:animRainbow_set16, effect:animRainbow_set17, effect:animRainbow_set18, effect:animRainbow_set19, effect:animRainbow_set6, effect:animRainbow_set7, effect:animRainbow_set8, effect:animRainbow_set9 .
+effect:animRainbow a :Effect; rdfs:label "animRainbow"; :publishAttr :strength, :rate .
 
-effect:animRainbow_set1 :device dev:aura1; :deviceAttr :zoom; :value 0.465 .
-effect:animRainbow_set10 :device dev:aura3; :deviceAttr :zoom; :value 0.477 .
-effect:animRainbow_set11 :device dev:aura4; :deviceAttr :zoom; :value 0.524 .
-effect:animRainbow_set12 :device dev:aura5; :deviceAttr :zoom; :value 0.519 .
-effect:animRainbow_set13 :device dev:aura5; :deviceAttr :ry; :value 0.509 .
-effect:animRainbow_set14 :device dev:aura4; :deviceAttr :ry; :value 0.542 .
-effect:animRainbow_set15 :device dev:aura3; :deviceAttr :ry; :value 0.485 .
-effect:animRainbow_set16 :device dev:aura2; :deviceAttr :ry; :value 0.494 .
-effect:animRainbow_set17 :device dev:aura1; :deviceAttr :ry; :value 0.463 .
-effect:animRainbow_set18 :device dev:aura1; :deviceAttr :rx; :value 0.272 .
-effect:animRainbow_set19 :device dev:aura2; :deviceAttr :rx; :value 0.310 .
-effect:animRainbow_set6 :device dev:aura3; :deviceAttr :rx; :value 0.463 .
-effect:animRainbow_set7 :device dev:aura4; :deviceAttr :rx; :value 0.672 .
-effect:animRainbow_set8 :device dev:aura5; :deviceAttr :rx; :value 0.700 .
-effect:animRainbow_set9 :device dev:aura2; :deviceAttr :zoom; :value 0.4779 .
 
 
 effect:usa a :mockupEffect; rdfs:label "USA"; :chaseOffset 0;