ScoreScript Language wiki

Slurs, ties, and lines

Two endpoints make one slur

A trailing connector opens at its note. A leading connector closes at its note. Leave interior notes unmarked.

ScoreScript sourceDownload source
4D5~ E ~F G
Generated notationNotation for the preceding Slurs, ties, and lines example
Canonical spelling
4D5~ E ~F G

This is one slur from D through E to F. D~ E~ F means adjacent spans, not one three-note slur. A lone trailing ~ can connect to the next node.

A leading connector and the note's own marks may be written in either order — (.)~F and ~(.)F both end the slur at F and put the staccato on F, and the same goes for < and > — and format writes the connector first. What a connector belongs to is decided by what it touches, never by the order, so it is always written against the note it closes.

ScoreScript sourceDownload source
4D5~ E ~(.)F G
Generated notationNotation for the preceding Slurs, ties, and lines example
Canonical spelling
4D5~ E ~(.)F G

Ties require adjacent matching pitches

When adjacent endpoint notes have the same pitch, ~ makes a tie.

ScoreScript sourceDownload source
2C5~ C | 1D
Generated notationNotation for the preceding Slurs, ties, and lines example
Canonical spelling
2C5~ C | 1D

A later matching pitch with sounding notes between the endpoints is a slur, not a tie. For a chord, put a member tie on the member that continues:

ScoreScript sourceDownload source
2[C5~ E G] [C F A]
Generated notationNotation for the preceding Slurs, ties, and lines example
Canonical spelling
2[C5~ E G] [C F A]

A trailing ~~ ties forward and opens a slur at the same node:

ScoreScript sourceDownload source
4C5~~ C D ~E
Generated notationNotation for the preceding Slurs, ties, and lines example
Canonical spelling
4C5~~ C D ~E

The first two C notes tie; the whole C-to-E passage has one slur.

Which side a slur or tie takes

The engraver decides by default: away from the stems in a single voice, above when the stems are mixed, and in a bar with two sounding voices the upper voice's spans go above and the lower voice's below, whatever the stems do.

To say it yourself, write the side on the sigil that OPENS the span. ~^ arches it over the notes and ~_ hangs it under them:

ScoreScript sourceDownload source
4C5~^ D E ~F
Generated notationNotation for the preceding Slurs, ties, and lines example
Canonical spelling
4C5~^ D E ~F
ScoreScript sourceDownload source
4C5~_ D E ~F
Generated notationNotation for the preceding Slurs, ties, and lines example
Canonical spelling
4C5~_ D E ~F

The marker rides the opening ~ only, because a span has one side; the closing ~ stays bare. It composes with the tie-forward ~~:

ScoreScript sourceDownload source
4C5~~^ C D ~E
Generated notationNotation for the preceding Slurs, ties, and lines example
Canonical spelling
4C5~~^ C D ~E

A tie takes the same marker, on the node it leaves:

ScoreScript sourceDownload source
2C5~_ C | 1D
Generated notationNotation for the preceding Slurs, ties, and lines example
Canonical spelling
2C5~_ C | 1D

format writes the marker only where you gave one, so a file never fills up with sides the engraver would have chosen anyway.

Hairpins

< is crescendo and > diminuendo. Open after the first node and close before the destination. A destination can also open the next hairpin.

ScoreScript sourceDownload source
4C5(p)< D <E(mf)> >F(p)
Generated notationNotation for the preceding Slurs, ties, and lines example
Canonical spelling
4C5(p)< D <E(mf)> >F(p)

An open hairpin can end at the next dynamic. If it has no destination, the current engine warns and leaves a short local mark; it does not establish an intentional crescendo through the rest of the piece. Write the intended end explicitly for a finished score.

To end after the final note's duration, attach the closer to a written barline:

ScoreScript sourceDownload source
4B4< C D E <|
Generated notationNotation for the preceding Slurs, ties, and lines example
Canonical spelling
4B4< C D E <|

This opens on B and ends at the barline. 4B4< C D <E ends at E's onset. 4B4 < and < | are detached and invalid. E<| still opens on E; the left attachment does not become a closer.

Writing (cresc.) or (dim.) prints italic expression words instead of a hairpin. Printed words and drawn connectors remain distinct through formatting and MusicXML interchange.

Glissando

A slash after a node connects it to the next node. It needs no closing slash.

ScoreScript sourceDownload source
2C5/ G'
Generated notationNotation for the preceding Slurs, ties, and lines example
Canonical spelling
2C5/ G'

Compare /8C5 4D: the leading slash makes a grace note instead.

Bracketed lines

The dots picture the continuation: [word..] opens, [..word] closes. The opener follows and touches its start node; the closer precedes and touches its end node. Position is part of the grammar, just as it is for a hairpin or slur. Detached markers and a closer after its destination are errors; formatting does not move them to another node.

A pedal or tempo line ends as its closing node begins; a trill or octave line holds through that node.

The pedal opens on C and releases as F begins, holding through E:

ScoreScript sourceDownload source
4C4[ped..] D E [..ped]F
Generated notationNotation for the preceding Slurs, ties, and lines example
Canonical spelling
4C4[ped..] D E [..ped]F

The octave lines include C through E; F is outside the span.

ScoreScript sourceDownload source
4C5[8va..] D [..8va]E F
Generated notationNotation for the preceding Slurs, ties, and lines example
Canonical spelling
4C5[8va..] D [..8va]E F
ScoreScript sourceDownload source
4C4[8vb..] D [..8vb]E F
Generated notationNotation for the preceding Slurs, ties, and lines example
Canonical spelling
4C4[8vb..] D [..8vb]E F

Pedal, octave, trill and tempo lines can also touch an explicit barline:

ScoreScript sourceDownload source
4C4[ped..] D E F [..ped]|
Generated notationNotation for the preceding Slurs, ties, and lines example
Canonical spelling
4C4[ped..] D E F [..ped]|

The release is at the bar end, including any rest completion, rather than F's attack. A closing bracket or end of file does not substitute for |. Slurs, beams and mapped note connections still require destination nodes.

The related two-octave forms are [15ma..] and [15mb..]. (loco) can close an ottava. Inspect the pitches and output when using octave lines; do not add another manual octave change to compensate for the same sign.

ScoreScript sourceDownload source
4C5[tr..] D [..tr]E F
Generated notationNotation for the preceding Slurs, ties, and lines example
Example notes (1)
  • a trill line's extension is drawn dashed; the wavy line wants Bravura's wiggle glyphs
Canonical spelling
4C5[tr..] D [..tr]E F

Tempo transitions use [rit..], [rall..], or [accel..]. Their typed endings are [..rit], [..rall], and [..accel]. [a tempo] restores the indicated tempo context.

Use [..] or [...] to close every open dotted line in this voice and any active score-wide tempo transition. One match closes quietly. Multiple matches all end here, with a warning listing them; no match produces a warning too. Other voices keep their own lines. Ties, slurs, hairpins, and mapped beams keep their own endings.

ScoreScript sourceDownload source
4C5[rit..][ped..] D [...]E F
Generated notationNotation for the preceding Slurs, ties, and lines example
Example notes (1)
  • span.multiple-closed: This bare ending closes 2 spans here: ped, rit.. Use a typed ending such as [..ped] or [..rit] to close only one kind.
Canonical spelling
4C5[rit..][ped..] D [...]E F

Here both spans end on E. The pedal releases and the ritardando reaches its arrival at E's onset. The warning names both spans. To finish only the ritardando there, write [..rit], then close the pedal later with [..ped]. Neither form requires an @ tag.

ScoreScript sourceDownload source
4C5[rit..] D E [...]F | [a tempo] 1C
Generated notationNotation for the preceding Slurs, ties, and lines example
Canonical spelling
4C5[rit..] D E [...]F | [a tempo] 1C

Glissando and plain connections

[/], [gliss] and [glissando] connect a glissando's two endpoints. [ln] and [line] connect a plain line. Put the opening after its note and its closing before the destination. An optional @number or @name goes last when several connections need distinct identities.

ScoreScript sourceDownload source
4C5[/ wavy "gliss."@1] D E [/@1]G
4C,[ln dashed "connection"] D E [ln]G
4C,[/ no-line "gliss."] D E [/]G
Generated notationNotation for the preceding Slurs, ties, and lines example
Canonical spelling
4C5[/ wavy "gliss."@1] D E [/@1]G
4C,[ln dashed "connection"] D E [ln]G
4C,[/ no-line "gliss."] D E [/]G

The opening may choose solid, dashed, dotted, wavy, or no-line. Without a choice the line is solid. no-line retains the connection and its optional quoted label while omitting the stroke. The closing can omit these choices or repeat them exactly; contradictory choices are errors. These options change appearance without changing span kind, voice ownership or time. Plain lines and glissandi continue across system breaks.

The existing span glissando and span custom-line statements use the same choices in their option group, for example auto(wavy). An arbitrary word in [word..] does not create a line; dotted instructions still name their supported musical kind.

A bracketed line can choose a side: qC5[ln dashed below] D E [ln]G. above and below also work inside a bracketed glissando instruction. The opening sets the side; the closing marker only identifies its endpoint.

MusicXML glissando imports and exports preserve the line type and caption. Plain bracket lines also preserve their style and side on import. An endpoint between attacks or on several voices without a unique target is reported; it is not silently moved to a nearby note. Hooks and arrows currently report an import loss while retaining their plain line. Separate words stay text marks. Its default is wavy, so import states that choice explicitly. A label-only glissando exports its caption as words and reports the missing connection. Plain lines export as brackets. Full collision avoidance with other annotations remains incomplete.

Automatic slur engraving

The native renderer shapes slurs around notes, beams, articulations, ties and nested slurs. Short phrases start with a shallow bow and gain depth where ink requires it. An enclosing phrase is drawn outside its inner slur, independent of the order in which the spans were written.

A system break cuts one solved curve into connected pieces, preserving its direction at the join. SVG, PDF and ScoreScript App use this same geometry. You do not need separate hand-shaped slurs for each system. This affects how the phrase is drawn; it never changes its musical endpoints or source notes.

Node connections: development study

The current development candidate experiments with [--] as a node beam. This spelling is provisional. A trailing marker opens; a leading marker closes, using the same attachment rule as other connectors:

ScoreScript sourceDownload source
meter 4/8

8C4[--] D [--]E F
Generated notationNotation for the preceding Slurs, ties, and lines example
Canonical spelling
meter 4/8

8C4[--] D [--]E F

C, D and E share a beam. F remains outside the connection. Written durations still determine the number of ribbons; the two dashes do not mean two beams. The reader first looks for the matching open span in the same voice. If there is none, one unique unnamed opening elsewhere can pair across voices or staves. It never chooses between ambiguous simultaneous destinations by source order. Add an identifier to both ends when needed: [--@1], [--@2], or [--@phrase]. Omit the @ entirely for automatic pairing; [--@] is incomplete.

Names and numbers belong to their span type, so [--@1] and [~@1] can coexist. A name may be reused after its pair closes. Spaces inside a marker are accepted; the formatter removes unnecessary spaces. A closer may precede a grace prefix: [--@1]/sD.

A cross-voice/staff beam edge selects its two endpoints; additional members need additional links. [~] / [~@phrase] explicitly connect a slur, and [/] / [/@slide] explicitly connect a glissando. These are not a new plain-line or slide-style control. The ordinary bare tilde keeps its same-pitch tie behavior. Feather and tremolo instructions are described in Rhythm.

Beam connections continue across system breaks at every written beam level. Feathered connections keep their progress across the break. The layout setting beam_continuation_length controls each continuation's length in staff spaces (default 1.5; range 0.25–6).

Individual (stem-up) and (stem-down) requests stay attached to their notes. Opposing stems can share a sloping beam when a horizontal one does not fit. The engraving style's rise and slope limits still apply.

General staff routing and qualified positional addresses remain under development. \n and \p retain their layout meaning; [>] is no longer a system-break spelling and does not yet create a bracketed diminuendo. (>) remains an accent.