   for(uint8_t y=0; y<ROWS; ++y)
     for(uint8_t x=0; x<COLS; ++x){
       for(uint8_t i=0; i<3; ++i)
-        leds[xy2i(x,y)].raw[i] = (uint8_t) (((uint16_t) leds[xy2i(x,y)].raw[i]*19 + new_colors[y][x][i])/20);
-        // colors[y][x][i] = (uint8_t) (((uint16_t) colors[y][x][i]*19 + new_colors[y][x][i])/20);
-      
-      // leds[xy2i(x,y)] = CRGB(colors[y][x][0],colors[y][x][1],colors[y][x][2]);
+        leds[xy2i(x,y)][i] = (uint8_t) (((uint16_t) leds[xy2i(x,y)][i]*19 + new_colors[xy2i(x,y)][i])/20);
     }
   LEDS.show();
 }

  }
  LEDS.show();
  
  // Turn off all LEDs, initialise pixel seeds on first row
  for(uint8_t y=0; y<ROWS; ++y)
    for(uint8_t x=0; x<COLS; ++x){
      // clear pixels
      // for(uint8_t i=0; i<3; ++i)
        // colors[y][x][i] = 100;
      //seed pixels
      
      if(y==0)
        onPixels[y][x] = (random(0,10)>5);
      else
        onPixels[y][x] = false;
      
    }
  sendColors();
}


#define _G 1
#define _B 2

CRGB new_colors[NUM_LEDS];


// Return 0-based led index for 0-based x and y grid co-ordinate values
