       case HSV_MODE_CHASE : 
       case HSV_MODE_DECAY_CHASE : 
         if (millis() > lastChange + 15000){
-          nextHValue  = 360.0f * HSVClockRandom().h;
+          nextHValue  = HSVClockRandom().h;
           lastChange  = millis();
         }
         break;


  /** reset ? */
  if (abs(pixels[targetPixel].h - targetHSV.h) < 0.01f){
    targetPixel = random(numPixels);
    targetHSV   = nextHSV;
  }

  strip0->show();

  bool dirty = false;

  if (nextNesRead < millis()){ 
    static const float bigStep = 30.0f / 360.0f;
    static const float smallStep = 0.01f / 360.0f;
    static const int wait = 300;
    
    if ((data & 0x01) == 0){
      nextHValue = fmod(nextHValue - bigStep + 1.0f, 1.0f);
      nextNesRead = wait + millis();
      dirty = true;
    }else if((data & 0x02) == 0){
      nextHValue = fmod(nextHValue + bigStep, 1.0f);
      nextNesRead = wait + millis();
      dirty = true;
    }else if((data & 0x04) == 0){
      hsvMode = (hsvMode + 1) % 16; 
      nextNesRead = wait + millis();
      Serial.println(hsvMode);
      dirty = true;
    }else if((data & 0x08) == 0){
      nextHValue = HSVClockRandom().h;
      nextNesRead = wait + millis();
      dirty = true;
    }else if((data & 0x40) == 0){
      nextHValue = fmod(nextHValue - smallStep + 1.0f, 1.0f);
      dirty = true;
    }else if((data & 0x80) == 0){
      nextHValue = fmod(nextHValue + smallStep, 1.0f);
      dirty = true;
    }
  }
