new mappings for Friday sep 20 video shoot
[SugarCubes.git] / MarkSlee.pde
old mode 100755 (executable)
new mode 100644 (file)
index a67f719..7738419
@@ -28,7 +28,7 @@ class SpaceTime extends SCPattern {
     }
   }
 
-  void run(int deltaMs) {    
+  void run(double deltaMs) {    
     angle += deltaMs * 0.0007;
     float sVal1 = model.strips.size() * (0.5 + 0.5*sin(angle));
     float sVal2 = model.strips.size() * (0.5 + 0.5*cos(angle));
@@ -84,7 +84,7 @@ class Swarm extends SCPattern {
     }
   }
 
-  void run(int deltaMs) {
+  void run(double deltaMs) {
     float s = 0;
     for (Strip strip : model.strips  ) {
       int i = 0;
@@ -93,7 +93,7 @@ class Swarm extends SCPattern {
         colors[p.index] = color(
         (lx.getBaseHuef() + 0.3 * abs(p.fx - hOffX.getValuef())) % 360, 
         constrain(80 + 40 * fV, 0, 100), 
-        constrain(100 - (30 - fV * falloff.getValuef()) * modDist(i + (s*63)%61, (int) (offset.getValuef() * strip.metrics.numPoints), strip.metrics.numPoints), 0, 100)
+        constrain(100 - (30 - fV * falloff.getValuef()) * modDist(i + (s*63)%61, offset.getValuef() * strip.metrics.numPoints, strip.metrics.numPoints), 0, 100)
           );
         ++i;
       }
@@ -128,6 +128,84 @@ class SwipeTransition extends SCTransition {
   }
 }
 
+abstract class BlendTransition extends SCTransition {
+  
+  final int blendType;
+  
+  BlendTransition(GLucose glucose, int blendType) {
+    super(glucose);
+    this.blendType = blendType;
+  }
+
+  void computeBlend(int[] c1, int[] c2, double progress) {
+    if (progress < 0.5) {
+      for (int i = 0; i < c1.length; ++i) {
+        colors[i] = lerpColor(
+          c1[i],
+          blendColor(c1[i], c2[i], blendType),
+          (float) (2.*progress),
+          RGB);
+      }
+    } else {
+      for (int i = 0; i < c1.length; ++i) {
+        colors[i] = lerpColor(
+          c2[i],
+          blendColor(c1[i], c2[i], blendType),
+          (float) (2.*(1. - progress)),
+          RGB);
+      }
+    }
+  }
+}
+
+class MultiplyTransition extends BlendTransition {
+  MultiplyTransition(GLucose glucose) {
+    super(glucose, MULTIPLY);
+  }
+}
+
+class ScreenTransition extends BlendTransition {
+  ScreenTransition(GLucose glucose) {
+    super(glucose, SCREEN);
+  }
+}
+
+class BurnTransition extends BlendTransition {
+  BurnTransition(GLucose glucose) {
+    super(glucose, BURN);
+  }
+}
+
+class DodgeTransition extends BlendTransition {
+  DodgeTransition(GLucose glucose) {
+    super(glucose, DODGE);
+  }
+}
+
+class OverlayTransition extends BlendTransition {
+  OverlayTransition(GLucose glucose) {
+    super(glucose, OVERLAY);
+  }
+}
+
+class AddTransition extends BlendTransition {
+  AddTransition(GLucose glucose) {
+    super(glucose, ADD);
+  }
+}
+
+class SubtractTransition extends BlendTransition {
+  SubtractTransition(GLucose glucose) {
+    super(glucose, SUBTRACT);
+  }
+}
+
+class SoftLightTransition extends BlendTransition {
+  SoftLightTransition(GLucose glucose) {
+    super(glucose, SOFT_LIGHT);
+  }
+}
+
 class BassPod extends SCPattern {
 
   private GraphicEQ eq = null;
@@ -148,7 +226,7 @@ class BassPod extends SCPattern {
     }
   }
 
-  public void run(int deltaMs) {
+  public void run(double deltaMs) {
     eq.run(deltaMs);
     
     float bassLevel = eq.getAverageLevel(0, 5);
@@ -198,7 +276,7 @@ class CubeEQ extends SCPattern {
     }
   }
 
-  public void run(int deltaMs) {
+  public void run(double deltaMs) {
     eq.run(deltaMs);
 
     float edgeConst = 2 + 30*edge.getValuef();
@@ -313,11 +391,7 @@ public class PianoKeyPattern extends SCPattern {
   
   PianoKeyPattern(GLucose glucose) {
     super(glucose);
-    
-    for (MidiInputDevice input : RWMidi.getInputDevices()) {
-      input.createInput(this);
-    }
-    
+        
     addParameter(attack);
     addParameter(release);
     addParameter(level);
@@ -356,7 +430,7 @@ public class PianoKeyPattern extends SCPattern {
     getEnvelope(note.getPitch()).setEndVal(0, getReleaseTime()).start();
   }
   
-  public void run(int deltaMs) {
+  public void run(double deltaMs) {
     int i = 0;
     float huef = lx.getBaseHuef();
     float levelf = level.getValuef();
@@ -426,7 +500,7 @@ class CrossSections extends SCPattern {
     zv = z.getValuef();    
   }
 
-  public void run(int deltaMs) {
+  public void run(double deltaMs) {
     updateXYZVals();
     
     float xlv = 100*xl.getValuef();
@@ -478,7 +552,7 @@ class Blinders extends SCPattern {
     s.modulateDurationBy(r);
   }
 
-  public void run(int deltaMs) {
+  public void run(double deltaMs) {
     float hv = lx.getBaseHuef();
     int si = 0;
     for (Strip strip : model.strips) {
@@ -513,7 +587,7 @@ class Psychedelia extends SCPattern {
     addModulator(c).trigger();
   }
 
-  void run(int deltaMs) {
+  void run(double deltaMs) {
     float huev = h.getValuef();
     float cv = c.getValuef();
     float sv = s.getValuef();
@@ -549,7 +623,7 @@ class AskewPlanes extends SCPattern {
       addModulator(c = new SinLFO(-50, 50, 4000 + 1000*i * ((i % 2 == 0) ? 1 : -1))).trigger();      
     }
     
-    void run(int deltaMs) {
+    void run(double deltaMs) {
       av = a.getValuef();
       bv = b.getValuef();
       cv = c.getValuef();
@@ -568,7 +642,7 @@ class AskewPlanes extends SCPattern {
     }
   }
   
-  public void run(int deltaMs) {
+  public void run(double deltaMs) {
     float huev = lx.getBaseHuef();
     
     // This is super fucking bizarre. But if this is a for loop, the framerate
@@ -613,7 +687,7 @@ class ShiftingPlane extends SCPattern {
     addModulator(d).trigger();    
   }
   
-  public void run(int deltaMs) {
+  public void run(double deltaMs) {
     float hv = lx.getBaseHuef();
     float av = a.getValuef();
     float bv = b.getValuef();
@@ -669,7 +743,7 @@ class Traktor extends SCPattern {
 
   int counter = 0;
   
-  public void run(int deltaMs) {
+  public void run(double deltaMs) {
     eq.run(deltaMs);
     
     int stepThresh = (int) (40 - 39*speed.getValuef());
@@ -720,6 +794,9 @@ class ColorFuckerEffect extends SCEffect {
   }
   
   public void doApply(int[] colors) {
+    if (!enabled) {
+      return;
+    }
     float bMod = bright.getValuef();
     float sMod = sat.getValuef();
     float hMod = hueShift.getValuef();
@@ -734,3 +811,44 @@ class ColorFuckerEffect extends SCEffect {
     }
   }
 }
+
+class BlurEffect extends SCEffect {
+  
+  final LXParameter amount = new BasicParameter("AMT", 0);
+  final int[] frame;
+  final LinearEnvelope env = new LinearEnvelope(0, 1, 100);
+  
+  BlurEffect(GLucose glucose) {
+    super(glucose);
+    addParameter(amount);
+    addModulator(env);
+    frame = new int[lx.total];
+    for (int i = 0; i < frame.length; ++i) {
+      frame[i] = #000000;
+    }
+  }
+  
+  public void onEnable() {
+    env.setRangeFromHereTo(1, 400).start();
+    for (int i = 0; i < frame.length; ++i) {
+      frame[i] = #000000;
+    }
+  }
+  
+  public void onDisable() {
+    env.setRangeFromHereTo(0, 1000).start();
+  }
+  
+  public void doApply(int[] colors) {
+    float amt = env.getValuef() * amount.getValuef();
+    if (amt > 0) {    
+      amt = (1 - amt);
+      amt = 1 - (amt*amt*amt);
+      for (int i = 0; i < colors.length; ++i) {
+        // frame[i] = colors[i] = blendColor(colors[i], lerpColor(#000000, frame[i], amt, RGB), SCREEN);
+        frame[i] = colors[i] = lerpColor(colors[i], blendColor(colors[i], frame[i], SCREEN), amt, RGB);
+      }
+    }
+      
+  }  
+}