Add many blend transition types, remove dualblender and gplay stuff
authorMark Slee <mcslee@Mark-Slees-MacBook-Pro.local>
Thu, 19 Sep 2013 19:53:39 +0000 (12:53 -0700)
committerMark Slee <mcslee@Mark-Slees-MacBook-Pro.local>
Thu, 19 Sep 2013 19:53:39 +0000 (12:53 -0700)
DanKaminsky.pde
MarkSlee.pde
SugarCubes.pde
_Internals.pde
_UIImplementation.pde

index 3fbd86b30ca753d56f98ca5c2f1872b344414a11..02907867dac64e51355e0630d4bbf75bf2990e69 100644 (file)
@@ -213,56 +213,3 @@ import processing.serial.*;
   }
 }*/
 
-List<LXParameter> gparams;
-
-  class DualBlender extends SCEffect {
-  int lastSeen;
-  BasicParameter p1 = new BasicParameter("p1", 0);
-  BasicParameter p2 = new BasicParameter("p2", 0);  
-  BasicParameter p3 = new BasicParameter("p3", 0);
-  BasicParameter p4 = new BasicParameter("p4", 0);
-  BasicParameter p5 = new BasicParameter("p5", 0);  
-  BasicParameter p6 = new BasicParameter("p6", 0);
-  BasicParameter p7 = new BasicParameter("p7", 0);
-  BasicParameter p8 = new BasicParameter("p8", 0);  
-  DualBlender(GLucose glucose){
-    super(glucose);
-    gparams = gplay.getParameters();
-    addParameter(p1);
-    addParameter(p2);
-    addParameter(p3);
-    addParameter(p4);
-    addParameter(p5);
-    addParameter(p6);
-    addParameter(p7);
-    addParameter(p8);
-
-    lastSeen=millis();    
-  }
-  
-  void onParameterChanged(LXParameter p){
-    if(p==p1) { gparams.get(0).setValue(p.getValuef()); }
-    if(p==p2) { gparams.get(1).setValue(p.getValuef()); }
-    if(p==p3) { gparams.get(2).setValue(p.getValuef()); }
-    if(p==p4) { gparams.get(3).setValue(p.getValuef()); }
-    if(p==p5) { gparams.get(4).setValue(p.getValuef()); }
-    if(p==p6) { gparams.get(5).setValue(p.getValuef()); }
-    if(p==p7) { gparams.get(6).setValue(p.getValuef()); }
-    if(p==p8) { gparams.get(7).setValue(p.getValuef()); }    
-  }
-    
-  void doApply(int[] colors){
-    if (enabled) {
-      //gplay.onActive();
-      gplay.go(millis()-lastSeen);
-      lastSeen=millis();
-      int[] pcolors = gplay.getColors();
-      for(int i=0; i<colors.length; i++){
-        colors[i]=blendColor(colors[i],pcolors[i], MULTIPLY);
-      }      
-    } else {}//gplay.onInactive(); }
-  }
-  
-  
-}
-
index 7e0f46f279eb8e59ff941d83a84d05dda72a7b22..d22386a1d8f5d6ba1bcd2e7aaf5aac3987752c37 100644 (file)
@@ -128,10 +128,13 @@ class SwipeTransition extends SCTransition {
   }
 }
 
-class MaskTransition extends SCTransition {
+abstract class BlendTransition extends SCTransition {
   
-  MaskTransition(GLucose glucose) {
+  final int blendType;
+  
+  BlendTransition(GLucose glucose, int blendType) {
     super(glucose);
+    this.blendType = blendType;
   }
 
   void computeBlend(int[] c1, int[] c2, double progress) {
@@ -139,7 +142,7 @@ class MaskTransition extends SCTransition {
       for (int i = 0; i < c1.length; ++i) {
         colors[i] = lerpColor(
           c1[i],
-          blendColor(c1[i], c2[i], MULTIPLY),
+          blendColor(c1[i], c2[i], blendType),
           (float) (2.*progress),
           RGB);
       }
@@ -147,7 +150,7 @@ class MaskTransition extends SCTransition {
       for (int i = 0; i < c1.length; ++i) {
         colors[i] = lerpColor(
           c2[i],
-          blendColor(c1[i], c2[i], MULTIPLY),
+          blendColor(c1[i], c2[i], blendType),
           (float) (2.*(1. - progress)),
           RGB);
       }
@@ -155,6 +158,53 @@ class MaskTransition extends SCTransition {
   }
 }
 
+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 {
 
index 6b1a6c6f07dd7577f312c06e71e98dcafdcc25b2..21bd8ac3d648823c76b0752b235a28968b70d165 100644 (file)
@@ -23,9 +23,6 @@
  * your name. Implement your classes there, and add them to the list below.
  */ 
  
-// TODO(mcslee): get rid of this global, make engine support two decks
-LXPattern gplay;
-
 LXPattern[] patterns(GLucose glucose) {
   return new LXPattern[] {
     
@@ -45,7 +42,7 @@ LXPattern[] patterns(GLucose glucose) {
 
     // DanH
     new Noise(glucose),
-    gplay = new Play(glucose), // XXX do this properly
+    new Play(glucose),
     new Pong(glucose),
 
     // Alex G
@@ -110,7 +107,14 @@ LXPattern[] patterns(GLucose glucose) {
 LXTransition[] transitions(GLucose glucose) {
   return new LXTransition[] {
     new DissolveTransition(lx),
-    new MaskTransition(glucose),
+    new MultiplyTransition(glucose),
+    new ScreenTransition(glucose),
+    new BurnTransition(glucose),
+    new DodgeTransition(glucose),
+    new OverlayTransition(glucose),
+    new AddTransition(glucose),
+    new SubtractTransition(glucose),
+    new SoftLightTransition(glucose),
     new SwipeTransition(glucose),
     new FadeTransition(lx),
   };
@@ -120,8 +124,7 @@ LXEffect[] effects(GLucose glucose) {
   return new LXEffect[] {
     new FlashEffect(lx),
     new BoomEffect(glucose),
-    new DualBlender(glucose),
-    // new DesaturationEffect(lx),
+    new DesaturationEffect(lx),
     new ColorFuckerEffect(glucose),
   };
 }
index 57a01612b36da97acb27361b3fc21324bccc1716..5c3f7cd5907431266f2d545637eaf83f0b617b5e 100644 (file)
@@ -111,12 +111,12 @@ void setup() {
   debugUI = new DebugUI(pandaMappings);
   overlays = new UIContext[] {
     uiPatternA = new UIPatternDeck(lx.engine.getDeck(0), "PATTERN A", 4, 4, 140, 344),
-    new UICrossfader(4, 352, 140, 152),
-    new UIOutput(4, 508, 140, 122),
+    new UICrossfader(4, 352, 140, 212),
     
     new UIPatternDeck(lx.engine.getDeck(1), "PATTERN B", width-144, 4, 140, 344),
     new UIEffects(width-144, 352, 140, 144),
     new UITempo(width-144, 498, 140, 50),
+    new UIOutput(width-144, 552, 140, 122),
     
     uiDebugText = new UIDebugText(4, height-64, width-8, 44),
     uiMapping = new UIMapping(mappingTool, 4, 4, 140, 344),
index 3d4940fe2a615b16a23f18eeab1b734bd41dd0db..cf81f64fdeb599dbb4322823bacb06c851570420 100644 (file)
@@ -95,9 +95,9 @@ class UICrossfader extends UIWindow {
     for (LXTransition t : transitions) {
       items.add(new TransitionScrollItem(t));
     }    
-    new UIScrollList(1, titleHeight, w-2, 60).setItems(items).addToContainer(this);
-    new UIParameterSlider(4, titleHeight + 66, w-10, 24).setParameter(lx.engine.getDeck(1).getCrossfader()).addToContainer(this);
-    new UIToggleSet(4, 122, w-10, 20) {
+    new UIScrollList(1, titleHeight, w-2, 120).setItems(items).addToContainer(this);
+    new UIParameterSlider(4, titleHeight + 126, w-10, 24).setParameter(lx.engine.getDeck(1).getCrossfader()).addToContainer(this);
+    new UIToggleSet(4, 182, w-10, 20) {
       protected void onToggle(String value) {
         displayMode = value;
       }