       delay(wait);
   }
 }
- 
+
 void rainbow(uint8_t wait) {
   uint16_t i, j;
- 
+
   for(j=0; j<256; j++) {
     for(i=0; i<strip.numPixels(); i++) {
       strip.setPixelColor(i, Wheel((i+j) & 255));

  if (0<Serial.available()) {
    String command = Serial.readStringUntil(':');
    String argument = Serial.readStringUntil(';');
    
    // set instrument type
    // "t:[0|1];"
    if(command=="t") {

  uint32_t effect_color = multiplicateBrightness(constrainValue(e_color_r), constrainValue(e_color_g), constrainValue(e_color_b));

  switch (i_type) {

    case INSTRUMENT_TYPE_DEFAULT:
      // control divide and slit_position from iOS
      {
        float unit = (float) TOTAL_PIXELS / (float) divide;
        int unit_number = 1;
        int unit_start = 0;
        for(int i=0; i<TOTAL_PIXELS;) {
          if(i<unit*unit_number){
            if(i<unit_start+unit*slit_position) {
              strip.setPixelColor((uint16_t) i, instrument_color);
            }
            else {
              strip.setPixelColor((uint16_t) i, effect_color);
            }
            i++;
          }
          else {
            unit_number++;
            unit_start = i;
          }
        }
      }
      break;

    case INSTRUMENT_TYPE_ONESHOT:
      {
        float unit = (float) TOTAL_PIXELS/2.0;
        int unit_number = 1;
        int unit_start = 0;

        float innerunit = (float) unit*0.5; // inner unit in instrument unit
        int innerunit_number = 1;
        int innerunit_start = 0;

        bool effect_on = true;

        for(int i=0; i<TOTAL_PIXELS;) {
          if(i<unit*unit_number){
            if(i<unit_start+unit*0.5) {

              // instrument section
              // for(int j=i; j<innerunit;) {
              //   if(j<innerunit*innerunit_number){
              //     if(j<innerunit_start+innerunit*0.5) {
              //       // instrument section
              //       strip.setPixelColor((uint16_t) j, instrument_color);
              //     }
              //     else {
              //       // effect section
              //       // 交互に色付く
              //       uint32_t _color = effect_on ? effect_color : 0;
              //       strip.setPixelColor((uint16_t) j, _color);
              //       effect_on = !effect_on;
              //     }
              //     j++;
              //   }
              //   else {
              //     innerunit_number++;
              //     innerunit_start = j;
              //   }
              // }
              strip.setPixelColor((uint16_t) i, instrument_color);
            }
            else {
              // effect section
              // 交互に色付く
              uint32_t _color = effect_on ? effect_color : 0;
              strip.setPixelColor((uint16_t) i, _color);
              effect_on = !effect_on;
            }
            i++;
