ScoreScript Language wiki

Rhythm and silence

Duration comes first

ValueMeaningAccepted letter
1Whole notew
2Half noteh
4Quarter noteq
8Eighth notee
16Sixteenth notes
32Thirty-second notess (t also accepted)
64Sixty-fourth notesss
128Hundred-twenty-eighth notessss

Write 8C5, not a duration after the pitch. The last duration stays in force on a music line: 8C D E F is four eighths. State the opening duration of each new row. A continued row retains it across |; a separately addressed measure starts its duration context again. Octave inference is separate and can carry across that boundary.

Each extra s halves the duration: sC, ssC, sssC. The same prefixes work on rests, chords, grace notes and beam counts.

Numeric and letter durations are both supported. Prefer a consistent spelling within a file; the formatter can normalize to either. Mixing them is accepted, but does not cancel inheritance or relax the meter. 4G and qG both mean a quarter-note G; 4G A B C and qG A B C both describe four quarters. The difference is spelling, not rhythm.

For example, 4G D E Eb | hD F r | is overfull in 4/4: the first bar has four quarters, but hD makes D, F, and the inline rest half-note values. That second bar totals six quarter beats. If half D, quarter F, quarter rest is intended, state the new quarter duration explicitly:

ScoreScript sourceDownload source
4G4 D E Eb | 2D 4F r
Generated notationNotation for the preceding Rhythm and silence example
Canonical spelling
4G4 D E Eb | 2D 4F r

This is one possible correction, not a rule for guessing intended rhythms. A literal ? after the music is not a comment; use // for commentary.

ScoreScript sourceDownload source
8C5 D E F 4G G | 2C, 4r 8D E
Generated notationNotation for the preceding Rhythm and silence example
Canonical spelling
8C5 D E F 4G G | 2C, 4r 8D E

Enter repeated notes quickly

Put x and a count after a pitch: Fx4 enters four Fs using the current note value (quarters when no value has been stated). sFx14 and 16Fx14 enter fourteen sixteenth-note Fs. 4Fx14 means fourteen quarters, not sixteenths. An octave still comes before the count: sF5x14 repeats F5. Double-sharps remain ##, as in sF##4x4.

ScoreScript sourceDownload source
meter 4/4


m1-2 {
  4F4 F F F | 16F F F F F F F F F F F F F F 8r
}
Generated notationNotation for the preceding Rhythm and silence example
Canonical spelling
meter 4/4


m1-2 {
  4F4 F F F | 16F F F F F F F F F F F F F F 8r
}

Format expands this input abbreviation into ordinary notes. Each occurrence then has its own editable spelling; Format does not compress existing music into counts. Marks attached to the repeated note are repeated with it; an octave shift selects its pitch once. Tempo prefixes apply once at the start. Counts run from 1 to 1024. Expand first before assigning individual note names or using the complementary & value. Bar lengths still apply: split a run across explicit barlines when needed; fourteen sixteenths leave an eighth rest in 4/4. Counts do not add hidden barlines.

Dots and exact fractions

Put dots on the duration: 4.C5 is a dotted quarter and 4..C5 a double-dotted quarter. 1/6C5 is exactly one sixth of a whole note.

& supplies the complementary shorter duration after a dotted value: a dotted quarter plus &D gives a dotted quarter and an eighth, totaling a half note. The complement does not replace the inherited duration: in 4.C5 &D E, E is another dotted quarter. State its duration when a different value is intended.

ScoreScript sourceDownload source
4.C5 &D 2E | 4..C 16D 2E
Generated notationNotation for the preceding Rhythm and silence example
Canonical spelling
4.C5 &D 2E | 4..C 16D 2E

Tuplets

The count is a prefix glued to the brace, exactly as a duration is a prefix glued to a pitch: 3{8C D E} is three eighths in the time of two. Write the ratio when the count does not imply it, as in 5:3{8C D E F G}: five eighths occupy three eighth-note units. The older {3: 8C D E} is still read and is rewritten by formatting.

ScoreScript sourceDownload source
3{8C5 D E} 4F G A
Generated notationNotation for the preceding Rhythm and silence example
Canonical spelling
3{8C5 D E} 4F G A

Repeat the brace, not the count: 3{8C5 D E} {F G A} is two triplets. 2{…} changes to duplets; a newly stated ratio replaces the old one. The mode belongs to the rhythmic row, including its barlines and continued rows. A fresh measure label or reader must state its first count. Nested groups have their own mode; they do not change the outer group's next count. The same shorthand works in a pitch-free rhythm: rhythm {3{e3} {e3} q1}.

The displayed tuplet bracket and rhythmic scaling refer to the same group. Do not separately shorten the notes to compensate for the ratio.

A mark before a tuplet has no note to attach to: (>)2:3{8C D} answers syntax.mark-before-tuplet at the mark, and the tuplet is read as if the mark were not there, so the bar still counts. Write the mark inside the brace, on the first note: 2:3{(>)8C D}.

A group a single beam already covers prints its NUMBER and no bracket — the beam has already said the notes belong together, and a bracket over it is a second lid. bracket-show prints one anyway and bracket-hide never does; bracket-auto is the default and means "unless the beam did it". The options stand between the count and the brace, exactly where the long form tuplet 5:4(bracket-hide) { … } keeps them; the long form is for a group that needs a NAME. number-none prints no number. The whole contract is docs/ENGINE-TUPLETS.md.

ScoreScript sourceDownload source
5(bracket-hide){16C5 D E F G} 5:3(number-none){8A, B C D E} 4.F
Generated notationNotation for the preceding Rhythm and silence example
Canonical spelling
5(bracket-hide){16C5 D E F G} 5:3(number-none){8A, B C D E} 4.F

A rest ends a beam, so a group with a rest inside it keeps its bracket. To carry the beam over the rest, write a ~ touching it — and the SIDE you write it on says which beam: ~r takes the beam that reaches the rest, r~ the beam that leaves it, and ~r~ both. Inside a beat all three draw the same thing; where the beam grouping puts a boundary at the rest they are three different beams, which is why the side is written and not guessed. The rest then rides under the beam — or, when the group opens or closes with it, the beam reaches over it — and one beam covers the whole group, so the number alone prints. Brandon's quintuplet that opens with a sixteenth rest is 5{sr~ F#4 A C#5 D#}.

ScoreScript sourceDownload source
5{16r~ F#4 A C# D#} {C D ~r~ F G} 4A, B
Generated notationNotation for the preceding Rhythm and silence example
Canonical spelling
5{16r~ F#4 A C# D#} {C D ~r~ F G} 4A, B

Only an eighth rest or shorter can sit under a beam; a quarter rest has no beam level to be drawn on. A ~ on a side with nothing beamable is refused and told which spelling would have worked, rather than quietly moved to the other side. ((beam-continue), the word this replaced on 2026-09-18, could not say which side. Writing it now answers with ~r~, which is what it used to mean.)

An inherited eighth after the group is an ordinary eighth, not a tuplet eighth: 3{8C D E} F leaves F at one eighth. The example above explicitly switches to quarters with 4F.

Rests and incomplete bars

4r is a quarter rest and 2r a half rest. A lone bare r fills one whole measure in the current meter. r8 means eight measures of rest, while 8r means one eighth rest. The order changes the meaning.

SourceReading
4C D E rThree quarter notes and a quarter rest
2C D | rTwo half notes, then a full-bar rest
r C D EOverfull: the opening bare rest claims a whole bar
4r C D EA quarter rest, then three quarter notes

Bare r does not mean “fill the remaining beats.” Inside a musical row it inherits the established duration; standing alone in its bar it means a full-bar rest, even after a bar of halves or eighths.

ScoreScript sourceDownload source
4C5 D 2r
r | r2 | 1C
Generated notationNotation for the preceding Rhythm and silence example
Canonical spelling
4C5 D 2r
r | r2 | 1C

A short ordinary bar is completed with rests and diagnosed. A pickup labeled m0 { ... } stays short. An overfull bar is an error; a barline does not discard the extra duration. Omitted ranges in a part can represent silence; see structure.

Pickups

m0 is the pickup before the first full measure, m1. Write its actual notes and rests; it stays short instead of being completed to the meter. An eighth-note pickup in 4/4 is the final eighth before m1's downbeat. If a pickup begins with silence, state that rest's duration, such as 8r. A lone bare r means a whole-bar rest, not an inferred pickup length. Automatic pickup beams use the tail of the full meter: three eighths in 4/4 are one plus two, and four eighths in 6/8 are one plus three. An initial rest consumes its own position in that count. Explicit beam groups and attached beam endpoints keep their authored extent; ordinary partial bars still count from their start.

ScoreScript sourceDownload source
scorescript 0.3
score "An eighth before the downbeat" {
  meter 4/4
  parts { flute }
  flute {
    m0 { 8G4 }
    m1 { 1C5 }
  }
}
Generated notationNotation for the preceding Rhythm and silence example
Canonical spelling
scorescript 0.3
score "An eighth before the downbeat" {
  meter 4/4

  parts {
    flute
  }

  flute {
    m0-1 {
      8G4 | 1C
    }
  }
}

The pickup does not make the last bar short automatically. Declare a closing partial when it is intended to complement the pickup, as in the next example.

Explicit partial bars

[partial 3/4] declares the actual length of this bar without changing its printed meter. It is useful for a closing bar that complements a pickup or an intentional short bar inside a study. The duration must be positive and shorter than the active meter. Every player shares that duration; short voices complete with rests only to that point. The following bar uses its full meter again.

ScoreScript sourceDownload source
scorescript 0.3
score "Pickup and closing bar" {
  meter 4/4

  partial {m2 3/4}

  parts {
    flute
  }

  flute {
    m0-2 {
      4G4 | 1C | 2.C
    }
  }
}
Generated notationNotation for the preceding Rhythm and silence example
Canonical spelling
scorescript 0.3
score "Pickup and closing bar" {
  meter 4/4

  partial {m2 3/4}

  parts {
    flute
  }

  flute {
    m0-2 {
      4G4 | 1C | 2.C
    }
  }
}

The map above, at m2 { partial 3/4 }, and [partial 3/4] inside m2 state the same score-wide fact. A part header or a part-local at block cannot give one player a different bar length. Under meter none, no partial declaration is needed: the source's divisions already keep their own durations.

Grace notes

A slash before the duration marks a grace note, which takes no measured time from the bar. Multiple grace notes may precede the main note. The grace's duration can still change the inherited note value. State the first main note's duration explicitly when it differs, as 4C does here.

ScoreScript sourceDownload source
/8D5 4C D E F
Generated notationNotation for the preceding Rhythm and silence example
Canonical spelling
/8D5 4C D E F

The slash before a note is different from a slash after it: the latter is a glissando connector.

There are three graces, and the page tells them apart exactly as the ear does. The slash is the acciaccatura, the crushed one: it sounds just before the beat, out of the time in front of it, the note it leans on keeps its own beat and its full length, and the slash through the flag is the only thing that prints a slash — /8D5 and (grace-acciaccatura)8D5 are two spellings of one note. (grace-appoggiatura) before the note writes the appoggiatura, which leans on the beat instead and is paid for by the note it decorates — half of a plain value, a third of a dotted one — so that note starts later and is shorter by as much; it prints unslashed, which is how a reader knows it stands on the beat. (grace-unmeasured) marks a run squeezed in before the beat, sharing one moment between however many notes are in it rather than giving each a full one; a run of two or more prints beamed as one group, unslashed, the way an engraver writes a handful of notes crowded in front of a beat, and a single unmeasured grace keeps its flag. None of them changes how long the bar is; what changes is whose time the ornament spends.

The three readings agree on every door (2026-09-18). Until then the page slashed every grace, so a written appoggiatura LOOKED crushed while it SOUNDED on the beat, and MusicXML said appoggiatura even for the slash. MusicXML spells the acciaccatura <grace slash="yes"/> and both other kinds the unslashed <grace/>, because it has no third spelling — so a run comes back as a run (two or more unslashed graces before one note), and the one reading the file cannot carry is a SINGLE unmeasured grace, which comes home leaning.

A percussion flam is the same slash applied to a stroke: /L R is a left grace into a struck right, and it sounds as two strikes with the grace first. See percussion.

Beam patterns across measures

A count measures time in the preceding duration unit. Units stay in force among siblings; a child inherits its parent's unit. Changing a unit inside one child leaves its parent's following siblings alone.

ScoreScript sourceDownload source
meter 4/4

[beams s4{2+2}+s4{2+2}+e2+2{2}] 16C4 D E F G A B C D C B A G F E D
Generated notationNotation for the preceding Rhythm and silence example
Canonical spelling
meter 4/4

[beams s4{2+2}+s4{2+2}+e2+2{2}] 16C4 D E F G A B C D C B A G F E D

Here the first two groups last four sixteenths each; the last two last two eighths each. Expanded children fill their parent exactly. A short child list repeats its last group; pair shorthand finishes an odd total with three. + at the outer level cuts all beams. Each pair of nested braces moves that cut one beam deeper. Curly subdivisions such as 4{2+2} are the formatter's spelling: braces collect a count's children, while square brackets identify an inline instruction. A square child container is an error; use 8{4+4}, never 8[4+4].

An instruction around a passage already stands outside its music, so it needs no extra square wrapper. The music brace is separated from the pattern and opens on that same physical line:

ScoreScript sourceDownload source
meter 1/8

beams {m1-2 ss8{8{4+4}}}

32C4 D E F | G F E D
Generated notationNotation for the preceding Rhythm and silence example
Canonical spelling
meter 1/8

beams {m1-2 ss8{8{4+4}}}

32C4 D E F | G F E D

The same pattern can live in the top map as beams {m1-2 ss8{8{4+4}}}, or in at m1-2 { beams ss8{8{4+4}} }. A range supplies its own complete-pattern meaning; a bare unaddressed header remains the meter's default grouping.

Wrap a continuing row to give it one complete pattern:

ScoreScript sourceDownload source
meter 2/4

beams {m1-2 s16{8|m2+8}}

16C4 D E F G A B C | D, E F G A B C D
Generated notationNotation for the preceding Rhythm and silence example
Canonical spelling
meter 2/4

beams {m1-2 s16{8|m2+8}}

16C4 D E F G A B C | D, E F G A B C D

The primary beam crosses the barline; the second beam divides there. |m2 checks the start of measure 2 without adding a cut. Remove it and the music is identical. s16{16{8+8}} moves the division to the third beam; use thirty-seconds (ss) or shorter notes to see that third beam.

The same control can stand above the music:

ScoreScript sourceDownload source
meter 2/4

beams {m1-2 s16{8|m2+8}}


m1-2 {
  16C4 D E F G A B C | D, E F G A B C D
}
Generated notationNotation for the preceding Rhythm and silence example
Canonical spelling
meter 2/4

beams {m1-2 s16{8|m2+8}}


m1-2 {
  16C4 D E F G A B C | D, E F G A B C D
}

Or place it in at m1-2 { beams s16{8+8} }. A complete pattern must fill its range exactly, including meter changes and partial bars. A pattern on a part controls that player's measures; one at score level applies to every player. Nested ranges can override a smaller passage. Two crossing ranges at the same scope are an error.

For per-bar control, ~ is written on both sides. Closed child lists stop the deeper beams at the barline:

ScoreScript sourceDownload source
meter 2/4

[beams s8{8}~] 16C4 D E F G A B C | [beams ~s8{8}] D, E F G A B C D
Generated notationNotation for the preceding Rhythm and silence example
Canonical spelling
meter 2/4

[beams s8{8}~] 16C4 D E F G A B C | [beams ~s8{8}] D, E F G A B C D

A full-range pattern is often easier to read because its nested boundaries show the continuation directly. maps=top extracts inline beam and meter controls into maps. These forms describe the same timing and beam divisions; choose the one that keeps the music easiest to read.

Independent voice maps

A voice qualifier also works inside an inline instruction: [beams v2 s8] addresses voice 2 of this part, even when placed in voice 1's row. Without a qualifier, an inline instruction belongs to its own voice. Formatting between inline and top maps keeps that target.

Inside a part, name the voice after the measure address:

ScoreScript sourceDownload source
meter 4/8

parts {
  pno
}

pno treble {
  beams {m1 v1 s8{2}, m1 v2 s8{4}}

  m1 {
    v1 [ 16C5 D E F G A B C ]
    v2 [ 16C4 B A G F E D C ]
  }
}

pno bass {
}
Generated notationNotation for the preceding Rhythm and silence example
Canonical spelling
meter 4/8

parts {
  pno
}

pno treble {
  beams {m1 v1 s8{2}, m1 v2 s8{4}}

  m1 {
    v1 [ 16C5 D E F G A B C ]
    v2 [ 16C4 B A G F E D C ]
  }
}

pno bass {
}

at m1 { beams v2 s8{4} } is the equivalent addressed form. A range such as m1-2 v2 s16{8+8} supplies one complete pattern for that voice across both bars. Score maps supply defaults, part maps refine them, and a voice's inline instructions take precedence. Extracting to top maps retains the voice name.

For a beam between particular notes, a part can also declare span beam phrase m1:0 m1:q auto. Both offsets must name note attacks. feather-grow and feather-shrink select the corresponding feather shape. These statements use the same membership rules as bracketed node connectors.

Filling a subdivision

A short child list repeats its last group to fill the containing count:

ScoreScript sourceDownload source
meter 4/8

[beams s8{2}] 16C5 D E F G A B C
Generated notationNotation for the preceding Rhythm and silence example
Canonical spelling
meter 4/8

[beams s8{2}] 16C5 D E F G A B C

8{2} means 8{2+2+2+2}. 7{2} means 7{2+2+3}; 8{3+2} means 8{3+2+3}. A complete explicit list retains every authored boundary. Counts follow their duration prefix, not the number of notes. A finer or shorter final group can be stated explicitly. The reader refuses to clip a nested subdivision or invent a fractional count in its declared unit.

Feathered beams

The development candidate uses [--<] to spread the secondary beams toward the end and [-->] to converge them. The primary beam stays continuous.

ScoreScript sourceDownload source
meter 4/8

16C5[--<] D E F G F E [--<]D
Generated notationNotation for the preceding Rhythm and silence example
Canonical spelling
meter 4/8

16C5[--<] D E F G F E [--<]D

As with other node connections, the trailing instruction opens the span and the leading instruction closes it. Duration letters determine beam depth. Connected beams retain their continuing levels at a system break, including one-note fragments. Feathered beams continue the same widening or narrowing through each system; the shape does not restart at the left margin.

Feathering changes the printed spacing, preserving the authored note times. Use explicit durations or the existing tempo controls for playback changes. These forms are under visual review with the node-mapping syntax.

Two-note and chord tremolos

[trem s] alternates its two endpoints at a sixteenth-note rate. tremolo is the long spelling. The rate uses ordinary duration letters, including ss, sss and deeper repeated s values.

ScoreScript sourceDownload source
meter 4/4

2[C5 E G][trem ss] [trem ss][D F A] C
Generated notationNotation for the preceding Rhythm and silence example
Canonical spelling
meter 4/4

2[C5 E G][trem ss] [trem ss][D F A] C

The two half-note endpoints together occupy one half-note duration. Their chords alternate as complete chords; the following half note starts on beat three. Both endpoints must display the same value and timing ratio. [trem free ss] uses unmeasured notation with an explicit thirty-second-rate playback approximation. It does not claim an exact performance of free tremolo.

Pairs use consecutive half-duration endpoints in one measure, including flagged values, dots and matching tuplet scaling. The endpoints may belong to different voices or staves. Align the second endpoint immediately after the first using ordinary rests or skips in each row. Each endpoint keeps its own part, voice, pitches and performance expression. Unique cross-staff pairs need no identifier; an optional @name disambiguates several open pairs.

The written flags become attached beams; additional tremolo strokes sit between the stems. Invalid or overlapping-time pairs receive diagnostics. Playback is bounded to 4096 attacks per pair and refuses an unrepresentable rate.

Measured pairs preserve their written values, chords and timing through MusicXML export and import, including unique pairs across voices or staves of one instrument. MusicXML limits additional tremolo strokes to eight and written note types to 1024ths. Unmeasured pairs are reported as an export limitation because MusicXML has no combined paired/unmeasured type. MusicXML has no identifier for a paired tremolo. Overlapping cross-voice or cross-staff pairs at the same rate therefore report an export limitation; independent pairs staying within their own voices remain supported. Pairs between separate instruments also report the format boundary. These limits do not restrict native ScoreScript notation or named pairings.

Two grace prefixes

/eG is an acciaccatura; /-eG is an appoggiatura. Keep the prefix touching the note. The long (grace-acciaccatura) and (grace-appoggiatura) marks also remain available. Both are grace notes outside the bar's counted duration; the appoggiatura borrows from the following principal note on its beat. A connected acciaccatura group receives one slash through its beam; an appoggiatura-only group receives none. Explicitly connected grace groups keep the normal upward-stem default unless you request another direction.

A zero-duration change does not turn a lone r into a short rest. For example, [clef bass] r still fills the bar, even after a row of eighth notes. Write 8r when the rest itself must last an eighth note.

A direction written on its own line before music does not add a rest bar. This also holds in a fragment or an unlabelled part body:

ScoreScript sourceDownload source
parts { fl }
fl {
  [tempo Andante]
  1C5 | 1D5
}
Generated notationNotation for the preceding Rhythm and silence example
Canonical spelling
parts {
  fl
}

fl {
  m1-2 {
    [tempo Andante] 1C5 | D
  }
}

The C begins the first bar. Write r | when an opening silent bar is intended.