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
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:
- Button turns ORANGE (armed)
- Change does NOT apply immediately
- Change waits until pattern end/loop completion
- 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_playingbefore applying changes - Use
self.arpeggiator.arm_*()methods when playing - Connect to
self.arpeggiator.armed_state_changedsignal - Implement
update_armed_states()to handle orange→green transitions