Update to new GLucose/LX and make knobs show values on rotation
authorMark Slee <mcslee@Mark-Slees-MacBook-Pro.local>
Wed, 6 Nov 2013 23:40:47 +0000 (15:40 -0800)
committerMark Slee <mcslee@Mark-Slees-MacBook-Pro.local>
Wed, 6 Nov 2013 23:41:08 +0000 (15:41 -0800)
Audio.pde
DanKaminsky.pde
MarkSlee.pde
_Internals.pde
_UIFramework.pde
code/GLucose.jar
code/HeronLX.jar

index def7d0e1062ba7697415cef9ce98298f0f64a937..1b84957d77a1d95aeb735e410d448a1914cd871f 100644 (file)
--- a/Audio.pde
+++ b/Audio.pde
@@ -4,7 +4,7 @@
  */
 public static class GraphicEQ {
   
-  private final HeronLX lx;
+  private final LX lx;
   
   public final BasicParameter level = new BasicParameter("LVL", 0.5);
   public final BasicParameter range = new BasicParameter("RNGE", 0.5);
@@ -19,7 +19,7 @@ public static class GraphicEQ {
   
   public final static int DEFAULT_NUM_BANDS = 16;
 
-  public GraphicEQ(HeronLX lx) {
+  public GraphicEQ(LX lx) {
     this(lx, DEFAULT_NUM_BANDS);
   }
   
@@ -27,7 +27,7 @@ public static class GraphicEQ {
    * Note that the number of bands is a suggestion. Due to the FFT implementation
    * the actual number may be slightly different.
    */
-  public GraphicEQ(HeronLX lx, int num) {
+  public GraphicEQ(LX lx, int num) {
     this.lx = lx;
     fft = new FFT(lx.audioInput().bufferSize(), lx.audioInput().sampleRate());
     fft.window(FFT.HAMMING);
index 53646695561cd879cea81a84cbff0170dddbc5d2..4021d07b34fde920886f88d95d99c5acbdd9f9fe 100644 (file)
@@ -79,7 +79,7 @@ class ObjectMuckerEffect extends SCEffect {
   ObjectMuckerEffect(GLucose glucose) {
     super(glucose);
   }
-  public void doApply(int[] colors){
+  public void apply(int[] colors){
     /*for(Strip s: model.strips){
       for(int i=0; i<s.points.size(); i++){
          int index = s.points.get(i).index;
@@ -105,7 +105,7 @@ class BlendFrames extends SCEffect {
        frames[i] = new int[model.points.size()];       
     }
   }
-  public void doApply(int[] colors) {
+  public void apply(int[] colors) {
     if(fcount<maxfbuf){
       for(int i=0; i<colors.length; i++){
         frames[(maxfbuf-1)-fcount][i]=colors[i];
index 4a87665c8df95f6b735b5eb23ed34ad0d5ddde4f..efcf7d7f6832d36a22ca90e0c4fcf014197a7a1b 100644 (file)
@@ -516,7 +516,7 @@ class BouncyBalls extends SCPattern {
     float zPos;
     
     BouncyBall(int i) {
-      addModulator(xPos).setBasis(random(0, TWO_PI)).start();
+      addModulator(xPos.setBasis(random(0, TWO_PI)).start());
       addModulator(yPos = new Accelerator(0, 0, 0));
       zPos = lerp(model.zMin, model.zMax, (i+2.) / (NUM_BALLS + 4.));
     }
@@ -644,7 +644,7 @@ class SpaceTime extends SCPattern {
 }
 
 class Swarm extends SCPattern {
-
+  
   SawLFO offset = new SawLFO(0, 1, 1000);
   SinLFO rate = new SinLFO(350, 1200, 63000);
   SinLFO falloff = new SinLFO(15, 50, 17000);
@@ -930,7 +930,7 @@ class BoomEffect extends SCEffect {
       boom.trigger();
     }
 
-    void doApply(int[] colors) {
+    void apply(int[] colors) {
       float brightv = 100 * bright.getValuef();
       float falloffv = falloffv();
       float satv = sat.getValuef() * 100;
@@ -970,10 +970,10 @@ class BoomEffect extends SCEffect {
     onEnable();
   }
 
-  public void doApply(int[] colors) {
+  public void apply(int[] colors) {
     for (Layer l : layers) {
       if (l.boom.isRunning()) {
-        l.doApply(colors);
+        l.apply(colors);
       }
     }
   }
@@ -1404,7 +1404,7 @@ class ColorFuckerEffect extends SCEffect {
     addParameter(invert);
   }
   
-  public void doApply(int[] colors) {
+  public void apply(int[] colors) {
     if (!enabled) {
       return;
     }
@@ -1456,7 +1456,7 @@ class QuantizeEffect extends SCEffect {
     lastQuant = 0;
   } 
   
-  public void doApply(int[] colors) {
+  public void apply(int[] colors) {
     float fQuant = amount.getValuef();
     if (fQuant > 0) {
       float tRamp = (lx.tempo.rampf() % (1./pow(2,floor((1-fQuant) * 4))));
@@ -1502,7 +1502,7 @@ class BlurEffect extends SCEffect {
     env.setRangeFromHereTo(0, 1000).start();
   }
   
-  public void doApply(int[] colors) {
+  public void apply(int[] colors) {
     float amt = env.getValuef() * amount.getValuef();
     if (amt > 0) {    
       amt = (1 - amt);
index 61f6c7d08d40009b22dbf8da487ed20c2ade8140..58187f119e9463ab1b982e2c6fece39ff62f8254 100644 (file)
@@ -4,7 +4,7 @@
  *         //\\   //\\                 //\\   //\\  
  *        ///\\\ ///\\\               ///\\\ ///\\\
  *        \\\/// \\\///               \\\/// \\\///
- *         \\//   \\//                 \\//   \\//
+ *         \\//   \\//                 \\//   \\//H
  *
  *        EXPERTS ONLY!!              EXPERTS ONLY!!
  *
@@ -48,7 +48,7 @@ int startMillis, lastMillis;
 
 // Core engine variables
 GLucose glucose;
-HeronLX lx;
+LX lx;
 LXPattern[] patterns;
 Effects effects;
 MappingTool mappingTool;
index ca744646078e8780cf50cc6a50f10b9f4b3ab4a2..6d80ad61424924bc940bdcb8ed38faa6306b6815 100644 (file)
@@ -538,6 +538,27 @@ public abstract class UIParameterControl extends UIObject implements LXParameter
     redraw();
   }
   
+  protected float getNormalized() {
+    if (parameter != null) {
+      if (parameter instanceof BasicParameter) {
+        return ((BasicParameter)parameter).getNormalizedf();
+      }
+      return parameter.getValuef();
+    }
+    return 0;
+  }
+  
+  protected UIParameterControl setNormalized(float value) {
+    if (parameter != null) {
+      if (parameter instanceof BasicParameter) {
+        ((BasicParameter)parameter).setNormalized(value);
+      } else {
+        parameter.setValue(value);
+      }
+    }
+    return this;
+  }
+  
   public UIParameterControl setParameter(LXParameter parameter) {
     if (this.parameter != null) {
       if (this.parameter instanceof LXListenableParameter) {
@@ -559,6 +580,7 @@ public class UIParameterKnob extends UIParameterControl {
   private int knobSize = 28;
   private final float knobIndent = .4;  
   private final int knobLabelHeight = 14;
+  private boolean showValue = false;
     
   public UIParameterKnob(float x, float y) {
     this(x, y, 0, 0);
@@ -570,7 +592,7 @@ public class UIParameterKnob extends UIParameterControl {
   }
 
   protected void onDraw(PGraphics pg) {    
-    float knobValue = (parameter != null) ? parameter.getValuef() : 0;
+    float knobValue = getNormalized();
     
     pg.ellipseMode(CENTER);
     pg.noStroke();
@@ -590,7 +612,12 @@ public class UIParameterKnob extends UIParameterControl {
     pg.fill(#333333);
     pg.ellipse(knobSize/2, knobSize/2, knobSize/2, knobSize/2);
 
-    String knobLabel = (parameter != null) ? parameter.getLabel() : null;
+    String knobLabel;
+    if (showValue) {
+      knobLabel = (parameter != null) ? ("" + parameter.getValue()) : null;
+    } else {
+      knobLabel = (parameter != null) ? parameter.getLabel() : null;
+    }
     if (knobLabel == null) {
       knobLabel = "-";
     } else if (knobLabel.length() > 4) {
@@ -614,13 +641,18 @@ public class UIParameterKnob extends UIParameterControl {
     } else {
       lastMousePress = now;
     }
+    showValue = true;
+    redraw();    
+  }
+  
+  public void onMouseReleased(float mx, float my) {
+    showValue = false;
+    redraw();
   }
   
   public void onMouseDragged(float mx, float my, float dx, float dy) {
-    if (parameter != null) {
-      float value = constrain(parameter.getValuef() - dy / 100., 0, 1);
-      parameter.setValue(value);
-    }
+    float value = constrain(getNormalized() - dy / 100., 0, 1);
+    setNormalized(value);
   }
 }
 
@@ -649,12 +681,12 @@ public class UIParameterSlider extends UIParameterControl {
   private float doubleClickX = 0;
   protected void onMousePressed(float mx, float my) {
     long now = millis();
-    float handleLeft = 4 + parameter.getValuef() * (w-8-handleWidth);
+    float handleLeft = 4 + getNormalized() * (w-8-handleWidth);
     if (mx >= handleLeft && mx < handleLeft + handleWidth) {
       editing = true;
     } else {
       if ((now - lastClick) < DOUBLE_CLICK_THRESHOLD && abs(mx - doubleClickX) < 3) {
-        parameter.setValue(doubleClickMode);  
+        setNormalized(doubleClickMode);  
       }
       doubleClickX = mx;
       if (mx < w*.25) {
@@ -674,7 +706,7 @@ public class UIParameterSlider extends UIParameterControl {
   
   protected void onMouseDragged(float mx, float my, float dx, float dy) {
     if (editing) {
-      parameter.setValue(constrain((mx - handleWidth/2. - 4) / (w-8-handleWidth), 0, 1));
+      setNormalized(constrain((mx - handleWidth/2. - 4) / (w-8-handleWidth), 0, 1));
     }
   }
 }
index 358d323314816fde8c3ca58182a4dc1779b45827..0f0b20edddcf9e8fd69e3a45b8771be61e235cbf 100755 (executable)
Binary files a/code/GLucose.jar and b/code/GLucose.jar differ
index 23d0fb8c090f2bf08a9959519fe40d858daf0d91..e6c9335476620084755f8b897d0398c8f8c7b3be 100755 (executable)
Binary files a/code/HeronLX.jar and b/code/HeronLX.jar differ