Fix preset dirtying and lights update on DPat
authorMark Slee <mcslee@Mark-Slees-MacBook-Pro.local>
Sat, 19 Oct 2013 20:56:35 +0000 (13:56 -0700)
committerMark Slee <mcslee@Mark-Slees-MacBook-Pro.local>
Sat, 19 Oct 2013 20:56:35 +0000 (13:56 -0700)
DanUtil.pde
MarkSlee.pde
_MIDI.pde
_Presets.pde

index b769b781ff7f4d688bf6f9851acf5351aeb3551a..85f49fd8573ded8ae85591d35576528457130961 100644 (file)
@@ -129,8 +129,7 @@ public class DPat extends SCPattern
        void SetNoteOn  (int row, int col, int clr){ if (APCOut != null) APCOut.sendNoteOn      (col, row, clr); }
        void SetNoteOff (int row, int col, int clr){ if (APCOut != null) APCOut.sendNoteOff     (col, row, clr); }
 
-       boolean         isFocused()                                                     { return midiEngine != null && midiEngine.getFocusedDeck() != null &&
-                                                                                                                        this == midiEngine.getFocusedDeck().getActivePattern();                }
+       boolean         isFocused()                                                     { return midiEngine != null && midiEngine.getFocusedPattern() == this; }
        void            onInactive()                                            { uiDebugText.setText(""); }
        void            onTransitionEnd()                                       { updateLights(); }
        void            onReset() {
index 7a556d5d0f7850d5a463f7ba7f890365e664b828..fde5fc7eda9a7b828652ba2b25c0335ca20d6a44 100644 (file)
@@ -173,11 +173,13 @@ class Pulley extends SCPattern {
     }
 
     // A little silliness to test the grid API    
-    for (int i = 0; i < 7; ++i) {
-      for (int j = 0; j < 8; ++j) {
-        int gi = (int) constrain(j * NUM_DIVISIONS / 8, 0, NUM_DIVISIONS-1);
-        float b = 1 - 4.*abs((6-i)/7. - gravity[gi].getValuef() / model.yMax);
-        midiEngine.grid.setState(i, j, (b < 0) ? 0 : 1);
+    if (midiEngine != null && midiEngine.getFocusedPattern() == this) {
+           for (int i = 0; i < 5; ++i) {
+        for (int j = 0; j < 8; ++j) {
+          int gi = (int) constrain(j * NUM_DIVISIONS / 8, 0, NUM_DIVISIONS-1);
+          float b = 1 - 4.*abs((6-i)/6. - gravity[gi].getValuef() / model.yMax);
+          midiEngine.grid.setState(i, j, (b < 0) ? 0 : 3);
+        }
       }
     }
     
index 9a3ce5cb29f21266e69247ab6d9a2e087084f6af..79c3860e487aa74489806029fa34eebe65bc1dd1 100644 (file)
--- a/_MIDI.pde
+++ b/_MIDI.pde
@@ -703,9 +703,13 @@ class APC40MidiOutput implements LXParameter.Listener, GridOutput {
     while (i < 12) {
       sendKnob(i++, 0);
     }
-    for (int row = 0; row < 7; ++row) {
-      for (int col = 0; col < 8; ++col) {
-        setGridState(row, col, 0);
+    if (focusedPattern instanceof DPat) {
+      ((DPat)focusedPattern).updateLights();
+    } else {
+      for (int row = 0; row < 7; ++row) {
+        for (int col = 0; col < 8; ++col) {
+          setGridState(row, col, 0);
+        }
       }
     }
   }
index f1855c63aa4f2c4c57eaba9f2030cc9b802ca108..f4371d600812899eaf88d8643e06e0c7c4d5b9e2 100644 (file)
@@ -92,8 +92,10 @@ class PresetManager implements LXParameter.Listener {
   }
   
   private void onPresetDirty() {
-    for (PresetListener listener : listeners) {
-      listener.onPresetDirty(loadedPreset);
+    if (loadedPreset != null) {
+      for (PresetListener listener : listeners) {
+        listener.onPresetDirty(loadedPreset);
+      }
     }
   }