       gate_time_ = 0;
       release_time_ = 0;
       retrigger_ = false;
-      cached_params_ = widget_save_->params.vals;
+
+      if (update_cached_)
+      {
+        cached_params_ = widget_save_->params.vals;
+        update_cached_ = false;
+      }
     }
 
     if (gate_time_)

      if(widget_save_->params.vals.level[p] != level_last)
      {
        widget_save_->mark_changed();
        widget_save_->display();
        display_plr(p);
        display_envelope();

    if (widget_save_->params.vals.loop != loop_last)
    {
      widget_save_->mark_changed();
      update_cached_ = true;
      widget_save_->display();
      display_loop();
    }
