     }
     else if(b == DUINO_Encoder::Held)
     {
-      // TODO: digital output control
+      gt = true;
+    }
+    else if(b == DUINO_Encoder::Released)
+    {
+      gt = false;
     }
 
     // handle encoder spin

      set_switch_config(gt_io ? 0b0000110000 : 0b0000001111);
    }

    gt_out(GT_ALL, gt);
  }

 private:


  virtual void loop()
  {
    if(gt3_retrigger)
    {
      if(millis() - gt3_retrigger_time > GT_INT_DISPLAY_TIME)
      {
        gt3_retrigger = false;
      }
    }
    if(gt4_retrigger)
    {
      if(millis() - gt4_retrigger_time > GT_INT_DISPLAY_TIME)
      {
        gt4_retrigger = false;
      }
    }

    cv[0] = cv_read(CI1);
    cv[1] = cv_read(CI2);
    cv[2] = cv_read(CI3);
