Browse Source

Fix velocity display and GUI sync issues on startup

- 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 <noreply@anthropic.com>
master
melancholytron 2 months ago
parent
commit
8badade339
  1. 2
      core/arpeggiator_engine.py
  2. 5
      gui/arpeggiator_controls.py
  3. 4
      gui/preset_controls.py

2
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

5
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'):

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

Loading…
Cancel
Save