From 8badade3396d6f920dedd12ec006e60561668748 Mon Sep 17 00:00:00 2001 From: melancholytron Date: Wed, 10 Sep 2025 09:08:54 -0500 Subject: [PATCH] Fix velocity display and GUI sync issues on startup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Set default velocity to 20 in arpeggiator engine to match GUI slider - Fix velocity slider override logic to respect checkbox state during GUI updates - Add GUI sync call after loading first preset on startup - Ensure velocity slider shows 20 and stays at 20 when override is checked - Fix desync between engine settings and GUI display on application launch 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- core/arpeggiator_engine.py | 2 +- gui/arpeggiator_controls.py | 5 ++++- gui/preset_controls.py | 4 ++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/core/arpeggiator_engine.py b/core/arpeggiator_engine.py index ed52054..49573df 100644 --- a/core/arpeggiator_engine.py +++ b/core/arpeggiator_engine.py @@ -83,7 +83,7 @@ class ArpeggiatorEngine(QObject): self.note_speed = "1/8" # Note duration self.gate = 1.0 # Note length as fraction of step (0.1-2.0) self.swing = 0.0 # Swing amount (-100% to +100%) - self.velocity = 80 # Base velocity + self.velocity = 20 # Base velocity self.scale_note_start = 0 # Starting scale note index (0 = root) # Channel distribution settings diff --git a/gui/arpeggiator_controls.py b/gui/arpeggiator_controls.py index bfbe6ca..d7d8769 100644 --- a/gui/arpeggiator_controls.py +++ b/gui/arpeggiator_controls.py @@ -1201,7 +1201,10 @@ class ArpeggiatorControls(QWidget): if hasattr(self, 'swing_slider'): self.swing_slider.setValue(int(self.arpeggiator.swing * 100)) if hasattr(self, 'velocity_slider'): - self.velocity_slider.setValue(self.arpeggiator.velocity) + # Only update velocity slider if not overridden + if not self.parameter_overrides.get('velocity', False): + self.velocity_slider.setValue(self.arpeggiator.velocity) + self.velocity_label.setText(str(self.arpeggiator.velocity)) if hasattr(self, 'octave_range_combo'): self.octave_range_combo.setCurrentIndex(self.arpeggiator.octave_range - 1) if hasattr(self, 'tempo_spin'): diff --git a/gui/preset_controls.py b/gui/preset_controls.py index 2b29507..0820406 100644 --- a/gui/preset_controls.py +++ b/gui/preset_controls.py @@ -761,6 +761,10 @@ class PresetControls(QWidget): # Apply immediately on startup (not armed) self.apply_preset_settings(self.presets[preset_name]) self.preset_list.setCurrentItem(first_item) + + # Sync GUI controls to match the loaded preset values + if self.arpeggiator_controls and hasattr(self.arpeggiator_controls, 'update_gui_from_engine'): + self.arpeggiator_controls.update_gui_from_engine() def save_preset_to_file(self, name: str, preset_data: dict): """Save a preset to file"""