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"""