You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
refactor: Improve passaggio calculation and dissonance detection context awareness
Enhance music theory utilities with better context-sensitive behavior:
Passaggio calculation:
- Add vocal_low and vocal_high fields to TessituraRange struct
- Use dynamic passaggio calculation based on actual vocal range instead of
fixed zones (isInPassaggioRange replaces isInPassaggio)
- Update getComfortScore() and nearestChordToneWithinInterval() to use
dynamic calculation
Dissonance detection:
- Add simultaneous parameter to isDissonantIntervalWithContext()
- Major 2nd (2 semitones) is now only dissonant for vertical intervals
(simultaneous notes), not for melodic/horizontal intervals where it
represents a natural scale step
Chord tension expansion:
- iii minor chord now includes b13th as available tension (natural 13th
from scale = minor 6th from root)
Bass pattern selection:
- Extract selectPatternWithPolicyCore() template function to eliminate
code duplication between selectPatternWithPolicy() and
selectPatternWithPolicyForVocal()
MIDI writer:
- Remove debug assertions for meta text length (silent truncation is
acceptable behavior for production)
Tests:
- Update all TessituraRange initializations to include vocal range fields
0 commit comments