Add a color fucker effect for global modifications
[SugarCubes.git] / TestPatterns.pde
index e47651af4271f4cdf8618190fb2ac8326e142816..ab90d21effa4316d26a27312a36d4bc00edeb411 100644 (file)
@@ -5,6 +5,75 @@ abstract class TestPattern extends SCPattern {
   }
 }
 
+class TestSpeakerMapping extends TestPattern {
+  TestSpeakerMapping(GLucose glucose) {
+    super(glucose);
+  }
+  
+  public void run(int deltaMs) {
+    int h = 0;
+    for (Speaker speaker : model.speakers) {
+      for (Strip strip : speaker.strips) {
+        float b = 100;
+        for (Point p : strip.points) {
+          colors[p.index] = color(h % 360, 100, b);
+          b = max(0, b - 10);
+        }
+        h += 70;
+      }
+    }
+  }
+
+}
+
+class TestBassMapping extends TestPattern {
+  TestBassMapping(GLucose glucose) {
+    super(glucose);
+  }
+  
+  public void run(int deltaMs) {
+    int[] strips = { 2, 1, 0, 3, 13, 12, 15, 14, 9, 8, 11, 10, 5, 4, 7, 6 };
+    int h = 0;
+    for (int si : strips) {
+      float b = 100;
+      for (Point p : model.bassBox.strips.get(si).points) {
+        colors[p.index] = color(h % 360, 100, b);
+        b = max(0, b - 10);
+      }
+      h += 70;
+    }
+  }
+}
+
+class TestFloorMapping extends TestPattern {
+  TestFloorMapping(GLucose glucose) {
+    super(glucose);
+  }
+
+  public void run(int deltaMs) {
+    int[] strutIndices = {6, 5, 4, 3, 2, 1, 0, 7};
+    int h = 0;
+    for (int si : strutIndices) {
+      float b = 100;
+      for (Point p : model.bassBox.struts.get(si).points) {
+        colors[p.index] = color(h % 360, 100, b);
+        b = max(0, b - 10);
+      }
+      h += 50;
+    }
+    int[] floorIndices = {0, 1, 2, 3};
+    h = 0;
+    for (int fi : floorIndices) {
+      float b = 100;
+      for (Point p : model.boothFloor.strips.get(fi).points) {
+        colors[p.index] = color(h, 100, b);
+        b = max(0, b - 3);
+      }
+      h += 90;
+    }
+  }
+}
+
 class TestStripPattern extends TestPattern {
   
   SinLFO d = new SinLFO(4, 40, 4000);
@@ -190,6 +259,30 @@ class TestProjectionPattern extends TestPattern {
   } 
 }
 
+class ColorFuckerEffect extends SCEffect {
+  
+  BasicParameter hueShift = new BasicParameter("HSHFT", 0);
+  BasicParameter sat = new BasicParameter("SAT", 1);  
+  BasicParameter bright = new BasicParameter("BRT", 1);
+  
+  ColorFuckerEffect(GLucose glucose) {
+    super(glucose);
+    addParameter(hueShift);
+    addParameter(bright);
+    addParameter(sat);    
+  }
+  
+  public void doApply(int[] colors) {
+    for (int i = 0; i < colors.length; ++i) {
+      colors[i] = color(
+        (hue(colors[i]) + hueShift.getValuef()*360.) % 360,
+        saturation(colors[i]) * sat.getValuef(),
+        brightness(colors[i]) * bright.getValuef()
+      );
+    }
+  }
+}
+
 class TestCubePattern extends TestPattern {
   
   private SawLFO index = new SawLFO(0, Cube.POINTS_PER_CUBE, Cube.POINTS_PER_CUBE*60);