   }
 }
 
+void updateModeFromButton() {
+  modeButton.update();
+  if(modeButton.fell()) {
+    mode = (mode % 2) + 1;
+  }
+}
+
 void loop() { 
-  // Check for mode changes
-  modeButton.update();
-  int modeButtonVal = modeButton.read();
-  if(modeButtonVal == LOW) {
-    mode = (mode % 2) + 1;
-  }
+  // TODO Fix button noise
+//  updateModeFromButton();
 
   // default to all off (high)
   digitalWrite(CTRL_LED_GREEN_PIN, HIGH);

CRGB leds2[NUM_LEDS_CH2];

void setup() { 
      FastLED.addLeds<NEOPIXEL, LED_PIN_CH1>(leds1, NUM_LEDS_CH1);
      FastLED.addLeds<NEOPIXEL, LED_PIN_CH2>(leds2, NUM_LEDS_CH2);
      Serial.begin(BAUD_RATE);
      interruptSetup();

      pinMode(CTRL_LED_RED_PIN, OUTPUT);
      pinMode(CTRL_LED_GREEN_PIN, OUTPUT);
      pinMode(CTRL_LED_BLUE_PIN, OUTPUT);
      pinMode(BUTTON_PIN, INPUT_PULLUP);
      
      modeButton.attach(BUTTON_PIN);
      modeButton.interval(5);
}

void moveBuffer() {

#include <Bounce2.h>
#include "FastLED.h"
#include <EEPROM.h>

/*
 * Heartbeat simulator
