Update to use new form of referencing immutable model object lists
authorMark Slee <mcslee@Mark-Slees-MacBook-Pro.local>
Wed, 29 May 2013 04:55:59 +0000 (23:55 -0500)
committerMark Slee <mcslee@Mark-Slees-MacBook-Pro.local>
Wed, 29 May 2013 04:55:59 +0000 (23:55 -0500)
MarkSlee.pde
SugarCubes.pde
TestPatterns.pde
_Overlay.pde
code/GLucose.jar

index 76d2aef24be849aab540c215c3efa9a4ab1ca165..ef65b3f680927151d5a4b8b79dc6f3c075566861 100644 (file)
@@ -28,14 +28,14 @@ class SpaceTime extends SCPattern {
 
   void run(int deltaMs) {    
     angle += deltaMs * 0.0007;
-    float sVal1 = Strip.list.size() * (0.5 + 0.5*sin(angle));
-    float sVal2 = Strip.list.size() * (0.5 + 0.5*cos(angle));
+    float sVal1 = model.strips.size() * (0.5 + 0.5*sin(angle));
+    float sVal2 = model.strips.size() * (0.5 + 0.5*cos(angle));
 
     float pVal = pos.getValuef();
     float fVal = falloff.getValuef();
 
     int s = 0;
-    for (Strip strip : Strip.list) {
+    for (Strip strip : model.strips) {
       int i = 0;
       for (Point p : strip.points) {
         colors[p.index] = color(
@@ -83,7 +83,7 @@ class Swarm extends SCPattern {
 
   void run(int deltaMs) {
     float s = 0;
-    for (Strip strip : Strip.list) {
+    for (Strip strip : model.strips) {
       int i = 0;
       for (Point p : strip.points) {
         float fV = max(-1, 1 - dist(p.fx/2., p.fy, fX.getValuef()/2., fY.getValuef()) / 64.);
@@ -112,7 +112,7 @@ class SwipeTransition extends SCTransition {
   void computeBlend(int[] c1, int[] c2, double progress) {
     float bleedf = 10 + bleed.getValuef() * 200.;
     float xPos = (float) (-bleedf + progress * (255. + bleedf));
-    for (Point p : Point.list) {
+    for (Point p : model.points) {
       float d = (p.fx - xPos) / bleedf;
       if (d < 0) {
         colors[p.index] = c2[p.index];
@@ -184,7 +184,7 @@ class CubeEQ extends SCPattern {
     float jConst = 300.*(1-range.getValuef());
     float clrConst = 1.1 + clr.getValuef();
 
-    for (Point p : Point.list) {
+    for (Point p : model.points) {
       float avgIndex = constrain((p.fx / 256. * avgSize), 0, avgSize-2);
       int avgFloor = (int) avgIndex;
       float j = jBase + jConst * (p.fy / 128.);
@@ -231,7 +231,7 @@ class BoomEffect extends SCEffect {
       float falloffv = falloffv();
       float satv = sat.getValuef() * 100;
       float huev = lx.getBaseHuef();
-      for (Point p : Point.list) {
+      for (Point p : model.points) {
         colors[p.index] = blendColor(
         colors[p.index], 
         color(huev, satv, constrain(brightv - falloffv*abs(boom.getValuef() - dist(p.fx, 2*p.fy, 2*p.fz, 128, 128, 128)), 0, 100)), 
@@ -293,11 +293,11 @@ public class PianoKeyPattern extends SCPattern {
     addParameter(attack);
     addParameter(release);
     addParameter(level);
-    cubeBrt = new LinearEnvelope[Cube.list.size() / 4];
+    cubeBrt = new LinearEnvelope[model.cubes.size() / 4];
     for (int i = 0; i < cubeBrt.length; ++i) {
       addModulator(cubeBrt[i] = new LinearEnvelope(0, 0, 100));
     }
-    base = new SinLFO[Cube.list.size() / 12];
+    base = new SinLFO[model.cubes.size() / 12];
     for (int i = 0; i < base.length; ++i) {
       addModulator(base[i] = new SinLFO(0, 1, 7000 + 1000*i)).trigger();
     }
@@ -332,7 +332,7 @@ public class PianoKeyPattern extends SCPattern {
     int i = 0;
     float huef = lx.getBaseHuef();
     float levelf = level.getValuef();
-    for (Cube c : Cube.list) {
+    for (Cube c : model.cubes) {
       float v = max(getBase(i).getValuef() * levelf/4., getEnvelope(i++).getValuef());
       setColor(c, color(
         (huef + 20*v + abs(c.fx-128.)*.3 + c.fy) % 360,
@@ -398,7 +398,7 @@ class CrossSections extends SCPattern {
     float ywv = 100. / (10 + 40*yw.getValuef());
     float zwv = 100. / (10 + 40*zw.getValuef());
     
-    for (Point p : Point.list) {
+    for (Point p : model.points) {
       color c = 0;
       c = blendColor(c, color(
       (lx.getBaseHuef() + p.fx/10 + p.fy/3) % 360, 
@@ -442,7 +442,7 @@ class Blinders extends SCPattern {
   public void run(int deltaMs) {
     float hv = lx.getBaseHuef();
     int si = 0;
-    for (Strip strip : Strip.list) {
+    for (Strip strip : model.strips) {
       int i = 0;
       float mv = m[si % m.length].getValuef();
       for (Point p : strip.points) {
@@ -458,4 +458,37 @@ class Blinders extends SCPattern {
   }
 }
 
+class Psychedelia extends SCPattern {
+  
+  final int NUM = 3;
+  SinLFO m = new SinLFO(-0.5, NUM-0.5, 9000);
+  SinLFO s = new SinLFO(-20, 147, 11000);
+  TriangleLFO h = new TriangleLFO(0, 240, 19000);
+  SinLFO c = new SinLFO(-.2, .8, 31000);
+
+  Psychedelia(GLucose glucose) {
+    super(glucose);
+    addModulator(m).trigger();
+    addModulator(s).trigger();
+    addModulator(h).trigger();
+    addModulator(c).trigger();
+  }
 
+  void run(int deltaMs) {
+    float huev = h.getValuef();
+    float cv = c.getValuef();
+    float sv = s.getValuef();
+    float mv = m.getValuef();
+    int i = 0;
+    for (Strip strip : model.strips) {
+      for (Point p : strip.points) {
+        colors[p.index] = color(
+          (huev + i*constrain(cv, 0, 2) + p.fz/2. + p.fx/4.) % 360, 
+          min(100, abs(p.fy-sv)), 
+          max(0, 100 - 50*abs((i%NUM) - mv))
+        );
+      }
+      ++i;
+    }
+  }
+}
index ed2cf6dd9d77dded3a42a043c62cb9905f4fdd3f..67b153841dfbe1cd86a3043d91f5124f0b71d64a 100644 (file)
 
 LXPattern[] patterns(GLucose glucose) {
   return new LXPattern[] {
-//    new Swarm(glucose),
-//    new SpaceTime(glucose),
-//    new Blinders(glucose),
-//    new CrossSections(glucose),
-//    new CubeEQ(glucose),
-//    new PianoKeyPattern(glucose),
+    new Swarm(glucose),
+    new SpaceTime(glucose),
+    new Blinders(glucose),
+    new CrossSections(glucose),
+    new Psychedelia(glucose),
+    new CubeEQ(glucose),
+    new PianoKeyPattern(glucose),
     
     // Basic test patterns for reference, not art
 //    new TestHuePattern(glucose),
 //    new TestXPattern(glucose),
 //    new TestYPattern(glucose),
-    new TestZPattern(glucose),
+//    new TestZPattern(glucose),
   };
 }
 
index 04c2c73d9e34916662b2e6267c3eae360906a042..e7b30f97e398a0a08ef15bb8d191bfc4fab3cde7 100644 (file)
@@ -16,7 +16,7 @@ class TestXPattern extends SCPattern {
     addModulator(xPos).trigger();
   }
   public void run(int deltaMs) {
-    for (Point p : Point.list) {
+    for (Point p : model.points) {
       colors[p.index] = color(
         lx.getBaseHuef(),
         100,
@@ -33,7 +33,7 @@ class TestYPattern extends SCPattern {
     addModulator(yPos).trigger();
   }
   public void run(int deltaMs) {
-    for (Point p : Point.list) {
+    for (Point p : model.points) {
       colors[p.index] = color(
         lx.getBaseHuef(),
         100,
@@ -50,7 +50,7 @@ class TestZPattern extends SCPattern {
     addModulator(zPos).trigger();
   }
   public void run(int deltaMs) {
-    for (Point p : Point.list) {
+    for (Point p : model.points) {
       colors[p.index] = color(
         lx.getBaseHuef(),
         100,
index 6d3266a390106f62eb5d65b6f76cda7521242c8f..5bd90d3553034d42227e49baaac73f2d4a886d73 100644 (file)
@@ -257,6 +257,7 @@ class OverlayUI {
     }
     
     ellipseMode(CENTER);
+    noStroke();
     fill(#222222);
     // For some reason this arc call really crushes drawing performance. Presumably
     // because openGL is drawing it and when we overlap the second set of arcs it
index 13bc6cfbe03b53a550b90e4a01762d0d22d230a1..9f90cbd8f3aa1d63fdb6679fb0b35e80c97f852b 100644 (file)
Binary files a/code/GLucose.jar and b/code/GLucose.jar differ