New shifting color mode
[kaka/cakelight.git] / src / kaka / cakelight / AmbientMode.java
index a6ae8da..0b41b4c 100644 (file)
@@ -62,10 +62,21 @@ public class AmbientMode extends Mode { // TODO split into DynamicAmbient and St
             }
         } else if (type == 1) {
             for (int i = 0; i < config.leds.getCount(); i++) {
-                double g = noise.getr(0, 0.5, 0.5, frame.xOf(i), frame.yOf(i), time / 5000.0);
-                double b = noise.getr(0, 1, 1, frame.xOf(i), frame.yOf(i), time / 7000.0);
+                double x = frame.xOf(i);
+                double y = frame.yOf(i);
+                double g = Math.min(1, Math.max(0, noise.getr(-0.5, 0.5, 0.5, x, y, time / 5000.0)));
+                double b = Math.pow(Math.min(1, Math.max(0, noise.getr(0, 0.9, 1, x, y, time / 7000.0))), 2);
                 frame.setLedColor(i, Color.rgb(0, g, b));
             }
+        } else if (type == 2) {
+            int ledCount = config.leds.getCount();
+            double hueOffset = time * 0.00001;
+            double hueLength = 1.0 / 6;
+            for (int i = 0; i < config.leds.getCount(); i++) {
+                double ledOffset = (i + (hueOffset * ledCount)) % ledCount;
+                double value = Math.abs((ledOffset * 2 - ledCount) / ledCount); // 1 to 0 to 1
+                frame.setLedColor(i, Color.hsv(value * hueLength + hueOffset, 1, 1));
+            }
         }
     }