Staff - LilyPond program-reference
Description: LilyPond program-reference

Next: StaffGroup, Previous: Score, Up: Contexts

#### Staff

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

This context creates the following layout objects:

AccidentalSuggestion, Accidental, BarLine, BassFigureAlignmentPositioning, BassFigureAlignment, BassFigureBracket, BassFigureContinuation, BassFigureLine, BassFigure, Clef, DotColumn, InstrumentName, KeySignature, LedgerLineSpanner, NoteCollision, OctavateEight, OttavaBracket, PianoPedalBracket, RestCollision, ScriptRow, SeparatingGroupSpanner, SeparationItem, SostenutoPedalLineSpanner, SostenutoPedal, StaffSpacing, StaffSymbol, SustainPedalLineSpanner, SustainPedal, TimeSignature, UnaCordaPedalLineSpanner, UnaCordaPedal, VerticalAxisGroup and VoltaBracket.

This context sets the following properties:

- Set translator property `shortInstrumentName` to `'()`
- Set translator property `instrumentName` to `'()`
- Set translator property `ignoreFiguredBassRest` to `#t`
- Set translator property `createSpacing` to `#t`
- Set translator property `localKeySignature` to `'()`
- Set grob-property `minimum-Y-extent` in VerticalAxisGroup to `'(-4 . 4)`.

Context Staff can contain Voice and CueVoice

This context is built from the following engravers:

`Script_row_engraver`
  Determine order in horizontal side position elements.

  This engraver creates the following layout objects: ScriptRow.

`Figured_bass_position_engraver`
  Position figured bass alignments over notes.

  This engraver creates the following layout objects: BassFigureAlignmentPositioning.

`Figured_bass_engraver`
  Make figured bass numbers.

  Music types accepted:

  bass-figure-event and rest-event

  Properties (read)

  `figuredBassAlterationDirection` (direction)
    Where to put alterations relative to the main figure.
  `figuredBassCenterContinuations` (boolean)
    Whether to vertically center pairs of extender lines. This does not work with three or more lines
  `figuredBassFormatter` (procedure)
    Routine generating a markup for a bass figure.
  `implicitBassFigures` (list)
    List of bass figures that are not printed as numbers, but only as extender lines.
  `useBassFigureExtenders` (boolean)
    Whether to use extender lines for repeated bass figures
  `ignoreFiguredBassRest` (boolean)
    Don't swallow rest events.
  This engraver creates the following layout objects: BassFigure, BassFigureAlignment, BassFigureBracket, BassFigureContinuation and BassFigureLine.
`Axis_group_engraver`
  Group all objects created in this context in a VerticalAxisGroup spanner.

  Properties (read)

  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  This engraver creates the following layout objects: VerticalAxisGroup.
`String_number_engraver`
  Swallow string-number-events - the purpose of this engraver is to process tab for normal notation. To provent warnings for unprocessed string-number-event to obscure real error messages, this engraver swallows them all.
`Instrument_name_engraver`
  Creates a system start text for instrument or vocal names.

  Properties (read)

  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  `shortInstrumentName` (markup)
    See `instrument`
  `instrumentName` (markup)
    The name to print left of a staff. The `instrument` property labels the staff in the first system, and the `instr` property labels following lines.
  `shortVocalName` (markup)
    Name of a vocal line, short version.
  `vocalName` (markup)
    Name of a vocal line.
  This engraver creates the following layout objects: InstrumentName.
`Piano_pedal_align_engraver`
  Align piano pedal symbols and brackets.

  Properties (read)

  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  This engraver creates the following layout objects: SostenutoPedalLineSpanner, SustainPedalLineSpanner and UnaCordaPedalLineSpanner.
`Piano_pedal_engraver`
  Engrave piano pedal symbols and brackets.

  Music types accepted:

  una-corda-event, sustain-event and sostenuto-event

  Properties (read)

  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  `pedalSostenutoStrings` (list)
    See `pedalSustainStrings`.
  `pedalSostenutoStyle` (symbol)
    see `pedalSustainStyle`.
  `pedalSustainStrings` (list)
    List of string to print for sustain-pedal. Format is (up updown down), where each of the three is the string to print when this is done with the pedal.
  `pedalSustainStyle` (symbol)
    A symbol that indicates how to print sustain pedals: `text`, `bracket` or `mixed` (both).
  `pedalUnaCordaStrings` (list)
    See `pedalSustainStrings`.
  `pedalUnaCordaStyle` (symbol)
    see `pedalSustainStyle`.
  This engraver creates the following layout objects: PianoPedalBracket, SostenutoPedal, SustainPedal and UnaCordaPedal.
`Accidental_engraver`
  Make accidentals. Catch note heads, ties and notices key-change events. This engraver usually lives at Staff level, but reads the settings for Accidental at `Voice` level, so you can `\override` them at `Voice`.

  Properties (read)

  `autoAccidentals` (list)
    List of different ways to typeset an accidental.

    For determining when to print an accidental, several different rules are tried. The rule that gives the highest number of accidentals is used. Each rule consists of

    context:
      In which context is the rule applied. For example, if context is Score then all staves share accidentals, and if context is Staff then all voices in the same staff share accidentals, but staves do not.
    octavation:
      Whether the accidental changes all octaves or only the current octave. Valid choices are
      ``same-octave:`'
        This is the default algorithm. Accidentals are typeset if the note changes the accidental of that note in that octave. Accidentals lasts to the end of the measure and then as many measures as specified in the value. I.e. 1 means to the end of next measure, -1 means to the end of previous measure (that is: no duration at all), etc. #t means forever.
      ``any-octave:`'
        Accidentals are typeset if the note is different from the previous note on the same pitch in any octave. The value has same meaning as in same-octave.
    laziness
      Over how many bar lines the accidental lasts. If laziness is `-1` then the accidental is forgotten immediately, and if laziness is `#t` then the accidental lasts forever.
  `autoCautionaries` (list)
    List similar to `autoAccidentals`, but it controls cautionary accidentals rather than normal ones. Both lists are tried, and the one giving the most accidentals wins. In case of draw, a normal accidental is typeset.
  `internalBarNumber` (integer)
    Contains the current barnumber. This property is used for internal timekeeping, among others by the `Accidental_engraver`.
  `extraNatural` (boolean)
    Whether to typeset an extra natural sign before accidentals changing from a non-natural to another non-natural.
  `harmonicAccidentals` (boolean)
    If set, harmonic notes in chords get accidentals.
  `localKeySignature` (list)
    the key signature at this point in the measure. The format is the same as for keySignature, but can also contain ((octave . name) . (alter . barnumber)) pairs. It is reset at every bar line.
  Properties (write)
  `localKeySignature` (list)
    the key signature at this point in the measure. The format is the same as for keySignature, but can also contain ((octave . name) . (alter . barnumber)) pairs. It is reset at every bar line.
  This engraver creates the following layout objects: Accidental and AccidentalSuggestion.
`Rest_collision_engraver`
  Handles collisions of rests.

  This engraver creates the following layout objects: RestCollision.

`Collision_engraver`
  Collect NoteColumns, and as soon as there are two or more, put them in a NoteCollision object.

  This engraver creates the following layout objects: NoteCollision.

`Staff_symbol_engraver`
  Create the constellation of five (default) staff lines.

  Music types accepted:

  staff-span-event

  This engraver creates the following layout objects: StaffSymbol.

`Ledger_line_engraver`
  Creates the spanner to draw ledger lines, and notices objects that need ledger lines

  This engraver creates the following layout objects: LedgerLineSpanner.

`Time_signature_engraver`
  Create a TimeSignature whenever `timeSignatureFraction` changes

  This engraver creates the following layout objects: TimeSignature.

`Key_engraver`

  Music types accepted:

  key-change-event

  Properties (read)

  `createKeyOnClefChange` (boolean)
    Print a key signature whenever the clef is changed.
  `explicitKeySignatureVisibility` (vector)
    ``break-visibility`' function for explicit key changes. ``\override`' of the `break-visibility` property will set the visibility for normal (i.e. at the start of the line) key signatures.
  `extraNatural` (boolean)
    Whether to typeset an extra natural sign before accidentals changing from a non-natural to another non-natural.
  `keyAlterationOrder` (list)
    Alist that defines in what order alterations should be printed. The format is (step . alter), where step is from 0 .. 6 and alter from -2 (sharp) and 2 (flat).
  `keySignature` (list)
    The current key signature. This is an alist containing (name . alter) or ((octave . name) . alter). where name is from 0.. 6 and alter from -4 (double flat) to 4 (double sharp).
  `keySignature` (list)
    The current key signature. This is an alist containing (name . alter) or ((octave . name) . alter). where name is from 0.. 6 and alter from -4 (double flat) to 4 (double sharp).
  `lastKeySignature` (list)
    Last key signature before a key signature change.
  `printKeyCancellation` (boolean)
    Print restoration alterations before a key signature change.
  Properties (write)
  `keySignature` (list)
    The current key signature. This is an alist containing (name . alter) or ((octave . name) . alter). where name is from 0.. 6 and alter from -4 (double flat) to 4 (double sharp).
  `lastKeySignature` (list)
    Last key signature before a key signature change.
  `tonic` (pitch)
    The tonic of the current scale
  This engraver creates the following layout objects: KeySignature.
`Clef_engraver`
  Determine and set reference point for pitches

  Properties (read)

  `clefGlyph` (string)
    Name of the symbol within the music font.
  `clefOctavation` (integer)
    Add this much extra octavation. Values of 7 and -7 are common.
  `clefPosition` (number)
    Where should the center of the clef symbol go, measured in half staff spaces from the center of the staff.
  `explicitClefVisibility` (vector)
    ``break-visibility`' function for clef changes.
  `forceClef` (boolean)
    Show clef symbol, even if it has not changed. Only active for the first clef after the property is set, not for the full staff.
  `middleCPosition` (number)
    Place of the middle C, measured in half staff-spaces. Usually determined by looking at `clefPosition` and `clefGlyph`.
  This engraver creates the following layout objects: Clef and OctavateEight.
`Ottava_spanner_engraver`
  Create a text spanner when the ottavation property changes..

  Properties (read)

  `ottavation` (string)
    If set, the text for an ottava spanner. Changing this creates a new text spanner.
  `originalMiddleCPosition` (integer)
    Used for temporary overriding middle C in octavation brackets.
  `currentMusicalColumn` (layout object)
    Grob that is X-parent to all non-breakable items (note heads, lyrics, etc.).
  This engraver creates the following layout objects: OttavaBracket.
`Dot_column_engraver`
  Engraves dots on dotted notes shifted to the right of the note. If omitted, then dots appear on top of the notes.

  This engraver creates the following layout objects: DotColumn.

`Separating_line_group_engraver`
  Generates objects for computing spacing parameters.

  Properties (read)

  `createSpacing` (boolean)
    Create `StaffSpacing` objects? Should be set for staves.
  Properties (write)
  `breakableSeparationItem` (layout object)
    The breakable items in this time step, for this staff.
  This engraver creates the following layout objects: SeparatingGroupSpanner, SeparationItem and StaffSpacing.
`Volta_engraver`
  Make volta brackets.

  Properties (read)

  `repeatCommands` (list)
    This property is read to find any command of the form `(volta .` x`)`, where x is a string or `#f`
  `voltaSpannerDuration` (moment)
    This specifies the maximum duration to use for the brackets printed for `\alternative`. This can be used to shrink the length of brackets in the situation where one alternative is very large.
  `stavesFound` (list of grobs)
    list of all staff-symbols found.
  This engraver creates the following layout objects: VoltaBracket.
`Font_size_engraver`
  Puts fontSize into font-size grob property.

  Properties (read)

  `fontSize` (number)
    The relative size of all grobs in a context.
`Bar_engraver`
  Create barlines. This engraver is controlled through the `whichBar` property. If it has no bar line to create, it will forbid a linebreak at this point

  Properties (read)

  `whichBar` (string)
    This property is read to determine what type of bar line to create.

    Example:

                       \set Staff.whichBar = "|:"

    This will create a start-repeat bar in this staff only. Valid values are described in bar-line-interface.

  Properties (write)
  `forbidBreak` (boolean)
    If set to ##t, prevent a line break at this point.
  This engraver creates the following layout objects: BarLine.
`Output_property_engraver`
  Apply a procedure to any grob acknowledged.

  Music types accepted:

  apply-output-event

Next: StaffGroup, Previous: Score, Up: Contexts

This page is for LilyPond-2.10.33 (stable-branch).