Files
pytheory/tests
kennethreitz 91b78aa8f5 MIDI round-trip fixes, analyze song.mid, more polish; release 0.57.2
- 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>
2026-06-22 08:02:29 -04:00
..