     }
     seq_values.clock_period = bpm_to_ms(params.vals.clock_bpm);
     seq_values.clock_ext = !(bool)params.vals.clock_bpm;
-    update_clock();
+    Timer1.initialize(seq_values.clock_period * 1000);
+    Timer1.attachInterrupt(clock_isr);
 
     // draw global elements
     display->draw_char(38, 2, '0' + params.vals.stage_count, DUINO_SSD1306::White);


void clock_isr()
{
  clock_gate = function->gt_read(GT3);
  if(clock_gate)
  {
    step++;

 private:
  void update_clock()
  {
    if(seq_values.clock_ext)
    {
      Timer1.detachInterrupt();
    }
    else
    {
      Timer1.setPeriod(seq_values.clock_period * 1000);
      Timer1.attachInterrupt(clock_isr);
    }
  }
