Make cleaner interface to effects in code
authorMark Slee <mcslee@Mark-Slees-MacBook-Pro.local>
Tue, 22 Oct 2013 01:43:25 +0000 (18:43 -0700)
committerMark Slee <mcslee@Mark-Slees-MacBook-Pro.local>
Tue, 22 Oct 2013 01:43:25 +0000 (18:43 -0700)
SugarCubes.pde
_Internals.pde
_MIDI.pde

index 9faf3ec45d2babd96a24089d549e86c370d96a90..6877613e4cca823f389e25b53c0aa024a4d967f3 100644 (file)
@@ -129,18 +129,17 @@ LXTransition[] transitions(GLucose glucose) {
 }
 
 // Handles to globally triggerable effects 
-BoomEffect EFF_boom;
-FlashEffect EFF_flash;
-ColorFuckerEffect EFF_colorFucker;
-BlurEffect EFF_blur;
-QuantizeEffect EFF_quantize;
-
-LXEffect[] effects(GLucose glucose) {
-  return new LXEffect[] {
-    EFF_flash = new FlashEffect(lx),
-    EFF_boom = new BoomEffect(glucose),
-    (EFF_blur = new BlurEffect(glucose)).enable(),
-    (EFF_quantize = new QuantizeEffect(glucose)).enable(),
-    (EFF_colorFucker =  new ColorFuckerEffect(glucose)).enable(),
-  };
+class Effects {
+  FlashEffect flash = new FlashEffect(lx);
+  BoomEffect boom = new BoomEffect(glucose);
+  BlurEffect blur = new BlurEffect(glucose);
+  QuantizeEffect quantize = new QuantizeEffect(glucose);
+  ColorFuckerEffect colorFucker = new ColorFuckerEffect(glucose);
+  
+  Effects() {
+    blur.enable();
+    quantize.enable();
+    colorFucker.enable();
+  }
 }
+
index 79d12e5574bd631b284ca351ce3196036c0cc876..41532f771384f4f5a350d4889ba3c709d7623bf3 100644 (file)
@@ -30,6 +30,7 @@ import ddf.minim.*;
 import ddf.minim.analysis.*;
 import processing.opengl.*;
 import rwmidi.*;
+import java.lang.reflect.*;
 
 final int VIEWPORT_WIDTH = 900;
 final int VIEWPORT_HEIGHT = 700;
@@ -49,6 +50,7 @@ int startMillis, lastMillis;
 GLucose glucose;
 HeronLX lx;
 LXPattern[] patterns;
+Effects effects;
 MappingTool mappingTool;
 PandaDriver[] pandaBoards;
 PresetManager presetManager;
@@ -100,7 +102,19 @@ LXPattern[] _rightPatterns(GLucose glucose) {
   }
   return rightPatterns;
 }
-  
+
+LXEffect[] _effectsArray(Effects effects) {
+  List<LXEffect> effectList = new ArrayList<LXEffect>();
+  for (Field f : effects.getClass().getDeclaredFields()) {
+    try {
+      Object val = f.get(effects);
+      if (val instanceof LXEffect) {
+        effectList.add((LXEffect)val);
+      }
+    } catch (IllegalAccessException iax) {}
+  }
+  return effectList.toArray(new LXEffect[]{});
+} 
 
 void logTime(String evt) {
   int now = millis();
@@ -131,7 +145,7 @@ void setup() {
   logTime("Built patterns");
   glucose.setTransitions(transitions(glucose));
   logTime("Built transitions");
-  glucose.lx.addEffects(effects(glucose));
+  glucose.lx.addEffects(_effectsArray(effects = new Effects()));
   logTime("Built effects");
 
   // Preset manager
@@ -471,7 +485,7 @@ void keyPressed() {
       frameRate(++targetFramerate);
       break; 
     case 'b':
-      EFF_boom.trigger();
+      effects.boom.trigger();
       break;    
     case 'd':
       if (!midiEngine.isQwertyEnabled()) {
index 6467c4c4c19d6e56cadf49398693c3722675f7c1..727742fa53295b71a63463b0bf8c43fce9a08efa 100644 (file)
--- a/_MIDI.pde
+++ b/_MIDI.pde
@@ -407,26 +407,26 @@ public class APC40MidiInput extends GenericDeviceMidiInput {
     case 7:
      switch (channel) {
        case 0:
-         EFF_colorFucker.hueShift.setValue(value);
+         effects.colorFucker.hueShift.setValue(value);
          return true;
        case 1:
-         EFF_colorFucker.desat.setValue(value);
+         effects.colorFucker.desat.setValue(value);
          return true;
        case 2:
-         EFF_colorFucker.sharp.setValue(value);
+         effects.colorFucker.sharp.setValue(value);
          return true;
        case 3:
-         EFF_blur.amount.setValue(value);
+         effects.blur.amount.setValue(value);
          return true;
        case 4:
-         EFF_quantize.amount.setValue(value);
+         effects.quantize.amount.setValue(value);
          return true;
      }
      break;
      
     // Master bright
     case 14:
-      EFF_colorFucker.level.setValue(value);
+      effects.colorFucker.level.setValue(value);
       return true;
 
     // Crossfader
@@ -479,10 +479,10 @@ public class APC40MidiInput extends GenericDeviceMidiInput {
     case 49: // SOLO/CUE
       switch (nChan) {
         case 4:
-          EFF_colorFucker.mono.setValue(1);
+          effects.colorFucker.mono.setValue(1);
           return true;
         case 5:
-          EFF_colorFucker.invert.setValue(1);
+          effects.colorFucker.invert.setValue(1);
           return true;
         case 6:
           lx.cycleBaseHue(60000);
@@ -491,11 +491,11 @@ public class APC40MidiInput extends GenericDeviceMidiInput {
       break;
             
     case 82: // scene 1
-      EFF_boom.trigger();
+      effects.boom.trigger();
       return true;
       
     case 83: // scene 2
-      EFF_flash.trigger();
+      effects.flash.trigger();
       return true;
       
     case 90:
@@ -576,10 +576,10 @@ public class APC40MidiInput extends GenericDeviceMidiInput {
     case 49: // SOLO/CUE
       switch (nChan) {
         case 4:
-          EFF_colorFucker.mono.setValue(0);
+          effects.colorFucker.mono.setValue(0);
           return true;
         case 5:
-          EFF_colorFucker.invert.setValue(0);
+          effects.colorFucker.invert.setValue(0);
           return true;
         case 6:
           lx.setBaseHue(lx.getBaseHue());