symusic

raw JSON →
0.6.0 verified Sat May 09 auth: no python

A high performance MIDI file parser with comprehensible interface. Current version 0.6.0, actively maintained on GitHub.

pip install symusic
error ModuleNotFoundError: No module named 'symusic'
cause symusic not installed or imported incorrectly.
fix
Run 'pip install symusic' and use 'from symusic import Score'.
error AttributeError: 'Score' object has no attribute 'from_file'
cause Using deprecated API removed in 0.6.0.
fix
Replace 'Score.from_file(path)' with 'Score(path)'.
breaking symusic 0.5.0 changed the internal API and may break code using earlier versions. The Score class now uses a different initialization signature.
fix Update to 0.6.0 and adjust Score creation: Score('path') instead of deprecated Score.from_file().
gotcha The from_* methods (e.g., from_file, from_str) are deprecated as of 0.6.0. Direct constructor calls are preferred.
fix Use Score('path') or Score.from_str(data) but note the deprecation; future versions may remove them.

Load a MIDI file and inspect its tracks, ticks per beat, and time signatures.

from symusic import Score
score = Score('path/to/file.mid')
print(score.tracks, score.ticks_per_beat, score.time_signatures)
for track in score.tracks:
    print(track.name, len(track.notes))