architecture demo
Rhythm first. Lock it. Then pitch and chords.
OSMD draws the MusicXML reference. VexFlow draws the live builders. Accept the rhythm before melody and harmony can touch it.
01 · reference
Loaded from MusicXML
Read-only existing document. This panel is unrelated to the builders below — it only shows the OSMD side of the package.
02 · rhythm
Durations, rests, and modifiers
Notes and rests are separate. Keys: 1 2 4 5 6 durations, shift+number or r for rests, . dotted, t triplet, - tie, backspace, enter to accept.
03 · melody + harmony
Pitches and chords on locked slots
← → move the cursor. C–B pitch a note; shift+letter names a chord. # − n accidentals, m / 7 / j for quality. Harmony is a nametag on the current slot — slash bass is letter plus accidental only.
Accept a rhythm above first — that lock keeps the skeleton from changing while you pitch it.
harmony on this slot
Chord: —
changelog
Keep a Changelog · SemVer
pnpm lint:semver fails if this file and package.json disagree.