cgcardona / muse public
feat music main #81 / 100

feat(music): 9 new semantic commands — version control that understands music

Add a full suite of music-domain CLI commands that are structurally impossible in Git — treating MIDI files as typed, content-addressed graphs of note events rather than binary blobs.

New shared helper: - muse/plugins/music/_query.py: NoteInfo, load_track(), load_track_from_workdir(), key_signature_guess(), detect_chord(), notes_by_bar(), notes_to_midi_bytes(), walk_commits_for_track()

New analysis commands (read-only): - muse notes: Every note as musical notation (pitch, beat, duration, velocity) - muse note-log: Note-level commit history — which notes changed in each commit - muse note-blame: Per-bar attribution — which commit introduced these notes? - muse harmony: Chord analysis + Krumhansl-Schmuckler key detection - muse piano-roll: ASCII piano roll visualization with bar separators - muse note-hotspots: Bar-level churn leaderboard across all tracks - muse velocity-profile: Dynamic range, RMS, and per-dynamic-level histogram

New agent-scale commands: - muse transpose: Surgical pitch transformation — shift all notes by N semitones - muse mix: Combine notes from two MIDI tracks into a single output track

All commands support --json for pipeline integration. All pass mypy strict, typing_audit --max-any 0, 797 pytest tests green.

Add docs/demo/tour-de-force-music.md with a 9-act narrative. Update docs/demo/README.md and muse/cli/app.py to include both music and code domain commands together.

Closes #56

G Gabriel Cardona <gabriel@tellurstori.com> · 1d ago Mar 18, 2026 · 26a36470 · parent 2535fc53
oldest
newest 20%

Comments

0

No comments yet. Be the first to start the discussion.