ScoreScript playground
Type the music the way it prints — what comes before a note prints before it. Every note is a node.
Rust core · WebAssembly · Bravura glyphs baked in · zero dependencies · the one-page card
Source
Staff
Loading the engine…
No diagnostics yet.
What the parser saw
The one-page card (v0.3, the node model)
closers [tempo · expression · text] (articulations) duration NODE [expression · text] openers
< > ~ :| *"Andante" (dolce) "text" (>) (.) (..) 4 8 16 Eb' (p) (mf) ((p)) < > ~ |:
(-) (^) (!) 4. 2.. r
1/6 [Eb G Bb]
- Every note is a node. What prints before the note is written before it; what prints after, after. Before = above the staff, after = below.
- Duration comes first, as a number (
4Eb,8.F) or a lowercase letter (qEb); it sticks for the rest of the line. - Octave: a number after the pitch is explicit (
E5); none means the nearest octave to the previous note;'pushes up,,down. - Chords are the only thing in brackets:
2[Eb G Bb]. Marks are the only thing in parentheses:(>.)articulations,(p)dynamics,((p))editorial. - Connectors draw the figure: trailing
Eb<opens a crescendo, leading<Dcloses it at D;~is a slur, or a tie when the pitch repeats. - The grid: declare parts once (
part flute: Flute 1, instrument first — duplicates are numbered for you), then system blocks{ m1-10:with one row per part and|between bars. &completes the dotted note before it:q.Eb &G. Brackets also hold changes and boxes:[clef bass][meter 3/4][instrument piccolo][[A]][[12]].- Lines: bare lines are measures,
|splits one line into several,m1:labels are optional. A fullscore "…" { }needsscorescript 0.3on top.