mirror of
https://github.com/kennethreitz/pytheory.git
synced 2026-07-22 02:29:30 +00:00
91b78aa8f5
- save_midi() now exports all parts (each on its own MIDI channel), not just the default part — multi-part scores no longer export empty - from_midi() groups simultaneous notes into Chords instead of flattening polyphony into a sequence; sequential melodies left unchanged - new: `pytheory analyze song.mid` — detect key + chord timeline with Roman numerals (text/--json), reading raw MIDI events for true harmony - Score.repeat() copies the full Note (bend/articulation/lyric/_hold), no longer dropping them - Chord gains __eq__/__hash__ (by voicing) — usable in sets/dict keys - tones.py: one _require_system() guard replaces three broad try/except AttributeError blocks; clearer messages New tests: polyphony round-trip, multi-part export, melody-not-grouped, analyze-midi CLI. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>