redo with new anti-GLucose
[SugarCubes.git] / TobySegaran.pde
old mode 100755 (executable)
new mode 100644 (file)
index 443be5b..8769b10
@@ -7,8 +7,8 @@ class GlitchPlasma extends SCPattern {
   BasicParameter speedParameter = new BasicParameter("SPEED", 0.1);
   BasicParameter glitchParameter = new BasicParameter("GLITCH", 0.0);
   
-  public GlitchPlasma(GLucose glucose) {
-    super(glucose);
+  public GlitchPlasma(LX lx) {
+    super(lx);
     addParameter(saturationParameter);
     addParameter(speedParameter);
     addParameter(glitchParameter);
@@ -23,14 +23,14 @@ class GlitchPlasma extends SCPattern {
     }
   }
 
-  public void run(int deltaMs) {
-    for (Point p : model.points) {
-      float hv = sin(dist(p.fx + pos, p.fy, 128.0, 128.0) / 8.0)
-         + sin(dist(p.fx, p.fy, 64.0, 64.0) / 8.0)
-         + sin(dist(p.fx, p.fy + pos / 7, 192.0, 64.0) / 7.0)
-         + sin(dist(p.fx, p.fz + pos, 192.0, 100.0) / 8.0);
+  public void run(double deltaMs) {
+    for (LXPoint p : model.points) {
+      float hv = sin(dist(p.x + pos, p.y, 128.0, 128.0) / 8.0)
+         + sin(dist(p.x, p.y, 64.0, 64.0) / 8.0)
+         + sin(dist(p.x, p.y + pos / 7, 192.0, 64.0) / 7.0)
+         + sin(dist(p.x, p.z + pos, 192.0, 100.0) / 8.0);
       float bv = 100;
-      colors[p.index] = color((hv+2)*50, satu, bv);
+      colors[p.index] = lx.hsb((hv+2)*50, satu, bv);
     }
     if (random(1.0)<glitch/20) {
       pos=pos-int(random(10,30));
@@ -49,8 +49,8 @@ class FireEffect extends SCPattern {
   private int ym;
   BasicParameter decayParameter = new BasicParameter("DECAY", 0.3);
   
-  public FireEffect(GLucose glucose) {
-    super(glucose);
+  public FireEffect(LX lx) {
+    super(lx);
     xm = int(model.xMax);
     ym = int(model.yMax);
     
@@ -63,11 +63,11 @@ class FireEffect extends SCPattern {
     }
   } 
   private color flameColor(float level) {
-    if (level<=0) return color(0,0,0);
+    if (level<=0) return lx.hsb(0,0,0);
     float br=min(100,sqrt(level)*15);
-    return color(level/1.7,100,br);
+    return lx.hsb(level/1.7,100,br);
   }
-  public void run(int deltaMs) {
+  public void run(double deltaMs) {
     for (int x=10;x<xm-10;x++) {
         if (x%50>45 || x%50<5) {
           intensity[x][ym-1] = random(30,100);
@@ -81,9 +81,9 @@ class FireEffect extends SCPattern {
       }
     }
     
-    for (Point p : model.points) {
-      int x = max(0,(int(p.fx)+int(p.fz))%xm);
-      int y = constrain(ym-int(p.fy),0,ym-1);
+    for (LXPoint p : model.points) {
+      int x = max(0,(int(p.x)+int(p.z))%xm);
+      int y = constrain(ym-int(p.y),0,ym-1);
       colors[p.index] = flameColor(intensity[x][y]);
     }
   }
@@ -97,8 +97,8 @@ class StripBounce extends SCPattern {
   SinLFO[] sat = new SinLFO[numOsc];
   float[] colorOffset = new float[numOsc];
   
-  public StripBounce(GLucose glucose) {
-    super(glucose);
+  public StripBounce(LX lx) {
+    super(lx);
     for (int i=0;i<numOsc;i++) {
       fX[i] = new SinLFO(0, model.xMax, random(2000,20000)); 
       fY[i] = new SinLFO(0, model.yMax, random(2000,20000)); 
@@ -111,18 +111,18 @@ class StripBounce extends SCPattern {
     }
   }
   
-  public void run(int deltaMs) {
+  public void run(double deltaMs) {
     float[] bright = new float[model.points.size()];
     for (Strip strip : model.strips) {
       for (int i=0;i<numOsc;i++) {
         float avgdist=0.0;
-        avgdist = dist(strip.points.get(8).fx,strip.points.get(8).fy,strip.points.get(8).fz,fX[i].getValuef(),fY[i].getValuef(),fZ[i].getValuef());
+        avgdist = dist(strip.points.get(8).x,strip.points.get(8).y,strip.points.get(8).z,fX[i].getValuef(),fY[i].getValuef(),fZ[i].getValuef());
         boolean on = avgdist<30;
         float hv = (lx.getBaseHuef()+colorOffset[i])%360;
         float br = max(0,100-avgdist*4);
-        for (Point p : strip.points) {
+        for (LXPoint p : strip.points) {
           if (on && br>bright[p.index]) {
-            colors[p.index] = color(hv,sat[i].getValuef(),br);
+            colors[p.index] = lx.hsb(hv,sat[i].getValuef(),br);
             bright[p.index] = br;
           }
         }
@@ -142,8 +142,8 @@ class SoundRain extends SCPattern {
   SinLFO col1 = new SinLFO(0, model.xMax, 5000);
   BasicParameter gainParameter = new BasicParameter("GAIN", 0.5);
   
-  public SoundRain(GLucose glucose) {
-    super(glucose);
+  public SoundRain(LX lx) {
+    super(lx);
     addModulator(pos).trigger();
     addModulator(col1).trigger();
     addParameter(gainParameter);
@@ -154,7 +154,7 @@ class SoundRain extends SCPattern {
       gain = 50*parameter.getValuef();
     }
   }
-  protected void onActive() {
+  void onActive() {
     if (this.fft == null) {
       this.fft = new FFT(lx.audioInput().bufferSize(), lx.audioInput().sampleRate());
       this.fft.window(FFT.HAMMING);
@@ -168,7 +168,7 @@ class SoundRain extends SCPattern {
     }
   }
   
-  public void run(int deltaMs) {
+  public void run(double deltaMs) {
     this.fft.forward(this.lx.audioInput().mix);
     for (int i = 0; i < avgSize; ++i) {
       float value = this.fft.getAvg(i);
@@ -184,10 +184,10 @@ class SoundRain extends SCPattern {
       for (int j=0; j<c.strips.size(); j++) {
         Strip s = c.strips.get(j);
         if (j%4!=0 && j%4!=2) {
-          for (Point p : s.points) {
-            int seq = int(p.fy*avgSize/model.yMax+pos.getValuef()+sin(p.fx+p.fz)*2)%avgSize;
+          for (LXPoint p : s.points) {
+            int seq = int(p.y*avgSize/model.yMax+pos.getValuef()+sin(p.x+p.z)*2)%avgSize;
             seq=min(abs(seq-(avgSize/2)),avgSize-1);
-            colors[p.index] = color(200,max(0,100-abs(p.fx-col1.getValuef())/2),lightVals[seq]);
+            colors[p.index] = lx.hsb(200,max(0,100-abs(p.x-col1.getValuef())/2),lightVals[seq]);
           }
         }
       }
@@ -201,8 +201,8 @@ class FaceSync extends SCPattern {
   SinLFO col1 = new SinLFO(0, model.xMax, 5000);
   SinLFO col2 = new SinLFO(0, model.xMax, 4000);
 
-  public FaceSync(GLucose glucose) {
-    super(glucose);
+  public FaceSync(LX lx) {
+    super(lx);
     addModulator(xosc).trigger();
     addModulator(zosc).trigger();
     zosc.setValue(0);
@@ -211,25 +211,25 @@ class FaceSync extends SCPattern {
     col2.setValue(model.xMax);
   }
 
-  public void run(int deltaMs) {
+  public void run(double deltaMs) {
     int i=0;
     for (Strip s : model.strips) {
       i++;
-      for (Point p : s.points) {
+      for (LXPoint p : s.points) {
         float dx, dz;
         if (i%32 < 16) {
-          dx = p.fx - (s.cx+xosc.getValuef());
-          dz = p.fz - (s.cz+zosc.getValuef());
+          dx = p.x - (s.cx+xosc.getValuef());
+          dz = p.z - (s.cz+zosc.getValuef());
         } else {
-          dx = p.fx - (s.cx+zosc.getValuef());
-          dz = p.fz - (s.cz+xosc.getValuef());
+          dx = p.x - (s.cx+zosc.getValuef());
+          dz = p.z - (s.cz+xosc.getValuef());
         }                
         //println(dx);
-        float a1=max(0,100-abs(p.fx-col1.getValuef()));
-        float a2=max(0,100-abs(p.fx-col2.getValuef()));        
+        float a1=max(0,100-abs(p.x-col1.getValuef()));
+        float a2=max(0,100-abs(p.x-col2.getValuef()));        
         float sat = max(a1,a2);
         float h = (359*a1+200*a2) / (a1+a2);
-        colors[p.index] = color(h,sat,100-abs(dx*5)-abs(dz*5));
+        colors[p.index] = lx.hsb(h,sat,100-abs(dx*5)-abs(dz*5));
       }
     }
   }
@@ -244,8 +244,8 @@ class SoundSpikes extends SCPattern {
   BasicParameter gainParameter = new BasicParameter("GAIN", 0.5);
   SawLFO pos = new SawLFO(0, model.xMax, 8000);
 
-  public SoundSpikes(GLucose glucose) {
-    super(glucose);
+  public SoundSpikes(LX lx) {
+    super(lx);
     addParameter(gainParameter);
     addModulator(pos).trigger();
   }
@@ -255,7 +255,7 @@ class SoundSpikes extends SCPattern {
       gain = 50*parameter.getValuef();
     }
   }
-  protected void onActive() {
+  void onActive() {
     if (this.fft == null) {
       this.fft = new FFT(lx.audioInput().bufferSize(), lx.audioInput().sampleRate());
       this.fft.window(FFT.HAMMING);
@@ -269,7 +269,7 @@ class SoundSpikes extends SCPattern {
     }
   }
   
-  public void run(int deltaMs) {
+  public void run(double deltaMs) {
     this.fft.forward(this.lx.audioInput().mix);
     for (int i = 0; i < avgSize; ++i) {
       float value = this.fft.getAvg(i);
@@ -286,13 +286,13 @@ class SoundSpikes extends SCPattern {
       for (int j=0; j<c.strips.size(); j++) {
         Strip s = c.strips.get(j);
         if (j%4!=0 && j%4!=2) {
-          for (Point p : s.points) {
-            float dis = (abs(p.fx-model.xMax/2)+pos.getValuef())%model.xMax/2;
+          for (LXPoint p : s.points) {
+            float dis = (abs(p.x-model.xMax/2)+pos.getValuef())%model.xMax/2;
             int seq = int((dis*avgSize*2)/model.xMax);
             if (seq>avgSize) seq=avgSize-seq;
             seq=constrain(seq,0,avgSize-1);
-            float br=max(0, lightVals[seq]-p.fy);
-            colors[p.index] = color((dis*avgSize*65)/model.xMax,90,br);
+            float br=max(0, lightVals[seq]-p.y);
+            colors[p.index] = lx.hsb((dis*avgSize*65)/model.xMax,90,br);
           }
         }
       }