5.1.1 Contexts explained

Contexts are arranged hierarchically:

Output definitions – blueprints for contexts

This section explains the relevance of output definitions when working with contexts. Examples for actual output definitions are given later (see Changing all contexts of the same type).

While music written in a file may refer to context types and names, contexts are created only when the music is actually being interpreted. LilyPond interprets music under control of an ‘output definition’ and may do so for several different output definitions, resulting in different output. The output definition relevant for printing music is specified using \layout.

A much simpler output definition used for producing Midi output is specified using \midi. Several other output definitions are used by LilyPond internally, like when using the part combiner (Automatic part combining) or creating music quotes (Quoting other voices).

Output definitions define the relation between contexts as well as their respective default settings. While most changes will usually be made inside of a \layout block, Midi-related settings will only have an effect when made within a \midi block.

Some settings affect several outputs: for example, if autoBeaming is turned off in some context, beams count as melismata for the purpose of matching music to lyrics as described in Automatic syllable durations. This matching is done both for printed output as well as for Midi. If changes made to autoBeaming within a context definition of a \layout block are not repeated in the corresponding \midi block, lyrics and music will get out of sync in Midi.

See also

Installed Files: ‘ly/engraver-init.ly’. ‘ly/performer-init.ly’.

Score – the master of all contexts

This is the top level notation context. No other context can contain a Score context. By default the Score context handles the administration of time signatures and makes sure that items such as clefs, time signatures, and key signatures are aligned across staves.

A Score context is instantiated implicitly when a \score {…} block is processed.

Top-level contexts – staff containers


Groups staves while adding a bracket on the left side, grouping the staves together. The bar lines of the contained staves are connected vertically. StaffGroup only consists of a collection of staves, with a bracket in front and spanning bar lines.


Identical to StaffGroup except that the bar lines of the contained staves are not connected vertically.


A group of staves, with a brace on the left side, grouping the staves together. The bar lines of the contained staves are connected vertically.


Just like GrandStaff, but with support for instrument names to the left of each system.

Intermediate-level contexts – staves


Handles clefs, bar lines, keys, accidentals. It can contain Voice contexts.


Like Staff but for printing rhythms. Pitches are ignored when engraving; the notes are printed on one line. The MIDI rendition retains pitches unchanged.


Context for generating tablature. By default lays the music expression out as a guitar tablature, printed on six lines.


Handles typesetting for percussion. Can contain DrumVoice.


Same as Staff, except that it is designed for typesetting a piece in gregorian style.


Same as Staff, except that it is designed for typesetting a piece in mensural style.

Bottom-level contexts – voices

Voice-level contexts initialise certain properties and start appropriate engravers. A bottom-level context is one without defaultchild. While it is possible to let it accept/contain subcontexts, they can only be created and entered explicitly.


Corresponds to a voice on a staff. This context handles the conversion of dynamic signs, stems, beams, super- and subscripts, slurs, ties, and rests. You have to instantiate this explicitly if you require multiple voices on the same staff.


Same as Voice, except that it is designed for typesetting a piece in gregorian style.


Same as Voice, with modifications for typesetting a piece in mensural style.


Corresponds to a voice with lyrics. Handles the printing of a single line of lyrics.


The voice context used in a percussion staff.


The context in which BassFigure objects are created from input entered in \figuremode mode.


The voice context used within a TabStaff context. Usually left to be created implicitly.


A voice context used to render notes of a reduced size, intended primarily for adding cue notes to a staff, see Formatting cue notes. Usually left to be created implicitly.


Typesets chord names.

LilyPond — Notation Reference v2.24.3 (stable-branch).