You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

1.4 KiB

Claude Code Requirements for Arpeggiator

CRITICAL FUNCTIONALITY - DO NOT FORGET

Armed State System (ESSENTIAL)

  • MUST have orange "armed" state when arpeggiator is playing
  • When user clicks button during playback:
    1. Button turns ORANGE (armed)
    2. Change does NOT apply immediately
    3. Change waits until pattern end/loop completion
    4. At pattern end: orange button turns GREEN (active), previous green turns gray
  • When arpeggiator is stopped: changes apply immediately (no armed state needed)
  • This is critical for live performance - prevents jarring mid-pattern changes

Button Layout Requirements

  • NO horizontal spacing between buttons (buttons touch side-by-side)
  • Button height should be minimal but readable (16px for 12px font)
  • 12px bold font for readability
  • Green for active selection, orange for armed selection, gray for inactive

GUI Structure

  • Quadrant layout: Basic Settings (top-left), Channel Distribution (top-right), Pattern Settings (bottom-left), Timing Settings (bottom-right)
  • All buttons must be visible without scrollbars
  • Equal-sized quadrants

Implementation Notes

  • Check self.arpeggiator.is_playing before applying changes
  • Use self.arpeggiator.arm_*() methods when playing
  • Connect to self.arpeggiator.armed_state_changed signal
  • Implement update_armed_states() to handle orange→green transitions