Major Features:
- Add scale note selection with armed state functionality
- Fix down arpeggio patterns to be contextual and smooth
- Make octave range direction-aware (up goes higher, down goes lower)
Scale Note Selection:
- Added scale notes display showing current scale notes as buttons
- Implemented armed state for scale note changes during playback
- Scale notes update dynamically when root note or scale changes
- Added scale_note_start property to engine for starting position
Fixed Arpeggio Patterns:
- Rewrote scale generation to be direction-aware
- Down patterns now continue downward instead of looping back up
- Up patterns go higher from starting note, down patterns go lower
- Fixed octave wrapping for all starting scale degrees
Volume Pattern Improvements:
- Added multi-bar swell patterns (1-16 bar swells)
- Added accent patterns (every 2nd-8th note)
- Replaced random_sparkle with simple random pattern
- Synchronized volume patterns with arpeggiator steps
GUI Enhancements:
- Increased control heights for better usability
- Added scale notes section with dynamic button generation
- Made dropdown menus taller for readability
- Fixed GUI updates when armed changes are applied
Technical Improvements:
- Added settings_changed signal for GUI synchronization
- Improved armed state system with comprehensive change detection
- Fixed preset system to save/load all settings including delays
- Enhanced pattern completion detection for single-note patterns
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Volume Pattern Improvements:
- Volume patterns now use pattern length as "bar length" for timing
- Swell pattern: completes one full cycle per pattern length
- Breathing pattern: completes two breath cycles per pattern length
- Build pattern: builds over pattern length, fades over 2x pattern length
- Fade pattern: fades from max to min over pattern length
- Pulse pattern: creates 4 pulses per pattern length
- Alternating pattern: alternates based on pattern step position
- All patterns now scale dynamically with user-selected pattern length
Delay Timing Enhancements:
- Add triplet note divisions: 1/32T, 1/16T, 1/8T, 1/4T, 1/2T
- Triplet calculations: 1/4T = 1/6 beat, 1/8T = 1/12 beat, etc.
- Arrange delay timing buttons in 2-row grid layout for better fit
- Smaller button size (35px) with 9px font for compact display
- Support for more complex rhythmic delay patterns
Technical Implementation:
- Add set_bar_length() method to volume pattern engine
- Pattern length changes automatically update volume engine bar length
- Mathematical timing calculations adjusted for bar-relative patterns
- Triplet note values added to NOTE_SPEEDS dictionary
- Grid layout for delay timing controls with proper spacing
Result: Volume patterns now properly sync to the selected pattern length,
creating musically coherent lighting that matches the arpeggio structure.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>