       display_changed[2] = true;
     }
 
+    // update clock from input
+    if(ext_clock_received)
+    {
+      bool clock_selected = (main_selected == 1) && (top_selected == 4);
+      display->fill_rect(109, 12, 17, 7, clock_selected ? DUINO_SSD1306::White : DUINO_SSD1306::Black);
+      display_clock(109, 12, params.vals.clock_bpm, clock_selected ? DUINO_SSD1306::Black : DUINO_SSD1306::White);
+      display_changed[1] = true;
+      ext_clock_received = false;
+    }
+
     // update display
     if(display_changed[0])
     {

    {
      display->display(0, 127, display_changed[4] ? 6 : 7, 7);
    }
  }

 private:


ENCODER_ISR(interface->encoder);

void clock_ext_isr()
{
  if(!seq_values.clock_ext)
  {
    interface->set_clock_ext();
  }

  clock_isr();
}

void clock_isr()
{
  clock_gate = seq_values.clock_ext ? function->gt_read_debounce(GT3) : !clock_gate;
