LilyPond program-reference

## Top

This is the program reference for LilyPond version 2.8.8

## Music definitions

### Music expressions

#### AbsoluteDynamicEvent

Creates a dynamic mark.

Syntax: note`\x`, where x is one of \ppp, \pp, \p, \mp, \mf, \f, \ff, \fff.

Music types: general-music, event, dynamic-event and absolute-dynamic-event

Accepted by: Dynamic_engraver, Dynamic_performer, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'AbsoluteDynamicEvent`

  Name of this music object

`types` (list):
  `'(general-music event dynamic-event absolute-dynamic-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### ApplyContext

Call the argument with the current context during interpreting phase

Music types: general-music and apply-context

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'ApplyContext`

  Name of this music object

`types` (list):
  `'(general-music apply-context)`

  The types of this music object; determines by what engraver this music expression is processed.

`iterator-ctor` (procedure):
  `ly:apply-context-iterator::constructor`

  Function to construct music-event-iterator object for this Music

#### ApplyOutputEvent

Call the argument with all current grobs during interpreting phase.

Syntax

\applyoutput FUNC

arguments to func are 1. the grob, 2. the originating context, 3. context where FUNC is called.

Music types: general-music and layout-instruction

Accepted by: Output_property_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'ApplyOutputEvent`

  Name of this music object

`iterator-ctor` (procedure):
  `ly:output-property-music-iterator::constructor`

  Function to construct music-event-iterator object for this Music

`types` (list):
  `'(general-music layout-instruction)`

  The types of this music object; determines by what engraver this music expression is processed.

#### ArpeggioEvent

Make an arpeggio on this note.

Syntax: note-`\arpeggio`

Music types: general-music, arpeggio-event and event

Accepted by: Arpeggio_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'ArpeggioEvent`

  Name of this music object

`types` (list):
  `'(general-music arpeggio-event event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### ArticulationEvent

Adds an articulation marking to a note.

Syntax: note`X` `Y`, where X is a direction (up `^`, down `_`, or LilyPond's choice (no direction specified)), and where Y is an articulation (such as `-.`, `->`, `\tenuto`, `\downbow`). See the user manual for details.

Music types: general-music, event, articulation-event and script-event

Accepted by: Script_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'ArticulationEvent`

  Name of this music object

`types` (list):
  `'(general-music event articulation-event script-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### AutoChangeMusic

Used for making voices that switch between piano staves automatically.

Music types: general-music, music-wrapper-music and auto-change-instruction

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'AutoChangeMusic`

  Name of this music object

`iterator-ctor` (procedure):
  `ly:auto-change-iterator::constructor`

  Function to construct music-event-iterator object for this Music

`start-callback` (procedure):
  `ly:music-wrapper::start-callback`

  Function to compute the negative length of starting grace notes. This property can only be defined as initializer in `define-music-types.scm`.

`length-callback` (procedure):
  `ly:music-wrapper::length-callback`

  How to compute the duration of this music. This property can only be defined as initializer in `define-music-types.scm`.

`types` (list):
  `'(general-music music-wrapper-music auto-change-instruction)`

  The types of this music object; determines by what engraver this music expression is processed.

#### BarCheck

Check whether this music coincides with the start of the measure.

Music types: general-music and bar-check

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'BarCheck`

  Name of this music object

`types` (list):
  `'(general-music bar-check)`

  The types of this music object; determines by what engraver this music expression is processed.

`iterator-ctor` (procedure):
  `ly:bar-check-iterator::constructor`

  Function to construct music-event-iterator object for this Music

#### BassFigureEvent

Print a bass-figure text

Music types: general-music, event, rhythmic-event and bass-figure-event

Accepted by: Figured_bass_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'BassFigureEvent`

  Name of this music object

`types` (list):
  `'(general-music event rhythmic-event bass-figure-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### BeamEvent

Starts or stops a beam.

Syntax for manual control: c8-[ c c-] c8

Music types: general-music, event, beam-event and span-event

Accepted by: Beam_engraver, Beam_performer, Grace_beam_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'BeamEvent`

  Name of this music object

`types` (list):
  `'(general-music event beam-event span-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### BeamForbidEvent

Specify that a note may not auto-beamed

Music types: general-music, event and beam-forbid-event

Accepted by: Auto_beam_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'BeamForbidEvent`

  Name of this music object

`types` (list):
  `'(general-music event beam-forbid-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### BreakEvent

Create a line break, Syntax: \break or page break, Syntax: \pagebreak.

Music types: general-music, break-event and event

Accepted by: Paper_column_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'BreakEvent`

  Name of this music object

`types` (list):
  `'(general-music break-event event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### BreathingSignEvent

Creates a `breath mark' or `comma'.

Syntax: note\breathe.

Music types: general-music, event and breathing-event

Accepted by: Breathing_sign_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'BreathingSignEvent`

  Name of this music object

`types` (list):
  `'(general-music event breathing-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### BusyPlayingEvent

Used internally to signal beginning and ending of notes.

Music types: general-music, event and busy-playing-event

Accepted by: Cluster_spanner_engraver, Completion_heads_engraver, Drum_note_performer, Drum_notes_engraver, Note_heads_engraver, Note_performer, Swallow_engraver, Swallow_performer and Tab_note_heads_engraver

Properties:

`name` (symbol):
  `'BusyPlayingEvent`

  Name of this music object

`types` (list):
  `'(general-music event busy-playing-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### ClusterNoteEvent

A note that is part of a cluster.

Music types: general-music, cluster-note-event, melodic-event, rhythmic-event and event

Accepted by: Cluster_spanner_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'ClusterNoteEvent`

  Name of this music object

`types` (list):
  `'(general-music cluster-note-event melodic-event rhythmic-event event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### ContextChange

Change staffs in Piano staff.

Syntax `\translator Staff =` new-id.

Music types: general-music and translator-change-instruction

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'ContextChange`

  Name of this music object

`iterator-ctor` (procedure):
  `ly:change-iterator::constructor`

  Function to construct music-event-iterator object for this Music

`types` (list):
  `'(general-music translator-change-instruction)`

  The types of this music object; determines by what engraver this music expression is processed.

#### ContextSpeccedMusic

Interpret the argument music within a specific context.

Music types: context-specification, general-music and music-wrapper-music

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'ContextSpeccedMusic`

  Name of this music object

`iterator-ctor` (procedure):
  `ly:context-specced-music-iterator::constructor`

  Function to construct music-event-iterator object for this Music

`length-callback` (procedure):
  `ly:music-wrapper::length-callback`

  How to compute the duration of this music. This property can only be defined as initializer in `define-music-types.scm`.

`start-callback` (procedure):
  `ly:music-wrapper::start-callback`

  Function to compute the negative length of starting grace notes. This property can only be defined as initializer in `define-music-types.scm`.

`types` (list):
  `'(context-specification general-music music-wrapper-music)`

  The types of this music object; determines by what engraver this music expression is processed.

#### CrescendoEvent

Begins or ends a crescendo.

Syntax: note\cr ... note\rc (you can also use \<, \!, \cresc, and \endcresc. See the user manual for details.).

Music types: general-music, dynamic-event, crescendo-event and event

Accepted by: Dynamic_engraver, Span_dynamic_performer, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'CrescendoEvent`

  Name of this music object

`types` (list):
  `'(general-music dynamic-event crescendo-event event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### DecrescendoEvent

See CrescendoEvent.

Music types: general-music, dynamic-event, decrescendo-event and event

Accepted by: Dynamic_engraver, Span_dynamic_performer, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'DecrescendoEvent`

  Name of this music object

`types` (list):
  `'(general-music dynamic-event decrescendo-event event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### Event

Atomic music event.

Music types: general-music and event

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'Event`

  Name of this music object

`types` (list):
  `'(general-music event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### EventChord

Internally used to group a set of events.

Music types: general-music, event-chord and simultaneous-music

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'EventChord`

  Name of this music object

`iterator-ctor` (procedure):
  `ly:event-chord-iterator::constructor`

  Function to construct music-event-iterator object for this Music

`length-callback` (procedure):
  `ly:music-sequence::maximum-length-callback`

  How to compute the duration of this music. This property can only be defined as initializer in `define-music-types.scm`.

`to-relative-callback` (procedure):
  `ly:music-sequence::event-chord-relative-callback`

  How to transform a piece of music to relative pitches

`types` (list):
  `'(general-music event-chord simultaneous-music)`

  The types of this music object; determines by what engraver this music expression is processed.

#### ExtenderEvent

Extend lyrics.

Music types: general-music, extender-event and event

Accepted by: Extender_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'ExtenderEvent`

  Name of this music object

`types` (list):
  `'(general-music extender-event event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### FingerEvent

Specify what finger to use for this note.

Music types: general-music, fingering-event and event

Accepted by: Fingering_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'FingerEvent`

  Name of this music object

`types` (list):
  `'(general-music fingering-event event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### FoldedRepeatedMusic

Repeats with alternatives placed in parallel.

Music types: general-music, repeated-music and folded-repeated-music

Accepted by: Chord_tremolo_engraver, Percent_repeat_engraver, Slash_repeat_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'FoldedRepeatedMusic`

  Name of this music object

`iterator-ctor` (procedure):
  `ly:folded-repeat-iterator::constructor`

  Function to construct music-event-iterator object for this Music

`start-callback` (procedure):
  `ly:repeated-music::minimum-start`

  Function to compute the negative length of starting grace notes. This property can only be defined as initializer in `define-music-types.scm`.

`length-callback` (procedure):
  `ly:repeated-music::folded-music-length`

  How to compute the duration of this music. This property can only be defined as initializer in `define-music-types.scm`.

`types` (list):
  `'(general-music repeated-music folded-repeated-music)`

  The types of this music object; determines by what engraver this music expression is processed.

#### GlissandoEvent

Start a glissando on this note.

Music types: general-music, glissando-event and event

Accepted by: Glissando_engraver, Note_head_line_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'GlissandoEvent`

  Name of this music object

`types` (list):
  `'(general-music glissando-event event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### GraceMusic

Interpret the argument as grace notes.

Music types: grace-music, music-wrapper-music and general-music

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'GraceMusic`

  Name of this music object

`start-callback` (procedure):
  `ly:grace-music::start-callback`

  Function to compute the negative length of starting grace notes. This property can only be defined as initializer in `define-music-types.scm`.

`length` (moment):
  `#<Mom 0>`

  The duration of this music

`iterator-ctor` (procedure):
  `ly:grace-iterator::constructor`

  Function to construct music-event-iterator object for this Music

`types` (list):
  `'(grace-music music-wrapper-music general-music)`

  The types of this music object; determines by what engraver this music expression is processed.

#### HarmonicEvent

Mark a note as harmonic

Music types: general-music, event and harmonic-event

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'HarmonicEvent`

  Name of this music object

`types` (list):
  `'(general-music event harmonic-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### HyphenEvent

A hyphen between lyric syllables.

Music types: general-music, hyphen-event and event

Accepted by: Hyphen_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'HyphenEvent`

  Name of this music object

`types` (list):
  `'(general-music hyphen-event event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### KeyChangeEvent

Change the key signature.

Syntax: `\key` name scale.

Music types: general-music, key-change-event and event

Accepted by: Key_engraver, Key_performer, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'KeyChangeEvent`

  Name of this music object

`to-relative-callback` (procedure):
  `#<procedure #f (x p)>`

  How to transform a piece of music to relative pitches

`types` (list):
  `'(general-music key-change-event event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### LaissezVibrerEvent

Don't damp this chord.

Syntax: note\laissezVibrer.

Music types: general-music, event and laissez-vibrer-event

Accepted by: Laissez_vibrer_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'LaissezVibrerEvent`

  Name of this music object

`types` (list):
  `'(general-music event laissez-vibrer-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### LigatureEvent

(docme).

Music types: general-music, span-event, ligature-event and event

Accepted by: Ligature_bracket_engraver, Mensural_ligature_engraver, Swallow_engraver, Swallow_performer and Vaticana_ligature_engraver

Properties:

`name` (symbol):
  `'LigatureEvent`

  Name of this music object

`span-type` (string):
  `'ligature`

  What kind of spanner should be created?

  TODO: consider making type into symbol

`types` (list):
  `'(general-music span-event ligature-event event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### LyricCombineMusic

Align lyrics to the start of notes.

Syntax \lyricsto voicename lyrics.

Music types: general-music and lyric-combine-music

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'LyricCombineMusic`

  Name of this music object

`length` (moment):
  `#<Mom 0>`

  The duration of this music

`types` (list):
  `'(general-music lyric-combine-music)`

  The types of this music object; determines by what engraver this music expression is processed.

`iterator-ctor` (procedure):
  `ly:lyric-combine-music-iterator::constructor`

  Function to construct music-event-iterator object for this Music

#### LyricEvent

A lyric syllable. Must be entered in lyrics mode, i.e. `\lyrics { twinkle4 twinkle4 }` .

Music types: general-music, rhythmic-event, lyric-event and event

Accepted by: Lyric_engraver, Lyric_performer, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'LyricEvent`

  Name of this music object

`types` (list):
  `'(general-music rhythmic-event lyric-event event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### ManualMelismaEvent

Start or stop a melisma.

Syntax: `c4\melisma d\melismaEnd`.

Music types: general-music, melisma-span-event and event

Accepted by: Melisma_translator, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'ManualMelismaEvent`

  Name of this music object

`types` (list):
  `'(general-music melisma-span-event event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### MarkEvent

Insert a rehearsal mark.

Syntax: `\mark` marker, e.g. `\mark "A"`.

Music types: general-music, mark-event and event

Accepted by: Mark_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'MarkEvent`

  Name of this music object

`types` (list):
  `'(general-music mark-event event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### MelismaPlayingEvent

Used internally to signal melismas.

Music types: general-music, melisma-playing-event and event

Accepted by: Melisma_translator, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'MelismaPlayingEvent`

  Name of this music object

`types` (list):
  `'(general-music melisma-playing-event event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### MetronomeChangeEvent

Change tempo setting (in beats per minute).

Music types: general-music, metronome-change-event, tempo-event and event

Accepted by: Metronome_mark_engraver, Swallow_engraver, Swallow_performer and Tempo_performer

Properties:

`name` (symbol):
  `'MetronomeChangeEvent`

  Name of this music object

`types` (list):
  `'(general-music metronome-change-event tempo-event event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### MultiMeasureRestEvent

Rests that may be compressed into Multi rests.

Syntax `R2.*4` for 4 measures in 3/4 time. Note the capital R.

Music types: general-music, event, rhythmic-event and multi-measure-rest-event

Accepted by: Multi_measure_rest_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'MultiMeasureRestEvent`

  Name of this music object

`types` (list):
  `'(general-music event rhythmic-event multi-measure-rest-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### MultiMeasureRestMusicGroup

Like sequential-music, but specifically intended to group start-mmrest, skip, stop-mmrest sequence.

Syntax `R2.*5` for 5 measures in 3/4 time.

Music types: general-music and sequential-music

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'MultiMeasureRestMusicGroup`

  Name of this music object

`length-callback` (procedure):
  `ly:music-sequence::cumulative-length-callback`

  How to compute the duration of this music. This property can only be defined as initializer in `define-music-types.scm`.

`start-callback` (procedure):
  `ly:music-sequence::first-start-callback`

  Function to compute the negative length of starting grace notes. This property can only be defined as initializer in `define-music-types.scm`.

`iterator-ctor` (procedure):
  `ly:sequential-music-iterator::constructor`

  Function to construct music-event-iterator object for this Music

`types` (list):
  `'(general-music sequential-music)`

  The types of this music object; determines by what engraver this music expression is processed.

#### MultiMeasureTextEvent

Texts on mm rests.

Syntax `R-\markup { \roman "bla" }`. Note the explicit font switch.

Music types: general-music, event and multi-measure-text-event

Accepted by: Multi_measure_rest_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'MultiMeasureTextEvent`

  Name of this music object

`types` (list):
  `'(general-music event multi-measure-text-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### Music

Generic type for music expressions.

Music types: general-music

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'Music`

  Name of this music object

`types` (list):
  `'(general-music)`

  The types of this music object; determines by what engraver this music expression is processed.

#### NoteEvent

A note.

Music types: general-music, event, note-event, rhythmic-event and melodic-event

Accepted by: Chord_name_engraver, Completion_heads_engraver, Drum_note_performer, Drum_notes_engraver, Note_heads_engraver, Note_name_engraver, Note_performer, Note_swallow_translator, Swallow_engraver, Swallow_performer and Tab_note_heads_engraver

Properties:

`name` (symbol):
  `'NoteEvent`

  Name of this music object

`types` (list):
  `'(general-music event note-event rhythmic-event melodic-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### NoteGroupingEvent

Start or stop grouping brackets.

Music types: general-music, event and note-grouping-event

Accepted by: Horizontal_bracket_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'NoteGroupingEvent`

  Name of this music object

`types` (list):
  `'(general-music event note-grouping-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### OldLyricCombineMusic

Align lyrics to the start of notes.

Syntax \oldaddlyrics music lyrics.

Music types: general-music and lyric-combine-music

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'OldLyricCombineMusic`

  Name of this music object

`types` (list):
  `'(general-music lyric-combine-music)`

  The types of this music object; determines by what engraver this music expression is processed.

`length-callback` (procedure):
  `ly:lyric-combine-music::length-callback`

  How to compute the duration of this music. This property can only be defined as initializer in `define-music-types.scm`.

`start-callback` (procedure):
  `ly:music-sequence::first-start-callback`

  Function to compute the negative length of starting grace notes. This property can only be defined as initializer in `define-music-types.scm`.

`iterator-ctor` (procedure):
  `ly:old-lyric-combine-music-iterator::constructor`

  Function to construct music-event-iterator object for this Music

#### OutputPropertySetMusic

Set grob properties in objects individually.

Syntax `\outputproperty` predicate prop`=` val.

Music types: general-music and layout-instruction

Accepted by: Output_property_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'OutputPropertySetMusic`

  Name of this music object

`iterator-ctor` (procedure):
  `ly:output-property-music-iterator::constructor`

  Function to construct music-event-iterator object for this Music

`types` (list):
  `'(general-music layout-instruction)`

  The types of this music object; determines by what engraver this music expression is processed.

#### OverrideProperty

Extend the definition of a graphical object.

SYNTAX

`\override [` Ctxt`. ]` Obj prop`=` val

Music types: general-music and layout-instruction

Accepted by: Output_property_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'OverrideProperty`

  Name of this music object

`types` (list):
  `'(general-music layout-instruction)`

  The types of this music object; determines by what engraver this music expression is processed.

`iterator-ctor` (procedure):
  `ly:push-property-iterator::constructor`

  Function to construct music-event-iterator object for this Music

#### PartCombineMusic

Combine two parts on a staff, either merged or as separate voices.

Music types: general-music and part-combine-music

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'PartCombineMusic`

  Name of this music object

`length-callback` (procedure):
  `ly:music-sequence::maximum-length-callback`

  How to compute the duration of this music. This property can only be defined as initializer in `define-music-types.scm`.

`start-callback` (procedure):
  `ly:music-sequence::minimum-start-callback`

  Function to compute the negative length of starting grace notes. This property can only be defined as initializer in `define-music-types.scm`.

`types` (list):
  `'(general-music part-combine-music)`

  The types of this music object; determines by what engraver this music expression is processed.

`iterator-ctor` (procedure):
  `ly:part-combine-iterator::constructor`

  Function to construct music-event-iterator object for this Music

#### PercentRepeatedMusic

Repeats encoded by percents.

Music types: general-music, repeated-music and percent-repeated-music

Accepted by: Chord_tremolo_engraver, Percent_repeat_engraver, Slash_repeat_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'PercentRepeatedMusic`

  Name of this music object

`iterator-ctor` (procedure):
  `ly:percent-repeat-iterator::constructor`

  Function to construct music-event-iterator object for this Music

`start-callback` (procedure):
  `ly:repeated-music::first-start`

  Function to compute the negative length of starting grace notes. This property can only be defined as initializer in `define-music-types.scm`.

`length-callback` (procedure):
  `ly:repeated-music::unfolded-music-length`

  How to compute the duration of this music. This property can only be defined as initializer in `define-music-types.scm`.

`types` (list):
  `'(general-music repeated-music percent-repeated-music)`

  The types of this music object; determines by what engraver this music expression is processed.

#### PesOrFlexaEvent

Within a ligature, mark the previous and the following note to form a pes (if melody goes up) or a flexa (if melody goes down).

Music types: general-music, pes-or-flexa-event and event

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'PesOrFlexaEvent`

  Name of this music object

`types` (list):
  `'(general-music pes-or-flexa-event event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### PhrasingSlurEvent

Start or end phrasing slur.

Syntax NOTE \( and \) NOTE

Music types: general-music, span-event, event and phrasing-slur-event

Accepted by: Phrasing_slur_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'PhrasingSlurEvent`

  Name of this music object

`types` (list):
  `'(general-music span-event event phrasing-slur-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### PropertySet

Set a context property.

Syntax: `\property` context`.`prop`=` scheme-val.

Music types: layout-instruction and general-music

Accepted by: Output_property_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'PropertySet`

  Name of this music object

`types` (list):
  `'(layout-instruction general-music)`

  The types of this music object; determines by what engraver this music expression is processed.

`iterator-ctor` (procedure):
  `ly:property-iterator::constructor`

  Function to construct music-event-iterator object for this Music

#### PropertyUnset

Remove the definition of a context `\property`.

Music types: layout-instruction and general-music

Accepted by: Output_property_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'PropertyUnset`

  Name of this music object

`types` (list):
  `'(layout-instruction general-music)`

  The types of this music object; determines by what engraver this music expression is processed.

`iterator-ctor` (procedure):
  `ly:property-unset-iterator::constructor`

  Function to construct music-event-iterator object for this Music

#### QuoteMusic

Quote preprocessed snippets of music.

Music types: general-music and music-wrapper-music

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'QuoteMusic`

  Name of this music object

`iterator-ctor` (procedure):
  `ly:music-wrapper-iterator::constructor`

  Function to construct music-event-iterator object for this Music

`length-callback` (procedure):
  `ly:music-wrapper::length-callback`

  How to compute the duration of this music. This property can only be defined as initializer in `define-music-types.scm`.

`start-callback` (procedure):
  `ly:music-wrapper::start-callback`

  Function to compute the negative length of starting grace notes. This property can only be defined as initializer in `define-music-types.scm`.

`types` (list):
  `'(general-music music-wrapper-music)`

  The types of this music object; determines by what engraver this music expression is processed.

#### RelativeOctaveCheck

Check if a pitch is in the correct octave.

Music types: general-music and relative-octave-check

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'RelativeOctaveCheck`

  Name of this music object

`to-relative-callback` (procedure):
  `ly:relative-octave-check::relative-callback`

  How to transform a piece of music to relative pitches

`types` (list):
  `'(general-music relative-octave-check)`

  The types of this music object; determines by what engraver this music expression is processed.

#### RelativeOctaveMusic

Music that was entered in relative octave notation.

Music types: music-wrapper-music, general-music and relative-octave-music

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'RelativeOctaveMusic`

  Name of this music object

`to-relative-callback` (procedure):
  `ly:relative-octave-music::relative-callback`

  How to transform a piece of music to relative pitches

`iterator-ctor` (procedure):
  `ly:music-wrapper-iterator::constructor`

  Function to construct music-event-iterator object for this Music

`length-callback` (procedure):
  `ly:music-wrapper::length-callback`

  How to compute the duration of this music. This property can only be defined as initializer in `define-music-types.scm`.

`start-callback` (procedure):
  `ly:music-wrapper::start-callback`

  Function to compute the negative length of starting grace notes. This property can only be defined as initializer in `define-music-types.scm`.

`types` (list):
  `'(music-wrapper-music general-music relative-octave-music)`

  The types of this music object; determines by what engraver this music expression is processed.

#### RepeatTieEvent

Ties for starting a second volta bracket.

Music types: general-music, event and repeat-tie-event

Accepted by: Repeat_tie_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'RepeatTieEvent`

  Name of this music object

`types` (list):
  `'(general-music event repeat-tie-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### RepeatedMusic

Repeat music in different ways

Music types: general-music and repeated-music

Accepted by: Chord_tremolo_engraver, Percent_repeat_engraver, Slash_repeat_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'RepeatedMusic`

  Name of this music object

`types` (list):
  `'(general-music repeated-music)`

  The types of this music object; determines by what engraver this music expression is processed.

#### RestEvent

A Rest.

Syntax `r4` for a quarter rest.

Music types: general-music, event, rhythmic-event and rest-event

Accepted by: Figured_bass_engraver, Rest_engraver, Rest_swallow_translator, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'RestEvent`

  Name of this music object

`types` (list):
  `'(general-music event rhythmic-event rest-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### RevertProperty

The opposite of OverrideProperty: remove a previously added property from a graphical object definition

Music types: general-music and layout-instruction

Accepted by: Output_property_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'RevertProperty`

  Name of this music object

`types` (list):
  `'(general-music layout-instruction)`

  The types of this music object; determines by what engraver this music expression is processed.

`iterator-ctor` (procedure):
  `ly:pop-property-iterator::constructor`

  Function to construct music-event-iterator object for this Music

#### ScriptEvent

Add an articulation mark to a note.

Music types: general-music and event

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'ScriptEvent`

  Name of this music object

`types` (list):
  `'(general-music event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### SequentialMusic

Music expressions concatenated.

Syntax \sequential {..} or simply {..} .

Music types: general-music and sequential-music

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'SequentialMusic`

  Name of this music object

`length-callback` (procedure):
  `ly:music-sequence::cumulative-length-callback`

  How to compute the duration of this music. This property can only be defined as initializer in `define-music-types.scm`.

`start-callback` (procedure):
  `ly:music-sequence::first-start-callback`

  Function to compute the negative length of starting grace notes. This property can only be defined as initializer in `define-music-types.scm`.

`iterator-ctor` (procedure):
  `ly:sequential-music-iterator::constructor`

  Function to construct music-event-iterator object for this Music

`types` (list):
  `'(general-music sequential-music)`

  The types of this music object; determines by what engraver this music expression is processed.

#### SimultaneousMusic

Music playing together.

SYNTAX

`\simultaneous { .. }` or << .. >>.

Music types: general-music and simultaneous-music

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'SimultaneousMusic`

  Name of this music object

`iterator-ctor` (procedure):
  `ly:simultaneous-music-iterator::constructor`

  Function to construct music-event-iterator object for this Music

`start-callback` (procedure):
  `ly:music-sequence::minimum-start-callback`

  Function to compute the negative length of starting grace notes. This property can only be defined as initializer in `define-music-types.scm`.

`length-callback` (procedure):
  `ly:music-sequence::maximum-length-callback`

  How to compute the duration of this music. This property can only be defined as initializer in `define-music-types.scm`.

`to-relative-callback` (procedure):
  `ly:music-sequence::simultaneous-relative-callback`

  How to transform a piece of music to relative pitches

`types` (list):
  `'(general-music simultaneous-music)`

  The types of this music object; determines by what engraver this music expression is processed.

#### SkipEvent

Filler that takes up duration, but does not print anything.

Syntax: `s`duration

Music types: general-music, event, rhythmic-event and skip-event

Accepted by: Skip_event_swallow_translator, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'SkipEvent`

  Name of this music object

`types` (list):
  `'(general-music event rhythmic-event skip-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### SkipMusic

Filler that takes up duration, does not print anything, and also does not create staffs or voices implicitly.

Syntax: `\skip` duration.

Music types: general-music, event, rhythmic-event and skip-event

Accepted by: Skip_event_swallow_translator, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'SkipMusic`

  Name of this music object

`length-callback` (procedure):
  `ly:music-duration-length`

  How to compute the duration of this music. This property can only be defined as initializer in `define-music-types.scm`.

`iterator-ctor` (procedure):
  `ly:simple-music-iterator::constructor`

  Function to construct music-event-iterator object for this Music

`types` (list):
  `'(general-music event rhythmic-event skip-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### SlurEvent

Start or end slur.

Syntax NOTE( and NOTE)

Music types: general-music, span-event, event and slur-event

Accepted by: Slur_engraver, Slur_performer, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'SlurEvent`

  Name of this music object

`types` (list):
  `'(general-music span-event event slur-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### SoloOneEvent

Print Solo.1

Music types: general-music, event and part-combine-event

Accepted by: Part_combine_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'SoloOneEvent`

  Name of this music object

`part-combine-status` (symbol):
  `'solo1`

  Change to what kind of state? Options are solo1, solo2 and unisono

`types` (list):
  `'(general-music event part-combine-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### SoloTwoEvent

Print Solo.2

Music types: general-music, event and part-combine-event

Accepted by: Part_combine_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'SoloTwoEvent`

  Name of this music object

`part-combine-status` (symbol):
  `'solo2`

  Change to what kind of state? Options are solo1, solo2 and unisono

`types` (list):
  `'(general-music event part-combine-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### SostenutoEvent

Depress or release sostenuto pedal.

Music types: general-music, event, pedal-event and sostenuto-pedal-event

Accepted by: Piano_pedal_engraver, Piano_pedal_performer, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'SostenutoEvent`

  Name of this music object

`types` (list):
  `'(general-music event pedal-event sostenuto-pedal-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### SpanEvent

Event for anything that is started at a different time than stopped.

Music types: general-music and event

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'SpanEvent`

  Name of this music object

`types` (list):
  `'(general-music event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### StaffSpanEvent

Start or stop a staff symbol.

Music types: general-music, event, span-event and staff-span-event

Accepted by: Staff_symbol_engraver, Swallow_engraver, Swallow_performer and Tab_staff_symbol_engraver

Properties:

`name` (symbol):
  `'StaffSpanEvent`

  Name of this music object

`types` (list):
  `'(general-music event span-event staff-span-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### StartPlayingEvent

Used internally to signal beginning of notes.

Music types: general-music, event and start-playing-event

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'StartPlayingEvent`

  Name of this music object

`types` (list):
  `'(general-music event start-playing-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### StringNumberEvent

Specify on which string to play this note.

Syntax: `\`number.

Music types: general-music, string-number-event and event

Accepted by: String_number_engraver, Swallow_engraver, Swallow_performer and Tab_note_heads_engraver

Properties:

`name` (symbol):
  `'StringNumberEvent`

  Name of this music object

`types` (list):
  `'(general-music string-number-event event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### SustainEvent

Depress or release sustain pedal.

Music types: general-music, event, pedal-event and sustain-pedal-event

Accepted by: Piano_pedal_engraver, Piano_pedal_performer, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'SustainEvent`

  Name of this music object

`types` (list):
  `'(general-music event pedal-event sustain-pedal-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### TextScriptEvent

Music types: general-music, script-event, text-script-event and event

Accepted by: Script_engraver, Swallow_engraver, Swallow_performer and Text_engraver

Properties:

`name` (symbol):
  `'TextScriptEvent`

  Name of this music object

`types` (list):
  `'(general-music script-event text-script-event event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### TextSpanEvent

Start a text spanner like 8va.....|

Music types: general-music, span-event, event and text-span-event

Accepted by: Swallow_engraver, Swallow_performer and Text_spanner_engraver

Properties:

`name` (symbol):
  `'TextSpanEvent`

  Name of this music object

`types` (list):
  `'(general-music span-event event text-span-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### TieEvent

A tie. Entered as note-~.

Music types: general-music, tie-event and event

Accepted by: Swallow_engraver, Swallow_performer, Tie_engraver and Tie_performer

Properties:

`name` (symbol):
  `'TieEvent`

  Name of this music object

`types` (list):
  `'(general-music tie-event event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### TimeScaledMusic

Multiply durations, as in tuplets.

Syntax `\times` fraction music, e.g. `\times 2/3 { ... }` for triplets.

Music types: time-scaled-music, music-wrapper-music and general-music

Accepted by: Swallow_engraver, Swallow_performer and Tuplet_engraver

Properties:

`name` (symbol):
  `'TimeScaledMusic`

  Name of this music object

`length-callback` (procedure):
  `ly:music-wrapper::length-callback`

  How to compute the duration of this music. This property can only be defined as initializer in `define-music-types.scm`.

`start-callback` (procedure):
  `ly:music-wrapper::start-callback`

  Function to compute the negative length of starting grace notes. This property can only be defined as initializer in `define-music-types.scm`.

`iterator-ctor` (procedure):
  `ly:time-scaled-music-iterator::constructor`

  Function to construct music-event-iterator object for this Music

`types` (list):
  `'(time-scaled-music music-wrapper-music general-music)`

  The types of this music object; determines by what engraver this music expression is processed.

#### TransposedMusic

Music that has been transposed.

Music types: music-wrapper-music, general-music and transposed-music

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'TransposedMusic`

  Name of this music object

`iterator-ctor` (procedure):
  `ly:music-wrapper-iterator::constructor`

  Function to construct music-event-iterator object for this Music

`start-callback` (procedure):
  `ly:music-wrapper::start-callback`

  Function to compute the negative length of starting grace notes. This property can only be defined as initializer in `define-music-types.scm`.

`length-callback` (procedure):
  `ly:music-wrapper::length-callback`

  How to compute the duration of this music. This property can only be defined as initializer in `define-music-types.scm`.

`to-relative-callback` (procedure):
  `ly:relative-octave-music::no-relative-callback`

  How to transform a piece of music to relative pitches

`types` (list):
  `'(music-wrapper-music general-music transposed-music)`

  The types of this music object; determines by what engraver this music expression is processed.

#### TremoloEvent

Un measured tremolo.

Music types: general-music, event and tremolo-event

Accepted by: Stem_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'TremoloEvent`

  Name of this music object

`types` (list):
  `'(general-music event tremolo-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### TremoloRepeatedMusic

Repeated notes denoted by tremolo beams.

Music types: general-music, repeated-music and tremolo-repeated-music

Accepted by: Chord_tremolo_engraver, Percent_repeat_engraver, Slash_repeat_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'TremoloRepeatedMusic`

  Name of this music object

`iterator-ctor` (procedure):
  `ly:chord-tremolo-iterator::constructor`

  Function to construct music-event-iterator object for this Music

`start-callback` (procedure):
  `ly:repeated-music::first-start`

  Function to compute the negative length of starting grace notes. This property can only be defined as initializer in `define-music-types.scm`.

`length-callback` (procedure):
  `ly:repeated-music::folded-music-length`

  How to compute the duration of this music. This property can only be defined as initializer in `define-music-types.scm`.

`types` (list):
  `'(general-music repeated-music tremolo-repeated-music)`

  The types of this music object; determines by what engraver this music expression is processed.

#### TrillSpanEvent

Start a trill spanner tr~~~

Music types: general-music, span-event, event and trill-span-event

Accepted by: Swallow_engraver, Swallow_performer and Trill_spanner_engraver

Properties:

`name` (symbol):
  `'TrillSpanEvent`

  Name of this music object

`types` (list):
  `'(general-music span-event event trill-span-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### UnaCordaEvent

Depress or release una-corda pedal.

Music types: general-music, event, pedal-event and una-corda-pedal-event

Accepted by: Piano_pedal_engraver, Piano_pedal_performer, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'UnaCordaEvent`

  Name of this music object

`types` (list):
  `'(general-music event pedal-event una-corda-pedal-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### UnfoldedRepeatedMusic

Music types: general-music, repeated-music and unfolded-repeated-music

Accepted by: Chord_tremolo_engraver, Percent_repeat_engraver, Slash_repeat_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'UnfoldedRepeatedMusic`

  Name of this music object

`iterator-ctor` (procedure):
  `ly:unfolded-repeat-iterator::constructor`

  Function to construct music-event-iterator object for this Music

`start-callback` (procedure):
  `ly:repeated-music::first-start`

  Function to compute the negative length of starting grace notes. This property can only be defined as initializer in `define-music-types.scm`.

`types` (list):
  `'(general-music repeated-music unfolded-repeated-music)`

  The types of this music object; determines by what engraver this music expression is processed.

`length-callback` (procedure):
  `ly:repeated-music::unfolded-music-length`

  How to compute the duration of this music. This property can only be defined as initializer in `define-music-types.scm`.

#### UnisonoEvent

Print a2

Music types: general-music, event and part-combine-event

Accepted by: Part_combine_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'UnisonoEvent`

  Name of this music object

`part-combine-status` (symbol):
  `'unisono`

  Change to what kind of state? Options are solo1, solo2 and unisono

`types` (list):
  `'(general-music event part-combine-event)`

  The types of this music object; determines by what engraver this music expression is processed.

#### UnrelativableMusic

Music that can not be converted from relative to absolute notation. For example, transposed music.

Music types: music-wrapper-music, general-music and unrelativable-music

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'UnrelativableMusic`

  Name of this music object

`to-relative-callback` (procedure):
  `ly:relative-octave-music::no-relative-callback`

  How to transform a piece of music to relative pitches

`iterator-ctor` (procedure):
  `ly:music-wrapper-iterator::constructor`

  Function to construct music-event-iterator object for this Music

`length-callback` (procedure):
  `ly:music-wrapper::length-callback`

  How to compute the duration of this music. This property can only be defined as initializer in `define-music-types.scm`.

`types` (list):
  `'(music-wrapper-music general-music unrelativable-music)`

  The types of this music object; determines by what engraver this music expression is processed.

#### VoiceSeparator

Separate polyphonic voices in simultaneous music.

Syntax: `\\`

Music types: separator and general-music

Accepted by: Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'VoiceSeparator`

  Name of this music object

`types` (list):
  `'(separator general-music)`

  The types of this music object; determines by what engraver this music expression is processed.

#### VoltaRepeatedMusic

Music types: general-music, repeated-music and volta-repeated-music

Accepted by: Chord_tremolo_engraver, Percent_repeat_engraver, Slash_repeat_engraver, Swallow_engraver and Swallow_performer

Properties:

`name` (symbol):
  `'VoltaRepeatedMusic`

  Name of this music object

`iterator-ctor` (procedure):
  `ly:volta-repeat-iterator::constructor`

  Function to construct music-event-iterator object for this Music

`start-callback` (procedure):
  `ly:repeated-music::first-start`

  Function to compute the negative length of starting grace notes. This property can only be defined as initializer in `define-music-types.scm`.

`length-callback` (procedure):
  `ly:repeated-music::volta-music-length`

  How to compute the duration of this music. This property can only be defined as initializer in `define-music-types.scm`.

`types` (list):
  `'(general-music repeated-music volta-repeated-music)`

  The types of this music object; determines by what engraver this music expression is processed.

### Music classes

#### absolute-dynamic-event

Music event type `absolute-dynamic-event` is in Music objects of type AbsoluteDynamicEvent

Accepted by: Dynamic_engraver and Dynamic_performer

#### apply-context

Music event type `apply-context` is in Music objects of type ApplyContext

Accepted by: none

#### arpeggio-event

Music event type `arpeggio-event` is in Music objects of type ArpeggioEvent

Accepted by: Arpeggio_engraver

#### articulation-event

Music event type `articulation-event` is in Music objects of type ArticulationEvent

Accepted by: Script_engraver

#### auto-change-instruction

Music event type `auto-change-instruction` is in Music objects of type AutoChangeMusic

Accepted by: none

#### bar-check

Music event type `bar-check` is in Music objects of type BarCheck

Accepted by: none

#### bass-figure-event

Music event type `bass-figure-event` is in Music objects of type BassFigureEvent

Accepted by: Figured_bass_engraver

#### beam-event

Music event type `beam-event` is in Music objects of type BeamEvent

Accepted by: Beam_engraver, Beam_performer and Grace_beam_engraver

#### beam-forbid-event

Music event type `beam-forbid-event` is in Music objects of type BeamForbidEvent

Accepted by: Auto_beam_engraver

#### break-event

Music event type `break-event` is in Music objects of type BreakEvent

Accepted by: Paper_column_engraver

#### breathing-event

Music event type `breathing-event` is in Music objects of type BreathingSignEvent

Accepted by: Breathing_sign_engraver

#### busy-playing-event

Music event type `busy-playing-event` is in Music objects of type BusyPlayingEvent

Accepted by: Cluster_spanner_engraver, Completion_heads_engraver, Drum_note_performer, Drum_notes_engraver, Note_heads_engraver, Note_performer and Tab_note_heads_engraver

#### cluster-note-event

Music event type `cluster-note-event` is in Music objects of type ClusterNoteEvent

Accepted by: Cluster_spanner_engraver

#### context-specification

Music event type `context-specification` is in Music objects of type ContextSpeccedMusic

Accepted by: none

#### crescendo-event

Music event type `crescendo-event` is in Music objects of type CrescendoEvent

Accepted by: Dynamic_engraver and Span_dynamic_performer

#### decrescendo-event

Music event type `decrescendo-event` is in Music objects of type DecrescendoEvent

Accepted by: Dynamic_engraver and Span_dynamic_performer

#### dynamic-event

Music event type `dynamic-event` is in Music objects of type AbsoluteDynamicEvent, CrescendoEvent and DecrescendoEvent

Accepted by: none

#### event

Music event type `event` is in Music objects of type AbsoluteDynamicEvent, ArpeggioEvent, ArticulationEvent, BassFigureEvent, BeamEvent, BeamForbidEvent, BreakEvent, BreathingSignEvent, BusyPlayingEvent, ClusterNoteEvent, CrescendoEvent, DecrescendoEvent, Event, ExtenderEvent, FingerEvent, GlissandoEvent, HarmonicEvent, HyphenEvent, KeyChangeEvent, LaissezVibrerEvent, LigatureEvent, LyricEvent, ManualMelismaEvent, MarkEvent, MelismaPlayingEvent, MetronomeChangeEvent, MultiMeasureRestEvent, MultiMeasureTextEvent, NoteEvent, NoteGroupingEvent, PesOrFlexaEvent, PhrasingSlurEvent, RepeatTieEvent, RestEvent, ScriptEvent, SkipEvent, SkipMusic, SlurEvent, SoloOneEvent, SoloTwoEvent, SostenutoEvent, SpanEvent, StaffSpanEvent, StartPlayingEvent, StringNumberEvent, SustainEvent, TextScriptEvent, TextSpanEvent, TieEvent, TremoloEvent, TrillSpanEvent, UnaCordaEvent and UnisonoEvent

Accepted by: none

#### event-chord

Music event type `event-chord` is in Music objects of type EventChord

Accepted by: none

#### extender-event

Music event type `extender-event` is in Music objects of type ExtenderEvent

Accepted by: Extender_engraver

#### fingering-event

Music event type `fingering-event` is in Music objects of type FingerEvent

Accepted by: Fingering_engraver

#### folded-repeated-music

Music event type `folded-repeated-music` is in Music objects of type FoldedRepeatedMusic

Accepted by: none

#### general-music

Music event type `general-music` is in Music objects of type AbsoluteDynamicEvent, ApplyContext, ApplyOutputEvent, ArpeggioEvent, ArticulationEvent, AutoChangeMusic, BarCheck, BassFigureEvent, BeamEvent, BeamForbidEvent, BreakEvent, BreathingSignEvent, BusyPlayingEvent, ClusterNoteEvent, ContextChange, ContextSpeccedMusic, CrescendoEvent, DecrescendoEvent, EventChord, Event, ExtenderEvent, FingerEvent, FoldedRepeatedMusic, GlissandoEvent, GraceMusic, HarmonicEvent, HyphenEvent, KeyChangeEvent, LaissezVibrerEvent, LigatureEvent, LyricCombineMusic, LyricEvent, ManualMelismaEvent, MarkEvent, MelismaPlayingEvent, MetronomeChangeEvent, MultiMeasureRestEvent, MultiMeasureRestMusicGroup, MultiMeasureTextEvent, Music, NoteEvent, NoteGroupingEvent, OldLyricCombineMusic, OutputPropertySetMusic, OverrideProperty, PartCombineMusic, PercentRepeatedMusic, PesOrFlexaEvent, PhrasingSlurEvent, PropertySet, PropertyUnset, QuoteMusic, RelativeOctaveCheck, RelativeOctaveMusic, RepeatTieEvent, RepeatedMusic, RestEvent, RevertProperty, ScriptEvent, SequentialMusic, SimultaneousMusic, SkipEvent, SkipMusic, SlurEvent, SoloOneEvent, SoloTwoEvent, SostenutoEvent, SpanEvent, StaffSpanEvent, StartPlayingEvent, StringNumberEvent, SustainEvent, TextScriptEvent, TextSpanEvent, TieEvent, TimeScaledMusic, TransposedMusic, TremoloEvent, TremoloRepeatedMusic, TrillSpanEvent, UnaCordaEvent, UnfoldedRepeatedMusic, UnisonoEvent, UnrelativableMusic, VoiceSeparator and VoltaRepeatedMusic

Accepted by: Swallow_engraver and Swallow_performer

#### glissando-event

Music event type `glissando-event` is in Music objects of type GlissandoEvent

Accepted by: Glissando_engraver and Note_head_line_engraver

#### grace-music

Music event type `grace-music` is in Music objects of type GraceMusic

Accepted by: none

#### harmonic-event

Music event type `harmonic-event` is in Music objects of type HarmonicEvent

Accepted by: none

#### hyphen-event

Music event type `hyphen-event` is in Music objects of type HyphenEvent

Accepted by: Hyphen_engraver

#### key-change-event

Music event type `key-change-event` is in Music objects of type KeyChangeEvent

Accepted by: Key_engraver and Key_performer

#### laissez-vibrer-event

Music event type `laissez-vibrer-event` is in Music objects of type LaissezVibrerEvent

Accepted by: Laissez_vibrer_engraver

#### layout-instruction

Music event type `layout-instruction` is in Music objects of type ApplyOutputEvent, OutputPropertySetMusic, OverrideProperty, PropertySet, PropertyUnset and RevertProperty

Accepted by: Output_property_engraver

#### ligature-event

Music event type `ligature-event` is in Music objects of type LigatureEvent

Accepted by: Ligature_bracket_engraver, Mensural_ligature_engraver and Vaticana_ligature_engraver

#### lyric-combine-music

Music event type `lyric-combine-music` is in Music objects of type LyricCombineMusic and OldLyricCombineMusic

Accepted by: none

#### lyric-event

Music event type `lyric-event` is in Music objects of type LyricEvent

Accepted by: Lyric_engraver and Lyric_performer

#### mark-event

Music event type `mark-event` is in Music objects of type MarkEvent

Accepted by: Mark_engraver

#### melisma-playing-event

Music event type `melisma-playing-event` is in Music objects of type MelismaPlayingEvent

Accepted by: Melisma_translator

#### melisma-span-event

Music event type `melisma-span-event` is in Music objects of type ManualMelismaEvent

Accepted by: Melisma_translator

#### melodic-event

Music event type `melodic-event` is in Music objects of type ClusterNoteEvent and NoteEvent

Accepted by: none

#### metronome-change-event

Music event type `metronome-change-event` is in Music objects of type MetronomeChangeEvent

Accepted by: Metronome_mark_engraver and Tempo_performer

#### multi-measure-rest-event

Music event type `multi-measure-rest-event` is in Music objects of type MultiMeasureRestEvent

Accepted by: Multi_measure_rest_engraver

#### multi-measure-text-event

Music event type `multi-measure-text-event` is in Music objects of type MultiMeasureTextEvent

Accepted by: Multi_measure_rest_engraver

#### music-wrapper-music

Music event type `music-wrapper-music` is in Music objects of type AutoChangeMusic, ContextSpeccedMusic, GraceMusic, QuoteMusic, RelativeOctaveMusic, TimeScaledMusic, TransposedMusic and UnrelativableMusic

Accepted by: none

#### note-event

Music event type `note-event` is in Music objects of type NoteEvent

Accepted by: Chord_name_engraver, Completion_heads_engraver, Drum_note_performer, Drum_notes_engraver, Note_heads_engraver, Note_name_engraver, Note_performer, Note_swallow_translator and Tab_note_heads_engraver

#### note-grouping-event

Music event type `note-grouping-event` is in Music objects of type NoteGroupingEvent

Accepted by: Horizontal_bracket_engraver

#### part-combine-event

Music event type `part-combine-event` is in Music objects of type SoloOneEvent, SoloTwoEvent and UnisonoEvent

Accepted by: Part_combine_engraver

#### part-combine-music

Music event type `part-combine-music` is in Music objects of type PartCombineMusic

Accepted by: none

#### pedal-event

Music event type `pedal-event` is in Music objects of type SostenutoEvent, SustainEvent and UnaCordaEvent

Accepted by: Piano_pedal_engraver and Piano_pedal_performer

#### percent-repeated-music

Music event type `percent-repeated-music` is in Music objects of type PercentRepeatedMusic

Accepted by: none

#### pes-or-flexa-event

Music event type `pes-or-flexa-event` is in Music objects of type PesOrFlexaEvent

Accepted by: none

#### phrasing-slur-event

Music event type `phrasing-slur-event` is in Music objects of type PhrasingSlurEvent

Accepted by: Phrasing_slur_engraver

#### relative-octave-check

Music event type `relative-octave-check` is in Music objects of type RelativeOctaveCheck

Accepted by: none

#### relative-octave-music

Music event type `relative-octave-music` is in Music objects of type RelativeOctaveMusic

Accepted by: none

#### repeat-tie-event

Music event type `repeat-tie-event` is in Music objects of type RepeatTieEvent

Accepted by: Repeat_tie_engraver

#### repeated-music

Music event type `repeated-music` is in Music objects of type FoldedRepeatedMusic, PercentRepeatedMusic, RepeatedMusic, TremoloRepeatedMusic, UnfoldedRepeatedMusic and VoltaRepeatedMusic

Accepted by: Chord_tremolo_engraver, Percent_repeat_engraver and Slash_repeat_engraver

#### rest-event

Music event type `rest-event` is in Music objects of type RestEvent

Accepted by: Figured_bass_engraver, Rest_engraver and Rest_swallow_translator

#### rhythmic-event

Music event type `rhythmic-event` is in Music objects of type BassFigureEvent, ClusterNoteEvent, LyricEvent, MultiMeasureRestEvent, NoteEvent, RestEvent, SkipEvent and SkipMusic

Accepted by: none

#### script-event

Music event type `script-event` is in Music objects of type ArticulationEvent and TextScriptEvent

Accepted by: Script_engraver

#### separator

Music event type `separator` is in Music objects of type VoiceSeparator

Accepted by: none

#### sequential-music

Music event type `sequential-music` is in Music objects of type MultiMeasureRestMusicGroup and SequentialMusic

Accepted by: none

#### simultaneous-music

Music event type `simultaneous-music` is in Music objects of type EventChord and SimultaneousMusic

Accepted by: none

#### skip-event

Music event type `skip-event` is in Music objects of type SkipEvent and SkipMusic

Accepted by: Skip_event_swallow_translator

#### slur-event

Music event type `slur-event` is in Music objects of type SlurEvent

Accepted by: Slur_engraver and Slur_performer

#### sostenuto-pedal-event

Music event type `sostenuto-pedal-event` is in Music objects of type SostenutoEvent

Accepted by: none

#### span-event

Music event type `span-event` is in Music objects of type BeamEvent, LigatureEvent, PhrasingSlurEvent, SlurEvent, StaffSpanEvent, TextSpanEvent and TrillSpanEvent

Accepted by: none

#### staff-span-event

Music event type `staff-span-event` is in Music objects of type StaffSpanEvent

Accepted by: Staff_symbol_engraver and Tab_staff_symbol_engraver

#### start-playing-event

Music event type `start-playing-event` is in Music objects of type StartPlayingEvent

Accepted by: none

#### string-number-event

Music event type `string-number-event` is in Music objects of type StringNumberEvent

Accepted by: String_number_engraver and Tab_note_heads_engraver

#### sustain-pedal-event

Music event type `sustain-pedal-event` is in Music objects of type SustainEvent

Accepted by: none

#### tempo-event

Music event type `tempo-event` is in Music objects of type MetronomeChangeEvent

Accepted by: none

#### text-script-event

Music event type `text-script-event` is in Music objects of type TextScriptEvent

Accepted by: Text_engraver

#### text-span-event

Music event type `text-span-event` is in Music objects of type TextSpanEvent

Accepted by: Text_spanner_engraver

#### tie-event

Music event type `tie-event` is in Music objects of type TieEvent

Accepted by: Tie_engraver and Tie_performer

#### time-scaled-music

Music event type `time-scaled-music` is in Music objects of type TimeScaledMusic

Accepted by: Tuplet_engraver

#### translator-change-instruction

Music event type `translator-change-instruction` is in Music objects of type ContextChange

Accepted by: none

#### transposed-music

Music event type `transposed-music` is in Music objects of type TransposedMusic

Accepted by: none

#### tremolo-event

Music event type `tremolo-event` is in Music objects of type TremoloEvent

Accepted by: Stem_engraver

#### tremolo-repeated-music

Music event type `tremolo-repeated-music` is in Music objects of type TremoloRepeatedMusic

Accepted by: none

#### trill-span-event

Music event type `trill-span-event` is in Music objects of type TrillSpanEvent

Accepted by: Trill_spanner_engraver

#### una-corda-pedal-event

Music event type `una-corda-pedal-event` is in Music objects of type UnaCordaEvent

Accepted by: none

#### unfolded-repeated-music

Music event type `unfolded-repeated-music` is in Music objects of type UnfoldedRepeatedMusic

Accepted by: none

#### unrelativable-music

Music event type `unrelativable-music` is in Music objects of type UnrelativableMusic

Accepted by: none

#### volta-repeated-music

Music event type `volta-repeated-music` is in Music objects of type VoltaRepeatedMusic

Accepted by: none

### Music properties

`absolute-octave` (integer)
  The absolute octave for a octave check note.
`alteration` (number)
  alteration for figured bass
`articulation-type` (string)
  key for script definitions alist.

  TODO: consider making type into symbol

`articulations` (list of music)
  Articulation events specifically for this note.
`associated-context` (string)
  Name of the Voice context associated with this \newaddlyrics section
`augmented` (boolean)
  This figure is for an augmented figured bass (with +) sign.
`bass` (boolean)
  Set if this note is a bass note in a chord
`bracket-start` (boolean)
  start a bracket here. TODO: use SpanEvents?
`bracket-stop` (boolean)
  stop a bracket here.
`cautionary` (boolean)
  If set, this alteration needs cautionary accidental
`change-to-id` (string)
  name of the context to change to
`change-to-type` (symbol)
  type of the context to change to.
`compress-procedure` (procedure)
  compress this music expression. Argument 1: the music, arg 2: factor
`context-id` (string)
  name of context
`context-type` (symbol)
  type of context
`create-new` (boolean)
  Create a fresh context.
`denominator` (integer)
  denominator in a time signature
`descend-only` (boolean)
  If set, this `\context` will only descend in the context tree.
`digit` (integer)
  digit for fingering
`diminished` (boolean)
  This bass figure should be slashed.
`direction` (direction)
  Print this up or down?
`drum-type` (symbol)
  Which percussion instrument to play this note on.
`duration` (duration)
  Duration of this note/lyric.
`element` (music)
  The single child of a Music_wrapper music object, or the body of a repeat.
`elements` (list of music)
  A list of elements for sequential of simultaneous music, or the alternatives of repeated music.
`error-found` (boolean)
  If true, a parsing error was found in this expression
`figure` (integer)
  a bass figure
`force-accidental` (boolean)
  If set, a cautionary accidental should always be printed on this note
`grob-property` (symbol)
  The symbol of the grob property to set.
`grob-property-path` (list)
  A list of symbols, locating a nested grob property, e.g. (beamed-lengths details).
`grob-value` (any type)
  The value of the grob property to set
`input-tag` (any type)
  Arbitrary marker to relate input and output
`inversion` (boolean)
  If set, this chord note is inverted.
`iterator-ctor` (procedure)
  Function to construct music-event-iterator object for this Music
`label` (markup)
  label of a mark.
`last-pitch` (pitch)
  The last pitch after relativization.
`length` (moment)
  The duration of this music
`length-callback` (procedure)
  How to compute the duration of this music. This property can only be defined as initializer in `define-music-types.scm`.
`metronome-count` (number)
  How many beats in a minute?
`name` (symbol)
  Name of this music object
`no-continuation` (boolean)
  If set, disallow continuation lines
`numerator` (integer)
  numerator of a time signature
`octavation` (integer)
  This pitch was octavated by how many octaves? For chord inversions, this is negative.
`once` (boolean)
  Apply this operation only during one time step?
`origin` (input location)
  where was this piece of music defined?
`page-penalty` (number)
  Penalty for page break hint.
`parenthesize` (boolean)
  Enclose resulting objects in parentheses?
`part-combine-status` (symbol)
  Change to what kind of state? Options are solo1, solo2 and unisono
`penalty` (number)
  Penalty for line break hint.
`pitch` (pitch)
  the pitch of this note
`pitch-alist` (list)
  list of pitches jointly forming the scale of a key signature
`pop-first` (boolean)
  Do a revert before we try to do a override on some grob property.
`procedure` (procedure)
  The function to run with \applycontext. It must take a single argument, being the context.
`property-operations` (list)
  Do these operations for instantiating the context.
`quoted-context-id` (string)
  The id of the context to direct quotes to, eg., `cue`.
`quoted-context-type` (symbol)
  The name of the context to direct quotes to, eg., `Voice`.
`quoted-events` (vector)
  A vector of with moment/event-list entries.
`quoted-music-name` (string)
  The name of the voice to quote.
`quoted-voice-direction` (direction)
  Should the quoted voice be up-stem or down-stem?
`repeat-count` (integer)
  do a `epeat` how ofen?
`span-direction` (direction)
  Does this start or stop a spanner?
`span-type` (string)
  What kind of spanner should be created?

  TODO: consider making type into symbol

`split-list` (list)
  splitting moments for part combiner.
`start-callback` (procedure)
  Function to compute the negative length of starting grace notes. This property can only be defined as initializer in `define-music-types.scm`.
`string-number` (integer)
  The number of the string in a StringNumberEvent
`symbol` (symbol)
  Grob name to perform an override/revert on.
`tags` (list)
  List of symbols that for denoting extra details, e.g. `\tag #'part ...` could tag a piece of music as only being active in a part.
`tempo-unit` (duration)
  The unit for the metronome count.
`text` (markup)
  markup expression to be printed
`text-type` (symbol)
  Particular type of text script (e.g. finger, dynamic).
`to-relative-callback` (procedure)
  How to transform a piece of music to relative pitches
`tonic` (pitch)
  Base of the scale
`tremolo-type` (integer)
`trill-pitch` (pitch)
  Pitch of other note of the trill.
`tweaks` (list)
  An alist of properties to override in the backend for the grob made of this event.
`type` (symbol)
  The type of this music object. Determines iteration in some cases.
`types` (list)
  The types of this music object; determines by what engraver this music expression is processed.
`untransposable` (boolean)
  If set, this music is not transposed.
`value` (any type)
  Assignment value for a translation property
`void` (boolean)
  If this property is #t, then the music expression is to be discarded by the toplevel music handler.
`what` (symbol)
  What to change for auto-change. FIXME, naming

## Translation

### Contexts

#### ChoirStaff

Identical to `StaffGroup` except that the contained staves are not connected vertically.

This context creates the following layout objects:

SystemStartBar, SystemStartBrace, SystemStartBracket and SystemStartSquare.

This context sets the following properties:

- Set translator property `vocNam` to `'()`
- Set translator property `vocalName` to `'()`
- Set translator property `systemStartDelimiter` to `'SystemStartBracket`

Context ChoirStaff can contain Staff, InnerStaffGroup, InnerChoirStaff, ChordNames, Lyrics, PianoStaff, GrandStaff, RhythmicStaff and DrumStaff

This context is built from the following engravers:

`System_start_delimiter_engraver`
  Creates a system start delimiter (ie. SystemStart{Bar, Brace, Bracket} spanner

  Properties (read)

  `systemStartDelimiter` (symbol)
    Which grob to make for the start of the system/staff? Set to `SystemStartBrace`, `SystemStartBracket` or `SystemStartBar`.
  `systemStartDelimiterHierarchy` (pair)
    A nested list, indicating the nesting of a start delimiters.
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  This engraver creates the following layout objects: SystemStartBar, SystemStartBrace, SystemStartBracket and SystemStartSquare.

#### ChordNames

Typesets chord names.

This context creates the following layout objects:

ChordName, SeparatingGroupSpanner, SeparationItem, StaffSpacing, VerticalAxisGroup and VoltaBracket.

This context sets the following properties:

- Set translator property `verticalExtent` to `#f`
- Set grob-property `remove-empty` in VerticalAxisGroup to `#t`.
- Set grob-property `remove-first` in VerticalAxisGroup to `#t`.
- Set grob-property `padding` in SeparatingGroupSpanner to `0.8`.
- Set translator property `extraVerticalExtent` to `#f`
- Set grob-property `minimum-Y-extent` in VerticalAxisGroup to `'(0 . 2.5)`.
- Set translator property `voltaOnThisStaff` to `#f`

This context is a `bottom' context; it can not contain other contexts.

This context is built from the following engravers:

`Hara_kiri_engraver`
  Like Axis_group_engraver, but make a hara-kiri spanner, and add interesting items (ie. note heads, lyric syllables and normal rests)

  Properties (read)

  `keepAliveInterfaces` (list)
    List of symbols, signifying grob interfaces that are worth keeping an staff with `remove-empty` set around for.
  This engraver creates the following layout objects: VerticalAxisGroup.
`Skip_event_swallow_translator`
  Swallow \skip.

  Music types accepted:

  skip-event

`Chord_name_engraver`
  Catch note-events and generate the appropriate chordname.

  Music types accepted:

  note-event

  Properties (read)

  `chordChanges` (boolean)
    Only show changes in chords scheme?
  `chordNameExceptions` (list)
    An alist of chord exceptions. Contains (chord . markup) entries.
  `chordNameFunction` (procedure)
    The function that converts lists of pitches to chord names.
  `chordNoteNamer` (procedure)
    Function that converts from a pitch object to a text markup. Used for single pitches.
  `chordRootNamer` (procedure)
    Function that converts from a pitch object to a text markup. Used for chords.
  `chordNameExceptions` (list)
    An alist of chord exceptions. Contains (chord . markup) entries.
  `majorSevenSymbol` (markup)
    How should the major 7th be formatted in a chord name?
  This engraver creates the following layout objects: ChordName.
`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.
`Output_property_engraver`
  Apply a procedure to any grob acknowledged.

  Music types accepted:

  layout-instruction

`Rest_swallow_translator`
  Swallow rest

  Music types accepted:

  rest-event

`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.

#### CueVoice

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 want to have multiple voices on the same staff.

This context also accepts commands for the following context(s):

Voice

This context creates the following layout objects:

Arpeggio, Beam, BreathingSign, ClusterSpannerBeacon, ClusterSpanner, CombineTextScript, Dots, DoublePercentRepeatCounter, DoublePercentRepeat, DynamicLineSpanner, DynamicText, Fingering, Glissando, Hairpin, LaissezVibrerTieColumn, LaissezVibrerTie, MultiMeasureRestNumber, MultiMeasureRestText, MultiMeasureRest, NoteColumn, NoteHead, NoteSpacing, PercentRepeatCounter, PercentRepeat, PhrasingSlur, RepeatSlash, RepeatTieColumn, RepeatTie, Rest, ScriptColumn, Script, Slur, StemTremolo, Stem, TextScript, TextSpanner, TieColumn, Tie, TrillPitchAccidental, TrillPitchGroup, TrillPitchHead, TrillSpanner, TupletBracket, TupletNumber and VoiceFollower.

This context sets the following properties:

- Set grob-property `length-fraction` in Beam to `0.629960524947437`.
- Set grob-property `length-fraction` in Stem to `0.629960524947437`.
- Set translator property `fontSize` to `-4`
- Set translator property `localKeySignature` to `'()`

This context is a `bottom' context; it can not contain other contexts.

This context is built from the following engravers:

`Skip_event_swallow_translator`
  Swallow \skip.

  Music types accepted:

  skip-event

`Grace_engraver`
  Set font size and other properties for grace notes.

  Properties (read)

  `graceSettings` (list)
    Overrides for grace notes. This property should be manipulated through the `add-grace-property` function.
`Tuplet_engraver`
  Catch Time_scaled_music and generate appropriate bracket

  Music types accepted:

  time-scaled-music

  Properties (read)

  `tupletNumberFormatFunction` (procedure)
    Function taking a music as input, producing a string. This function is called to determine the text to print on a tuplet bracket.
  `tupletSpannerDuration` (moment)
    Normally a tuplet bracket is as wide as the `\times` expression that gave rise to it. By setting this property, you can make brackets last shorter. Example

                       {
                       \set tupletSpannerDuration = #(ly:make-moment 1 4)
                       \times 2/3 { c8 c c c c c }
                       }

    .

  `tupletFullLength` (boolean)
    If set, the tuplet is printed upto the start of the next note.
  This engraver creates the following layout objects: TupletBracket and TupletNumber.
`Tie_engraver`
  Generate ties between noteheads of equal pitch.

  Music types accepted:

  tie-event

  Properties (read)

  `tieWaitForNote` (boolean)
    If true, tied notes do not have to follow each other directly. This can be used for writing out arpeggios
  Properties (write)
  `tieMelismaBusy` (boolean)
    Signal whether a tie is present.
  This engraver creates the following layout objects: Tie and TieColumn.
`Slur_engraver`
  Build slur grobs from slur events

  Music types accepted:

  slur-event

  Properties (read)

  `slurMelismaBusy` (boolean)
    Signal if a slur is present.
  `doubleSlurs` (boolean)
    When set, two slurs are created for every slurred note, one above and one below the chord.
  This engraver creates the following layout objects: Slur.
`Cluster_spanner_engraver`
  Engraves a cluster using Spanner notation

  Music types accepted:

  cluster-note-event and busy-playing-event

  This engraver creates the following layout objects: ClusterSpanner and ClusterSpannerBeacon.

`Phrasing_slur_engraver`
  Print phrasing slurs. Similar to Slur_engraver

  Music types accepted:

  phrasing-slur-event

  This engraver creates the following layout objects: PhrasingSlur.

`Rhythmic_column_engraver`
  Generates NoteColumn, an objects that groups stems, noteheads and rests.

  This engraver creates the following layout objects: NoteColumn and NoteSpacing.

`Script_column_engraver`

  This engraver creates the following layout objects: ScriptColumn.

`Script_engraver`
  Handles note scripted articulations.

  Music types accepted:

  script-event and articulation-event

  Properties (read)

  `scriptDefinitions` (list)
    Description of scripts. This is used by Script_engraver for typesetting note-super/subscripts. See `scm/script.scm` for more information
  This engraver creates the following layout objects: Script.
`Fingering_engraver`
  Create fingering-scripts

  Music types accepted:

  fingering-event

  This engraver creates the following layout objects: Fingering.

`Dynamic_engraver`
  This engraver creates hairpins, dynamic texts, and their vertical alignments. The symbols are collected onto a DynamicLineSpanner grob which takes care of vertical positioning.

  Music types accepted:

  absolute-dynamic-event, crescendo-event and decrescendo-event

  This engraver creates the following layout objects: DynamicLineSpanner, DynamicText, Hairpin and TextSpanner.

`Text_engraver`
  Create text-scripts

  Music types accepted:

  text-script-event

  This engraver creates the following layout objects: TextScript.

`Part_combine_engraver`
  Part combine engraver for orchestral scores: Print markings a2, Solo, Solo II, and unisono

  Music types accepted:

  part-combine-event

  Properties (read)

  `printPartCombineTexts` (boolean)
    set Solo/A due texts in the part combiner?
  `soloText` (string)
    text for begin of solo when part-combining.
  `soloIIText` (string)
    text for begin of solo for voice “two” when part-combining.
  `aDueText` (string)
    Text to print at a unisono passage.
  This engraver creates the following layout objects: CombineTextScript.
`Melisma_translator`
  This translator collects melisma information about ties, beams, and user settings (`melismaBusy`, and signals it to the `ddlyrics` code.

  Music types accepted:

  melisma-playing-event and melisma-span-event

  Properties (read)

  `melismaBusy` (boolean)
    Signifies whether a melisma is active. This can be used to signal melismas on top of those automatically detected.
  `melismaBusyProperties` (list)
    List of properties (symbols) to determine whether a melisma is playing. Setting this property will influence how lyrics are aligned to notes. For example, if set to `#'(melismaBusy beamMelismaBusy)`, only manual melismata and manual beams are considered. Possible values include `melismaBusy`, `slurMelismaBusy`, `tieMelismaBusy`, and `beamMelismaBusy`
  `slurMelismaBusy` (boolean)
    Signal if a slur is present.
  `tieMelismaBusy` (boolean)
    Signal whether a tie is present.
  `beamMelismaBusy` (boolean)
    Signal if a beam is present.
`Slash_repeat_engraver`
  Make beat repeats.

  Music types accepted:

  repeated-music

  Properties (read)

  `measureLength` (moment)
    Length of one measure in the current time signature.
  This engraver creates the following layout objects: RepeatSlash.
`Percent_repeat_engraver`
  Make whole bar and double bar repeats.

  Music types accepted:

  repeated-music

  Properties (read)

  `measureLength` (moment)
    Length of one measure in the current time signature.
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  `countPercentRepeats` (boolean)
    If set, produce counters for percent repeats.
  This engraver creates the following layout objects: DoublePercentRepeat, DoublePercentRepeatCounter, PercentRepeat and PercentRepeatCounter.
`Chord_tremolo_engraver`
  Generates beams for tremolo repeats.

  Music types accepted:

  repeated-music

  This engraver creates the following layout objects: Beam.

`New_fingering_engraver`
  Create fingering-scripts for notes in a new chord. This engraver is ill-named, since it also takes care of articulations and harmonic note heads

  Properties (read)

  `fingeringOrientations` (list)
    List of symbols, containing ``left`', ``right`', ``up`' and/or ``down`'. This list determines where fingerings are put relative to the chord being fingered.
  This engraver creates the following layout objects: Fingering.
`Auto_beam_engraver`
  Generate beams based on measure characteristics and observed Stems. Uses beatLength, measureLength and measurePosition to decide when to start and stop a beam. Overriding beaming is done through Stem_engraver properties `stemLeftBeamCount` and `stemRightBeamCount`.

  Music types accepted:

  beam-forbid-event

  Properties (read)

  `autoBeaming` (boolean)
    If set to true then beams are generated automatically.
  `autoBeamSettings` (list)
    Specifies when automatically generated beams should begin and end. See Setting automatic beam behavior for more information.
  `beatLength` (moment)
    The length of one beat in this time signature.
  `subdivideBeams` (boolean)
    If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.
  This engraver creates the following layout objects: Beam.
`Grace_beam_engraver`
  Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams. Only engraves beams when we are at grace points in time.

  Music types accepted:

  beam-event

  Properties (read)

  `beamMelismaBusy` (boolean)
    Signal if a beam is present.
  `beatLength` (moment)
    The length of one beat in this time signature.
  `allowBeamBreak` (boolean)
    If true allow line breaks for beams over bar lines.
  `subdivideBeams` (boolean)
    If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.
  This engraver creates the following layout objects: Beam.
`Beam_engraver`
  Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams.

  Music types accepted:

  beam-event

  Properties (read)

  `beamMelismaBusy` (boolean)
    Signal if a beam is present.
  `beatLength` (moment)
    The length of one beat in this time signature.
  `subdivideBeams` (boolean)
    If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.
  This engraver creates the following layout objects: Beam.
`Stem_engraver`
  Create stems and single-stem tremolos. It also works together with the beam engraver for overriding beaming.

  Music types accepted:

  tremolo-event

  Properties (read)

  `tremoloFlags` (integer)
    Number of tremolo flags to add if no number is specified.
  `stemLeftBeamCount` (integer)
    Specify the number of beams to draw on the left side of the next note. Overrides automatic beaming. The value is only used once, and then it is erased.
  `stemRightBeamCount` (integer)
    See `stemLeftBeamCount`.
  This engraver creates the following layout objects: Stem and StemTremolo.
`Rest_engraver`

  Music types accepted:

  rest-event

  Properties (read)

  `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: Dots and Rest.
`Note_heads_engraver`
  Generate noteheads.

  Music types accepted:

  note-event and busy-playing-event

  Properties (read)

  `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: Dots and NoteHead.
`Breathing_sign_engraver`

  Music types accepted:

  breathing-event

  This engraver creates the following layout objects: BreathingSign.

`Ligature_bracket_engraver`
  Handles Ligature_events by engraving Ligature brackets.

  Music types accepted:

  ligature-event

  This engraver creates the following layout objects: TupletBracket.

`Glissando_engraver`
  Engrave a glissandi

  Music types accepted:

  glissando-event

  Properties (read)

  `followVoice` (boolean)
    If set, note heads are tracked across staff switches by a thin line
  This engraver creates the following layout objects: Glissando.
`Note_head_line_engraver`
  Engrave a line between two note heads, for example a glissando. If followVoice is set, staff switches also generate a line.

  Music types accepted:

  glissando-event

  Properties (read)

  `followVoice` (boolean)
    If set, note heads are tracked across staff switches by a thin line
  This engraver creates the following layout objects: Glissando and VoiceFollower.
`Repeat_tie_engraver`
  Create Laissez vibrer items.

  Music types accepted:

  repeat-tie-event

  This engraver creates the following layout objects: RepeatTie and RepeatTieColumn.

`Laissez_vibrer_engraver`
  Create Laissez vibrer items.

  Music types accepted:

  laissez-vibrer-event

  This engraver creates the following layout objects: LaissezVibrerTie and LaissezVibrerTieColumn.

`Forbid_line_break_engraver`
  Forbid line breaks when note heads are still playing at some point.

  Properties (read)

  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
`Grob_pq_engraver`
  Administrate when certain grobs (eg. note heads) stop playing

  Properties (read)

  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
  Properties (write)
  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
`Trill_spanner_engraver`
  Create trill spanner from a Music.

  Music types accepted:

  trill-span-event

  This engraver creates the following layout objects: TrillSpanner.

`Text_spanner_engraver`
  Create text spanner from a Music.

  Music types accepted:

  text-span-event

  This engraver creates the following layout objects: TextSpanner.

`Multi_measure_rest_engraver`
  Engraves multi-measure rests that are produced with `R`. Reads measurePosition and currentBarNumber to determine what number to print over the MultiMeasureRest. Reads measureLength to determine if it should use a whole rest or a breve rest to represent 1 measure

  Music types accepted:

  multi-measure-rest-event and multi-measure-text-event

  Properties (read)

  `currentBarNumber` (integer)
    Contains the current barnumber. This property is incremented at every bar line.
  `restNumberThreshold` (number)
    If a multimeasure rest has more measures than this, a number is printed.
  `breakableSeparationItem` (layout object)
    The breakable items in this time step, for this staff.
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  `measurePosition` (moment)
    How much of the current measure have we had. This can be set manually to create incomplete measures.
  `measureLength` (moment)
    Length of one measure in the current time signature.
  This engraver creates the following layout objects: MultiMeasureRest, MultiMeasureRestNumber and MultiMeasureRestText.
`Arpeggio_engraver`
  Generate an Arpeggio symbol

  Music types accepted:

  arpeggio-event

  This engraver creates the following layout objects: Arpeggio.

`Output_property_engraver`
  Apply a procedure to any grob acknowledged.

  Music types accepted:

  layout-instruction

`Pitched_trill_engraver`
  Print the bracketed notehead after a notehead with trill.

  This engraver creates the following layout objects: TrillPitchAccidental, TrillPitchGroup and TrillPitchHead.

`Font_size_engraver`
  Puts fontSize into font-size grob property.

  Properties (read)

  `fontSize` (number)
    The relative size of all grobs in a context.

#### Devnull

Silently discards all musical information given to this context.

This context also accepts commands for the following context(s):

Voice and Staff

This context creates the following layout objects:

none.

This context is a `bottom' context; it can not contain other contexts.

This context is built from the following engravers:

`Swallow_engraver`
  This engraver swallows everything given to it silently. The purpose of this is to prevent spurious "event junked" warnings.

  Music types accepted:

  general-music

#### DrumStaff

Handles typesetting for percussion.

This context also accepts commands for the following context(s):

Staff

This context creates the following layout objects:

BarLine, Clef, DotColumn, InstrumentName, LedgerLineSpanner, NoteCollision, OctavateEight, RestCollision, SeparatingGroupSpanner, SeparationItem, StaffSpacing, StaffSymbol, TimeSignature, VerticalAxisGroup and VoltaBracket.

This context sets the following properties:

- Set grob-property `staff-padding` in Script to `0.75`.
- Set translator property `clefPosition` to `0`
- Set translator property `clefGlyph` to `clefs.percussion`
- Set translator property `instr` to `'()`
- Set translator property `instrument` to `'()`
- Set translator property `createSpacing` to `#t`
- Set translator property `localKeySignature` to `'()`
- Set translator property `verticalExtent` to `#f`
- Set translator property `extraVerticalExtent` to `#f`
- Set grob-property `minimum-Y-extent` in VerticalAxisGroup to `'(-4 . 4)`.

Context DrumStaff can contain DrumVoice and CueVoice

This context is built from the following engravers:

`Axis_group_engraver`
  Group all objects created in this context in a VerticalAxisGroup spanner.

  Properties (read)

  `verticalExtent` (pair of numbers)
    Hard coded vertical extent. The format is a pair of dimensions, for example, this sets the sizes of a staff to 10 (5+5) staff-spaces high.

                       \set Staff.verticalExtent = #'(-5.0 . 5.0)

    This does not work for Voice or any other context that doesn't form a vertical group.

  `minimumVerticalExtent` (pair of numbers)
    minimum vertical extent, same format as verticalExtent
  `extraVerticalExtent` (pair of numbers)
    extra vertical extent, same format as minimumVerticalExtent
  This engraver creates the following layout objects: VerticalAxisGroup.
`Instrument_name_engraver`
  Creates a system start text for instrument or vocal names.

  Properties (read)

  `vocNam` (markup)
    Name of a vocal line, short version.
  `vocalName` (markup)
    Name of a vocal line.
  `instrument` (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.
  `instr` (markup)
    See `instrument`
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  This engraver creates the following layout objects: InstrumentName.
`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.

`Clef_engraver`
  Determine and set reference point for pitches

  Properties (read)

  `clefPosition` (number)
    Where should the center of the clef symbol go, measured in half staff spaces from the center of the staff.
  `clefGlyph` (string)
    Name of the symbol within the music font.
  `middleCPosition` (number)
    Place of the middle C, measured in half staff-spaces. Usually determined by looking at `clefPosition` and `clefGlyph`.
  `clefOctavation` (integer)
    Add this much extra octavation. Values of 7 and -7 are common.
  `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.
  This engraver creates the following layout objects: Clef and OctavateEight.
`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.

  This engraver creates the following layout objects: BarLine.
`Output_property_engraver`
  Apply a procedure to any grob acknowledged.

  Music types accepted:

  layout-instruction

#### DrumVoice

A voice on a percussion staff.

This context also accepts commands for the following context(s):

Voice

This context creates the following layout objects:

Beam, BreathingSign, CombineTextScript, Dots, DoublePercentRepeatCounter, DoublePercentRepeat, DynamicLineSpanner, DynamicText, Hairpin, LaissezVibrerTieColumn, LaissezVibrerTie, MultiMeasureRestNumber, MultiMeasureRestText, MultiMeasureRest, NoteColumn, NoteHead, NoteSpacing, PercentRepeatCounter, PercentRepeat, PhrasingSlur, RepeatSlash, RepeatTieColumn, RepeatTie, Rest, ScriptColumn, Script, Slur, StemTremolo, Stem, TextScript, TextSpanner, TieColumn, Tie, TrillPitchAccidental, TrillPitchGroup, TrillPitchHead, TrillSpanner, TupletBracket and TupletNumber.

This context sets the following properties:

- Set translator property `localKeySignature` to `'()`

This context is a `bottom' context; it can not contain other contexts.

This context is built from the following engravers:

`Skip_event_swallow_translator`
  Swallow \skip.

  Music types accepted:

  skip-event

`Tuplet_engraver`
  Catch Time_scaled_music and generate appropriate bracket

  Music types accepted:

  time-scaled-music

  Properties (read)

  `tupletNumberFormatFunction` (procedure)
    Function taking a music as input, producing a string. This function is called to determine the text to print on a tuplet bracket.
  `tupletSpannerDuration` (moment)
    Normally a tuplet bracket is as wide as the `\times` expression that gave rise to it. By setting this property, you can make brackets last shorter. Example

                       {
                       \set tupletSpannerDuration = #(ly:make-moment 1 4)
                       \times 2/3 { c8 c c c c c }
                       }

    .

  `tupletFullLength` (boolean)
    If set, the tuplet is printed upto the start of the next note.
  This engraver creates the following layout objects: TupletBracket and TupletNumber.
`Drum_notes_engraver`
  Generate noteheads.

  Music types accepted:

  note-event and busy-playing-event

  Properties (read)

  `drumStyleTable` (hash table)
    A hash table containing mapping drums to layout settings. Predefined values: ``drums-style`', ``timbales-style`', ``congas-style`', ``bongos-style`' and ``percussion-style`'.

    The layout style is a hash table, containing the drum-pitches (e.g. the symbol ``hihat`') as key, and a list (notehead-style script vertical-position) as values.

  This engraver creates the following layout objects: Dots, NoteHead and Script.
`Grob_pq_engraver`
  Administrate when certain grobs (eg. note heads) stop playing

  Properties (read)

  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
  Properties (write)
  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
`Text_spanner_engraver`
  Create text spanner from a Music.

  Music types accepted:

  text-span-event

  This engraver creates the following layout objects: TextSpanner.

`Multi_measure_rest_engraver`
  Engraves multi-measure rests that are produced with `R`. Reads measurePosition and currentBarNumber to determine what number to print over the MultiMeasureRest. Reads measureLength to determine if it should use a whole rest or a breve rest to represent 1 measure

  Music types accepted:

  multi-measure-rest-event and multi-measure-text-event

  Properties (read)

  `currentBarNumber` (integer)
    Contains the current barnumber. This property is incremented at every bar line.
  `restNumberThreshold` (number)
    If a multimeasure rest has more measures than this, a number is printed.
  `breakableSeparationItem` (layout object)
    The breakable items in this time step, for this staff.
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  `measurePosition` (moment)
    How much of the current measure have we had. This can be set manually to create incomplete measures.
  `measureLength` (moment)
    Length of one measure in the current time signature.
  This engraver creates the following layout objects: MultiMeasureRest, MultiMeasureRestNumber and MultiMeasureRestText.
`Skip_event_swallow_translator`
  Swallow \skip.

  Music types accepted:

  skip-event

`Grace_engraver`
  Set font size and other properties for grace notes.

  Properties (read)

  `graceSettings` (list)
    Overrides for grace notes. This property should be manipulated through the `add-grace-property` function.
`Tuplet_engraver`
  Catch Time_scaled_music and generate appropriate bracket

  Music types accepted:

  time-scaled-music

  Properties (read)

  `tupletNumberFormatFunction` (procedure)
    Function taking a music as input, producing a string. This function is called to determine the text to print on a tuplet bracket.
  `tupletSpannerDuration` (moment)
    Normally a tuplet bracket is as wide as the `\times` expression that gave rise to it. By setting this property, you can make brackets last shorter. Example

                       {
                       \set tupletSpannerDuration = #(ly:make-moment 1 4)
                       \times 2/3 { c8 c c c c c }
                       }

    .

  `tupletFullLength` (boolean)
    If set, the tuplet is printed upto the start of the next note.
  This engraver creates the following layout objects: TupletBracket and TupletNumber.
`Tie_engraver`
  Generate ties between noteheads of equal pitch.

  Music types accepted:

  tie-event

  Properties (read)

  `tieWaitForNote` (boolean)
    If true, tied notes do not have to follow each other directly. This can be used for writing out arpeggios
  Properties (write)
  `tieMelismaBusy` (boolean)
    Signal whether a tie is present.
  This engraver creates the following layout objects: Tie and TieColumn.
`Slur_engraver`
  Build slur grobs from slur events

  Music types accepted:

  slur-event

  Properties (read)

  `slurMelismaBusy` (boolean)
    Signal if a slur is present.
  `doubleSlurs` (boolean)
    When set, two slurs are created for every slurred note, one above and one below the chord.
  This engraver creates the following layout objects: Slur.
`Phrasing_slur_engraver`
  Print phrasing slurs. Similar to Slur_engraver

  Music types accepted:

  phrasing-slur-event

  This engraver creates the following layout objects: PhrasingSlur.

`Rhythmic_column_engraver`
  Generates NoteColumn, an objects that groups stems, noteheads and rests.

  This engraver creates the following layout objects: NoteColumn and NoteSpacing.

`Script_column_engraver`

  This engraver creates the following layout objects: ScriptColumn.

`Script_engraver`
  Handles note scripted articulations.

  Music types accepted:

  script-event and articulation-event

  Properties (read)

  `scriptDefinitions` (list)
    Description of scripts. This is used by Script_engraver for typesetting note-super/subscripts. See `scm/script.scm` for more information
  This engraver creates the following layout objects: Script.
`Dynamic_engraver`
  This engraver creates hairpins, dynamic texts, and their vertical alignments. The symbols are collected onto a DynamicLineSpanner grob which takes care of vertical positioning.

  Music types accepted:

  absolute-dynamic-event, crescendo-event and decrescendo-event

  This engraver creates the following layout objects: DynamicLineSpanner, DynamicText, Hairpin and TextSpanner.

`Text_engraver`
  Create text-scripts

  Music types accepted:

  text-script-event

  This engraver creates the following layout objects: TextScript.

`Part_combine_engraver`
  Part combine engraver for orchestral scores: Print markings a2, Solo, Solo II, and unisono

  Music types accepted:

  part-combine-event

  Properties (read)

  `printPartCombineTexts` (boolean)
    set Solo/A due texts in the part combiner?
  `soloText` (string)
    text for begin of solo when part-combining.
  `soloIIText` (string)
    text for begin of solo for voice “two” when part-combining.
  `aDueText` (string)
    Text to print at a unisono passage.
  This engraver creates the following layout objects: CombineTextScript.
`Melisma_translator`
  This translator collects melisma information about ties, beams, and user settings (`melismaBusy`, and signals it to the `ddlyrics` code.

  Music types accepted:

  melisma-playing-event and melisma-span-event

  Properties (read)

  `melismaBusy` (boolean)
    Signifies whether a melisma is active. This can be used to signal melismas on top of those automatically detected.
  `melismaBusyProperties` (list)
    List of properties (symbols) to determine whether a melisma is playing. Setting this property will influence how lyrics are aligned to notes. For example, if set to `#'(melismaBusy beamMelismaBusy)`, only manual melismata and manual beams are considered. Possible values include `melismaBusy`, `slurMelismaBusy`, `tieMelismaBusy`, and `beamMelismaBusy`
  `slurMelismaBusy` (boolean)
    Signal if a slur is present.
  `tieMelismaBusy` (boolean)
    Signal whether a tie is present.
  `beamMelismaBusy` (boolean)
    Signal if a beam is present.
`Slash_repeat_engraver`
  Make beat repeats.

  Music types accepted:

  repeated-music

  Properties (read)

  `measureLength` (moment)
    Length of one measure in the current time signature.
  This engraver creates the following layout objects: RepeatSlash.
`Percent_repeat_engraver`
  Make whole bar and double bar repeats.

  Music types accepted:

  repeated-music

  Properties (read)

  `measureLength` (moment)
    Length of one measure in the current time signature.
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  `countPercentRepeats` (boolean)
    If set, produce counters for percent repeats.
  This engraver creates the following layout objects: DoublePercentRepeat, DoublePercentRepeatCounter, PercentRepeat and PercentRepeatCounter.
`Chord_tremolo_engraver`
  Generates beams for tremolo repeats.

  Music types accepted:

  repeated-music

  This engraver creates the following layout objects: Beam.

`Auto_beam_engraver`
  Generate beams based on measure characteristics and observed Stems. Uses beatLength, measureLength and measurePosition to decide when to start and stop a beam. Overriding beaming is done through Stem_engraver properties `stemLeftBeamCount` and `stemRightBeamCount`.

  Music types accepted:

  beam-forbid-event

  Properties (read)

  `autoBeaming` (boolean)
    If set to true then beams are generated automatically.
  `autoBeamSettings` (list)
    Specifies when automatically generated beams should begin and end. See Setting automatic beam behavior for more information.
  `beatLength` (moment)
    The length of one beat in this time signature.
  `subdivideBeams` (boolean)
    If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.
  This engraver creates the following layout objects: Beam.
`Grace_beam_engraver`
  Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams. Only engraves beams when we are at grace points in time.

  Music types accepted:

  beam-event

  Properties (read)

  `beamMelismaBusy` (boolean)
    Signal if a beam is present.
  `beatLength` (moment)
    The length of one beat in this time signature.
  `allowBeamBreak` (boolean)
    If true allow line breaks for beams over bar lines.
  `subdivideBeams` (boolean)
    If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.
  This engraver creates the following layout objects: Beam.
`Beam_engraver`
  Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams.

  Music types accepted:

  beam-event

  Properties (read)

  `beamMelismaBusy` (boolean)
    Signal if a beam is present.
  `beatLength` (moment)
    The length of one beat in this time signature.
  `subdivideBeams` (boolean)
    If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.
  This engraver creates the following layout objects: Beam.
`Stem_engraver`
  Create stems and single-stem tremolos. It also works together with the beam engraver for overriding beaming.

  Music types accepted:

  tremolo-event

  Properties (read)

  `tremoloFlags` (integer)
    Number of tremolo flags to add if no number is specified.
  `stemLeftBeamCount` (integer)
    Specify the number of beams to draw on the left side of the next note. Overrides automatic beaming. The value is only used once, and then it is erased.
  `stemRightBeamCount` (integer)
    See `stemLeftBeamCount`.
  This engraver creates the following layout objects: Stem and StemTremolo.
`Rest_engraver`

  Music types accepted:

  rest-event

  Properties (read)

  `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: Dots and Rest.
`Breathing_sign_engraver`

  Music types accepted:

  breathing-event

  This engraver creates the following layout objects: BreathingSign.

`Repeat_tie_engraver`
  Create Laissez vibrer items.

  Music types accepted:

  repeat-tie-event

  This engraver creates the following layout objects: RepeatTie and RepeatTieColumn.

`Laissez_vibrer_engraver`
  Create Laissez vibrer items.

  Music types accepted:

  laissez-vibrer-event

  This engraver creates the following layout objects: LaissezVibrerTie and LaissezVibrerTieColumn.

`Forbid_line_break_engraver`
  Forbid line breaks when note heads are still playing at some point.

  Properties (read)

  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
`Grob_pq_engraver`
  Administrate when certain grobs (eg. note heads) stop playing

  Properties (read)

  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
  Properties (write)
  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
`Trill_spanner_engraver`
  Create trill spanner from a Music.

  Music types accepted:

  trill-span-event

  This engraver creates the following layout objects: TrillSpanner.

`Text_spanner_engraver`
  Create text spanner from a Music.

  Music types accepted:

  text-span-event

  This engraver creates the following layout objects: TextSpanner.

`Multi_measure_rest_engraver`
  Engraves multi-measure rests that are produced with `R`. Reads measurePosition and currentBarNumber to determine what number to print over the MultiMeasureRest. Reads measureLength to determine if it should use a whole rest or a breve rest to represent 1 measure

  Music types accepted:

  multi-measure-rest-event and multi-measure-text-event

  Properties (read)

  `currentBarNumber` (integer)
    Contains the current barnumber. This property is incremented at every bar line.
  `restNumberThreshold` (number)
    If a multimeasure rest has more measures than this, a number is printed.
  `breakableSeparationItem` (layout object)
    The breakable items in this time step, for this staff.
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  `measurePosition` (moment)
    How much of the current measure have we had. This can be set manually to create incomplete measures.
  `measureLength` (moment)
    Length of one measure in the current time signature.
  This engraver creates the following layout objects: MultiMeasureRest, MultiMeasureRestNumber and MultiMeasureRestText.
`Output_property_engraver`
  Apply a procedure to any grob acknowledged.

  Music types accepted:

  layout-instruction

`Pitched_trill_engraver`
  Print the bracketed notehead after a notehead with trill.

  This engraver creates the following layout objects: TrillPitchAccidental, TrillPitchGroup and TrillPitchHead.

`Font_size_engraver`
  Puts fontSize into font-size grob property.

  Properties (read)

  `fontSize` (number)
    The relative size of all grobs in a context.

#### FiguredBass

(not documented)

This context creates the following layout objects:

BassFigureAlignment, BassFigureBracket, BassFigureContinuation, BassFigureLine, BassFigure, SeparatingGroupSpanner, SeparationItem, StaffSpacing and VerticalAxisGroup.

This context sets the following properties:

- Set grob-property `minimum-Y-extent` in VerticalAxisGroup to `'(-0.5 . 2.5)`.
- Set grob-property `remove-first` in VerticalAxisGroup to `#t`.
- Set grob-property `remove-empty` in VerticalAxisGroup to `#t`.

This context is a `bottom' context; it can not contain other contexts.

This context is built from the following engravers:

`Hara_kiri_engraver`
  Like Axis_group_engraver, but make a hara-kiri spanner, and add interesting items (ie. note heads, lyric syllables and normal rests)

  Properties (read)

  `keepAliveInterfaces` (list)
    List of symbols, signifying grob interfaces that are worth keeping an staff with `remove-empty` set around for.
  This engraver creates the following layout objects: VerticalAxisGroup.
`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.
`Skip_event_swallow_translator`
  Swallow \skip.

  Music types accepted:

  skip-event

`Note_swallow_translator`
  Swallow notes

  Music types accepted:

  note-event

`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.
  `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
  This engraver creates the following layout objects: BassFigure, BassFigureAlignment, BassFigureBracket, BassFigureContinuation and BassFigureLine.

#### Global

Hard coded entry point for LilyPond. Cannot be tuned.

This context creates the following layout objects:

none.

This context sets the following properties:

Context Global can contain Score

This context is built from the following engravers:

#### GrandStaff

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

This context creates the following layout objects:

Arpeggio, SpanBar, SystemStartBar, SystemStartBrace, SystemStartBracket and SystemStartSquare.

This context sets the following properties:

- Set translator property `systemStartDelimiter` to `'SystemStartBrace`
- Set translator property `localKeySignature` to `'()`

Context GrandStaff can contain Staff

This context is built from the following engravers:

`System_start_delimiter_engraver`
  Creates a system start delimiter (ie. SystemStart{Bar, Brace, Bracket} spanner

  Properties (read)

  `systemStartDelimiter` (symbol)
    Which grob to make for the start of the system/staff? Set to `SystemStartBrace`, `SystemStartBracket` or `SystemStartBar`.
  `systemStartDelimiterHierarchy` (pair)
    A nested list, indicating the nesting of a start delimiters.
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  This engraver creates the following layout objects: SystemStartBar, SystemStartBrace, SystemStartBracket and SystemStartSquare.
`Span_arpeggio_engraver`

  Properties (read)

  `connectArpeggios` (boolean)
    If set, connect arpeggios across piano staff.
  This engraver creates the following layout objects: Arpeggio.
`Span_bar_engraver`
  This engraver makes cross-staff barlines: It catches all normal bar lines, and draws a single span-bar across them.

  This engraver creates the following layout objects: SpanBar.

#### GregorianTranscriptionStaff

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

This context also accepts commands for the following context(s):

Staff

This context creates the following layout objects:

AccidentalSuggestion, Accidental, BarLine, Clef, DotColumn, InstrumentName, KeySignature, LedgerLineSpanner, NoteCollision, OctavateEight, OttavaBracket, RestCollision, SeparatingGroupSpanner, SeparationItem, SostenutoPedalLineSpanner, SostenutoPedal, StaffSpacing, StaffSymbol, SustainPedalLineSpanner, SustainPedal, TimeSignature, UnaCordaPedalLineSpanner, UnaCordaPedal, VerticalAxisGroup and VoltaBracket.

This context sets the following properties:

- Set grob-property `transparent` in BarLine to `#t`.
- Set translator property `instr` to `'()`
- Set translator property `instrument` to `'()`
- Set translator property `createSpacing` to `#t`
- Set translator property `localKeySignature` to `'()`
- Set translator property `verticalExtent` to `#f`
- Set translator property `extraVerticalExtent` to `#f`
- Set grob-property `minimum-Y-extent` in VerticalAxisGroup to `'(-4 . 4)`.

Context GregorianTranscriptionStaff can contain GregorianTranscriptionVoice and CueVoice

This context is built from the following engravers:

`Axis_group_engraver`
  Group all objects created in this context in a VerticalAxisGroup spanner.

  Properties (read)

  `verticalExtent` (pair of numbers)
    Hard coded vertical extent. The format is a pair of dimensions, for example, this sets the sizes of a staff to 10 (5+5) staff-spaces high.

                       \set Staff.verticalExtent = #'(-5.0 . 5.0)

    This does not work for Voice or any other context that doesn't form a vertical group.

  `minimumVerticalExtent` (pair of numbers)
    minimum vertical extent, same format as verticalExtent
  `extraVerticalExtent` (pair of numbers)
    extra vertical extent, same format as minimumVerticalExtent
  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.

  Music types accepted:

  string-number-event

`Instrument_name_engraver`
  Creates a system start text for instrument or vocal names.

  Properties (read)

  `vocNam` (markup)
    Name of a vocal line, short version.
  `vocalName` (markup)
    Name of a vocal line.
  `instrument` (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.
  `instr` (markup)
    See `instrument`
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  This engraver creates the following layout objects: InstrumentName.
`Piano_pedal_engraver`
  Engrave piano pedal symbols and brackets.

  Music types accepted:

  pedal-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: SostenutoPedal, SostenutoPedalLineSpanner, SustainPedal, SustainPedalLineSpanner, UnaCordaPedal and UnaCordaPedalLineSpanner.
`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.
  `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.
  `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)

  `clefPosition` (number)
    Where should the center of the clef symbol go, measured in half staff spaces from the center of the staff.
  `clefGlyph` (string)
    Name of the symbol within the music font.
  `middleCPosition` (number)
    Place of the middle C, measured in half staff-spaces. Usually determined by looking at `clefPosition` and `clefGlyph`.
  `clefOctavation` (integer)
    Add this much extra octavation. Values of 7 and -7 are common.
  `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.
  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.
  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.

  This engraver creates the following layout objects: BarLine.
`Output_property_engraver`
  Apply a procedure to any grob acknowledged.

  Music types accepted:

  layout-instruction

#### GregorianTranscriptionVoice

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 want to have multiple voices on the same staff.

This context also accepts commands for the following context(s):

Voice

This context creates the following layout objects:

Arpeggio, Beam, BreathingSign, ClusterSpannerBeacon, ClusterSpanner, CombineTextScript, Dots, DoublePercentRepeatCounter, DoublePercentRepeat, DynamicLineSpanner, DynamicText, Fingering, Glissando, Hairpin, LaissezVibrerTieColumn, LaissezVibrerTie, MultiMeasureRestNumber, MultiMeasureRestText, MultiMeasureRest, NoteColumn, NoteHead, NoteSpacing, PercentRepeatCounter, PercentRepeat, PhrasingSlur, RepeatSlash, RepeatTieColumn, RepeatTie, Rest, ScriptColumn, Script, Slur, StemTremolo, Stem, TextScript, TextSpanner, TieColumn, Tie, TrillPitchAccidental, TrillPitchGroup, TrillPitchHead, TrillSpanner, TupletBracket, TupletNumber and VoiceFollower.

This context sets the following properties:

- Set grob-property `edge-text` in TextSpanner to `'( . )`.
- Set grob-property `enclose-bounds` in TextSpanner to `1`.
- Set grob-property `padding` in TextSpanner to `-0.1`.
- Set grob-property `edge-height` in TextSpanner to `'(0 . 0)`.
- Set grob-property `style` in TextSpanner to `'line`.
- Set grob-property `dash-fraction` in TextSpanner to `'()`.
- Set translator property `autoBeaming` to `#f`
- Set grob-property `padding` in Script to `0.5`.
- Set grob-property `transparent` in LigatureBracket to `#t`.
- Set translator property `localKeySignature` to `'()`

This context is a `bottom' context; it can not contain other contexts.

This context is built from the following engravers:

`Skip_event_swallow_translator`
  Swallow \skip.

  Music types accepted:

  skip-event

`Grace_engraver`
  Set font size and other properties for grace notes.

  Properties (read)

  `graceSettings` (list)
    Overrides for grace notes. This property should be manipulated through the `add-grace-property` function.
`Tuplet_engraver`
  Catch Time_scaled_music and generate appropriate bracket

  Music types accepted:

  time-scaled-music

  Properties (read)

  `tupletNumberFormatFunction` (procedure)
    Function taking a music as input, producing a string. This function is called to determine the text to print on a tuplet bracket.
  `tupletSpannerDuration` (moment)
    Normally a tuplet bracket is as wide as the `\times` expression that gave rise to it. By setting this property, you can make brackets last shorter. Example

                       {
                       \set tupletSpannerDuration = #(ly:make-moment 1 4)
                       \times 2/3 { c8 c c c c c }
                       }

    .

  `tupletFullLength` (boolean)
    If set, the tuplet is printed upto the start of the next note.
  This engraver creates the following layout objects: TupletBracket and TupletNumber.
`Tie_engraver`
  Generate ties between noteheads of equal pitch.

  Music types accepted:

  tie-event

  Properties (read)

  `tieWaitForNote` (boolean)
    If true, tied notes do not have to follow each other directly. This can be used for writing out arpeggios
  Properties (write)
  `tieMelismaBusy` (boolean)
    Signal whether a tie is present.
  This engraver creates the following layout objects: Tie and TieColumn.
`Slur_engraver`
  Build slur grobs from slur events

  Music types accepted:

  slur-event

  Properties (read)

  `slurMelismaBusy` (boolean)
    Signal if a slur is present.
  `doubleSlurs` (boolean)
    When set, two slurs are created for every slurred note, one above and one below the chord.
  This engraver creates the following layout objects: Slur.
`Cluster_spanner_engraver`
  Engraves a cluster using Spanner notation

  Music types accepted:

  cluster-note-event and busy-playing-event

  This engraver creates the following layout objects: ClusterSpanner and ClusterSpannerBeacon.

`Phrasing_slur_engraver`
  Print phrasing slurs. Similar to Slur_engraver

  Music types accepted:

  phrasing-slur-event

  This engraver creates the following layout objects: PhrasingSlur.

`Rhythmic_column_engraver`
  Generates NoteColumn, an objects that groups stems, noteheads and rests.

  This engraver creates the following layout objects: NoteColumn and NoteSpacing.

`Script_column_engraver`

  This engraver creates the following layout objects: ScriptColumn.

`Script_engraver`
  Handles note scripted articulations.

  Music types accepted:

  script-event and articulation-event

  Properties (read)

  `scriptDefinitions` (list)
    Description of scripts. This is used by Script_engraver for typesetting note-super/subscripts. See `scm/script.scm` for more information
  This engraver creates the following layout objects: Script.
`Fingering_engraver`
  Create fingering-scripts

  Music types accepted:

  fingering-event

  This engraver creates the following layout objects: Fingering.

`Dynamic_engraver`
  This engraver creates hairpins, dynamic texts, and their vertical alignments. The symbols are collected onto a DynamicLineSpanner grob which takes care of vertical positioning.

  Music types accepted:

  absolute-dynamic-event, crescendo-event and decrescendo-event

  This engraver creates the following layout objects: DynamicLineSpanner, DynamicText, Hairpin and TextSpanner.

`Text_engraver`
  Create text-scripts

  Music types accepted:

  text-script-event

  This engraver creates the following layout objects: TextScript.

`Part_combine_engraver`
  Part combine engraver for orchestral scores: Print markings a2, Solo, Solo II, and unisono

  Music types accepted:

  part-combine-event

  Properties (read)

  `printPartCombineTexts` (boolean)
    set Solo/A due texts in the part combiner?
  `soloText` (string)
    text for begin of solo when part-combining.
  `soloIIText` (string)
    text for begin of solo for voice “two” when part-combining.
  `aDueText` (string)
    Text to print at a unisono passage.
  This engraver creates the following layout objects: CombineTextScript.
`Melisma_translator`
  This translator collects melisma information about ties, beams, and user settings (`melismaBusy`, and signals it to the `ddlyrics` code.

  Music types accepted:

  melisma-playing-event and melisma-span-event

  Properties (read)

  `melismaBusy` (boolean)
    Signifies whether a melisma is active. This can be used to signal melismas on top of those automatically detected.
  `melismaBusyProperties` (list)
    List of properties (symbols) to determine whether a melisma is playing. Setting this property will influence how lyrics are aligned to notes. For example, if set to `#'(melismaBusy beamMelismaBusy)`, only manual melismata and manual beams are considered. Possible values include `melismaBusy`, `slurMelismaBusy`, `tieMelismaBusy`, and `beamMelismaBusy`
  `slurMelismaBusy` (boolean)
    Signal if a slur is present.
  `tieMelismaBusy` (boolean)
    Signal whether a tie is present.
  `beamMelismaBusy` (boolean)
    Signal if a beam is present.
`Slash_repeat_engraver`
  Make beat repeats.

  Music types accepted:

  repeated-music

  Properties (read)

  `measureLength` (moment)
    Length of one measure in the current time signature.
  This engraver creates the following layout objects: RepeatSlash.
`Percent_repeat_engraver`
  Make whole bar and double bar repeats.

  Music types accepted:

  repeated-music

  Properties (read)

  `measureLength` (moment)
    Length of one measure in the current time signature.
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  `countPercentRepeats` (boolean)
    If set, produce counters for percent repeats.
  This engraver creates the following layout objects: DoublePercentRepeat, DoublePercentRepeatCounter, PercentRepeat and PercentRepeatCounter.
`Chord_tremolo_engraver`
  Generates beams for tremolo repeats.

  Music types accepted:

  repeated-music

  This engraver creates the following layout objects: Beam.

`New_fingering_engraver`
  Create fingering-scripts for notes in a new chord. This engraver is ill-named, since it also takes care of articulations and harmonic note heads

  Properties (read)

  `fingeringOrientations` (list)
    List of symbols, containing ``left`', ``right`', ``up`' and/or ``down`'. This list determines where fingerings are put relative to the chord being fingered.
  This engraver creates the following layout objects: Fingering.
`Auto_beam_engraver`
  Generate beams based on measure characteristics and observed Stems. Uses beatLength, measureLength and measurePosition to decide when to start and stop a beam. Overriding beaming is done through Stem_engraver properties `stemLeftBeamCount` and `stemRightBeamCount`.

  Music types accepted:

  beam-forbid-event

  Properties (read)

  `autoBeaming` (boolean)
    If set to true then beams are generated automatically.
  `autoBeamSettings` (list)
    Specifies when automatically generated beams should begin and end. See Setting automatic beam behavior for more information.
  `beatLength` (moment)
    The length of one beat in this time signature.
  `subdivideBeams` (boolean)
    If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.
  This engraver creates the following layout objects: Beam.
`Grace_beam_engraver`
  Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams. Only engraves beams when we are at grace points in time.

  Music types accepted:

  beam-event

  Properties (read)

  `beamMelismaBusy` (boolean)
    Signal if a beam is present.
  `beatLength` (moment)
    The length of one beat in this time signature.
  `allowBeamBreak` (boolean)
    If true allow line breaks for beams over bar lines.
  `subdivideBeams` (boolean)
    If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.
  This engraver creates the following layout objects: Beam.
`Beam_engraver`
  Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams.

  Music types accepted:

  beam-event

  Properties (read)

  `beamMelismaBusy` (boolean)
    Signal if a beam is present.
  `beatLength` (moment)
    The length of one beat in this time signature.
  `subdivideBeams` (boolean)
    If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.
  This engraver creates the following layout objects: Beam.
`Stem_engraver`
  Create stems and single-stem tremolos. It also works together with the beam engraver for overriding beaming.

  Music types accepted:

  tremolo-event

  Properties (read)

  `tremoloFlags` (integer)
    Number of tremolo flags to add if no number is specified.
  `stemLeftBeamCount` (integer)
    Specify the number of beams to draw on the left side of the next note. Overrides automatic beaming. The value is only used once, and then it is erased.
  `stemRightBeamCount` (integer)
    See `stemLeftBeamCount`.
  This engraver creates the following layout objects: Stem and StemTremolo.
`Rest_engraver`

  Music types accepted:

  rest-event

  Properties (read)

  `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: Dots and Rest.
`Note_heads_engraver`
  Generate noteheads.

  Music types accepted:

  note-event and busy-playing-event

  Properties (read)

  `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: Dots and NoteHead.
`Breathing_sign_engraver`

  Music types accepted:

  breathing-event

  This engraver creates the following layout objects: BreathingSign.

`Ligature_bracket_engraver`
  Handles Ligature_events by engraving Ligature brackets.

  Music types accepted:

  ligature-event

  This engraver creates the following layout objects: TupletBracket.

`Glissando_engraver`
  Engrave a glissandi

  Music types accepted:

  glissando-event

  Properties (read)

  `followVoice` (boolean)
    If set, note heads are tracked across staff switches by a thin line
  This engraver creates the following layout objects: Glissando.
`Note_head_line_engraver`
  Engrave a line between two note heads, for example a glissando. If followVoice is set, staff switches also generate a line.

  Music types accepted:

  glissando-event

  Properties (read)

  `followVoice` (boolean)
    If set, note heads are tracked across staff switches by a thin line
  This engraver creates the following layout objects: Glissando and VoiceFollower.
`Repeat_tie_engraver`
  Create Laissez vibrer items.

  Music types accepted:

  repeat-tie-event

  This engraver creates the following layout objects: RepeatTie and RepeatTieColumn.

`Laissez_vibrer_engraver`
  Create Laissez vibrer items.

  Music types accepted:

  laissez-vibrer-event

  This engraver creates the following layout objects: LaissezVibrerTie and LaissezVibrerTieColumn.

`Forbid_line_break_engraver`
  Forbid line breaks when note heads are still playing at some point.

  Properties (read)

  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
`Grob_pq_engraver`
  Administrate when certain grobs (eg. note heads) stop playing

  Properties (read)

  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
  Properties (write)
  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
`Trill_spanner_engraver`
  Create trill spanner from a Music.

  Music types accepted:

  trill-span-event

  This engraver creates the following layout objects: TrillSpanner.

`Text_spanner_engraver`
  Create text spanner from a Music.

  Music types accepted:

  text-span-event

  This engraver creates the following layout objects: TextSpanner.

`Multi_measure_rest_engraver`
  Engraves multi-measure rests that are produced with `R`. Reads measurePosition and currentBarNumber to determine what number to print over the MultiMeasureRest. Reads measureLength to determine if it should use a whole rest or a breve rest to represent 1 measure

  Music types accepted:

  multi-measure-rest-event and multi-measure-text-event

  Properties (read)

  `currentBarNumber` (integer)
    Contains the current barnumber. This property is incremented at every bar line.
  `restNumberThreshold` (number)
    If a multimeasure rest has more measures than this, a number is printed.
  `breakableSeparationItem` (layout object)
    The breakable items in this time step, for this staff.
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  `measurePosition` (moment)
    How much of the current measure have we had. This can be set manually to create incomplete measures.
  `measureLength` (moment)
    Length of one measure in the current time signature.
  This engraver creates the following layout objects: MultiMeasureRest, MultiMeasureRestNumber and MultiMeasureRestText.
`Arpeggio_engraver`
  Generate an Arpeggio symbol

  Music types accepted:

  arpeggio-event

  This engraver creates the following layout objects: Arpeggio.

`Output_property_engraver`
  Apply a procedure to any grob acknowledged.

  Music types accepted:

  layout-instruction

`Pitched_trill_engraver`
  Print the bracketed notehead after a notehead with trill.

  This engraver creates the following layout objects: TrillPitchAccidental, TrillPitchGroup and TrillPitchHead.

`Font_size_engraver`
  Puts fontSize into font-size grob property.

  Properties (read)

  `fontSize` (number)
    The relative size of all grobs in a context.

#### InnerChoirStaff

(not documented)

This context creates the following layout objects:

SystemStartBar, SystemStartBrace, SystemStartBracket and SystemStartSquare.

This context sets the following properties:

- Set translator property `vocNam` to `'()`
- Set translator property `vocalName` to `'()`
- Set translator property `systemStartDelimiter` to `'SystemStartBracket`

Context InnerChoirStaff can contain Staff, ChordNames, Lyrics, PianoStaff, GrandStaff, RhythmicStaff and DrumStaff

This context is built from the following engravers:

`System_start_delimiter_engraver`
  Creates a system start delimiter (ie. SystemStart{Bar, Brace, Bracket} spanner

  Properties (read)

  `systemStartDelimiter` (symbol)
    Which grob to make for the start of the system/staff? Set to `SystemStartBrace`, `SystemStartBracket` or `SystemStartBar`.
  `systemStartDelimiterHierarchy` (pair)
    A nested list, indicating the nesting of a start delimiters.
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  This engraver creates the following layout objects: SystemStartBar, SystemStartBrace, SystemStartBracket and SystemStartSquare.

#### InnerStaffGroup

(not documented)

This context creates the following layout objects:

Arpeggio, SpanBar, SystemStartBar, SystemStartBrace, SystemStartBracket and SystemStartSquare.

This context sets the following properties:

- Set translator property `systemStartDelimiter` to `'SystemStartBracket`

Context InnerStaffGroup can contain Staff, ChordNames, Lyrics, TabStaff, PianoStaff, GrandStaff, DrumStaff and RhythmicStaff

This context is built from the following engravers:

`System_start_delimiter_engraver`
  Creates a system start delimiter (ie. SystemStart{Bar, Brace, Bracket} spanner

  Properties (read)

  `systemStartDelimiter` (symbol)
    Which grob to make for the start of the system/staff? Set to `SystemStartBrace`, `SystemStartBracket` or `SystemStartBar`.
  `systemStartDelimiterHierarchy` (pair)
    A nested list, indicating the nesting of a start delimiters.
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  This engraver creates the following layout objects: SystemStartBar, SystemStartBrace, SystemStartBracket and SystemStartSquare.
`Output_property_engraver`
  Apply a procedure to any grob acknowledged.

  Music types accepted:

  layout-instruction

`Span_arpeggio_engraver`

  Properties (read)

  `connectArpeggios` (boolean)
    If set, connect arpeggios across piano staff.
  This engraver creates the following layout objects: Arpeggio.
`Span_bar_engraver`
  This engraver makes cross-staff barlines: It catches all normal bar lines, and draws a single span-bar across them.

  This engraver creates the following layout objects: SpanBar.

#### Lyrics

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

This context creates the following layout objects:

InstrumentName, LyricExtender, LyricHyphen, LyricSpace, LyricText, StanzaNumber and VerticalAxisGroup.

This context sets the following properties:

- Set grob-property `bar-size` in BarLine to `0.1`.
- Set grob-property `font-size` in InstrumentName to `1.0`.
- Set grob-property `self-alignment-Y` in InstrumentName to `#f`.
- Set grob-property `padding` in SeparationItem to `0.2`.
- Set grob-property `remove-empty` in VerticalAxisGroup to `#t`.
- Set grob-property `remove-first` in VerticalAxisGroup to `#t`.
- Set translator property `verticalExtent` to `#f`
- Set translator property `extraVerticalExtent` to `#f`
- Set grob-property `minimum-Y-extent` in VerticalAxisGroup to `'(-1.2 . 2.4)`.

This context is a `bottom' context; it can not contain other contexts.

This context is built from the following engravers:

`Hara_kiri_engraver`
  Like Axis_group_engraver, but make a hara-kiri spanner, and add interesting items (ie. note heads, lyric syllables and normal rests)

  Properties (read)

  `keepAliveInterfaces` (list)
    List of symbols, signifying grob interfaces that are worth keeping an staff with `remove-empty` set around for.
  This engraver creates the following layout objects: VerticalAxisGroup.
`Font_size_engraver`
  Puts fontSize into font-size grob property.

  Properties (read)

  `fontSize` (number)
    The relative size of all grobs in a context.
`Skip_event_swallow_translator`
  Swallow \skip.

  Music types accepted:

  skip-event

`Instrument_name_engraver`
  Creates a system start text for instrument or vocal names.

  Properties (read)

  `vocNam` (markup)
    Name of a vocal line, short version.
  `vocalName` (markup)
    Name of a vocal line.
  `instrument` (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.
  `instr` (markup)
    See `instrument`
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  This engraver creates the following layout objects: InstrumentName.
`Stanza_number_engraver`

  Properties (read)

  `stanza` (markup)
    Stanza `number' to print before the start of a verse. Use in Lyrics context.
  This engraver creates the following layout objects: StanzaNumber.
`Hyphen_engraver`
  Create lyric hyphens and distance constraints between words.

  Music types accepted:

  hyphen-event

  This engraver creates the following layout objects: LyricHyphen and LyricSpace.

`Extender_engraver`
  Create lyric extenders

  Music types accepted:

  extender-event

  This engraver creates the following layout objects: LyricExtender.

`Lyric_engraver`

  Music types accepted:

  lyric-event

  This engraver creates the following layout objects: LyricText.

#### MensuralStaff

Same as `Staff` context, except that it is accommodated for tyepsetting a piece in mensural style.

This context also accepts commands for the following context(s):

Staff

This context creates the following layout objects:

AccidentalSuggestion, Accidental, BarLine, Clef, Custos, DotColumn, InstrumentName, KeySignature, LedgerLineSpanner, NoteCollision, OctavateEight, OttavaBracket, RestCollision, SeparatingGroupSpanner, SeparationItem, SostenutoPedalLineSpanner, SostenutoPedal, StaffSpacing, StaffSymbol, SustainPedalLineSpanner, SustainPedal, TimeSignature, UnaCordaPedalLineSpanner, UnaCordaPedal, VerticalAxisGroup and VoltaBracket.

This context sets the following properties:

- Set grob-property `neutral-direction` in Custos to `-1`.
- Set grob-property `neutral-position` in Custos to `3`.
- Set grob-property `style` in Custos to `'mensural`.
- Set grob-property `style` in Accidental to `'mensural`.
- Set grob-property `style` in KeySignature to `'mensural`.
- Set grob-property `style` in TimeSignature to `'mensural`.
- Set translator property `clefOctavation` to `0`
- Set translator property `clefPosition` to `-2`
- Set translator property `middleCPosition` to `-6`
- Set translator property `clefGlyph` to `clefs.petrucci.g`
- Set grob-property `thickness` in StaffSymbol to `0.6`.
- Set grob-property `transparent` in BarLine to `#t`.
- Set translator property `instr` to `'()`
- Set translator property `instrument` to `'()`
- Set translator property `createSpacing` to `#t`
- Set translator property `localKeySignature` to `'()`
- Set translator property `verticalExtent` to `#f`
- Set translator property `extraVerticalExtent` to `#f`
- Set grob-property `minimum-Y-extent` in VerticalAxisGroup to `'(-4 . 4)`.

Context MensuralStaff can contain MensuralVoice and CueVoice

This context is built from the following engravers:

`Custos_engraver`

  This engraver creates the following layout objects: Custos.

`Axis_group_engraver`
  Group all objects created in this context in a VerticalAxisGroup spanner.

  Properties (read)

  `verticalExtent` (pair of numbers)
    Hard coded vertical extent. The format is a pair of dimensions, for example, this sets the sizes of a staff to 10 (5+5) staff-spaces high.

                       \set Staff.verticalExtent = #'(-5.0 . 5.0)

    This does not work for Voice or any other context that doesn't form a vertical group.

  `minimumVerticalExtent` (pair of numbers)
    minimum vertical extent, same format as verticalExtent
  `extraVerticalExtent` (pair of numbers)
    extra vertical extent, same format as minimumVerticalExtent
  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.

  Music types accepted:

  string-number-event

`Instrument_name_engraver`
  Creates a system start text for instrument or vocal names.

  Properties (read)

  `vocNam` (markup)
    Name of a vocal line, short version.
  `vocalName` (markup)
    Name of a vocal line.
  `instrument` (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.
  `instr` (markup)
    See `instrument`
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  This engraver creates the following layout objects: InstrumentName.
`Piano_pedal_engraver`
  Engrave piano pedal symbols and brackets.

  Music types accepted:

  pedal-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: SostenutoPedal, SostenutoPedalLineSpanner, SustainPedal, SustainPedalLineSpanner, UnaCordaPedal and UnaCordaPedalLineSpanner.
`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.
  `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.
  `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)

  `clefPosition` (number)
    Where should the center of the clef symbol go, measured in half staff spaces from the center of the staff.
  `clefGlyph` (string)
    Name of the symbol within the music font.
  `middleCPosition` (number)
    Place of the middle C, measured in half staff-spaces. Usually determined by looking at `clefPosition` and `clefGlyph`.
  `clefOctavation` (integer)
    Add this much extra octavation. Values of 7 and -7 are common.
  `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.
  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.
  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.

  This engraver creates the following layout objects: BarLine.
`Output_property_engraver`
  Apply a procedure to any grob acknowledged.

  Music types accepted:

  layout-instruction

#### MensuralVoice

Same as `Voice` context, except that it is accommodated for tyepsetting a piece in mensural style.

This context also accepts commands for the following context(s):

Voice

This context creates the following layout objects:

Arpeggio, Beam, BreathingSign, ClusterSpannerBeacon, ClusterSpanner, CombineTextScript, Dots, DoublePercentRepeatCounter, DoublePercentRepeat, DynamicLineSpanner, DynamicText, Fingering, Glissando, Hairpin, LaissezVibrerTieColumn, LaissezVibrerTie, MensuralLigature, MultiMeasureRestNumber, MultiMeasureRestText, MultiMeasureRest, NoteColumn, NoteHead, NoteSpacing, PercentRepeatCounter, PercentRepeat, PhrasingSlur, RepeatSlash, RepeatTieColumn, RepeatTie, Rest, ScriptColumn, Script, StemTremolo, Stem, TextScript, TextSpanner, TieColumn, Tie, TrillPitchAccidental, TrillPitchGroup, TrillPitchHead, TrillSpanner, TupletBracket, TupletNumber and VoiceFollower.

This context sets the following properties:

- Set translator property `autoBeaming` to `#f`
- Set grob-property `style` in NoteHead to `'petrucci`.
- Set translator property `localKeySignature` to `'()`

This context is a `bottom' context; it can not contain other contexts.

This context is built from the following engravers:

`Mensural_ligature_engraver`
  Handles Mensural_ligature_events by glueing special ligature heads together.

  Music types accepted:

  ligature-event

  This engraver creates the following layout objects: MensuralLigature.

`Skip_event_swallow_translator`
  Swallow \skip.

  Music types accepted:

  skip-event

`Grace_engraver`
  Set font size and other properties for grace notes.

  Properties (read)

  `graceSettings` (list)
    Overrides for grace notes. This property should be manipulated through the `add-grace-property` function.
`Tuplet_engraver`
  Catch Time_scaled_music and generate appropriate bracket

  Music types accepted:

  time-scaled-music

  Properties (read)

  `tupletNumberFormatFunction` (procedure)
    Function taking a music as input, producing a string. This function is called to determine the text to print on a tuplet bracket.
  `tupletSpannerDuration` (moment)
    Normally a tuplet bracket is as wide as the `\times` expression that gave rise to it. By setting this property, you can make brackets last shorter. Example

                       {
                       \set tupletSpannerDuration = #(ly:make-moment 1 4)
                       \times 2/3 { c8 c c c c c }
                       }

    .

  `tupletFullLength` (boolean)
    If set, the tuplet is printed upto the start of the next note.
  This engraver creates the following layout objects: TupletBracket and TupletNumber.
`Tie_engraver`
  Generate ties between noteheads of equal pitch.

  Music types accepted:

  tie-event

  Properties (read)

  `tieWaitForNote` (boolean)
    If true, tied notes do not have to follow each other directly. This can be used for writing out arpeggios
  Properties (write)
  `tieMelismaBusy` (boolean)
    Signal whether a tie is present.
  This engraver creates the following layout objects: Tie and TieColumn.
`Cluster_spanner_engraver`
  Engraves a cluster using Spanner notation

  Music types accepted:

  cluster-note-event and busy-playing-event

  This engraver creates the following layout objects: ClusterSpanner and ClusterSpannerBeacon.

`Phrasing_slur_engraver`
  Print phrasing slurs. Similar to Slur_engraver

  Music types accepted:

  phrasing-slur-event

  This engraver creates the following layout objects: PhrasingSlur.

`Rhythmic_column_engraver`
  Generates NoteColumn, an objects that groups stems, noteheads and rests.

  This engraver creates the following layout objects: NoteColumn and NoteSpacing.

`Script_column_engraver`

  This engraver creates the following layout objects: ScriptColumn.

`Script_engraver`
  Handles note scripted articulations.

  Music types accepted:

  script-event and articulation-event

  Properties (read)

  `scriptDefinitions` (list)
    Description of scripts. This is used by Script_engraver for typesetting note-super/subscripts. See `scm/script.scm` for more information
  This engraver creates the following layout objects: Script.
`Fingering_engraver`
  Create fingering-scripts

  Music types accepted:

  fingering-event

  This engraver creates the following layout objects: Fingering.

`Dynamic_engraver`
  This engraver creates hairpins, dynamic texts, and their vertical alignments. The symbols are collected onto a DynamicLineSpanner grob which takes care of vertical positioning.

  Music types accepted:

  absolute-dynamic-event, crescendo-event and decrescendo-event

  This engraver creates the following layout objects: DynamicLineSpanner, DynamicText, Hairpin and TextSpanner.

`Text_engraver`
  Create text-scripts

  Music types accepted:

  text-script-event

  This engraver creates the following layout objects: TextScript.

`Part_combine_engraver`
  Part combine engraver for orchestral scores: Print markings a2, Solo, Solo II, and unisono

  Music types accepted:

  part-combine-event

  Properties (read)

  `printPartCombineTexts` (boolean)
    set Solo/A due texts in the part combiner?
  `soloText` (string)
    text for begin of solo when part-combining.
  `soloIIText` (string)
    text for begin of solo for voice “two” when part-combining.
  `aDueText` (string)
    Text to print at a unisono passage.
  This engraver creates the following layout objects: CombineTextScript.
`Melisma_translator`
  This translator collects melisma information about ties, beams, and user settings (`melismaBusy`, and signals it to the `ddlyrics` code.

  Music types accepted:

  melisma-playing-event and melisma-span-event

  Properties (read)

  `melismaBusy` (boolean)
    Signifies whether a melisma is active. This can be used to signal melismas on top of those automatically detected.
  `melismaBusyProperties` (list)
    List of properties (symbols) to determine whether a melisma is playing. Setting this property will influence how lyrics are aligned to notes. For example, if set to `#'(melismaBusy beamMelismaBusy)`, only manual melismata and manual beams are considered. Possible values include `melismaBusy`, `slurMelismaBusy`, `tieMelismaBusy`, and `beamMelismaBusy`
  `slurMelismaBusy` (boolean)
    Signal if a slur is present.
  `tieMelismaBusy` (boolean)
    Signal whether a tie is present.
  `beamMelismaBusy` (boolean)
    Signal if a beam is present.
`Slash_repeat_engraver`
  Make beat repeats.

  Music types accepted:

  repeated-music

  Properties (read)

  `measureLength` (moment)
    Length of one measure in the current time signature.
  This engraver creates the following layout objects: RepeatSlash.
`Percent_repeat_engraver`
  Make whole bar and double bar repeats.

  Music types accepted:

  repeated-music

  Properties (read)

  `measureLength` (moment)
    Length of one measure in the current time signature.
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  `countPercentRepeats` (boolean)
    If set, produce counters for percent repeats.
  This engraver creates the following layout objects: DoublePercentRepeat, DoublePercentRepeatCounter, PercentRepeat and PercentRepeatCounter.
`Chord_tremolo_engraver`
  Generates beams for tremolo repeats.

  Music types accepted:

  repeated-music

  This engraver creates the following layout objects: Beam.

`New_fingering_engraver`
  Create fingering-scripts for notes in a new chord. This engraver is ill-named, since it also takes care of articulations and harmonic note heads

  Properties (read)

  `fingeringOrientations` (list)
    List of symbols, containing ``left`', ``right`', ``up`' and/or ``down`'. This list determines where fingerings are put relative to the chord being fingered.
  This engraver creates the following layout objects: Fingering.
`Auto_beam_engraver`
  Generate beams based on measure characteristics and observed Stems. Uses beatLength, measureLength and measurePosition to decide when to start and stop a beam. Overriding beaming is done through Stem_engraver properties `stemLeftBeamCount` and `stemRightBeamCount`.

  Music types accepted:

  beam-forbid-event

  Properties (read)

  `autoBeaming` (boolean)
    If set to true then beams are generated automatically.
  `autoBeamSettings` (list)
    Specifies when automatically generated beams should begin and end. See Setting automatic beam behavior for more information.
  `beatLength` (moment)
    The length of one beat in this time signature.
  `subdivideBeams` (boolean)
    If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.
  This engraver creates the following layout objects: Beam.
`Grace_beam_engraver`
  Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams. Only engraves beams when we are at grace points in time.

  Music types accepted:

  beam-event

  Properties (read)

  `beamMelismaBusy` (boolean)
    Signal if a beam is present.
  `beatLength` (moment)
    The length of one beat in this time signature.
  `allowBeamBreak` (boolean)
    If true allow line breaks for beams over bar lines.
  `subdivideBeams` (boolean)
    If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.
  This engraver creates the following layout objects: Beam.
`Beam_engraver`
  Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams.

  Music types accepted:

  beam-event

  Properties (read)

  `beamMelismaBusy` (boolean)
    Signal if a beam is present.
  `beatLength` (moment)
    The length of one beat in this time signature.
  `subdivideBeams` (boolean)
    If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.
  This engraver creates the following layout objects: Beam.
`Stem_engraver`
  Create stems and single-stem tremolos. It also works together with the beam engraver for overriding beaming.

  Music types accepted:

  tremolo-event

  Properties (read)

  `tremoloFlags` (integer)
    Number of tremolo flags to add if no number is specified.
  `stemLeftBeamCount` (integer)
    Specify the number of beams to draw on the left side of the next note. Overrides automatic beaming. The value is only used once, and then it is erased.
  `stemRightBeamCount` (integer)
    See `stemLeftBeamCount`.
  This engraver creates the following layout objects: Stem and StemTremolo.
`Rest_engraver`

  Music types accepted:

  rest-event

  Properties (read)

  `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: Dots and Rest.
`Note_heads_engraver`
  Generate noteheads.

  Music types accepted:

  note-event and busy-playing-event

  Properties (read)

  `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: Dots and NoteHead.
`Breathing_sign_engraver`

  Music types accepted:

  breathing-event

  This engraver creates the following layout objects: BreathingSign.

`Glissando_engraver`
  Engrave a glissandi

  Music types accepted:

  glissando-event

  Properties (read)

  `followVoice` (boolean)
    If set, note heads are tracked across staff switches by a thin line
  This engraver creates the following layout objects: Glissando.
`Note_head_line_engraver`
  Engrave a line between two note heads, for example a glissando. If followVoice is set, staff switches also generate a line.

  Music types accepted:

  glissando-event

  Properties (read)

  `followVoice` (boolean)
    If set, note heads are tracked across staff switches by a thin line
  This engraver creates the following layout objects: Glissando and VoiceFollower.
`Repeat_tie_engraver`
  Create Laissez vibrer items.

  Music types accepted:

  repeat-tie-event

  This engraver creates the following layout objects: RepeatTie and RepeatTieColumn.

`Laissez_vibrer_engraver`
  Create Laissez vibrer items.

  Music types accepted:

  laissez-vibrer-event

  This engraver creates the following layout objects: LaissezVibrerTie and LaissezVibrerTieColumn.

`Forbid_line_break_engraver`
  Forbid line breaks when note heads are still playing at some point.

  Properties (read)

  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
`Grob_pq_engraver`
  Administrate when certain grobs (eg. note heads) stop playing

  Properties (read)

  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
  Properties (write)
  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
`Trill_spanner_engraver`
  Create trill spanner from a Music.

  Music types accepted:

  trill-span-event

  This engraver creates the following layout objects: TrillSpanner.

`Text_spanner_engraver`
  Create text spanner from a Music.

  Music types accepted:

  text-span-event

  This engraver creates the following layout objects: TextSpanner.

`Multi_measure_rest_engraver`
  Engraves multi-measure rests that are produced with `R`. Reads measurePosition and currentBarNumber to determine what number to print over the MultiMeasureRest. Reads measureLength to determine if it should use a whole rest or a breve rest to represent 1 measure

  Music types accepted:

  multi-measure-rest-event and multi-measure-text-event

  Properties (read)

  `currentBarNumber` (integer)
    Contains the current barnumber. This property is incremented at every bar line.
  `restNumberThreshold` (number)
    If a multimeasure rest has more measures than this, a number is printed.
  `breakableSeparationItem` (layout object)
    The breakable items in this time step, for this staff.
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  `measurePosition` (moment)
    How much of the current measure have we had. This can be set manually to create incomplete measures.
  `measureLength` (moment)
    Length of one measure in the current time signature.
  This engraver creates the following layout objects: MultiMeasureRest, MultiMeasureRestNumber and MultiMeasureRestText.
`Arpeggio_engraver`
  Generate an Arpeggio symbol

  Music types accepted:

  arpeggio-event

  This engraver creates the following layout objects: Arpeggio.

`Output_property_engraver`
  Apply a procedure to any grob acknowledged.

  Music types accepted:

  layout-instruction

`Pitched_trill_engraver`
  Print the bracketed notehead after a notehead with trill.

  This engraver creates the following layout objects: TrillPitchAccidental, TrillPitchGroup and TrillPitchHead.

`Font_size_engraver`
  Puts fontSize into font-size grob property.

  Properties (read)

  `fontSize` (number)
    The relative size of all grobs in a context.

#### NoteNames

(not documented)

This context creates the following layout objects:

NoteName, SeparatingGroupSpanner, SeparationItem, StaffSpacing, TieColumn, Tie and VerticalAxisGroup.

This context sets the following properties:

- Set translator property `verticalExtent` to `#f`
- Set translator property `extraVerticalExtent` to `#f`
- Set grob-property `minimum-Y-extent` in VerticalAxisGroup to `#f`.

This context is a `bottom' context; it can not contain other contexts.

This context is built from the following engravers:

`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.
`Note_name_engraver`

  Music types accepted:

  note-event

  Properties (read)

  `printOctaveNames` (boolean)
    Print octave marks for the NoteNames context.
  This engraver creates the following layout objects: NoteName.
`Tie_engraver`
  Generate ties between noteheads of equal pitch.

  Music types accepted:

  tie-event

  Properties (read)

  `tieWaitForNote` (boolean)
    If true, tied notes do not have to follow each other directly. This can be used for writing out arpeggios
  Properties (write)
  `tieMelismaBusy` (boolean)
    Signal whether a tie is present.
  This engraver creates the following layout objects: Tie and TieColumn.
`Skip_event_swallow_translator`
  Swallow \skip.

  Music types accepted:

  skip-event

`Rest_swallow_translator`
  Swallow rest

  Music types accepted:

  rest-event

`Axis_group_engraver`
  Group all objects created in this context in a VerticalAxisGroup spanner.

  Properties (read)

  `verticalExtent` (pair of numbers)
    Hard coded vertical extent. The format is a pair of dimensions, for example, this sets the sizes of a staff to 10 (5+5) staff-spaces high.

                       \set Staff.verticalExtent = #'(-5.0 . 5.0)

    This does not work for Voice or any other context that doesn't form a vertical group.

  `minimumVerticalExtent` (pair of numbers)
    minimum vertical extent, same format as verticalExtent
  `extraVerticalExtent` (pair of numbers)
    extra vertical extent, same format as minimumVerticalExtent
  This engraver creates the following layout objects: VerticalAxisGroup.

#### PianoStaff

Just like `GrandStaff` but with a forced distance between the staves, so cross staff beaming and slurring can be used.

This context also accepts commands for the following context(s):

GrandStaff

This context creates the following layout objects:

Arpeggio, InstrumentName, SpanBar, SystemStartBar, SystemStartBrace, SystemStartBracket, SystemStartSquare and VerticalAlignment.

This context sets the following properties:

- Set translator property `instr` to `'()`
- Set translator property `instrument` to `'()`
- Set grob-property `self-alignment-Y` in VerticalAlignment to `0`.
- Set grob-property `forced-distance` in VerticalAlignment to `12`.
- Set translator property `systemStartDelimiter` to `'SystemStartBrace`
- Set translator property `localKeySignature` to `'()`

Context PianoStaff can contain Staff

This context is built from the following engravers:

`Instrument_name_engraver`
  Creates a system start text for instrument or vocal names.

  Properties (read)

  `vocNam` (markup)
    Name of a vocal line, short version.
  `vocalName` (markup)
    Name of a vocal line.
  `instrument` (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.
  `instr` (markup)
    See `instrument`
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  This engraver creates the following layout objects: InstrumentName.
`Vertical_align_engraver`
  Catch groups (staffs, lyrics lines, etc.) and stack them vertically.

  Properties (read)

  `alignAboveContext` (string)
    Where to insert newly created context in vertiical alignment.
  `alignBelowContext` (string)
    Where to insert newly created context in vertiical alignment.
  This engraver creates the following layout objects: VerticalAlignment.
`System_start_delimiter_engraver`
  Creates a system start delimiter (ie. SystemStart{Bar, Brace, Bracket} spanner

  Properties (read)

  `systemStartDelimiter` (symbol)
    Which grob to make for the start of the system/staff? Set to `SystemStartBrace`, `SystemStartBracket` or `SystemStartBar`.
  `systemStartDelimiterHierarchy` (pair)
    A nested list, indicating the nesting of a start delimiters.
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  This engraver creates the following layout objects: SystemStartBar, SystemStartBrace, SystemStartBracket and SystemStartSquare.
`Span_arpeggio_engraver`

  Properties (read)

  `connectArpeggios` (boolean)
    If set, connect arpeggios across piano staff.
  This engraver creates the following layout objects: Arpeggio.
`Span_bar_engraver`
  This engraver makes cross-staff barlines: It catches all normal bar lines, and draws a single span-bar across them.

  This engraver creates the following layout objects: SpanBar.

#### RhythmicStaff

A context like `Staff` but for printing rhythms. Pitches are ignored; the notes are printed on one line.

This context also accepts commands for the following context(s):

Staff

This context creates the following layout objects:

BarLine, DotColumn, InstrumentName, LedgerLineSpanner, SeparatingGroupSpanner, SeparationItem, StaffSpacing, StaffSymbol, TimeSignature, VerticalAxisGroup and VoltaBracket.

This context sets the following properties:

- Set grob-property `neutral-direction` in Beam to `1`.
- Set grob-property `neutral-direction` in Stem to `1`.
- Set grob-property `line-count` in StaffSymbol to `1`.
- Set grob-property `staff-padding` in VoltaBracket to `3`.
- Set grob-property `bar-size` in BarLine to `4`.
- Set translator property `squashedPosition` to `0`
- Set translator property `createSpacing` to `#t`
- Set translator property `localKeySignature` to `'()`
- Set translator property `verticalExtent` to `#f`
- Set translator property `extraVerticalExtent` to `#f`
- Set grob-property `minimum-Y-extent` in VerticalAxisGroup to `#f`.

Context RhythmicStaff can contain Voice and CueVoice

This context is built from the following engravers:

`Axis_group_engraver`
  Group all objects created in this context in a VerticalAxisGroup spanner.

  Properties (read)

  `verticalExtent` (pair of numbers)
    Hard coded vertical extent. The format is a pair of dimensions, for example, this sets the sizes of a staff to 10 (5+5) staff-spaces high.

                       \set Staff.verticalExtent = #'(-5.0 . 5.0)

    This does not work for Voice or any other context that doesn't form a vertical group.

  `minimumVerticalExtent` (pair of numbers)
    minimum vertical extent, same format as verticalExtent
  `extraVerticalExtent` (pair of numbers)
    extra vertical extent, same format as minimumVerticalExtent
  This engraver creates the following layout objects: VerticalAxisGroup.
`Instrument_name_engraver`
  Creates a system start text for instrument or vocal names.

  Properties (read)

  `vocNam` (markup)
    Name of a vocal line, short version.
  `vocalName` (markup)
    Name of a vocal line.
  `instrument` (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.
  `instr` (markup)
    See `instrument`
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  This engraver creates the following layout objects: InstrumentName.
`Time_signature_engraver`
  Create a TimeSignature whenever `timeSignatureFraction` changes

  This engraver creates the following layout objects: TimeSignature.

`Pitch_squash_engraver`
  Set the vertical position of noteheads to `squashedPosition`, if that property is set. This can be used to make a single line staff demonstrating the rhythm of a melody.

  Properties (read)

  `squashedPosition` (integer)
    Vertical position of squashing for Pitch_squash_engraver.
`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.

`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.

  This engraver creates the following layout objects: BarLine.
`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.
`Output_property_engraver`
  Apply a procedure to any grob acknowledged.

  Music types accepted:

  layout-instruction

#### Score

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

You cannot explicitly instantiate a Score context (since it is not contained in any other context). It is instantiated automatically when an output definition (a `\score` or `\layout` block) is processed.

This context creates the following layout objects:

BarNumber, BreakAlignGroup, BreakAlignment, LeftEdge, MetronomeMark, NonMusicalPaperColumn, PaperColumn, ParenthesesItem, RehearsalMark, SpacingSpanner, SystemStartBar, SystemStartBrace, SystemStartBracket, SystemStartSquare and VerticalAlignment.

This context sets the following properties:

- Set translator property `timing` to `#t`
- Set translator property `verticallySpacedContexts` to `'(Staff)`
- Set translator property `instrumentTransposition` to `#<Pitch c' >`
- Set translator property `quotedEventTypes` to `'(note-event rest-event time-scaled-music tie-event beam-event)`
- Set translator property `keepAliveInterfaces` to `'(rhythmic-grob-interface lyric-interface percent-repeat-interface)`
- Set translator property `graceSettings` to `'((Voice Stem direction 1) (Voice Stem font-size -3) (Voice NoteHead font-size -3) (Voice Dots font-size -3) (Voice Stem length-fraction 0.8) (Voice Stem no-stem-extend #t) (Voice Beam thickness 0.384) (Voice Beam length-fraction 0.8) (Voice Accidental font-size -4) (Voice Slur direction -1))`
- Set translator property `metronomeMarkFormatter` to `format-metronome-markup`
- Set translator property `figuredBassFormatter` to `format-bass-figure`
- Set translator property `tablatureFormat` to `fret-number-tablature-format`
- Set translator property `stringTunings` to `'(4 -1 -5 -10 -15 -20)`
- Set translator property `highStringOne` to `#t`
- Set translator property `stringOneTopmost` to `#t`
- Set translator property `bassStaffProperties` to `'((assign clefGlyph clefs.F) (assign clefPosition 2) (assign middleCPosition 6))`
- Set translator property `chordNameExceptionsPartial` to `'(((#<Pitch c' > #<Pitch d' >) (#<procedure line-markup (layout props args)> ((#<procedure normal-size-super-markup (layout props arg)> 2)))) ((#<Pitch c' > #<Pitch ees' >) (#<procedure line-markup (layout props args)> (m))) ((#<Pitch c' > #<Pitch f' >) (#<procedure line-markup (layout props args)> ((#<procedure normal-size-super-markup (layout props arg)> sus4)))) ((#<Pitch c' > #<Pitch g' >) (#<procedure line-markup (layout props args)> ((#<procedure normal-size-super-markup (layout props arg)> 5)))) ((#<Pitch c' > #<Pitch ees' > #<Pitch f' >) (#<procedure line-markup (layout props args)> (m)) (#<procedure line-markup (layout props args)> ((#<procedure normal-size-super-markup (layout props arg)> sus4)))) ((#<Pitch c' > #<Pitch d' > #<Pitch ees' >) (#<procedure line-markup (layout props args)> (m)) (#<procedure line-markup (layout props args)> ((#<procedure normal-size-super-markup (layout props arg)> sus2)))))`
- Set translator property `chordNameExceptionsFull` to `'(((#<Pitch c' > #<Pitch e' > #<Pitch gis' >) (#<procedure line-markup (layout props args)> (+))) ((#<Pitch c' > #<Pitch ees' > #<Pitch ges' >) (#<procedure line-markup (layout props args)> ((#<procedure super-markup (layout props arg)> o)))) ((#<Pitch c' > #<Pitch ees' > #<Pitch ges' > #<Pitch bes' >) (#<procedure line-markup (layout props args)> ((#<procedure super-markup (layout props arg)> ø)))) ((#<Pitch c' > #<Pitch ees' > #<Pitch ges' > #<Pitch beses' >) (#<procedure line-markup (layout props args)> ((#<procedure super-markup (layout props arg)> o7)))))`
- Set translator property `chordPrefixSpacer` to `0`
- Set translator property `chordRootNamer` to `note-name->markup`
- Set translator property `chordNoteNamer` to `'()`
- Set translator property `chordNameExceptions` to `'(((#<Pitch e' > #<Pitch gis' >) #<procedure line-markup (layout props args)> (+)) ((#<Pitch ees' > #<Pitch ges' >) #<procedure line-markup (layout props args)> ((#<procedure super-markup (layout props arg)> o))) ((#<Pitch ees' > #<Pitch ges' > #<Pitch bes' >) #<procedure line-markup (layout props args)> ((#<procedure super-markup (layout props arg)> ø))) ((#<Pitch ees' > #<Pitch ges' > #<Pitch beses' >) #<procedure line-markup (layout props args)> ((#<procedure super-markup (layout props arg)> o7))))`
- Set translator property `chordNameSeparator` to `'(#<procedure simple-markup (layout props str)> /)`
- Set translator property `majorSevenSymbol` to `'(#<procedure line-markup (layout props args)> ((#<procedure triangle-markup (layout props filled)> #f)))`
- Set translator property `chordNameFunction` to `ignatzek-chord-names`
- Set translator property `barCheckSynchronize` to `#f`
- Set translator property `keyAlterationOrder` to `'((6 . -2) (2 . -2) (5 . -2) (1 . -2) (4 . -2) (0 . -2) (3 . -2) (3 . 2) (0 . 2) (4 . 2) (1 . 2) (5 . 2) (2 . 2) (6 . 2) (6 . -4) (2 . -4) (5 . -4) (1 . -4) (4 . -4) (0 . -4) (3 . -4) (3 . 4) (0 . 4) (4 . 4) (2 . 4) (5 . 4) (2 . 4) (6 . 4))`
- Set translator property `printKeyCancellation` to `#t`
- Set translator property `autoCautionaries` to `'()`
- Set translator property `autoAccidentals` to `'(Staff (same-octave . 0))`
- Set translator property `extraNatural` to `#t`
- Set translator property `allowBeamBreak` to `#f`
- Set translator property `subdivideBeams` to `#f`
- Set translator property `rehearsalMark` to `1`
- Set translator property `markFormatter` to `format-mark-letters`
- Set translator property `tupletNumberFormatFunction` to `denominator-tuplet-formatter`
- Set translator property `stringNumberOrientations` to `'(up down)`
- Set translator property `fingeringOrientations` to `'(up down)`
- Set translator property `harmonicAccidentals` to `#t`
- Set translator property `pedalSostenutoStyle` to `'mixed`
- Set translator property `pedalSostenutoStrings` to `'(Sost. Ped. *Sost. Ped. *)`
- Set translator property `pedalUnaCordaStyle` to `'text`
- Set translator property `pedalUnaCordaStrings` to `'(una corda tre corde)`
- Set translator property `pedalSustainStyle` to `'text`
- Set translator property `pedalSustainStrings` to `'(Ped. *Ped. *)`
- Set translator property `scriptDefinitions` to `'((thumb (script-stencil feta thumb . thumb) (direction . 1)) (accent (avoid-slur . around) (quantize-position . #t) (script-stencil feta sforzato . sforzato) (side-relative-direction . -1)) (espressivo (avoid-slur . around) (quantize-position . #t) (script-stencil feta espr . espr) (side-relative-direction . -1)) (marcato (script-stencil feta dmarcato . umarcato) (quantize-position . #t) (side-relative-direction . -1)) (staccatissimo (avoid-slur . inside) (script-stencil feta dstaccatissimo . ustaccatissimo) (side-relative-direction . -1)) (portato (script-stencil feta uportato . dportato) (side-relative-direction . -1)) (accentus (script-stencil feta uaccentus . uaccentus) (side-relative-direction . -1) (quantize-position . #t) (script-priority . -100) (direction . 1)) (ictus (script-stencil feta ictus . ictus) (side-relative-direction . -1) (quantize-position . #t) (script-priority . -100) (direction . -1)) (semicirculus (script-stencil feta dsemicirculus . dsemicirculus) (side-relative-direction . -1) (quantize-position . #t) (script-priority . -100) (direction . 1)) (circulus (script-stencil feta circulus . circulus) (side-relative-direction . -1) (quantize-position . #t) (script-priority . -100) (direction . 1)) (signumcongruentiae (script-stencil feta dsignumcongruentiae . usignumcongruentiae) (direction . 1)) (fermata (script-stencil feta dfermata . ufermata) (avoid-slur . around) (script-priority . 4000) (direction . 1)) (shortfermata (script-stencil feta dshortfermata . ushortfermata) (direction . 1)) (longfermata (script-stencil feta dlongfermata . ulongfermata) (direction . 1)) (verylongfermata (script-stencil feta dverylongfermata . uverylongfermata) (direction . 1)) (stopped (script-stencil feta stopped . stopped) (direction . 1)) (staccato (script-stencil feta staccato . staccato) (side-relative-direction . -1) (quantize-position . #t) (avoid-slur . inside) (script-priority . -100)) (tenuto (script-stencil feta tenuto . tenuto) (quantize-position . #t) (avoid-slur . inside) (side-relative-direction . -1)) (comma (script-stencil feta lcomma . rcomma) (quantize-position . #t) (direction . 1)) (varcomma (script-stencil feta lvarcomma . rvarcomma) (quantize-position . #t) (direction . 1)) (upbow (script-stencil feta upbow . upbow) (avoid-slur . around) (direction . 1)) (downbow (script-stencil feta downbow . downbow) (avoid-slur . around) (direction . 1)) (lheel (script-stencil feta upedalheel . upedalheel) (direction . -1)) (rheel (script-stencil feta dpedalheel . dpedalheel) (direction . 1)) (ltoe (script-stencil feta upedaltoe . upedaltoe) (direction . -1)) (rtoe (script-stencil feta dpedaltoe . dpedaltoe) (direction . 1)) (turn (script-stencil feta turn . turn) (direction . 1)) (open (avoid-slur . outside) (script-stencil feta open . open) (direction . 1)) (flageolet (script-stencil feta flageolet . flageolet) (direction . 1)) (reverseturn (script-stencil feta reverseturn . reverseturn) (direction . 1)) (trill (script-stencil feta trill . trill) (direction . 1) (avoid-slur . outside) (script-priority . 2000)) (prall (script-stencil feta prall . prall) (direction . 1)) (mordent (script-stencil feta mordent . mordent) (direction . 1)) (prallprall (script-stencil feta prallprall . prallprall) (direction . 1)) (prallmordent (script-stencil feta prallmordent . prallmordent) (direction . 1)) (upprall (script-stencil feta upprall . upprall) (direction . 1)) (downprall (script-stencil feta downprall . downprall) (direction . 1)) (upmordent (script-stencil feta upmordent . upmordent) (direction . 1)) (downmordent (script-stencil feta downmordent . downmordent) (direction . 1)) (lineprall (script-stencil feta lineprall . lineprall) (direction . 1)) (pralldown (script-stencil feta pralldown . pralldown) (direction . 1)) (prallup (script-stencil feta prallup . prallup) (direction . 1)) (segno (script-stencil feta segno . segno) (direction . 1)) (coda (script-stencil feta coda . coda) (direction . 1)) (varcoda (script-stencil feta varcoda . varcoda) (direction . 1)))`
- Set translator property `autoBeamCheck` to `default-auto-beam-check`
- Set translator property `autoBeaming` to `#t`
- Set translator property `autoBeamSettings` to `'(((end * * 3 2) . #<Mom 1/2>) ((end * * 3 2) . #<Mom 1>) ((end 1 16 3 2) . #<Mom 1/4>) ((end 1 16 3 2) . #<Mom 1/2>) ((end 1 16 3 2) . #<Mom 3/4>) ((end 1 16 3 2) . #<Mom 5/4>) ((end 1 32 3 2) . #<Mom 1/8>) ((end 1 32 3 2) . #<Mom 1/4>) ((end 1 32 3 2) . #<Mom 3/8>) ((end 1 32 3 2) . #<Mom 1/2>) ((end 1 32 3 2) . #<Mom 5/8>) ((end 1 32 3 2) . #<Mom 3/4>) ((end 1 32 3 2) . #<Mom 9/8>) ((end 1 32 3 2) . #<Mom 5/4>) ((end 1 32 3 2) . #<Mom 11/8>) ((end * * 3 4) . #<Mom 3/4>) ((end 1 16 3 4) . #<Mom 1/4>) ((end 1 16 3 4) . #<Mom 1/2>) ((end 1 32 3 4) . #<Mom 1/8>) ((end 1 32 3 4) . #<Mom 1/4>) ((end 1 32 3 4) . #<Mom 3/8>) ((end 1 32 3 4) . #<Mom 1/2>) ((end 1 32 3 4) . #<Mom 5/8>) ((end * * 3 8) . #<Mom 3/8>) ((end * * 4 4) . #<Mom 1/2>) ((end 1 12 4 4) . #<Mom 1/4>) ((end 1 12 4 4) . #<Mom 3/4>) ((end 1 16 4 4) . #<Mom 1/4>) ((end 1 16 4 4) . #<Mom 3/4>) ((end 1 32 4 4) . #<Mom 1/8>) ((end 1 32 4 4) . #<Mom 1/4>) ((end 1 32 4 4) . #<Mom 3/8>) ((end 1 32 4 4) . #<Mom 5/8>) ((end 1 32 4 4) . #<Mom 3/4>) ((end 1 32 4 4) . #<Mom 7/8>) ((end * * 2 4) . #f) ((end * * 2 4) . #<Mom 1/4>) ((end 1 32 2 4) . #<Mom 1/8>) ((end 1 32 2 4) . #<Mom 3/8>) ((end * * 4 8) . #f) ((end * * 4 8) . #<Mom 1/4>) ((end 1 32 4 8) . #<Mom 1/8>) ((end 1 32 4 8) . #<Mom 3/8>) ((end * * 4 16) . #f) ((end * * 4 16) . #<Mom 1/8>) ((end * * 6 8) . #f) ((end * * 6 8) . #<Mom 3/8>) ((end 1 32 6 8) . #<Mom 1/8>) ((end 1 32 6 8) . #<Mom 1/4>) ((end 1 32 6 8) . #<Mom 1/2>) ((end 1 32 6 8) . #<Mom 5/8>) ((end * * 9 8) . #f) ((end * * 9 8) . #<Mom 3/8>) ((end * * 9 8) . #<Mom 3/4>) ((end 1 32 9 8) . #<Mom 1/8>) ((end 1 32 9 8) . #<Mom 1/4>) ((end 1 32 9 8) . #<Mom 1/2>) ((end 1 32 9 8) . #<Mom 5/8>) ((end 1 32 9 8) . #<Mom 7/8>) ((end 1 32 9 8) . #<Mom 1>) ((end 1 32 9 8) . #<Mom 9/8>) ((end * * 12 8) . #f) ((end * * 12 8) . #<Mom 3/8>) ((end * * 12 8) . #<Mom 3/4>) ((end * * 12 8) . #<Mom 9/8>) ((end * * 12 8) . #<Mom 2>) ((end 1 32 12 8) . #<Mom 1/8>))`
- Set translator property `explicitKeySignatureVisibility` to `#(#t #t #t)`
- Set translator property `explicitClefVisibility` to `#(#t #t #t)`
- Set translator property `automaticBars` to `#t`
- Set translator property `barNumberVisibility` to `first-bar-number-invisible`
- Set translator property `defaultBarType` to `|`
- Set translator property `firstClef` to `#t`
- Set translator property `middleCPosition` to `-6`
- Set translator property `clefPosition` to `-2`
- Set translator property `clefGlyph` to `clefs.G`
- Set translator property `tieWaitForNote` to `#f`
- Set translator property `melismaBusyProperties` to `'(melismaBusy slurMelismaBusy tieMelismaBusy beamMelismaBusy)`
- Set translator property `drumStyleTable` to `#<hash-table 29/61>`
- Set translator property `systemStartDelimiter` to `'SystemStartBar`
- Set translator property `printPartCombineTexts` to `#t`
- Set translator property `aDueText` to `a2`
- Set translator property `soloIIText` to `Solo II`
- Set translator property `soloText` to `Solo`

Context Score can contain Staff, FiguredBass, NoteNames, Devnull, PianoStaff, ChoirStaff, GrandStaff, ChordNames, Lyrics, DrumStaff, StaffGroup, MensuralStaff, GregorianTranscriptionStaff, VaticanaStaff, TabStaff and RhythmicStaff

This context is built from the following engravers:

`Parenthesis_engraver`
  Parenthesize objects whose music cause has the `parenthesize` property.

  This engraver creates the following layout objects: ParenthesesItem.

`Tweak_engraver`
  Read the `tweaks` property from the originating Music event, and set properties.
`Bar_number_engraver`
  A bar number is created whenever measurePosition is zero and when there is a bar line (ie. when `whichBar` is set. It is put on top of all staves, and appears only at left side of the staff. The staves are taken from `stavesFound`, which is maintained by `Staff_collecting_engraver`.

  Properties (read)

  `currentBarNumber` (integer)
    Contains the current barnumber. This property is incremented at every bar line.
  `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.

  `stavesFound` (list of grobs)
    list of all staff-symbols found.
  `barNumberVisibility` (procedure)
    Procedure that takes an int and returns whether the corresponding bar number should be printed
  This engraver creates the following layout objects: BarNumber.
`Stanza_number_align_engraver`
  This engraver ensures that stanza numbers are neatly aligned.
`Vertical_align_engraver`
  Catch groups (staffs, lyrics lines, etc.) and stack them vertically.

  Properties (read)

  `alignAboveContext` (string)
    Where to insert newly created context in vertiical alignment.
  `alignBelowContext` (string)
    Where to insert newly created context in vertiical alignment.
  This engraver creates the following layout objects: VerticalAlignment.
`Spacing_engraver`
  make a SpacingSpanner and do bookkeeping of shortest starting and playing notes

  Properties (read)

  `currentMusicalColumn` (layout object)
    Grob that is X-parent to all non-breakable items (note heads, lyrics, etc.).
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  `proportionalNotationDuration` (moment)
    Global override for shortest-playing duration. This is used for switching on proportional notation.
  This engraver creates the following layout objects: SpacingSpanner.
`Break_align_engraver`
  Align grobs with corresponding `break-align-symbols` into groups, and order the groups according to `breakAlignOrder`. The left edge of the alignment gets a separate group, with a symbol `left-edge`.

  This engraver creates the following layout objects: BreakAlignGroup, BreakAlignment and LeftEdge.

`Metronome_mark_engraver`
  Engrave metro nome marking. This delegates the formatting work to the function in the metronomeMarkFormatter property. The mark is put over all staves. The staves are taken from the `stavesFound` property, which is maintained by `Staff_collecting_engraver`.

  Music types accepted:

  metronome-change-event

  Properties (read)

  `stavesFound` (list of grobs)
    list of all staff-symbols found.
  `metronomeMarkFormatter` (procedure)
    How to produce a metronome markup. Called with 2 arguments, event and context.
  This engraver creates the following layout objects: MetronomeMark.
`Mark_engraver`
  This engraver will create RehearsalMark objects. It puts them on top of all staves (which is taken from the property `stavesFound`). If moving this engraver to a different context, Staff_collecting_engraver must move along, otherwise all marksend up on the same Y-location

  Music types accepted:

  mark-event

  Properties (read)

  `markFormatter` (procedure)
    Procedure taking as arguments context and rehearsal mark. It should return the formatted mark as a markup object.
  `rehearsalMark` (integer)
    The last rehearsal mark printed.
  `stavesFound` (list of grobs)
    list of all staff-symbols found.
  This engraver creates the following layout objects: RehearsalMark.
`System_start_delimiter_engraver`
  Creates a system start delimiter (ie. SystemStart{Bar, Brace, Bracket} spanner

  Properties (read)

  `systemStartDelimiter` (symbol)
    Which grob to make for the start of the system/staff? Set to `SystemStartBrace`, `SystemStartBracket` or `SystemStartBar`.
  `systemStartDelimiterHierarchy` (pair)
    A nested list, indicating the nesting of a start delimiters.
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  This engraver creates the following layout objects: SystemStartBar, SystemStartBrace, SystemStartBracket and SystemStartSquare.
`Output_property_engraver`
  Apply a procedure to any grob acknowledged.

  Music types accepted:

  layout-instruction

`Default_bar_line_engraver`
  This engraver determines what kind of automatic bar lines should be produced, and sets `whichBar` accordingly. It should be at the same level as Timing_translator.

  Properties (read)

  `automaticBars` (boolean)
    If set to true then bar lines will not be printed automatically; they must be explicitly created with `\bar` command. Unlike the `\cadenza` keyword, measures are still counted. Bar generation will resume according to that count if this property is unset.
  `barAlways` (boolean)
    If set to true a bar line is drawn after each note.
  `defaultBarType` (string)
    Sets the default type of bar line. See `whichBar` for information on available bar types.

    This variable is read by Timing_translator at Score level.

  `measureLength` (moment)
    Length of one measure in the current time signature.
  `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.

  `measurePosition` (moment)
    How much of the current measure have we had. This can be set manually to create incomplete measures.
  Properties (write)
  `automaticBars` (boolean)
    If set to true then bar lines will not be printed automatically; they must be explicitly created with `\bar` command. Unlike the `\cadenza` keyword, measures are still counted. Bar generation will resume according to that count if this property is unset.
`Timing_translator`
  This engraver adds the alias `Timing` to its containing context.Responsible for synchronizing timing information from staves. Normally in `Score`. In order to create polyrhythmic music, this engraver should be removed from `Score` and placed in `Staff`.

  This engraver adds the alias `Timing` to its containing context.

`Staff_collecting_engraver`
  Maintain the stavesFound variable

  Properties (read)

  `stavesFound` (list of grobs)
    list of all staff-symbols found.
  Properties (write)
  `stavesFound` (list of grobs)
    list of all staff-symbols found.
`Repeat_acknowledge_engraver`
  Acknowledge repeated music, and convert the contents of repeatCommands ainto an appropriate setting for whichBar.

  Properties (read)

  `repeatCommands` (list)
    This property is read to find any command of the form `(volta .` x`)`, where x is a string or `#f`
  `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.

`Vertically_spaced_contexts_engraver`

  Properties (read)

  `verticallySpacedContexts` (list)
    List of symbols, containing context names whose vertical axis groups should be taken into account for vertical spacing of systems.
  Properties (write)
  `verticallySpacedContexts` (list)
    List of symbols, containing context names whose vertical axis groups should be taken into account for vertical spacing of systems.
`Paper_column_engraver`
  Takes care of generating columns.

  This engraver decides whether a column is breakable. The default is that a column is always breakable. However, when every Bar_engraver that does not have a barline at a certain point will call Score_engraver::forbid_breaks to stop linebreaks. In practice, this means that you can make a breakpoint by creating a barline (assuming that there are no beams or notes that prevent a breakpoint.)

  Music types accepted:

  break-event

  Properties (write)

  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  `currentMusicalColumn` (layout object)
    Grob that is X-parent to all non-breakable items (note heads, lyrics, etc.).
  This engraver creates the following layout objects: NonMusicalPaperColumn and PaperColumn.

#### Staff

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

This context creates the following layout objects:

AccidentalSuggestion, Accidental, BarLine, Clef, DotColumn, InstrumentName, KeySignature, LedgerLineSpanner, NoteCollision, OctavateEight, OttavaBracket, RestCollision, SeparatingGroupSpanner, SeparationItem, SostenutoPedalLineSpanner, SostenutoPedal, StaffSpacing, StaffSymbol, SustainPedalLineSpanner, SustainPedal, TimeSignature, UnaCordaPedalLineSpanner, UnaCordaPedal, VerticalAxisGroup and VoltaBracket.

This context sets the following properties:

- Set translator property `instr` to `'()`
- Set translator property `instrument` to `'()`
- Set translator property `createSpacing` to `#t`
- Set translator property `localKeySignature` to `'()`
- Set translator property `verticalExtent` to `#f`
- Set translator property `extraVerticalExtent` to `#f`
- 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:

`Axis_group_engraver`
  Group all objects created in this context in a VerticalAxisGroup spanner.

  Properties (read)

  `verticalExtent` (pair of numbers)
    Hard coded vertical extent. The format is a pair of dimensions, for example, this sets the sizes of a staff to 10 (5+5) staff-spaces high.

                       \set Staff.verticalExtent = #'(-5.0 . 5.0)

    This does not work for Voice or any other context that doesn't form a vertical group.

  `minimumVerticalExtent` (pair of numbers)
    minimum vertical extent, same format as verticalExtent
  `extraVerticalExtent` (pair of numbers)
    extra vertical extent, same format as minimumVerticalExtent
  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.

  Music types accepted:

  string-number-event

`Instrument_name_engraver`
  Creates a system start text for instrument or vocal names.

  Properties (read)

  `vocNam` (markup)
    Name of a vocal line, short version.
  `vocalName` (markup)
    Name of a vocal line.
  `instrument` (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.
  `instr` (markup)
    See `instrument`
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  This engraver creates the following layout objects: InstrumentName.
`Piano_pedal_engraver`
  Engrave piano pedal symbols and brackets.

  Music types accepted:

  pedal-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: SostenutoPedal, SostenutoPedalLineSpanner, SustainPedal, SustainPedalLineSpanner, UnaCordaPedal and UnaCordaPedalLineSpanner.
`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.
  `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.
  `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)

  `clefPosition` (number)
    Where should the center of the clef symbol go, measured in half staff spaces from the center of the staff.
  `clefGlyph` (string)
    Name of the symbol within the music font.
  `middleCPosition` (number)
    Place of the middle C, measured in half staff-spaces. Usually determined by looking at `clefPosition` and `clefGlyph`.
  `clefOctavation` (integer)
    Add this much extra octavation. Values of 7 and -7 are common.
  `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.
  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.
  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.

  This engraver creates the following layout objects: BarLine.
`Output_property_engraver`
  Apply a procedure to any grob acknowledged.

  Music types accepted:

  layout-instruction

#### StaffGroup

Groups staffs 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 staffs, with a bracket in front and spanning bar lines.

This context creates the following layout objects:

Arpeggio, SpanBar, SystemStartBar, SystemStartBrace, SystemStartBracket and SystemStartSquare.

This context sets the following properties:

- Set translator property `systemStartDelimiter` to `'SystemStartBracket`

Context StaffGroup can contain Staff, FiguredBass, InnerStaffGroup, ChoirStaff, InnerChoirStaff, ChordNames, Lyrics, TabStaff, PianoStaff, GrandStaff, DrumStaff and RhythmicStaff

This context is built from the following engravers:

`System_start_delimiter_engraver`
  Creates a system start delimiter (ie. SystemStart{Bar, Brace, Bracket} spanner

  Properties (read)

  `systemStartDelimiter` (symbol)
    Which grob to make for the start of the system/staff? Set to `SystemStartBrace`, `SystemStartBracket` or `SystemStartBar`.
  `systemStartDelimiterHierarchy` (pair)
    A nested list, indicating the nesting of a start delimiters.
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  This engraver creates the following layout objects: SystemStartBar, SystemStartBrace, SystemStartBracket and SystemStartSquare.
`Output_property_engraver`
  Apply a procedure to any grob acknowledged.

  Music types accepted:

  layout-instruction

`Span_arpeggio_engraver`

  Properties (read)

  `connectArpeggios` (boolean)
    If set, connect arpeggios across piano staff.
  This engraver creates the following layout objects: Arpeggio.
`Span_bar_engraver`
  This engraver makes cross-staff barlines: It catches all normal bar lines, and draws a single span-bar across them.

  This engraver creates the following layout objects: SpanBar.

#### TabStaff

Context for generating tablature. [DOCME]

This context also accepts commands for the following context(s):

Staff

This context creates the following layout objects:

BarLine, Clef, DotColumn, InstrumentName, LedgerLineSpanner, NoteCollision, OctavateEight, OttavaBracket, RestCollision, SeparatingGroupSpanner, SeparationItem, SostenutoPedalLineSpanner, SostenutoPedal, StaffSpacing, StaffSymbol, SustainPedalLineSpanner, SustainPedal, TimeSignature, UnaCordaPedalLineSpanner, UnaCordaPedal, VerticalAxisGroup and VoltaBracket.

This context sets the following properties:

- Set translator property `clefPosition` to `0`
- Set translator property `clefGlyph` to `clefs.tab`
- Set grob-property `avoid-note-head` in Stem to `#t`.
- Set grob-property `staff-space` in StaffSymbol to `1.5`.
- Set translator property `instr` to `'()`
- Set translator property `instrument` to `'()`
- Set translator property `createSpacing` to `#t`
- Set translator property `localKeySignature` to `'()`
- Set translator property `verticalExtent` to `#f`
- Set translator property `extraVerticalExtent` to `#f`
- Set grob-property `minimum-Y-extent` in VerticalAxisGroup to `'(-4 . 4)`.

Context TabStaff can contain TabVoice and CueVoice

This context is built from the following engravers:

`Tab_staff_symbol_engraver`
  Create a staff-symbol, but look at stringTunings for the number of lines.staff lines.

  Music types accepted:

  staff-span-event

  Properties (read)

  `stringTunings` (list)
    The tablature strings tuning. It is a list of the pitch (in semitones) of each string (starting with the lower one).
  This engraver creates the following layout objects: StaffSymbol.
`Axis_group_engraver`
  Group all objects created in this context in a VerticalAxisGroup spanner.

  Properties (read)

  `verticalExtent` (pair of numbers)
    Hard coded vertical extent. The format is a pair of dimensions, for example, this sets the sizes of a staff to 10 (5+5) staff-spaces high.

                       \set Staff.verticalExtent = #'(-5.0 . 5.0)

    This does not work for Voice or any other context that doesn't form a vertical group.

  `minimumVerticalExtent` (pair of numbers)
    minimum vertical extent, same format as verticalExtent
  `extraVerticalExtent` (pair of numbers)
    extra vertical extent, same format as minimumVerticalExtent
  This engraver creates the following layout objects: VerticalAxisGroup.
`Instrument_name_engraver`
  Creates a system start text for instrument or vocal names.

  Properties (read)

  `vocNam` (markup)
    Name of a vocal line, short version.
  `vocalName` (markup)
    Name of a vocal line.
  `instrument` (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.
  `instr` (markup)
    See `instrument`
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  This engraver creates the following layout objects: InstrumentName.
`Piano_pedal_engraver`
  Engrave piano pedal symbols and brackets.

  Music types accepted:

  pedal-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: SostenutoPedal, SostenutoPedalLineSpanner, SustainPedal, SustainPedalLineSpanner, UnaCordaPedal and UnaCordaPedalLineSpanner.
`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.

`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.

`Clef_engraver`
  Determine and set reference point for pitches

  Properties (read)

  `clefPosition` (number)
    Where should the center of the clef symbol go, measured in half staff spaces from the center of the staff.
  `clefGlyph` (string)
    Name of the symbol within the music font.
  `middleCPosition` (number)
    Place of the middle C, measured in half staff-spaces. Usually determined by looking at `clefPosition` and `clefGlyph`.
  `clefOctavation` (integer)
    Add this much extra octavation. Values of 7 and -7 are common.
  `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.
  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.
  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.

  This engraver creates the following layout objects: BarLine.
`Output_property_engraver`
  Apply a procedure to any grob acknowledged.

  Music types accepted:

  layout-instruction

#### TabVoice

Context for drawing notes in a Tab staff.

This context also accepts commands for the following context(s):

Voice

This context creates the following layout objects:

Arpeggio, Beam, BreathingSign, ClusterSpannerBeacon, ClusterSpanner, CombineTextScript, Dots, DoublePercentRepeatCounter, DoublePercentRepeat, DynamicLineSpanner, DynamicText, Glissando, Hairpin, LaissezVibrerTieColumn, LaissezVibrerTie, MultiMeasureRestNumber, MultiMeasureRestText, MultiMeasureRest, NoteColumn, NoteSpacing, PercentRepeatCounter, PercentRepeat, PhrasingSlur, RepeatSlash, RepeatTieColumn, RepeatTie, Rest, ScriptColumn, Script, Slur, StemTremolo, Stem, TabNoteHead, TextScript, TextSpanner, TieColumn, Tie, TrillPitchAccidental, TrillPitchGroup, TrillPitchHead, TrillSpanner, TupletBracket, TupletNumber and VoiceFollower.

This context sets the following properties:

- Set grob-property `length-fraction` in Beam to `0.62`.
- Set grob-property `thickness` in Beam to `0.32`.
- Set translator property `localKeySignature` to `'()`

This context is a `bottom' context; it can not contain other contexts.

This context is built from the following engravers:

`Tab_note_heads_engraver`
  Generate one or more tablature noteheads from Music of type NoteEvent.

  Music types accepted:

  note-event, string-number-event and busy-playing-event

  Properties (read)

  `middleCPosition` (number)
    Place of the middle C, measured in half staff-spaces. Usually determined by looking at `clefPosition` and `clefGlyph`.
  `stringTunings` (list)
    The tablature strings tuning. It is a list of the pitch (in semitones) of each string (starting with the lower one).
  `minimumFret` (number)
    The tablature auto string-selecting mechanism selects the highest string with a fret at least `minimumFret`
  `tablatureFormat` (procedure)
    Function formatting a tab note head; it takes a string number, a list of string tunings and Pitch object. It returns the text as a string.
  `highStringOne` (boolean)
    Whether the 1st string is the string with highest pitch on the instrument. This used by the automatic string selector for tab notation.
  `stringOneTopmost` (boolean)
    Whether the 1st string is printed on the top line of the tablature.
  This engraver creates the following layout objects: Dots and TabNoteHead.
`Skip_event_swallow_translator`
  Swallow \skip.

  Music types accepted:

  skip-event

`Grace_engraver`
  Set font size and other properties for grace notes.

  Properties (read)

  `graceSettings` (list)
    Overrides for grace notes. This property should be manipulated through the `add-grace-property` function.
`Tuplet_engraver`
  Catch Time_scaled_music and generate appropriate bracket

  Music types accepted:

  time-scaled-music

  Properties (read)

  `tupletNumberFormatFunction` (procedure)
    Function taking a music as input, producing a string. This function is called to determine the text to print on a tuplet bracket.
  `tupletSpannerDuration` (moment)
    Normally a tuplet bracket is as wide as the `\times` expression that gave rise to it. By setting this property, you can make brackets last shorter. Example

                       {
                       \set tupletSpannerDuration = #(ly:make-moment 1 4)
                       \times 2/3 { c8 c c c c c }
                       }

    .

  `tupletFullLength` (boolean)
    If set, the tuplet is printed upto the start of the next note.
  This engraver creates the following layout objects: TupletBracket and TupletNumber.
`Tie_engraver`
  Generate ties between noteheads of equal pitch.

  Music types accepted:

  tie-event

  Properties (read)

  `tieWaitForNote` (boolean)
    If true, tied notes do not have to follow each other directly. This can be used for writing out arpeggios
  Properties (write)
  `tieMelismaBusy` (boolean)
    Signal whether a tie is present.
  This engraver creates the following layout objects: Tie and TieColumn.
`Slur_engraver`
  Build slur grobs from slur events

  Music types accepted:

  slur-event

  Properties (read)

  `slurMelismaBusy` (boolean)
    Signal if a slur is present.
  `doubleSlurs` (boolean)
    When set, two slurs are created for every slurred note, one above and one below the chord.
  This engraver creates the following layout objects: Slur.
`Cluster_spanner_engraver`
  Engraves a cluster using Spanner notation

  Music types accepted:

  cluster-note-event and busy-playing-event

  This engraver creates the following layout objects: ClusterSpanner and ClusterSpannerBeacon.

`Phrasing_slur_engraver`
  Print phrasing slurs. Similar to Slur_engraver

  Music types accepted:

  phrasing-slur-event

  This engraver creates the following layout objects: PhrasingSlur.

`Rhythmic_column_engraver`
  Generates NoteColumn, an objects that groups stems, noteheads and rests.

  This engraver creates the following layout objects: NoteColumn and NoteSpacing.

`Script_column_engraver`

  This engraver creates the following layout objects: ScriptColumn.

`Script_engraver`
  Handles note scripted articulations.

  Music types accepted:

  script-event and articulation-event

  Properties (read)

  `scriptDefinitions` (list)
    Description of scripts. This is used by Script_engraver for typesetting note-super/subscripts. See `scm/script.scm` for more information
  This engraver creates the following layout objects: Script.
`Dynamic_engraver`
  This engraver creates hairpins, dynamic texts, and their vertical alignments. The symbols are collected onto a DynamicLineSpanner grob which takes care of vertical positioning.

  Music types accepted:

  absolute-dynamic-event, crescendo-event and decrescendo-event

  This engraver creates the following layout objects: DynamicLineSpanner, DynamicText, Hairpin and TextSpanner.

`Text_engraver`
  Create text-scripts

  Music types accepted:

  text-script-event

  This engraver creates the following layout objects: TextScript.

`Part_combine_engraver`
  Part combine engraver for orchestral scores: Print markings a2, Solo, Solo II, and unisono

  Music types accepted:

  part-combine-event

  Properties (read)

  `printPartCombineTexts` (boolean)
    set Solo/A due texts in the part combiner?
  `soloText` (string)
    text for begin of solo when part-combining.
  `soloIIText` (string)
    text for begin of solo for voice “two” when part-combining.
  `aDueText` (string)
    Text to print at a unisono passage.
  This engraver creates the following layout objects: CombineTextScript.
`Melisma_translator`
  This translator collects melisma information about ties, beams, and user settings (`melismaBusy`, and signals it to the `ddlyrics` code.

  Music types accepted:

  melisma-playing-event and melisma-span-event

  Properties (read)

  `melismaBusy` (boolean)
    Signifies whether a melisma is active. This can be used to signal melismas on top of those automatically detected.
  `melismaBusyProperties` (list)
    List of properties (symbols) to determine whether a melisma is playing. Setting this property will influence how lyrics are aligned to notes. For example, if set to `#'(melismaBusy beamMelismaBusy)`, only manual melismata and manual beams are considered. Possible values include `melismaBusy`, `slurMelismaBusy`, `tieMelismaBusy`, and `beamMelismaBusy`
  `slurMelismaBusy` (boolean)
    Signal if a slur is present.
  `tieMelismaBusy` (boolean)
    Signal whether a tie is present.
  `beamMelismaBusy` (boolean)
    Signal if a beam is present.
`Slash_repeat_engraver`
  Make beat repeats.

  Music types accepted:

  repeated-music

  Properties (read)

  `measureLength` (moment)
    Length of one measure in the current time signature.
  This engraver creates the following layout objects: RepeatSlash.
`Percent_repeat_engraver`
  Make whole bar and double bar repeats.

  Music types accepted:

  repeated-music

  Properties (read)

  `measureLength` (moment)
    Length of one measure in the current time signature.
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  `countPercentRepeats` (boolean)
    If set, produce counters for percent repeats.
  This engraver creates the following layout objects: DoublePercentRepeat, DoublePercentRepeatCounter, PercentRepeat and PercentRepeatCounter.
`Chord_tremolo_engraver`
  Generates beams for tremolo repeats.

  Music types accepted:

  repeated-music

  This engraver creates the following layout objects: Beam.

`Auto_beam_engraver`
  Generate beams based on measure characteristics and observed Stems. Uses beatLength, measureLength and measurePosition to decide when to start and stop a beam. Overriding beaming is done through Stem_engraver properties `stemLeftBeamCount` and `stemRightBeamCount`.

  Music types accepted:

  beam-forbid-event

  Properties (read)

  `autoBeaming` (boolean)
    If set to true then beams are generated automatically.
  `autoBeamSettings` (list)
    Specifies when automatically generated beams should begin and end. See Setting automatic beam behavior for more information.
  `beatLength` (moment)
    The length of one beat in this time signature.
  `subdivideBeams` (boolean)
    If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.
  This engraver creates the following layout objects: Beam.
`Grace_beam_engraver`
  Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams. Only engraves beams when we are at grace points in time.

  Music types accepted:

  beam-event

  Properties (read)

  `beamMelismaBusy` (boolean)
    Signal if a beam is present.
  `beatLength` (moment)
    The length of one beat in this time signature.
  `allowBeamBreak` (boolean)
    If true allow line breaks for beams over bar lines.
  `subdivideBeams` (boolean)
    If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.
  This engraver creates the following layout objects: Beam.
`Beam_engraver`
  Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams.

  Music types accepted:

  beam-event

  Properties (read)

  `beamMelismaBusy` (boolean)
    Signal if a beam is present.
  `beatLength` (moment)
    The length of one beat in this time signature.
  `subdivideBeams` (boolean)
    If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.
  This engraver creates the following layout objects: Beam.
`Stem_engraver`
  Create stems and single-stem tremolos. It also works together with the beam engraver for overriding beaming.

  Music types accepted:

  tremolo-event

  Properties (read)

  `tremoloFlags` (integer)
    Number of tremolo flags to add if no number is specified.
  `stemLeftBeamCount` (integer)
    Specify the number of beams to draw on the left side of the next note. Overrides automatic beaming. The value is only used once, and then it is erased.
  `stemRightBeamCount` (integer)
    See `stemLeftBeamCount`.
  This engraver creates the following layout objects: Stem and StemTremolo.
`Rest_engraver`

  Music types accepted:

  rest-event

  Properties (read)

  `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: Dots and Rest.
`Breathing_sign_engraver`

  Music types accepted:

  breathing-event

  This engraver creates the following layout objects: BreathingSign.

`Ligature_bracket_engraver`
  Handles Ligature_events by engraving Ligature brackets.

  Music types accepted:

  ligature-event

  This engraver creates the following layout objects: TupletBracket.

`Glissando_engraver`
  Engrave a glissandi

  Music types accepted:

  glissando-event

  Properties (read)

  `followVoice` (boolean)
    If set, note heads are tracked across staff switches by a thin line
  This engraver creates the following layout objects: Glissando.
`Note_head_line_engraver`
  Engrave a line between two note heads, for example a glissando. If followVoice is set, staff switches also generate a line.

  Music types accepted:

  glissando-event

  Properties (read)

  `followVoice` (boolean)
    If set, note heads are tracked across staff switches by a thin line
  This engraver creates the following layout objects: Glissando and VoiceFollower.
`Repeat_tie_engraver`
  Create Laissez vibrer items.

  Music types accepted:

  repeat-tie-event

  This engraver creates the following layout objects: RepeatTie and RepeatTieColumn.

`Laissez_vibrer_engraver`
  Create Laissez vibrer items.

  Music types accepted:

  laissez-vibrer-event

  This engraver creates the following layout objects: LaissezVibrerTie and LaissezVibrerTieColumn.

`Forbid_line_break_engraver`
  Forbid line breaks when note heads are still playing at some point.

  Properties (read)

  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
`Grob_pq_engraver`
  Administrate when certain grobs (eg. note heads) stop playing

  Properties (read)

  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
  Properties (write)
  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
`Trill_spanner_engraver`
  Create trill spanner from a Music.

  Music types accepted:

  trill-span-event

  This engraver creates the following layout objects: TrillSpanner.

`Text_spanner_engraver`
  Create text spanner from a Music.

  Music types accepted:

  text-span-event

  This engraver creates the following layout objects: TextSpanner.

`Multi_measure_rest_engraver`
  Engraves multi-measure rests that are produced with `R`. Reads measurePosition and currentBarNumber to determine what number to print over the MultiMeasureRest. Reads measureLength to determine if it should use a whole rest or a breve rest to represent 1 measure

  Music types accepted:

  multi-measure-rest-event and multi-measure-text-event

  Properties (read)

  `currentBarNumber` (integer)
    Contains the current barnumber. This property is incremented at every bar line.
  `restNumberThreshold` (number)
    If a multimeasure rest has more measures than this, a number is printed.
  `breakableSeparationItem` (layout object)
    The breakable items in this time step, for this staff.
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  `measurePosition` (moment)
    How much of the current measure have we had. This can be set manually to create incomplete measures.
  `measureLength` (moment)
    Length of one measure in the current time signature.
  This engraver creates the following layout objects: MultiMeasureRest, MultiMeasureRestNumber and MultiMeasureRestText.
`Arpeggio_engraver`
  Generate an Arpeggio symbol

  Music types accepted:

  arpeggio-event

  This engraver creates the following layout objects: Arpeggio.

`Output_property_engraver`
  Apply a procedure to any grob acknowledged.

  Music types accepted:

  layout-instruction

`Pitched_trill_engraver`
  Print the bracketed notehead after a notehead with trill.

  This engraver creates the following layout objects: TrillPitchAccidental, TrillPitchGroup and TrillPitchHead.

`Font_size_engraver`
  Puts fontSize into font-size grob property.

  Properties (read)

  `fontSize` (number)
    The relative size of all grobs in a context.

#### VaticanaStaff

Same as `Staff` context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana.

This context also accepts commands for the following context(s):

Staff

This context creates the following layout objects:

AccidentalSuggestion, Accidental, BarLine, Clef, Custos, DotColumn, InstrumentName, KeySignature, LedgerLineSpanner, NoteCollision, OctavateEight, OttavaBracket, RestCollision, SeparatingGroupSpanner, SeparationItem, SostenutoPedalLineSpanner, SostenutoPedal, StaffSpacing, StaffSymbol, SustainPedalLineSpanner, SustainPedal, UnaCordaPedalLineSpanner, UnaCordaPedal, VerticalAxisGroup and VoltaBracket.

This context sets the following properties:

- Set grob-property `neutral-direction` in Custos to `-1`.
- Set grob-property `neutral-position` in Custos to `3`.
- Set grob-property `style` in Custos to `'vaticana`.
- Set grob-property `style` in Accidental to `'vaticana`.
- Set grob-property `style` in KeySignature to `'vaticana`.
- Set translator property `clefOctavation` to `0`
- Set translator property `clefPosition` to `1`
- Set translator property `middleCPosition` to `1`
- Set translator property `clefGlyph` to `clefs.vaticana.do`
- Set grob-property `thickness` in StaffSymbol to `0.6`.
- Set grob-property `line-count` in StaffSymbol to `4`.
- Set grob-property `transparent` in BarLine to `#t`.
- Set translator property `instr` to `'()`
- Set translator property `instrument` to `'()`
- Set translator property `createSpacing` to `#t`
- Set translator property `localKeySignature` to `'()`
- Set translator property `verticalExtent` to `#f`
- Set translator property `extraVerticalExtent` to `#f`
- Set grob-property `minimum-Y-extent` in VerticalAxisGroup to `'(-4 . 4)`.

Context VaticanaStaff can contain VaticanaVoice and CueVoice

This context is built from the following engravers:

`Custos_engraver`

  This engraver creates the following layout objects: Custos.

`Axis_group_engraver`
  Group all objects created in this context in a VerticalAxisGroup spanner.

  Properties (read)

  `verticalExtent` (pair of numbers)
    Hard coded vertical extent. The format is a pair of dimensions, for example, this sets the sizes of a staff to 10 (5+5) staff-spaces high.

                       \set Staff.verticalExtent = #'(-5.0 . 5.0)

    This does not work for Voice or any other context that doesn't form a vertical group.

  `minimumVerticalExtent` (pair of numbers)
    minimum vertical extent, same format as verticalExtent
  `extraVerticalExtent` (pair of numbers)
    extra vertical extent, same format as minimumVerticalExtent
  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.

  Music types accepted:

  string-number-event

`Instrument_name_engraver`
  Creates a system start text for instrument or vocal names.

  Properties (read)

  `vocNam` (markup)
    Name of a vocal line, short version.
  `vocalName` (markup)
    Name of a vocal line.
  `instrument` (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.
  `instr` (markup)
    See `instrument`
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  This engraver creates the following layout objects: InstrumentName.
`Piano_pedal_engraver`
  Engrave piano pedal symbols and brackets.

  Music types accepted:

  pedal-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: SostenutoPedal, SostenutoPedalLineSpanner, SustainPedal, SustainPedalLineSpanner, UnaCordaPedal and UnaCordaPedalLineSpanner.
`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.
  `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.

`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.
  `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)

  `clefPosition` (number)
    Where should the center of the clef symbol go, measured in half staff spaces from the center of the staff.
  `clefGlyph` (string)
    Name of the symbol within the music font.
  `middleCPosition` (number)
    Place of the middle C, measured in half staff-spaces. Usually determined by looking at `clefPosition` and `clefGlyph`.
  `clefOctavation` (integer)
    Add this much extra octavation. Values of 7 and -7 are common.
  `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.
  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.
  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.

  This engraver creates the following layout objects: BarLine.
`Output_property_engraver`
  Apply a procedure to any grob acknowledged.

  Music types accepted:

  layout-instruction

#### VaticanaVoice

Same as `Voice` context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana.

This context also accepts commands for the following context(s):

Voice

This context creates the following layout objects:

Arpeggio, Beam, BreathingSign, ClusterSpannerBeacon, ClusterSpanner, CombineTextScript, Dots, DoublePercentRepeatCounter, DoublePercentRepeat, DynamicLineSpanner, DynamicText, Fingering, Glissando, Hairpin, LaissezVibrerTieColumn, LaissezVibrerTie, MultiMeasureRestNumber, MultiMeasureRestText, MultiMeasureRest, NoteColumn, NoteHead, NoteSpacing, PercentRepeatCounter, PercentRepeat, PhrasingSlur, RepeatSlash, RepeatTieColumn, RepeatTie, Rest, ScriptColumn, Script, TextScript, TextSpanner, TieColumn, Tie, TrillPitchAccidental, TrillPitchGroup, TrillPitchHead, TrillSpanner, TupletBracket, TupletNumber, VaticanaLigature and VoiceFollower.

This context sets the following properties:

- Set grob-property `edge-text` in TextSpanner to `'( . )`.
- Set grob-property `enclose-bounds` in TextSpanner to `1`.
- Set grob-property `padding` in TextSpanner to `-0.1`.
- Set grob-property `edge-height` in TextSpanner to `'(0 . 0)`.
- Set grob-property `style` in TextSpanner to `'line`.
- Set grob-property `dash-fraction` in TextSpanner to `'()`.
- Set translator property `autoBeaming` to `#f`
- Set grob-property `padding` in Script to `0.5`.
- Set grob-property `style` in NoteHead to `'vaticana.punctum`.
- Set translator property `localKeySignature` to `'()`

This context is a `bottom' context; it can not contain other contexts.

This context is built from the following engravers:

`Vaticana_ligature_engraver`
  Handles ligatures by glueing special ligature heads together.

  Music types accepted:

  ligature-event

  This engraver creates the following layout objects: VaticanaLigature.

`Skip_event_swallow_translator`
  Swallow \skip.

  Music types accepted:

  skip-event

`Grace_engraver`
  Set font size and other properties for grace notes.

  Properties (read)

  `graceSettings` (list)
    Overrides for grace notes. This property should be manipulated through the `add-grace-property` function.
`Tuplet_engraver`
  Catch Time_scaled_music and generate appropriate bracket

  Music types accepted:

  time-scaled-music

  Properties (read)

  `tupletNumberFormatFunction` (procedure)
    Function taking a music as input, producing a string. This function is called to determine the text to print on a tuplet bracket.
  `tupletSpannerDuration` (moment)
    Normally a tuplet bracket is as wide as the `\times` expression that gave rise to it. By setting this property, you can make brackets last shorter. Example

                       {
                       \set tupletSpannerDuration = #(ly:make-moment 1 4)
                       \times 2/3 { c8 c c c c c }
                       }

    .

  `tupletFullLength` (boolean)
    If set, the tuplet is printed upto the start of the next note.
  This engraver creates the following layout objects: TupletBracket and TupletNumber.
`Tie_engraver`
  Generate ties between noteheads of equal pitch.

  Music types accepted:

  tie-event

  Properties (read)

  `tieWaitForNote` (boolean)
    If true, tied notes do not have to follow each other directly. This can be used for writing out arpeggios
  Properties (write)
  `tieMelismaBusy` (boolean)
    Signal whether a tie is present.
  This engraver creates the following layout objects: Tie and TieColumn.
`Cluster_spanner_engraver`
  Engraves a cluster using Spanner notation

  Music types accepted:

  cluster-note-event and busy-playing-event

  This engraver creates the following layout objects: ClusterSpanner and ClusterSpannerBeacon.

`Phrasing_slur_engraver`
  Print phrasing slurs. Similar to Slur_engraver

  Music types accepted:

  phrasing-slur-event

  This engraver creates the following layout objects: PhrasingSlur.

`Rhythmic_column_engraver`
  Generates NoteColumn, an objects that groups stems, noteheads and rests.

  This engraver creates the following layout objects: NoteColumn and NoteSpacing.

`Script_column_engraver`

  This engraver creates the following layout objects: ScriptColumn.

`Script_engraver`
  Handles note scripted articulations.

  Music types accepted:

  script-event and articulation-event

  Properties (read)

  `scriptDefinitions` (list)
    Description of scripts. This is used by Script_engraver for typesetting note-super/subscripts. See `scm/script.scm` for more information
  This engraver creates the following layout objects: Script.
`Fingering_engraver`
  Create fingering-scripts

  Music types accepted:

  fingering-event

  This engraver creates the following layout objects: Fingering.

`Dynamic_engraver`
  This engraver creates hairpins, dynamic texts, and their vertical alignments. The symbols are collected onto a DynamicLineSpanner grob which takes care of vertical positioning.

  Music types accepted:

  absolute-dynamic-event, crescendo-event and decrescendo-event

  This engraver creates the following layout objects: DynamicLineSpanner, DynamicText, Hairpin and TextSpanner.

`Text_engraver`
  Create text-scripts

  Music types accepted:

  text-script-event

  This engraver creates the following layout objects: TextScript.

`Part_combine_engraver`
  Part combine engraver for orchestral scores: Print markings a2, Solo, Solo II, and unisono

  Music types accepted:

  part-combine-event

  Properties (read)

  `printPartCombineTexts` (boolean)
    set Solo/A due texts in the part combiner?
  `soloText` (string)
    text for begin of solo when part-combining.
  `soloIIText` (string)
    text for begin of solo for voice “two” when part-combining.
  `aDueText` (string)
    Text to print at a unisono passage.
  This engraver creates the following layout objects: CombineTextScript.
`Melisma_translator`
  This translator collects melisma information about ties, beams, and user settings (`melismaBusy`, and signals it to the `ddlyrics` code.

  Music types accepted:

  melisma-playing-event and melisma-span-event

  Properties (read)

  `melismaBusy` (boolean)
    Signifies whether a melisma is active. This can be used to signal melismas on top of those automatically detected.
  `melismaBusyProperties` (list)
    List of properties (symbols) to determine whether a melisma is playing. Setting this property will influence how lyrics are aligned to notes. For example, if set to `#'(melismaBusy beamMelismaBusy)`, only manual melismata and manual beams are considered. Possible values include `melismaBusy`, `slurMelismaBusy`, `tieMelismaBusy`, and `beamMelismaBusy`
  `slurMelismaBusy` (boolean)
    Signal if a slur is present.
  `tieMelismaBusy` (boolean)
    Signal whether a tie is present.
  `beamMelismaBusy` (boolean)
    Signal if a beam is present.
`Slash_repeat_engraver`
  Make beat repeats.

  Music types accepted:

  repeated-music

  Properties (read)

  `measureLength` (moment)
    Length of one measure in the current time signature.
  This engraver creates the following layout objects: RepeatSlash.
`Percent_repeat_engraver`
  Make whole bar and double bar repeats.

  Music types accepted:

  repeated-music

  Properties (read)

  `measureLength` (moment)
    Length of one measure in the current time signature.
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  `countPercentRepeats` (boolean)
    If set, produce counters for percent repeats.
  This engraver creates the following layout objects: DoublePercentRepeat, DoublePercentRepeatCounter, PercentRepeat and PercentRepeatCounter.
`Chord_tremolo_engraver`
  Generates beams for tremolo repeats.

  Music types accepted:

  repeated-music

  This engraver creates the following layout objects: Beam.

`New_fingering_engraver`
  Create fingering-scripts for notes in a new chord. This engraver is ill-named, since it also takes care of articulations and harmonic note heads

  Properties (read)

  `fingeringOrientations` (list)
    List of symbols, containing ``left`', ``right`', ``up`' and/or ``down`'. This list determines where fingerings are put relative to the chord being fingered.
  This engraver creates the following layout objects: Fingering.
`Auto_beam_engraver`
  Generate beams based on measure characteristics and observed Stems. Uses beatLength, measureLength and measurePosition to decide when to start and stop a beam. Overriding beaming is done through Stem_engraver properties `stemLeftBeamCount` and `stemRightBeamCount`.

  Music types accepted:

  beam-forbid-event

  Properties (read)

  `autoBeaming` (boolean)
    If set to true then beams are generated automatically.
  `autoBeamSettings` (list)
    Specifies when automatically generated beams should begin and end. See Setting automatic beam behavior for more information.
  `beatLength` (moment)
    The length of one beat in this time signature.
  `subdivideBeams` (boolean)
    If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.
  This engraver creates the following layout objects: Beam.
`Grace_beam_engraver`
  Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams. Only engraves beams when we are at grace points in time.

  Music types accepted:

  beam-event

  Properties (read)

  `beamMelismaBusy` (boolean)
    Signal if a beam is present.
  `beatLength` (moment)
    The length of one beat in this time signature.
  `allowBeamBreak` (boolean)
    If true allow line breaks for beams over bar lines.
  `subdivideBeams` (boolean)
    If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.
  This engraver creates the following layout objects: Beam.
`Beam_engraver`
  Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams.

  Music types accepted:

  beam-event

  Properties (read)

  `beamMelismaBusy` (boolean)
    Signal if a beam is present.
  `beatLength` (moment)
    The length of one beat in this time signature.
  `subdivideBeams` (boolean)
    If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.
  This engraver creates the following layout objects: Beam.
`Rest_engraver`

  Music types accepted:

  rest-event

  Properties (read)

  `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: Dots and Rest.
`Note_heads_engraver`
  Generate noteheads.

  Music types accepted:

  note-event and busy-playing-event

  Properties (read)

  `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: Dots and NoteHead.
`Breathing_sign_engraver`

  Music types accepted:

  breathing-event

  This engraver creates the following layout objects: BreathingSign.

`Glissando_engraver`
  Engrave a glissandi

  Music types accepted:

  glissando-event

  Properties (read)

  `followVoice` (boolean)
    If set, note heads are tracked across staff switches by a thin line
  This engraver creates the following layout objects: Glissando.
`Note_head_line_engraver`
  Engrave a line between two note heads, for example a glissando. If followVoice is set, staff switches also generate a line.

  Music types accepted:

  glissando-event

  Properties (read)

  `followVoice` (boolean)
    If set, note heads are tracked across staff switches by a thin line
  This engraver creates the following layout objects: Glissando and VoiceFollower.
`Repeat_tie_engraver`
  Create Laissez vibrer items.

  Music types accepted:

  repeat-tie-event

  This engraver creates the following layout objects: RepeatTie and RepeatTieColumn.

`Laissez_vibrer_engraver`
  Create Laissez vibrer items.

  Music types accepted:

  laissez-vibrer-event

  This engraver creates the following layout objects: LaissezVibrerTie and LaissezVibrerTieColumn.

`Forbid_line_break_engraver`
  Forbid line breaks when note heads are still playing at some point.

  Properties (read)

  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
`Grob_pq_engraver`
  Administrate when certain grobs (eg. note heads) stop playing

  Properties (read)

  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
  Properties (write)
  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
`Trill_spanner_engraver`
  Create trill spanner from a Music.

  Music types accepted:

  trill-span-event

  This engraver creates the following layout objects: TrillSpanner.

`Text_spanner_engraver`
  Create text spanner from a Music.

  Music types accepted:

  text-span-event

  This engraver creates the following layout objects: TextSpanner.

`Multi_measure_rest_engraver`
  Engraves multi-measure rests that are produced with `R`. Reads measurePosition and currentBarNumber to determine what number to print over the MultiMeasureRest. Reads measureLength to determine if it should use a whole rest or a breve rest to represent 1 measure

  Music types accepted:

  multi-measure-rest-event and multi-measure-text-event

  Properties (read)

  `currentBarNumber` (integer)
    Contains the current barnumber. This property is incremented at every bar line.
  `restNumberThreshold` (number)
    If a multimeasure rest has more measures than this, a number is printed.
  `breakableSeparationItem` (layout object)
    The breakable items in this time step, for this staff.
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  `measurePosition` (moment)
    How much of the current measure have we had. This can be set manually to create incomplete measures.
  `measureLength` (moment)
    Length of one measure in the current time signature.
  This engraver creates the following layout objects: MultiMeasureRest, MultiMeasureRestNumber and MultiMeasureRestText.
`Arpeggio_engraver`
  Generate an Arpeggio symbol

  Music types accepted:

  arpeggio-event

  This engraver creates the following layout objects: Arpeggio.

`Output_property_engraver`
  Apply a procedure to any grob acknowledged.

  Music types accepted:

  layout-instruction

`Pitched_trill_engraver`
  Print the bracketed notehead after a notehead with trill.

  This engraver creates the following layout objects: TrillPitchAccidental, TrillPitchGroup and TrillPitchHead.

`Font_size_engraver`
  Puts fontSize into font-size grob property.

  Properties (read)

  `fontSize` (number)
    The relative size of all grobs in a context.

#### Voice

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 want to have multiple voices on the same staff.

This context creates the following layout objects:

Arpeggio, Beam, BreathingSign, ClusterSpannerBeacon, ClusterSpanner, CombineTextScript, Dots, DoublePercentRepeatCounter, DoublePercentRepeat, DynamicLineSpanner, DynamicText, Fingering, Glissando, Hairpin, LaissezVibrerTieColumn, LaissezVibrerTie, MultiMeasureRestNumber, MultiMeasureRestText, MultiMeasureRest, NoteColumn, NoteHead, NoteSpacing, PercentRepeatCounter, PercentRepeat, PhrasingSlur, RepeatSlash, RepeatTieColumn, RepeatTie, Rest, ScriptColumn, Script, Slur, StemTremolo, Stem, TextScript, TextSpanner, TieColumn, Tie, TrillPitchAccidental, TrillPitchGroup, TrillPitchHead, TrillSpanner, TupletBracket, TupletNumber and VoiceFollower.

This context sets the following properties:

- Set translator property `localKeySignature` to `'()`

This context is a `bottom' context; it can not contain other contexts.

This context is built from the following engravers:

`Skip_event_swallow_translator`
  Swallow \skip.

  Music types accepted:

  skip-event

`Grace_engraver`
  Set font size and other properties for grace notes.

  Properties (read)

  `graceSettings` (list)
    Overrides for grace notes. This property should be manipulated through the `add-grace-property` function.
`Tuplet_engraver`
  Catch Time_scaled_music and generate appropriate bracket

  Music types accepted:

  time-scaled-music

  Properties (read)

  `tupletNumberFormatFunction` (procedure)
    Function taking a music as input, producing a string. This function is called to determine the text to print on a tuplet bracket.
  `tupletSpannerDuration` (moment)
    Normally a tuplet bracket is as wide as the `\times` expression that gave rise to it. By setting this property, you can make brackets last shorter. Example

                       {
                       \set tupletSpannerDuration = #(ly:make-moment 1 4)
                       \times 2/3 { c8 c c c c c }
                       }

    .

  `tupletFullLength` (boolean)
    If set, the tuplet is printed upto the start of the next note.
  This engraver creates the following layout objects: TupletBracket and TupletNumber.
`Tie_engraver`
  Generate ties between noteheads of equal pitch.

  Music types accepted:

  tie-event

  Properties (read)

  `tieWaitForNote` (boolean)
    If true, tied notes do not have to follow each other directly. This can be used for writing out arpeggios
  Properties (write)
  `tieMelismaBusy` (boolean)
    Signal whether a tie is present.
  This engraver creates the following layout objects: Tie and TieColumn.
`Slur_engraver`
  Build slur grobs from slur events

  Music types accepted:

  slur-event

  Properties (read)

  `slurMelismaBusy` (boolean)
    Signal if a slur is present.
  `doubleSlurs` (boolean)
    When set, two slurs are created for every slurred note, one above and one below the chord.
  This engraver creates the following layout objects: Slur.
`Cluster_spanner_engraver`
  Engraves a cluster using Spanner notation

  Music types accepted:

  cluster-note-event and busy-playing-event

  This engraver creates the following layout objects: ClusterSpanner and ClusterSpannerBeacon.

`Phrasing_slur_engraver`
  Print phrasing slurs. Similar to Slur_engraver

  Music types accepted:

  phrasing-slur-event

  This engraver creates the following layout objects: PhrasingSlur.

`Rhythmic_column_engraver`
  Generates NoteColumn, an objects that groups stems, noteheads and rests.

  This engraver creates the following layout objects: NoteColumn and NoteSpacing.

`Script_column_engraver`

  This engraver creates the following layout objects: ScriptColumn.

`Script_engraver`
  Handles note scripted articulations.

  Music types accepted:

  script-event and articulation-event

  Properties (read)

  `scriptDefinitions` (list)
    Description of scripts. This is used by Script_engraver for typesetting note-super/subscripts. See `scm/script.scm` for more information
  This engraver creates the following layout objects: Script.
`Fingering_engraver`
  Create fingering-scripts

  Music types accepted:

  fingering-event

  This engraver creates the following layout objects: Fingering.

`Dynamic_engraver`
  This engraver creates hairpins, dynamic texts, and their vertical alignments. The symbols are collected onto a DynamicLineSpanner grob which takes care of vertical positioning.

  Music types accepted:

  absolute-dynamic-event, crescendo-event and decrescendo-event

  This engraver creates the following layout objects: DynamicLineSpanner, DynamicText, Hairpin and TextSpanner.

`Text_engraver`
  Create text-scripts

  Music types accepted:

  text-script-event

  This engraver creates the following layout objects: TextScript.

`Part_combine_engraver`
  Part combine engraver for orchestral scores: Print markings a2, Solo, Solo II, and unisono

  Music types accepted:

  part-combine-event

  Properties (read)

  `printPartCombineTexts` (boolean)
    set Solo/A due texts in the part combiner?
  `soloText` (string)
    text for begin of solo when part-combining.
  `soloIIText` (string)
    text for begin of solo for voice “two” when part-combining.
  `aDueText` (string)
    Text to print at a unisono passage.
  This engraver creates the following layout objects: CombineTextScript.
`Melisma_translator`
  This translator collects melisma information about ties, beams, and user settings (`melismaBusy`, and signals it to the `ddlyrics` code.

  Music types accepted:

  melisma-playing-event and melisma-span-event

  Properties (read)

  `melismaBusy` (boolean)
    Signifies whether a melisma is active. This can be used to signal melismas on top of those automatically detected.
  `melismaBusyProperties` (list)
    List of properties (symbols) to determine whether a melisma is playing. Setting this property will influence how lyrics are aligned to notes. For example, if set to `#'(melismaBusy beamMelismaBusy)`, only manual melismata and manual beams are considered. Possible values include `melismaBusy`, `slurMelismaBusy`, `tieMelismaBusy`, and `beamMelismaBusy`
  `slurMelismaBusy` (boolean)
    Signal if a slur is present.
  `tieMelismaBusy` (boolean)
    Signal whether a tie is present.
  `beamMelismaBusy` (boolean)
    Signal if a beam is present.
`Slash_repeat_engraver`
  Make beat repeats.

  Music types accepted:

  repeated-music

  Properties (read)

  `measureLength` (moment)
    Length of one measure in the current time signature.
  This engraver creates the following layout objects: RepeatSlash.
`Percent_repeat_engraver`
  Make whole bar and double bar repeats.

  Music types accepted:

  repeated-music

  Properties (read)

  `measureLength` (moment)
    Length of one measure in the current time signature.
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  `countPercentRepeats` (boolean)
    If set, produce counters for percent repeats.
  This engraver creates the following layout objects: DoublePercentRepeat, DoublePercentRepeatCounter, PercentRepeat and PercentRepeatCounter.
`Chord_tremolo_engraver`
  Generates beams for tremolo repeats.

  Music types accepted:

  repeated-music

  This engraver creates the following layout objects: Beam.

`New_fingering_engraver`
  Create fingering-scripts for notes in a new chord. This engraver is ill-named, since it also takes care of articulations and harmonic note heads

  Properties (read)

  `fingeringOrientations` (list)
    List of symbols, containing ``left`', ``right`', ``up`' and/or ``down`'. This list determines where fingerings are put relative to the chord being fingered.
  This engraver creates the following layout objects: Fingering.
`Auto_beam_engraver`
  Generate beams based on measure characteristics and observed Stems. Uses beatLength, measureLength and measurePosition to decide when to start and stop a beam. Overriding beaming is done through Stem_engraver properties `stemLeftBeamCount` and `stemRightBeamCount`.

  Music types accepted:

  beam-forbid-event

  Properties (read)

  `autoBeaming` (boolean)
    If set to true then beams are generated automatically.
  `autoBeamSettings` (list)
    Specifies when automatically generated beams should begin and end. See Setting automatic beam behavior for more information.
  `beatLength` (moment)
    The length of one beat in this time signature.
  `subdivideBeams` (boolean)
    If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.
  This engraver creates the following layout objects: Beam.
`Grace_beam_engraver`
  Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams. Only engraves beams when we are at grace points in time.

  Music types accepted:

  beam-event

  Properties (read)

  `beamMelismaBusy` (boolean)
    Signal if a beam is present.
  `beatLength` (moment)
    The length of one beat in this time signature.
  `allowBeamBreak` (boolean)
    If true allow line breaks for beams over bar lines.
  `subdivideBeams` (boolean)
    If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.
  This engraver creates the following layout objects: Beam.
`Beam_engraver`
  Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams.

  Music types accepted:

  beam-event

  Properties (read)

  `beamMelismaBusy` (boolean)
    Signal if a beam is present.
  `beatLength` (moment)
    The length of one beat in this time signature.
  `subdivideBeams` (boolean)
    If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.
  This engraver creates the following layout objects: Beam.
`Stem_engraver`
  Create stems and single-stem tremolos. It also works together with the beam engraver for overriding beaming.

  Music types accepted:

  tremolo-event

  Properties (read)

  `tremoloFlags` (integer)
    Number of tremolo flags to add if no number is specified.
  `stemLeftBeamCount` (integer)
    Specify the number of beams to draw on the left side of the next note. Overrides automatic beaming. The value is only used once, and then it is erased.
  `stemRightBeamCount` (integer)
    See `stemLeftBeamCount`.
  This engraver creates the following layout objects: Stem and StemTremolo.
`Rest_engraver`

  Music types accepted:

  rest-event

  Properties (read)

  `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: Dots and Rest.
`Note_heads_engraver`
  Generate noteheads.

  Music types accepted:

  note-event and busy-playing-event

  Properties (read)

  `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: Dots and NoteHead.
`Breathing_sign_engraver`

  Music types accepted:

  breathing-event

  This engraver creates the following layout objects: BreathingSign.

`Ligature_bracket_engraver`
  Handles Ligature_events by engraving Ligature brackets.

  Music types accepted:

  ligature-event

  This engraver creates the following layout objects: TupletBracket.

`Glissando_engraver`
  Engrave a glissandi

  Music types accepted:

  glissando-event

  Properties (read)

  `followVoice` (boolean)
    If set, note heads are tracked across staff switches by a thin line
  This engraver creates the following layout objects: Glissando.
`Note_head_line_engraver`
  Engrave a line between two note heads, for example a glissando. If followVoice is set, staff switches also generate a line.

  Music types accepted:

  glissando-event

  Properties (read)

  `followVoice` (boolean)
    If set, note heads are tracked across staff switches by a thin line
  This engraver creates the following layout objects: Glissando and VoiceFollower.
`Repeat_tie_engraver`
  Create Laissez vibrer items.

  Music types accepted:

  repeat-tie-event

  This engraver creates the following layout objects: RepeatTie and RepeatTieColumn.

`Laissez_vibrer_engraver`
  Create Laissez vibrer items.

  Music types accepted:

  laissez-vibrer-event

  This engraver creates the following layout objects: LaissezVibrerTie and LaissezVibrerTieColumn.

`Forbid_line_break_engraver`
  Forbid line breaks when note heads are still playing at some point.

  Properties (read)

  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
`Grob_pq_engraver`
  Administrate when certain grobs (eg. note heads) stop playing

  Properties (read)

  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
  Properties (write)
  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
`Trill_spanner_engraver`
  Create trill spanner from a Music.

  Music types accepted:

  trill-span-event

  This engraver creates the following layout objects: TrillSpanner.

`Text_spanner_engraver`
  Create text spanner from a Music.

  Music types accepted:

  text-span-event

  This engraver creates the following layout objects: TextSpanner.

`Multi_measure_rest_engraver`
  Engraves multi-measure rests that are produced with `R`. Reads measurePosition and currentBarNumber to determine what number to print over the MultiMeasureRest. Reads measureLength to determine if it should use a whole rest or a breve rest to represent 1 measure

  Music types accepted:

  multi-measure-rest-event and multi-measure-text-event

  Properties (read)

  `currentBarNumber` (integer)
    Contains the current barnumber. This property is incremented at every bar line.
  `restNumberThreshold` (number)
    If a multimeasure rest has more measures than this, a number is printed.
  `breakableSeparationItem` (layout object)
    The breakable items in this time step, for this staff.
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  `measurePosition` (moment)
    How much of the current measure have we had. This can be set manually to create incomplete measures.
  `measureLength` (moment)
    Length of one measure in the current time signature.
  This engraver creates the following layout objects: MultiMeasureRest, MultiMeasureRestNumber and MultiMeasureRestText.
`Arpeggio_engraver`
  Generate an Arpeggio symbol

  Music types accepted:

  arpeggio-event

  This engraver creates the following layout objects: Arpeggio.

`Output_property_engraver`
  Apply a procedure to any grob acknowledged.

  Music types accepted:

  layout-instruction

`Pitched_trill_engraver`
  Print the bracketed notehead after a notehead with trill.

  This engraver creates the following layout objects: TrillPitchAccidental, TrillPitchGroup and TrillPitchHead.

`Font_size_engraver`
  Puts fontSize into font-size grob property.

  Properties (read)

  `fontSize` (number)
    The relative size of all grobs in a context.

### Engravers

See Modifying context plug-ins .

#### 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.
`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.

`Accidental_engraver` is part of contexts: GregorianTranscriptionStaff, MensuralStaff, Staff and VaticanaStaff

#### Ambitus_engraver

This engraver creates the following layout objects: Ambitus, AmbitusAccidental, AmbitusLine and AmbitusNoteHead.

`Ambitus_engraver` is part of contexts: none

#### Arpeggio_engraver

Generate an Arpeggio symbol

Music types accepted:

arpeggio-event

This engraver creates the following layout objects: Arpeggio.

`Arpeggio_engraver` is part of contexts: CueVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Auto_beam_engraver

Generate beams based on measure characteristics and observed Stems. Uses beatLength, measureLength and measurePosition to decide when to start and stop a beam. Overriding beaming is done through Stem_engraver properties `stemLeftBeamCount` and `stemRightBeamCount`.

Music types accepted:

beam-forbid-event

Properties (read)

`autoBeaming` (boolean)
  If set to true then beams are generated automatically.
`autoBeamSettings` (list)
  Specifies when automatically generated beams should begin and end. See Setting automatic beam behavior for more information.
`beatLength` (moment)
  The length of one beat in this time signature.
`subdivideBeams` (boolean)
  If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.

This engraver creates the following layout objects: Beam.

`Auto_beam_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Axis_group_engraver

Group all objects created in this context in a VerticalAxisGroup spanner.

Properties (read)

`verticalExtent` (pair of numbers)
  Hard coded vertical extent. The format is a pair of dimensions, for example, this sets the sizes of a staff to 10 (5+5) staff-spaces high.

                \set Staff.verticalExtent = #'(-5.0 . 5.0)

  This does not work for Voice or any other context that doesn't form a vertical group.

`minimumVerticalExtent` (pair of numbers)
  minimum vertical extent, same format as verticalExtent
`extraVerticalExtent` (pair of numbers)
  extra vertical extent, same format as minimumVerticalExtent

This engraver creates the following layout objects: VerticalAxisGroup.

`Axis_group_engraver` is part of contexts: DrumStaff, GregorianTranscriptionStaff, MensuralStaff, NoteNames, RhythmicStaff, Staff, TabStaff and VaticanaStaff

#### 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.

This engraver creates the following layout objects: BarLine.

`Bar_engraver` is part of contexts: DrumStaff, GregorianTranscriptionStaff, MensuralStaff, RhythmicStaff, Staff, TabStaff and VaticanaStaff

#### Bar_number_engraver

A bar number is created whenever measurePosition is zero and when there is a bar line (ie. when `whichBar` is set. It is put on top of all staves, and appears only at left side of the staff. The staves are taken from `stavesFound`, which is maintained by `Staff_collecting_engraver`.

Properties (read)

`currentBarNumber` (integer)
  Contains the current barnumber. This property is incremented at every bar line.
`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.

`stavesFound` (list of grobs)
  list of all staff-symbols found.
`barNumberVisibility` (procedure)
  Procedure that takes an int and returns whether the corresponding bar number should be printed

This engraver creates the following layout objects: BarNumber.

`Bar_number_engraver` is part of contexts: Score

#### Beam_engraver

Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams.

Music types accepted:

beam-event

Properties (read)

`beamMelismaBusy` (boolean)
  Signal if a beam is present.
`beatLength` (moment)
  The length of one beat in this time signature.
`subdivideBeams` (boolean)
  If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.

This engraver creates the following layout objects: Beam.

`Beam_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Beam_performer

Music types accepted:

beam-event

`Beam_performer` is part of contexts: none

#### Break_align_engraver

Align grobs with corresponding `break-align-symbols` into groups, and order the groups according to `breakAlignOrder`. The left edge of the alignment gets a separate group, with a symbol `left-edge`.

This engraver creates the following layout objects: BreakAlignGroup, BreakAlignment and LeftEdge.

`Break_align_engraver` is part of contexts: Score

#### Breathing_sign_engraver

Music types accepted:

breathing-event

This engraver creates the following layout objects: BreathingSign.

`Breathing_sign_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Chord_name_engraver

Catch note-events and generate the appropriate chordname.

Music types accepted:

note-event

Properties (read)

`chordChanges` (boolean)
  Only show changes in chords scheme?
`chordNameExceptions` (list)
  An alist of chord exceptions. Contains (chord . markup) entries.
`chordNameFunction` (procedure)
  The function that converts lists of pitches to chord names.
`chordNoteNamer` (procedure)
  Function that converts from a pitch object to a text markup. Used for single pitches.
`chordRootNamer` (procedure)
  Function that converts from a pitch object to a text markup. Used for chords.
`chordNameExceptions` (list)
  An alist of chord exceptions. Contains (chord . markup) entries.
`majorSevenSymbol` (markup)
  How should the major 7th be formatted in a chord name?

This engraver creates the following layout objects: ChordName.

`Chord_name_engraver` is part of contexts: ChordNames

#### Chord_tremolo_engraver

Generates beams for tremolo repeats.

Music types accepted:

repeated-music

This engraver creates the following layout objects: Beam.

`Chord_tremolo_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Clef_engraver

Determine and set reference point for pitches

Properties (read)

`clefPosition` (number)
  Where should the center of the clef symbol go, measured in half staff spaces from the center of the staff.
`clefGlyph` (string)
  Name of the symbol within the music font.
`middleCPosition` (number)
  Place of the middle C, measured in half staff-spaces. Usually determined by looking at `clefPosition` and `clefGlyph`.
`clefOctavation` (integer)
  Add this much extra octavation. Values of 7 and -7 are common.
`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.

This engraver creates the following layout objects: Clef and OctavateEight.

`Clef_engraver` is part of contexts: DrumStaff, GregorianTranscriptionStaff, MensuralStaff, Staff, TabStaff and VaticanaStaff

#### Cluster_spanner_engraver

Engraves a cluster using Spanner notation

Music types accepted:

cluster-note-event and busy-playing-event

This engraver creates the following layout objects: ClusterSpanner and ClusterSpannerBeacon.

`Cluster_spanner_engraver` is part of contexts: CueVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### 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.

`Collision_engraver` is part of contexts: DrumStaff, GregorianTranscriptionStaff, MensuralStaff, Staff, TabStaff and VaticanaStaff

#### Completion_heads_engraver

This engraver replaces `Note_heads_engraver`. It plays some trickery to break long notes and automatically tie them into the next measure.

Music types accepted:

busy-playing-event and note-event

Properties (read)

`middleCPosition` (number)
  Place of the middle C, measured in half staff-spaces. Usually determined by looking at `clefPosition` and `clefGlyph`.
`measurePosition` (moment)
  How much of the current measure have we had. This can be set manually to create incomplete measures.
`measureLength` (moment)
  Length of one measure in the current time signature.

This engraver creates the following layout objects: Dots, NoteHead and Tie.

`Completion_heads_engraver` is part of contexts: none

#### Custos_engraver

This engraver creates the following layout objects: Custos.

`Custos_engraver` is part of contexts: MensuralStaff and VaticanaStaff

#### Default_bar_line_engraver

This engraver determines what kind of automatic bar lines should be produced, and sets `whichBar` accordingly. It should be at the same level as Timing_translator.

Properties (read)

`automaticBars` (boolean)
  If set to true then bar lines will not be printed automatically; they must be explicitly created with `\bar` command. Unlike the `\cadenza` keyword, measures are still counted. Bar generation will resume according to that count if this property is unset.
`barAlways` (boolean)
  If set to true a bar line is drawn after each note.
`defaultBarType` (string)
  Sets the default type of bar line. See `whichBar` for information on available bar types.

  This variable is read by Timing_translator at Score level.

`measureLength` (moment)
  Length of one measure in the current time signature.
`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.

`measurePosition` (moment)
  How much of the current measure have we had. This can be set manually to create incomplete measures.

Properties (write)

`automaticBars` (boolean)
  If set to true then bar lines will not be printed automatically; they must be explicitly created with `\bar` command. Unlike the `\cadenza` keyword, measures are still counted. Bar generation will resume according to that count if this property is unset.

`Default_bar_line_engraver` is part of contexts: Score

#### 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.

`Dot_column_engraver` is part of contexts: DrumStaff, GregorianTranscriptionStaff, MensuralStaff, RhythmicStaff, Staff, TabStaff and VaticanaStaff

#### Drum_note_performer

Play drum notes.

Music types accepted:

note-event and busy-playing-event

`Drum_note_performer` is part of contexts: none

#### Drum_notes_engraver

Generate noteheads.

Music types accepted:

note-event and busy-playing-event

Properties (read)

`drumStyleTable` (hash table)
  A hash table containing mapping drums to layout settings. Predefined values: ``drums-style`', ``timbales-style`', ``congas-style`', ``bongos-style`' and ``percussion-style`'.

  The layout style is a hash table, containing the drum-pitches (e.g. the symbol ``hihat`') as key, and a list (notehead-style script vertical-position) as values.

This engraver creates the following layout objects: Dots, NoteHead and Script.

`Drum_notes_engraver` is part of contexts: DrumVoice

#### Dynamic_engraver

This engraver creates hairpins, dynamic texts, and their vertical alignments. The symbols are collected onto a DynamicLineSpanner grob which takes care of vertical positioning.

Music types accepted:

absolute-dynamic-event, crescendo-event and decrescendo-event

This engraver creates the following layout objects: DynamicLineSpanner, DynamicText, Hairpin and TextSpanner.

`Dynamic_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Dynamic_performer

Music types accepted:

absolute-dynamic-event

Properties (read)

`dynamicAbsoluteVolumeFunction` (procedure)
  [DOCUMENT-ME]
`midiMaximumVolume` (number)
  Analogous to `midiMinimumVolume`.
`midiMinimumVolume` (number)
  Sets the minimum loudness for MIDI. Ranges from 0 to 1.
`midiInstrument` (string)
  Name of the MIDI instrument to use
`instrumentEqualizer` (procedure)
  Function taking a string (instrument name), and returning a (min . max) pair of numbers for the loudness range of the instrument.

`Dynamic_performer` is part of contexts: none

#### Engraver

Base class for engravers. Does nothing, so it is not used.

`Engraver` is part of contexts: none

#### Extender_engraver

Create lyric extenders

Music types accepted:

extender-event

This engraver creates the following layout objects: LyricExtender.

`Extender_engraver` is part of contexts: Lyrics

#### 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.
`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

This engraver creates the following layout objects: BassFigure, BassFigureAlignment, BassFigureBracket, BassFigureContinuation and BassFigureLine.

`Figured_bass_engraver` is part of contexts: FiguredBass

#### Fingering_engraver

Create fingering-scripts

Music types accepted:

fingering-event

This engraver creates the following layout objects: Fingering.

`Fingering_engraver` is part of contexts: CueVoice, GregorianTranscriptionVoice, MensuralVoice, VaticanaVoice and Voice

#### Font_size_engraver

Puts fontSize into font-size grob property.

Properties (read)

`fontSize` (number)
  The relative size of all grobs in a context.

`Font_size_engraver` is part of contexts: CueVoice, DrumStaff, DrumVoice, GregorianTranscriptionStaff, GregorianTranscriptionVoice, Lyrics, MensuralStaff, MensuralVoice, RhythmicStaff, Staff, TabStaff, TabVoice, VaticanaStaff, VaticanaVoice and Voice

#### Forbid_line_break_engraver

Forbid line breaks when note heads are still playing at some point.

Properties (read)

`busyGrobs` (list)
  a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)

`Forbid_line_break_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Glissando_engraver

Engrave a glissandi

Music types accepted:

glissando-event

Properties (read)

`followVoice` (boolean)
  If set, note heads are tracked across staff switches by a thin line

This engraver creates the following layout objects: Glissando.

`Glissando_engraver` is part of contexts: CueVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Grace_beam_engraver

Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams. Only engraves beams when we are at grace points in time.

Music types accepted:

beam-event

Properties (read)

`beamMelismaBusy` (boolean)
  Signal if a beam is present.
`beatLength` (moment)
  The length of one beat in this time signature.
`allowBeamBreak` (boolean)
  If true allow line breaks for beams over bar lines.
`subdivideBeams` (boolean)
  If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.

This engraver creates the following layout objects: Beam.

`Grace_beam_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Grace_engraver

Set font size and other properties for grace notes.

Properties (read)

`graceSettings` (list)
  Overrides for grace notes. This property should be manipulated through the `add-grace-property` function.

`Grace_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Grid_line_span_engraver

This engraver makes cross-staff linelines: It catches all normal line lines, and draws a single span-line across them.

This engraver creates the following layout objects: GridLine.

`Grid_line_span_engraver` is part of contexts: none

#### Grid_point_engraver

generate grid points.

Properties (read)

`gridInterval` (moment)
  Interval for which to generate GridPoints

This engraver creates the following layout objects: GridPoint.

`Grid_point_engraver` is part of contexts: none

#### Grob_pq_engraver

Administrate when certain grobs (eg. note heads) stop playing

Properties (read)

`busyGrobs` (list)
  a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)

Properties (write)

`busyGrobs` (list)
  a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)

`Grob_pq_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Hara_kiri_engraver

Like Axis_group_engraver, but make a hara-kiri spanner, and add interesting items (ie. note heads, lyric syllables and normal rests)

Properties (read)

`keepAliveInterfaces` (list)
  List of symbols, signifying grob interfaces that are worth keeping an staff with `remove-empty` set around for.

This engraver creates the following layout objects: VerticalAxisGroup.

`Hara_kiri_engraver` is part of contexts: ChordNames, FiguredBass and Lyrics

#### Horizontal_bracket_engraver

Create horizontal brackets over notes for musical analysis purposes.

Music types accepted:

note-grouping-event

This engraver creates the following layout objects: HorizontalBracket.

`Horizontal_bracket_engraver` is part of contexts: none

#### Hyphen_engraver

Create lyric hyphens and distance constraints between words.

Music types accepted:

hyphen-event

This engraver creates the following layout objects: LyricHyphen and LyricSpace.

`Hyphen_engraver` is part of contexts: Lyrics

#### Instrument_name_engraver

Creates a system start text for instrument or vocal names.

Properties (read)

`vocNam` (markup)
  Name of a vocal line, short version.
`vocalName` (markup)
  Name of a vocal line.
`instrument` (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.
`instr` (markup)
  See `instrument`
`currentCommandColumn` (layout object)
  Grob that is X-parent to all current breakable (clef, key signature, etc.) items.

This engraver creates the following layout objects: InstrumentName.

`Instrument_name_engraver` is part of contexts: DrumStaff, GregorianTranscriptionStaff, Lyrics, MensuralStaff, PianoStaff, RhythmicStaff, Staff, TabStaff and VaticanaStaff

#### 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.
`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.

`Key_engraver` is part of contexts: GregorianTranscriptionStaff, MensuralStaff, Staff and VaticanaStaff

#### Key_performer

Music types accepted:

key-change-event

`Key_performer` is part of contexts: none

#### Laissez_vibrer_engraver

Create Laissez vibrer items.

Music types accepted:

laissez-vibrer-event

This engraver creates the following layout objects: LaissezVibrerTie and LaissezVibrerTieColumn.

`Laissez_vibrer_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### 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.

`Ledger_line_engraver` is part of contexts: DrumStaff, GregorianTranscriptionStaff, MensuralStaff, RhythmicStaff, Staff, TabStaff and VaticanaStaff

#### Ligature_bracket_engraver

Handles Ligature_events by engraving Ligature brackets.

Music types accepted:

ligature-event

This engraver creates the following layout objects: TupletBracket.

`Ligature_bracket_engraver` is part of contexts: CueVoice, GregorianTranscriptionVoice, TabVoice and Voice

#### Lyric_engraver

Music types accepted:

lyric-event

This engraver creates the following layout objects: LyricText.

`Lyric_engraver` is part of contexts: Lyrics

#### Lyric_performer

Music types accepted:

lyric-event

`Lyric_performer` is part of contexts: none

#### Mark_engraver

This engraver will create RehearsalMark objects. It puts them on top of all staves (which is taken from the property `stavesFound`). If moving this engraver to a different context, Staff_collecting_engraver must move along, otherwise all marksend up on the same Y-location

Music types accepted:

mark-event

Properties (read)

`markFormatter` (procedure)
  Procedure taking as arguments context and rehearsal mark. It should return the formatted mark as a markup object.
`rehearsalMark` (integer)
  The last rehearsal mark printed.
`stavesFound` (list of grobs)
  list of all staff-symbols found.

This engraver creates the following layout objects: RehearsalMark.

`Mark_engraver` is part of contexts: Score

#### Measure_grouping_engraver

Creates MeasureGrouping to indicate beat subdivision.

Properties (read)

`beatGrouping` (list)
  List of beatgroups, e.g., in 5/8 time `'(2 3)`.
`beatLength` (moment)
  The length of one beat in this time signature.
`measurePosition` (moment)
  How much of the current measure have we had. This can be set manually to create incomplete measures.
`currentMusicalColumn` (layout object)
  Grob that is X-parent to all non-breakable items (note heads, lyrics, etc.).

This engraver creates the following layout objects: MeasureGrouping.

`Measure_grouping_engraver` is part of contexts: none

#### Melisma_translator

This translator collects melisma information about ties, beams, and user settings (`melismaBusy`, and signals it to the `ddlyrics` code.

Music types accepted:

melisma-playing-event and melisma-span-event

Properties (read)

`melismaBusy` (boolean)
  Signifies whether a melisma is active. This can be used to signal melismas on top of those automatically detected.
`melismaBusyProperties` (list)
  List of properties (symbols) to determine whether a melisma is playing. Setting this property will influence how lyrics are aligned to notes. For example, if set to `#'(melismaBusy beamMelismaBusy)`, only manual melismata and manual beams are considered. Possible values include `melismaBusy`, `slurMelismaBusy`, `tieMelismaBusy`, and `beamMelismaBusy`
`slurMelismaBusy` (boolean)
  Signal if a slur is present.
`tieMelismaBusy` (boolean)
  Signal whether a tie is present.
`beamMelismaBusy` (boolean)
  Signal if a beam is present.

`Melisma_translator` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Melody_engraver

Create information for context dependent typesetting decisions.

This engraver creates the following layout objects: MelodyItem.

`Melody_engraver` is part of contexts: none

#### Mensural_ligature_engraver

Handles Mensural_ligature_events by glueing special ligature heads together.

Music types accepted:

ligature-event

This engraver creates the following layout objects: MensuralLigature.

`Mensural_ligature_engraver` is part of contexts: MensuralVoice

#### Metronome_mark_engraver

Engrave metro nome marking. This delegates the formatting work to the function in the metronomeMarkFormatter property. The mark is put over all staves. The staves are taken from the `stavesFound` property, which is maintained by `Staff_collecting_engraver`.

Music types accepted:

metronome-change-event

Properties (read)

`stavesFound` (list of grobs)
  list of all staff-symbols found.
`metronomeMarkFormatter` (procedure)
  How to produce a metronome markup. Called with 2 arguments, event and context.

This engraver creates the following layout objects: MetronomeMark.

`Metronome_mark_engraver` is part of contexts: Score

#### Multi_measure_rest_engraver

Engraves multi-measure rests that are produced with `R`. Reads measurePosition and currentBarNumber to determine what number to print over the MultiMeasureRest. Reads measureLength to determine if it should use a whole rest or a breve rest to represent 1 measure

Music types accepted:

multi-measure-rest-event and multi-measure-text-event

Properties (read)

`currentBarNumber` (integer)
  Contains the current barnumber. This property is incremented at every bar line.
`restNumberThreshold` (number)
  If a multimeasure rest has more measures than this, a number is printed.
`breakableSeparationItem` (layout object)
  The breakable items in this time step, for this staff.
`currentCommandColumn` (layout object)
  Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
`measurePosition` (moment)
  How much of the current measure have we had. This can be set manually to create incomplete measures.
`measureLength` (moment)
  Length of one measure in the current time signature.

This engraver creates the following layout objects: MultiMeasureRest, MultiMeasureRestNumber and MultiMeasureRestText.

`Multi_measure_rest_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### New_fingering_engraver

Create fingering-scripts for notes in a new chord. This engraver is ill-named, since it also takes care of articulations and harmonic note heads

Properties (read)

`fingeringOrientations` (list)
  List of symbols, containing ``left`', ``right`', ``up`' and/or ``down`'. This list determines where fingerings are put relative to the chord being fingered.

This engraver creates the following layout objects: Fingering.

`New_fingering_engraver` is part of contexts: CueVoice, GregorianTranscriptionVoice, MensuralVoice, VaticanaVoice and Voice

#### Note_head_line_engraver

Engrave a line between two note heads, for example a glissando. If followVoice is set, staff switches also generate a line.

Music types accepted:

glissando-event

Properties (read)

`followVoice` (boolean)
  If set, note heads are tracked across staff switches by a thin line

This engraver creates the following layout objects: Glissando and VoiceFollower.

`Note_head_line_engraver` is part of contexts: CueVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Note_heads_engraver

Generate noteheads.

Music types accepted:

note-event and busy-playing-event

Properties (read)

`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: Dots and NoteHead.

`Note_heads_engraver` is part of contexts: CueVoice, GregorianTranscriptionVoice, MensuralVoice, VaticanaVoice and Voice

#### Note_name_engraver

Music types accepted:

note-event

Properties (read)

`printOctaveNames` (boolean)
  Print octave marks for the NoteNames context.

This engraver creates the following layout objects: NoteName.

`Note_name_engraver` is part of contexts: NoteNames

#### Note_performer

Music types accepted:

note-event and busy-playing-event

`Note_performer` is part of contexts: none

#### Note_swallow_translator

Swallow notes

Music types accepted:

note-event

`Note_swallow_translator` is part of contexts: FiguredBass

#### 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.

This engraver creates the following layout objects: OttavaBracket.

`Ottava_spanner_engraver` is part of contexts: GregorianTranscriptionStaff, MensuralStaff, Staff, TabStaff and VaticanaStaff

#### Output_property_engraver

Apply a procedure to any grob acknowledged.

Music types accepted:

layout-instruction

`Output_property_engraver` is part of contexts: ChordNames, CueVoice, DrumStaff, DrumVoice, GregorianTranscriptionStaff, GregorianTranscriptionVoice, InnerStaffGroup, MensuralStaff, MensuralVoice, RhythmicStaff, Score, Staff, StaffGroup, TabStaff, TabVoice, VaticanaStaff, VaticanaVoice and Voice

#### Paper_column_engraver

Takes care of generating columns.

This engraver decides whether a column is breakable. The default is that a column is always breakable. However, when every Bar_engraver that does not have a barline at a certain point will call Score_engraver::forbid_breaks to stop linebreaks. In practice, this means that you can make a breakpoint by creating a barline (assuming that there are no beams or notes that prevent a breakpoint.)

Music types accepted:

break-event

Properties (write)

`currentCommandColumn` (layout object)
  Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
`currentMusicalColumn` (layout object)
  Grob that is X-parent to all non-breakable items (note heads, lyrics, etc.).

This engraver creates the following layout objects: NonMusicalPaperColumn and PaperColumn.

`Paper_column_engraver` is part of contexts: Score

#### Parenthesis_engraver

Parenthesize objects whose music cause has the `parenthesize` property.

This engraver creates the following layout objects: ParenthesesItem.

`Parenthesis_engraver` is part of contexts: Score

#### Part_combine_engraver

Part combine engraver for orchestral scores: Print markings a2, Solo, Solo II, and unisono

Music types accepted:

part-combine-event

Properties (read)

`printPartCombineTexts` (boolean)
  set Solo/A due texts in the part combiner?
`soloText` (string)
  text for begin of solo when part-combining.
`soloIIText` (string)
  text for begin of solo for voice “two” when part-combining.
`aDueText` (string)
  Text to print at a unisono passage.

This engraver creates the following layout objects: CombineTextScript.

`Part_combine_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Percent_repeat_engraver

Make whole bar and double bar repeats.

Music types accepted:

repeated-music

Properties (read)

`measureLength` (moment)
  Length of one measure in the current time signature.
`currentCommandColumn` (layout object)
  Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
`countPercentRepeats` (boolean)
  If set, produce counters for percent repeats.

This engraver creates the following layout objects: DoublePercentRepeat, DoublePercentRepeatCounter, PercentRepeat and PercentRepeatCounter.

`Percent_repeat_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Phrasing_slur_engraver

Print phrasing slurs. Similar to Slur_engraver

Music types accepted:

phrasing-slur-event

This engraver creates the following layout objects: PhrasingSlur.

`Phrasing_slur_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Piano_pedal_engraver

Engrave piano pedal symbols and brackets.

Music types accepted:

pedal-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: SostenutoPedal, SostenutoPedalLineSpanner, SustainPedal, SustainPedalLineSpanner, UnaCordaPedal and UnaCordaPedalLineSpanner.

`Piano_pedal_engraver` is part of contexts: GregorianTranscriptionStaff, MensuralStaff, Staff, TabStaff and VaticanaStaff

#### Piano_pedal_performer

Music types accepted:

pedal-event

`Piano_pedal_performer` is part of contexts: none

#### Pitch_squash_engraver

Set the vertical position of noteheads to `squashedPosition`, if that property is set. This can be used to make a single line staff demonstrating the rhythm of a melody.

Properties (read)

`squashedPosition` (integer)
  Vertical position of squashing for Pitch_squash_engraver.

`Pitch_squash_engraver` is part of contexts: RhythmicStaff

#### Pitched_trill_engraver

Print the bracketed notehead after a notehead with trill.

This engraver creates the following layout objects: TrillPitchAccidental, TrillPitchGroup and TrillPitchHead.

`Pitched_trill_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Repeat_acknowledge_engraver

Acknowledge repeated music, and convert the contents of repeatCommands ainto an appropriate setting for whichBar.

Properties (read)

`repeatCommands` (list)
  This property is read to find any command of the form `(volta .` x`)`, where x is a string or `#f`
`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.

`Repeat_acknowledge_engraver` is part of contexts: Score

#### Repeat_tie_engraver

Create Laissez vibrer items.

Music types accepted:

repeat-tie-event

This engraver creates the following layout objects: RepeatTie and RepeatTieColumn.

`Repeat_tie_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Rest_collision_engraver

Handles collisions of rests.

This engraver creates the following layout objects: RestCollision.

`Rest_collision_engraver` is part of contexts: DrumStaff, GregorianTranscriptionStaff, MensuralStaff, Staff, TabStaff and VaticanaStaff

#### Rest_engraver

Music types accepted:

rest-event

Properties (read)

`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: Dots and Rest.

`Rest_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Rest_swallow_translator

Swallow rest

Music types accepted:

rest-event

`Rest_swallow_translator` is part of contexts: ChordNames and NoteNames

#### Rhythmic_column_engraver

Generates NoteColumn, an objects that groups stems, noteheads and rests.

This engraver creates the following layout objects: NoteColumn and NoteSpacing.

`Rhythmic_column_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Script_column_engraver

This engraver creates the following layout objects: ScriptColumn.

`Script_column_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Script_engraver

Handles note scripted articulations.

Music types accepted:

script-event and articulation-event

Properties (read)

`scriptDefinitions` (list)
  Description of scripts. This is used by Script_engraver for typesetting note-super/subscripts. See `scm/script.scm` for more information

This engraver creates the following layout objects: Script.

`Script_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### 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.

`Separating_line_group_engraver` is part of contexts: ChordNames, DrumStaff, FiguredBass, GregorianTranscriptionStaff, MensuralStaff, NoteNames, RhythmicStaff, Staff, TabStaff and VaticanaStaff

#### Skip_event_swallow_translator

Swallow \skip.

Music types accepted:

skip-event

`Skip_event_swallow_translator` is part of contexts: ChordNames, CueVoice, DrumVoice, FiguredBass, GregorianTranscriptionVoice, Lyrics, MensuralVoice, NoteNames, TabVoice, VaticanaVoice and Voice

#### Slash_repeat_engraver

Make beat repeats.

Music types accepted:

repeated-music

Properties (read)

`measureLength` (moment)
  Length of one measure in the current time signature.

This engraver creates the following layout objects: RepeatSlash.

`Slash_repeat_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Slur_engraver

Build slur grobs from slur events

Music types accepted:

slur-event

Properties (read)

`slurMelismaBusy` (boolean)
  Signal if a slur is present.
`doubleSlurs` (boolean)
  When set, two slurs are created for every slurred note, one above and one below the chord.

This engraver creates the following layout objects: Slur.

`Slur_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, TabVoice and Voice

#### Slur_performer

Music types accepted:

slur-event

`Slur_performer` is part of contexts: none

#### Spacing_engraver

make a SpacingSpanner and do bookkeeping of shortest starting and playing notes

Properties (read)

`currentMusicalColumn` (layout object)
  Grob that is X-parent to all non-breakable items (note heads, lyrics, etc.).
`currentCommandColumn` (layout object)
  Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
`proportionalNotationDuration` (moment)
  Global override for shortest-playing duration. This is used for switching on proportional notation.

This engraver creates the following layout objects: SpacingSpanner.

`Spacing_engraver` is part of contexts: Score

#### Span_arpeggio_engraver

Properties (read)

`connectArpeggios` (boolean)
  If set, connect arpeggios across piano staff.

This engraver creates the following layout objects: Arpeggio.

`Span_arpeggio_engraver` is part of contexts: GrandStaff, InnerStaffGroup, PianoStaff and StaffGroup

#### Span_bar_engraver

This engraver makes cross-staff barlines: It catches all normal bar lines, and draws a single span-bar across them.

This engraver creates the following layout objects: SpanBar.

`Span_bar_engraver` is part of contexts: GrandStaff, InnerStaffGroup, PianoStaff and StaffGroup

#### Span_dynamic_performer

Music types accepted:

crescendo-event and decrescendo-event

`Span_dynamic_performer` is part of contexts: none

#### Staff_collecting_engraver

Maintain the stavesFound variable

Properties (read)

`stavesFound` (list of grobs)
  list of all staff-symbols found.

Properties (write)

`stavesFound` (list of grobs)
  list of all staff-symbols found.

`Staff_collecting_engraver` is part of contexts: Score

#### Staff_performer

`Staff_performer` is part of contexts: none

#### 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.

`Staff_symbol_engraver` is part of contexts: DrumStaff, GregorianTranscriptionStaff, MensuralStaff, RhythmicStaff, Staff and VaticanaStaff

#### Stanza_number_align_engraver

This engraver ensures that stanza numbers are neatly aligned.

`Stanza_number_align_engraver` is part of contexts: Score

#### Stanza_number_engraver

Properties (read)

`stanza` (markup)
  Stanza `number' to print before the start of a verse. Use in Lyrics context.

This engraver creates the following layout objects: StanzaNumber.

`Stanza_number_engraver` is part of contexts: Lyrics

#### Stem_engraver

Create stems and single-stem tremolos. It also works together with the beam engraver for overriding beaming.

Music types accepted:

tremolo-event

Properties (read)

`tremoloFlags` (integer)
  Number of tremolo flags to add if no number is specified.
`stemLeftBeamCount` (integer)
  Specify the number of beams to draw on the left side of the next note. Overrides automatic beaming. The value is only used once, and then it is erased.
`stemRightBeamCount` (integer)
  See `stemLeftBeamCount`.

This engraver creates the following layout objects: Stem and StemTremolo.

`Stem_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice and Voice

#### 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.

Music types accepted:

string-number-event

`String_number_engraver` is part of contexts: GregorianTranscriptionStaff, MensuralStaff, Staff and VaticanaStaff

#### Swallow_engraver

This engraver swallows everything given to it silently. The purpose of this is to prevent spurious "event junked" warnings.

Music types accepted:

general-music

`Swallow_engraver` is part of contexts: Devnull

#### Swallow_performer

Music types accepted:

general-music

`Swallow_performer` is part of contexts: none

#### System_start_delimiter_engraver

Creates a system start delimiter (ie. SystemStart{Bar, Brace, Bracket} spanner

Properties (read)

`systemStartDelimiter` (symbol)
  Which grob to make for the start of the system/staff? Set to `SystemStartBrace`, `SystemStartBracket` or `SystemStartBar`.
`systemStartDelimiterHierarchy` (pair)
  A nested list, indicating the nesting of a start delimiters.
`currentCommandColumn` (layout object)
  Grob that is X-parent to all current breakable (clef, key signature, etc.) items.

This engraver creates the following layout objects: SystemStartBar, SystemStartBrace, SystemStartBracket and SystemStartSquare.

`System_start_delimiter_engraver` is part of contexts: ChoirStaff, GrandStaff, InnerChoirStaff, InnerStaffGroup, PianoStaff, Score and StaffGroup

#### Tab_note_heads_engraver

Generate one or more tablature noteheads from Music of type NoteEvent.

Music types accepted:

note-event, string-number-event and busy-playing-event

Properties (read)

`middleCPosition` (number)
  Place of the middle C, measured in half staff-spaces. Usually determined by looking at `clefPosition` and `clefGlyph`.
`stringTunings` (list)
  The tablature strings tuning. It is a list of the pitch (in semitones) of each string (starting with the lower one).
`minimumFret` (number)
  The tablature auto string-selecting mechanism selects the highest string with a fret at least `minimumFret`
`tablatureFormat` (procedure)
  Function formatting a tab note head; it takes a string number, a list of string tunings and Pitch object. It returns the text as a string.
`highStringOne` (boolean)
  Whether the 1st string is the string with highest pitch on the instrument. This used by the automatic string selector for tab notation.
`stringOneTopmost` (boolean)
  Whether the 1st string is printed on the top line of the tablature.

This engraver creates the following layout objects: Dots and TabNoteHead.

`Tab_note_heads_engraver` is part of contexts: TabVoice

#### Tab_staff_symbol_engraver

Create a staff-symbol, but look at stringTunings for the number of lines.staff lines.

Music types accepted:

staff-span-event

Properties (read)

`stringTunings` (list)
  The tablature strings tuning. It is a list of the pitch (in semitones) of each string (starting with the lower one).

This engraver creates the following layout objects: StaffSymbol.

`Tab_staff_symbol_engraver` is part of contexts: TabStaff

#### Tempo_performer

Music types accepted:

metronome-change-event

`Tempo_performer` is part of contexts: none

#### Text_engraver

Create text-scripts

Music types accepted:

text-script-event

This engraver creates the following layout objects: TextScript.

`Text_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Text_spanner_engraver

Create text spanner from a Music.

Music types accepted:

text-span-event

This engraver creates the following layout objects: TextSpanner.

`Text_spanner_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Tie_engraver

Generate ties between noteheads of equal pitch.

Music types accepted:

tie-event

Properties (read)

`tieWaitForNote` (boolean)
  If true, tied notes do not have to follow each other directly. This can be used for writing out arpeggios

Properties (write)

`tieMelismaBusy` (boolean)
  Signal whether a tie is present.

This engraver creates the following layout objects: Tie and TieColumn.

`Tie_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, NoteNames, TabVoice, VaticanaVoice and Voice

#### Tie_performer

Generate ties between noteheads of equal pitch.

Music types accepted:

tie-event

Properties (read)

`tieMelismaBusy` (boolean)
  Signal whether a tie is present.

`Tie_performer` is part of contexts: none

#### Time_signature_engraver

Create a TimeSignature whenever `timeSignatureFraction` changes

This engraver creates the following layout objects: TimeSignature.

`Time_signature_engraver` is part of contexts: DrumStaff, GregorianTranscriptionStaff, MensuralStaff, RhythmicStaff, Staff and TabStaff

#### Time_signature_performer

`Time_signature_performer` is part of contexts: none

#### Timing_translator

This engraver adds the alias `Timing` to its containing context.Responsible for synchronizing timing information from staves. Normally in `Score`. In order to create polyrhythmic music, this engraver should be removed from `Score` and placed in `Staff`.

This engraver adds the alias `Timing` to its containing context.

`Timing_translator` is part of contexts: Score

#### Translator

Base class. Unused

`Translator` is part of contexts: none

#### Trill_spanner_engraver

Create trill spanner from a Music.

Music types accepted:

trill-span-event

This engraver creates the following layout objects: TrillSpanner.

`Trill_spanner_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Tuplet_engraver

Catch Time_scaled_music and generate appropriate bracket

Music types accepted:

time-scaled-music

Properties (read)

`tupletNumberFormatFunction` (procedure)
  Function taking a music as input, producing a string. This function is called to determine the text to print on a tuplet bracket.
`tupletSpannerDuration` (moment)
  Normally a tuplet bracket is as wide as the `\times` expression that gave rise to it. By setting this property, you can make brackets last shorter. Example

                {
                \set tupletSpannerDuration = #(ly:make-moment 1 4)
                \times 2/3 { c8 c c c c c }
                }

  .

`tupletFullLength` (boolean)
  If set, the tuplet is printed upto the start of the next note.

This engraver creates the following layout objects: TupletBracket and TupletNumber.

`Tuplet_engraver` is part of contexts: CueVoice, DrumVoice, GregorianTranscriptionVoice, MensuralVoice, TabVoice, VaticanaVoice and Voice

#### Tweak_engraver

Read the `tweaks` property from the originating Music event, and set properties.

`Tweak_engraver` is part of contexts: Score

#### Vaticana_ligature_engraver

Handles ligatures by glueing special ligature heads together.

Music types accepted:

ligature-event

This engraver creates the following layout objects: VaticanaLigature.

`Vaticana_ligature_engraver` is part of contexts: VaticanaVoice

#### Vertical_align_engraver

Catch groups (staffs, lyrics lines, etc.) and stack them vertically.

Properties (read)

`alignAboveContext` (string)
  Where to insert newly created context in vertiical alignment.
`alignBelowContext` (string)
  Where to insert newly created context in vertiical alignment.

This engraver creates the following layout objects: VerticalAlignment.

`Vertical_align_engraver` is part of contexts: PianoStaff and Score

#### Vertically_spaced_contexts_engraver

Properties (read)

`verticallySpacedContexts` (list)
  List of symbols, containing context names whose vertical axis groups should be taken into account for vertical spacing of systems.

Properties (write)

`verticallySpacedContexts` (list)
  List of symbols, containing context names whose vertical axis groups should be taken into account for vertical spacing of systems.

`Vertically_spaced_contexts_engraver` is part of contexts: Score

#### 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.

`Volta_engraver` is part of contexts: ChordNames, DrumStaff, GregorianTranscriptionStaff, MensuralStaff, RhythmicStaff, Staff, TabStaff and VaticanaStaff

### Tunable context properties

`aDueText` (string)
  Text to print at a unisono passage.
`alignAboveContext` (string)
  Where to insert newly created context in vertiical alignment.
`alignBassFigureAccidentals` (boolean)
  If true, then the accidentals are aligned in bass figure context.
`alignBelowContext` (string)
  Where to insert newly created context in vertiical alignment.
`allowBeamBreak` (boolean)
  If true allow line breaks for beams over bar lines.
`associatedVoice` (string)
  Name of the `Voice` that has the melody for this `Lyrics` line.
`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.
`autoBeamCheck` (procedure)
  Procedure taking three arguments, CONTEXT, DIR start/stop (-1 or 1) and TEST shortest note in the beam. A non-#f return value starts or stops the auto beam.
`autoBeamSettings` (list)
  Specifies when automatically generated beams should begin and end. See Setting automatic beam behavior for more information.
`autoBeaming` (boolean)
  If set to true then beams are generated automatically.
`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.
`automaticBars` (boolean)
  If set to true then bar lines will not be printed automatically; they must be explicitly created with `\bar` command. Unlike the `\cadenza` keyword, measures are still counted. Bar generation will resume according to that count if this property is unset.
`barAlways` (boolean)
  If set to true a bar line is drawn after each note.
`barCheckSynchronize` (boolean)
  If true then reset `measurePosition` when finding a barcheck.
`barNumberVisibility` (procedure)
  Procedure that takes an int and returns whether the corresponding bar number should be printed
`bassFigureFormatFunction` (procedure)
  Procedure that is called to produce the formatting for a `BassFigure` grob. It takes a list of `BassFigureEvent`s, a context, and the grob to format.
`bassStaffProperties` (list)
  Alist of property settings to apply for the down staff of PianoStaff. Used by `\autochange`
`beatGrouping` (list)
  List of beatgroups, e.g., in 5/8 time `'(2 3)`.
`beatLength` (moment)
  The length of one beat in this time signature.
`chordChanges` (boolean)
  Only show changes in chords scheme?
`chordNameExceptions` (list)
  An alist of chord exceptions. Contains (chord . markup) entries.
`chordNameExceptionsFull` (list)
  An alist of chord exceptions. Contains (chord . markup) entries.
`chordNameExceptionsPartial` (list)
  An alist of partial chord exceptions. Contains (chord . (prefix-markup suffix-markup)) entries.
`chordNameFunction` (procedure)
  The function that converts lists of pitches to chord names.
`chordNameSeparator` (markup)
  The markup object used to separate parts of a chord name.
`chordNoteNamer` (procedure)
  Function that converts from a pitch object to a text markup. Used for single pitches.
`chordPrefixSpacer` (number)
  The space added between the root symbol and the prefix of a chord name
`chordRootNamer` (procedure)
  Function that converts from a pitch object to a text markup. Used for chords.
`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.
`connectArpeggios` (boolean)
  If set, connect arpeggios across piano staff.
`countPercentRepeats` (boolean)
  If set, produce counters for percent repeats.
`createKeyOnClefChange` (boolean)
  Print a key signature whenever the clef is changed.
`createSpacing` (boolean)
  Create `StaffSpacing` objects? Should be set for staves.
`crescendoSpanner` (symbol)
  Type of spanner to be used for crescendi. One of: ``hairpin`', ``line`', ``dashed-line`', ``dotted-line`'. If unset, hairpin type is used.
`crescendoText` (markup)
  Text to print at start of non-hairpin crescendo, i.e.: ``cresc.`'
`currentBarNumber` (integer)
  Contains the current barnumber. This property is incremented at every bar line.
`decrescendoSpanner` (symbol)
  See `crescendoSpanner`.
`decrescendoText` (markup)
  Text to print at start of non-hairpin decrescendo, i.e.: ``dim.`'
`defaultBarType` (string)
  Sets the default type of bar line. See `whichBar` for information on available bar types.

  This variable is read by Timing_translator at Score level.

`doubleSlurs` (boolean)
  When set, two slurs are created for every slurred note, one above and one below the chord.
`drumPitchTable` (hash table)
  A table mapping percussion instruments (symbols) to pitches.
`drumStyleTable` (hash table)
  A hash table containing mapping drums to layout settings. Predefined values: ``drums-style`', ``timbales-style`', ``congas-style`', ``bongos-style`' and ``percussion-style`'.

  The layout style is a hash table, containing the drum-pitches (e.g. the symbol ``hihat`') as key, and a list (notehead-style script vertical-position) as values.

`explicitClefVisibility` (vector)
  ``break-visibility`' function for clef changes.
`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.
`extraVerticalExtent` (pair of numbers)
  extra vertical extent, same format as minimumVerticalExtent
`figuredBassAlterationDirection` (direction)
  Where to put alterations relative to the main figure.
`figuredBassCenterContinuations` (boolean)
  Whether to vertically center pairs of extender lines.
`figuredBassFormatter` (procedure)
  Routine generating a markup for a bass figure.
`figuredBassPlusDirection` (direction)
  Where to put plus signs relative to the the main figure.
`fingeringOrientations` (list)
  List of symbols, containing ``left`', ``right`', ``up`' and/or ``down`'. This list determines where fingerings are put relative to the chord being fingered.
`firstClef` (boolean)
  If true, create a new clef when starting a staff.
`followVoice` (boolean)
  If set, note heads are tracked across staff switches by a thin line
`fontSize` (number)
  The relative size of all grobs in a context.
`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.
`gridInterval` (moment)
  Interval for which to generate GridPoints
`harmonicAccidentals` (boolean)
  If set, harmonic notes in chords get accidentals.
`highStringOne` (boolean)
  Whether the 1st string is the string with highest pitch on the instrument. This used by the automatic string selector for tab notation.
`ignoreBarChecks` (boolean)
  Ignore bar checks
`ignoreMelismata` (boolean)
  Ignore melismata for this Lyrics line.
`implicitBassFigures` (list)
  List of bass figures that are not printed as numbers, but only as extender lines.
`instr` (markup)
  See `instrument`
`instrument` (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.
`instrumentEqualizer` (procedure)
  Function taking a string (instrument name), and returning a (min . max) pair of numbers for the loudness range of the instrument.
`instrumentTransposition` (pitch)
  Defines the transposition of the instrument. Its value is the pitch that sounds like middle C. This is used to transpose the MIDI output, and `\quote`s.
`keepAliveInterfaces` (list)
  List of symbols, signifying grob interfaces that are worth keeping an staff with `remove-empty` set around for.
`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).
`majorSevenSymbol` (markup)
  How should the major 7th be formatted in a chord name?
`markFormatter` (procedure)
  Procedure taking as arguments context and rehearsal mark. It should return the formatted mark as a markup object.
`measureLength` (moment)
  Length of one measure in the current time signature.
`measurePosition` (moment)
  How much of the current measure have we had. This can be set manually to create incomplete measures.
`melismaBusyProperties` (list)
  List of properties (symbols) to determine whether a melisma is playing. Setting this property will influence how lyrics are aligned to notes. For example, if set to `#'(melismaBusy beamMelismaBusy)`, only manual melismata and manual beams are considered. Possible values include `melismaBusy`, `slurMelismaBusy`, `tieMelismaBusy`, and `beamMelismaBusy`
`metronomeMarkFormatter` (procedure)
  How to produce a metronome markup. Called with 2 arguments, event and context.
`middleCPosition` (number)
  Place of the middle C, measured in half staff-spaces. Usually determined by looking at `clefPosition` and `clefGlyph`.
`midiInstrument` (string)
  Name of the MIDI instrument to use
`midiMaximumVolume` (number)
  Analogous to `midiMinimumVolume`.
`midiMinimumVolume` (number)
  Sets the minimum loudness for MIDI. Ranges from 0 to 1.
`minimumFret` (number)
  The tablature auto string-selecting mechanism selects the highest string with a fret at least `minimumFret`
`minimumVerticalExtent` (pair of numbers)
  minimum vertical extent, same format as verticalExtent
`ottavation` (string)
  If set, the text for an ottava spanner. Changing this creates a new text spanner.
`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`.
`printKeyCancellation` (boolean)
  Print restoration alterations before a key signature change.
`printOctaveNames` (boolean)
  Print octave marks for the NoteNames context.
`printPartCombineTexts` (boolean)
  set Solo/A due texts in the part combiner?
`proportionalNotationDuration` (moment)
  Global override for shortest-playing duration. This is used for switching on proportional notation.
`recordEventSequence` (procedure)
  When Recording_group_engraver is in this context, then upon termination of the context, this function is called with current context and a list of music objects. The list of contains entries with start times, music objects and whether they are processed in this context.
`rehearsalMark` (integer)
  The last rehearsal mark printed.
`repeatCommands` (list)
  This property is read to find any command of the form `(volta .` x`)`, where x is a string or `#f`
`restNumberThreshold` (number)
  If a multimeasure rest has more measures than this, a number is printed.
`shapeNoteStyles` (vector)
  Vector of symbols, listing style for each note head relative to the tonic (qv.) of the scale.
`skipBars` (boolean)
  If set to true, then skip the empty bars that are produced by multimeasure notes and rests. These bars will not appear on the printed output. If not set (the default) multimeasure notes and rests expand into their full length, printing the appropriate number of empty bars so that synchronization with other voices is preserved.

                {
                r1 r1*3 R1*3
                \set Score.skipBars= ##t
                r1*3 R1*3
                }

`skipTypesetting` (boolean)
  When true, all no typesetting is done, speeding up the interpretation phase. This speeds up debugging large scores.
`soloIIText` (string)
  text for begin of solo for voice “two” when part-combining.
`soloText` (string)
  text for begin of solo when part-combining.
`squashedPosition` (integer)
  Vertical position of squashing for Pitch_squash_engraver.
`stanza` (markup)
  Stanza `number' to print before the start of a verse. Use in Lyrics context.
`stemLeftBeamCount` (integer)
  Specify the number of beams to draw on the left side of the next note. Overrides automatic beaming. The value is only used once, and then it is erased.
`stemRightBeamCount` (integer)
  See `stemLeftBeamCount`.
`stringNumberOrientations` (list)
  See `fingeringOrientations`
`stringOneTopmost` (boolean)
  Whether the 1st string is printed on the top line of the tablature.
`stringTunings` (list)
  The tablature strings tuning. It is a list of the pitch (in semitones) of each string (starting with the lower one).
`subdivideBeams` (boolean)
  If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.
`suggestAccidentals` (boolean)
  If set, accidentals are typeset as cautionary suggestions over the note.
`systemStartDelimiter` (symbol)
  Which grob to make for the start of the system/staff? Set to `SystemStartBrace`, `SystemStartBracket` or `SystemStartBar`.
`systemStartDelimiterHierarchy` (pair)
  A nested list, indicating the nesting of a start delimiters.
`tablatureFormat` (procedure)
  Function formatting a tab note head; it takes a string number, a list of string tunings and Pitch object. It returns the text as a string.
`tieWaitForNote` (boolean)
  If true, tied notes do not have to follow each other directly. This can be used for writing out arpeggios
`timeSignatureFraction` (pair of numbers)
  pair of numbers, signifying the time signature. For example `#'(4 . 4)` is a 4/4 time signature.
`timing` (boolean)
  Keep administration of measure length, position, bar number, etc? Switch off for cadenzas.
`tonic` (pitch)
  The tonic of the current scale
`trebleStaffProperties` (list)
  Alist of property settings to apply for the up staff of PianoStaff. Used by `\autochange`
`tremoloFlags` (integer)
  Number of tremolo flags to add if no number is specified.
`tupletFullLength` (boolean)
  If set, the tuplet is printed upto the start of the next note.
`tupletNumberFormatFunction` (procedure)
  Function taking a music as input, producing a string. This function is called to determine the text to print on a tuplet bracket.
`tupletSpannerDuration` (moment)
  Normally a tuplet bracket is as wide as the `\times` expression that gave rise to it. By setting this property, you can make brackets last shorter. Example

                {
                \set tupletSpannerDuration = #(ly:make-moment 1 4)
                \times 2/3 { c8 c c c c c }
                }

  .

`useBassFigureExtenders` (boolean)
  Whether to use extender lines for repeated bass figures
`verticalExtent` (pair of numbers)
  Hard coded vertical extent. The format is a pair of dimensions, for example, this sets the sizes of a staff to 10 (5+5) staff-spaces high.

                \set Staff.verticalExtent = #'(-5.0 . 5.0)

  This does not work for Voice or any other context that doesn't form a vertical group.

`verticallySpacedContexts` (list)
  List of symbols, containing context names whose vertical axis groups should be taken into account for vertical spacing of systems.
`vocNam` (markup)
  Name of a vocal line, short version.
`vocalName` (markup)
  Name of a vocal line.
`voltaOnThisStaff` (boolean)
  Normally, volta brackets are put only on the topmost staff. This variable overrides this behavior, when set to `#t` 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.
`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.

### Internal context properties

`associatedVoiceContext` (context)
  The context object of the Voice that has the melody for this Lyrics.
`barCheckLastFail` (moment)
  Where in the measure did the last barcheck fail?
`beamMelismaBusy` (boolean)
  Signal if a beam is present.
`breakableSeparationItem` (layout object)
  The breakable items in this time step, for this staff.
`busyGrobs` (list)
  a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
`currentCommandColumn` (layout object)
  Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
`currentMusicalColumn` (layout object)
  Grob that is X-parent to all non-breakable items (note heads, lyrics, etc.).
`dynamicAbsoluteVolumeFunction` (procedure)
  [DOCUMENT-ME]
`finalizations` (list)
  List of expressions to evaluate before proceeding to next time step. Internal variable.
`graceSettings` (list)
  Overrides for grace notes. This property should be manipulated through the `add-grace-property` function.
`instrumentSupport` (list of grobs)
  list of grobs to attach instrument name to.
`lastKeySignature` (list)
  Last key signature before a key signature change.
`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.
`localKeySignatureChanges` (list)
  Experimental. [DOCME]
`melismaBusy` (boolean)
  Signifies whether a melisma is active. This can be used to signal melismas on top of those automatically detected.
`originalCentralCPosition` (integer)
  Used for temporary overriding middle C in octavation brackets.
`quotedEventTypes` (list)
  List of symbols, representing the event types that should be duplicated for `\quote` commands.
`rootSystem` (layout object)
  The System object
`scriptDefinitions` (list)
  Description of scripts. This is used by Script_engraver for typesetting note-super/subscripts. See `scm/script.scm` for more information
`slurMelismaBusy` (boolean)
  Signal if a slur is present.
`stavesFound` (list of grobs)
  list of all staff-symbols found.
`tieMelismaBusy` (boolean)
  Signal whether a tie is present.

## Backend

### All layout objects

#### Accidental

Accidental objects are created by: Accidental_engraver

Standard settings:

`avoid-slur` (symbol):
  `'inside`

  Method of handling slur collisions. Choices are `around`, `inside`, `outside`. If unset, script and slur ignore eachother.

`cautionary-style` (symbol):
  `'parentheses`

  How to print cautionary accidentals. Choices are `smaller` or `parentheses`.

`after-line-breaking` (boolean):
  `ly:accidental-interface::after-line-breaking`

  Dummy property, used to trigger callback for after-line-breaking

This object supports the following interfaces: font-interface, accidental-interface, item-interface and grob-interface

#### AccidentalPlacement

AccidentalPlacement objects are created by: none

Standard settings:

`left-padding` (dimension, in staff space):
  `0.2`

  The amount of space that is put left to a group of accidentals.

`X-extent` (pair of numbers):
  `ly:axis-group-interface::width`

  Hard coded extent in X direction.

`right-padding` (dimension, in staff space):
  `0.15`

  Space to insert between note and accidentals.

This object supports the following interfaces: accidental-placement-interface, item-interface and grob-interface

#### AccidentalSuggestion

AccidentalSuggestion objects are created by: Accidental_engraver

Standard settings:

`X-offset` (number):
  `#<simple-closure (#<primitive-generic +> #<simple-closure (#<primitive-procedure ly:self-alignment-interface::centered-on-x-parent>) > #<simple-closure (#<primitive-procedure ly:self-alignment-interface::x-aligned-on-self>) >) >`

  The horizontal amount that this object is moved relative to its X-parent

`self-alignment-X` (number):
  `0`

  Specify alignment of an object. The value -1 means left aligned, 0 centered, and 1 right-aligned in X direction. Values in between may also be specified.

`cautionary` (boolean):
  `#t`

  Is this a cautionary accidental?

`cautionary-style` (symbol):
  `'smaller`

  How to print cautionary accidentals. Choices are `smaller` or `parentheses`.

`Y-offset` (number):
  `ly:side-position-interface::y-aligned-side`

  The vertical amount that this object is moved relative to its Y-parent

`cautionary-style` (symbol):
  `'smaller`

  How to print cautionary accidentals. Choices are `smaller` or `parentheses`.

`direction` (direction):
  `1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`staff-padding` (dimension, in staff space):
  `0.25`

  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.

`script-priority` (number):
  `0`

  A sorting key that determines in what order a script is within a stack of scripts.

`side-axis` (number):
  `0`

  Is this object horizontally or vertically next to another object?

This object supports the following interfaces: font-interface, self-alignment-interface, accidental-suggestion-interface, accidental-interface, script-interface, side-position-interface, item-interface and grob-interface

#### Ambitus

Ambitus objects are created by: Ambitus_engraver

Standard settings:

`axes` (list):
  `'(0 1)`

  list of axis numbers. In the case of alignment grobs, this should contain only one number.

`X-extent` (pair of numbers):
  `ly:axis-group-interface::width`

  Hard coded extent in X direction.

`X-extent` (pair of numbers):
  `ly:axis-group-interface::width`

  Hard coded extent in X direction.

`space-alist` (list):
  `'((clef extra-space . 0.5) (key-signature extra-space . 0.0) (staff-bar extra-space . 0.0) (time-signature extra-space . 0.0) (first-note fixed-space . 0.0))`

  A table that specifies distances between prefatory items, like clef and time-signature. The format is an alist of spacing tuples: `(`break-align-symbol type`.` distance`)`, where type can be the symbols `minimum-space` or `extra-space`.

`breakable` (boolean):
  `#t`

  Can this object appear at a line break, like clefs and bar lines?

`break-align-symbol` (symbol):
  `'ambitus`

  This key is used for aligning and spacing breakable items.

`break-visibility` (vector):
  `#(#f #f #t)`

  A vector of 3 booleans, #(end-of-line unbroken begin-of-line). #t means visible, #f means killed.

This object supports the following interfaces: ambitus-interface, break-aligned-interface, axis-group-interface, item-interface and grob-interface

#### AmbitusAccidental

AmbitusAccidental objects are created by: Ambitus_engraver

Standard settings:

`font-family` (symbol):
  `'music`

  The font family is the broadest category for selecting text fonts. Options include: `sans`, `roman`

`padding` (dimension, in staff space):
  `0.5`

  Add this much extra space between objects that are next to each other.

`X-offset` (number):
  `ly:side-position-interface::x-aligned-side`

  The horizontal amount that this object is moved relative to its X-parent

`direction` (direction):
  `-1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`cautionary-style` (symbol):
  `'parentheses`

  How to print cautionary accidentals. Choices are `smaller` or `parentheses`.

`after-line-breaking` (boolean):
  `ly:accidental-interface::after-line-breaking`

  Dummy property, used to trigger callback for after-line-breaking

`side-axis` (number):
  `0`

  Is this object horizontally or vertically next to another object?

This object supports the following interfaces: font-interface, side-position-interface, break-aligned-interface, accidental-interface, item-interface, item-interface and grob-interface

#### AmbitusLine

AmbitusLine objects are created by: Ambitus_engraver

Standard settings:

`thickness` (number):
  `2`

  Bar line thickness, measured in `line-thickness`.

`X-offset` (number):
  `ly:self-alignment-interface::centered-on-x-parent`

  The horizontal amount that this object is moved relative to its X-parent

This object supports the following interfaces: font-interface, staff-symbol-referencer-interface, ambitus-interface, item-interface and grob-interface

#### AmbitusNoteHead

AmbitusNoteHead objects are created by: Ambitus_engraver

Standard settings:

`duration-log` (integer):
  `2`

  The 2-log of the note head duration, i.e. 0=whole note, 1 = half note, etc.

`Y-offset` (number):
  `ly:staff-symbol-referencer::callback`

  The vertical amount that this object is moved relative to its Y-parent

This object supports the following interfaces: ledgered-interface, rhythmic-head-interface, staff-symbol-referencer-interface, ambitus-interface, note-head-interface, font-interface, item-interface and grob-interface

#### Arpeggio

Arpeggio objects are created by: Arpeggio_engraver and Span_arpeggio_engraver

Standard settings:

`X-extent` (pair of numbers):
  `ly:arpeggio::width`

  Hard coded extent in X direction.

`Y-offset` (number):
  `ly:staff-symbol-referencer::callback`

  The vertical amount that this object is moved relative to its Y-parent

`X-offset` (number):
  `ly:side-position-interface::x-aligned-side`

  The horizontal amount that this object is moved relative to its X-parent

`direction` (direction):
  `-1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`padding` (dimension, in staff space):
  `0.5`

  Add this much extra space between objects that are next to each other.

`side-axis` (number):
  `0`

  Is this object horizontally or vertically next to another object?

`staff-position` (number):
  `0.0`

  Vertical position, measured in half staff spaces, counted from the middle line.

This object supports the following interfaces: font-interface, side-position-interface, staff-symbol-referencer-interface, arpeggio-interface, item-interface and grob-interface

#### BarLine

BarLine objects are created by: Bar_engraver

Standard settings:

`break-align-symbol` (symbol):
  `'staff-bar`

  This key is used for aligning and spacing breakable items.

`glyph` (string):
  `|`

  a string determining what (style) of glyph is typeset. Valid choices depend on the function that is reading this property.

`layer` (number):
  `0`

  The output layer [0..2]: layers define the order of printing objects. Objects in lower layers are overprinted by objects in higher layers.

`break-visibility` (vector):
  `#(#t #t #t)`

  A vector of 3 booleans, #(end-of-line unbroken begin-of-line). #t means visible, #f means killed.

`breakable` (boolean):
  `#t`

  Can this object appear at a line break, like clefs and bar lines?

`bar-size` (dimension, in staff space):
  `ly:bar-line::calc-bar-size`

  size of a bar line.

`space-alist` (list):
  `'((time-signature extra-space . 0.75) (custos minimum-space . 2.0) (clef minimum-space . 1.0) (key-signature extra-space . 1.0) (key-cancellation extra-space . 1.0) (first-note fixed-space . 1.3) (next-note semi-fixed-space . 1.3) (right-edge extra-space . 0.0))`

  A table that specifies distances between prefatory items, like clef and time-signature. The format is an alist of spacing tuples: `(`break-align-symbol type`.` distance`)`, where type can be the symbols `minimum-space` or `extra-space`.

`kern` (dimension, in staff space):
  `3.0`

  Amount of extra white space to add. For bar line, this is the amount of space after a thick line.

`thin-kern` (number):
  `3.0`

  The space after a hair-line in a bar line.

`hair-thickness` (number):
  `1.9`

  Thickness of the thin line in a bar line.

`thick-thickness` (number):
  `6.0`

  Bar line thickness, measured in `line-thickness`.

This object supports the following interfaces: font-interface, break-aligned-interface, bar-line-interface, item-interface and grob-interface

#### BarNumber

BarNumber objects are created by: Bar_number_engraver

Standard settings:

`breakable` (boolean):
  `#t`

  Can this object appear at a line break, like clefs and bar lines?

`break-visibility` (vector):
  `#(#f #f #t)`

  A vector of 3 booleans, #(end-of-line unbroken begin-of-line). #t means visible, #f means killed.

`padding` (dimension, in staff space):
  `1.0`

  Add this much extra space between objects that are next to each other.

`direction` (direction):
  `1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`font-family` (symbol):
  `'roman`

  The font family is the broadest category for selecting text fonts. Options include: `sans`, `roman`

`font-size` (number):
  `-2`

  The font size, compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Each step of 1 is approximately 12% larger, 6 steps are exactly a factor 2 larger. Fractional values are allowed.

`Y-offset` (number):
  `ly:side-position-interface::y-aligned-side`

  The vertical amount that this object is moved relative to its Y-parent

`side-axis` (number):
  `1`

  Is this object horizontally or vertically next to another object?

`X-offset` (number):
  `#<simple-closure (#<primitive-generic +> #<simple-closure (#<primitive-procedure ly:break-alignment-align-interface::self-align-callback>) > #<simple-closure (#<primitive-procedure ly:self-alignment-interface::x-aligned-on-self>) >) >`

  The horizontal amount that this object is moved relative to its X-parent

`self-alignment-X` (number):
  `1`

  Specify alignment of an object. The value -1 means left aligned, 0 centered, and 1 right-aligned in X direction. Values in between may also be specified.

`break-align-symbol` (symbol):
  `'left-edge`

  This key is used for aligning and spacing breakable items.

This object supports the following interfaces: font-interface, self-alignment-interface, break-alignment-align-interface, text-interface, side-position-interface, item-interface and grob-interface

#### BassFigure

BassFigure objects are created by: Figured_bass_engraver

Standard settings:

This object supports the following interfaces: font-interface, bass-figure-interface, rhythmic-grob-interface, text-interface, item-interface and grob-interface

#### BassFigureAlignment

BassFigureAlignment objects are created by: Figured_bass_engraver

Standard settings:

`axes` (list):
  `'(1)`

  list of axis numbers. In the case of alignment grobs, this should contain only one number.

`threshold` (pair of numbers):
  `'(2 . 1000)`

  (min . max), where min and max are dimensions in staff space.

`Y-extent` (pair of numbers):
  `ly:axis-group-interface::height`

  See `X-extent`.

`stacking-dir` (direction):
  `-1`

  Stack objects in which direction?

This object supports the following interfaces: axis-group-interface, align-interface, spanner-interface and grob-interface

#### BassFigureBracket

BassFigureBracket objects are created by: Figured_bass_engraver

Standard settings:

`X-extent` (pair of numbers):
  `ly:enclosing-bracket::width`

  Hard coded extent in X direction.

`edge-height` (pair):
  `'(0.2 . 0.2)`

  A pair of number specifying the heights of the vertical edges '(left-height . right-height).

This object supports the following interfaces: enclosing-bracket-interface, item-interface and grob-interface

#### BassFigureContinuation

BassFigureContinuation objects are created by: Figured_bass_engraver

Standard settings:

`Y-offset` (number):
  `ly:figured-bass-continuation::center-on-figures`

  The vertical amount that this object is moved relative to its Y-parent

This object supports the following interfaces: figured-bass-continuation-interface, spanner-interface and grob-interface

#### BassFigureLine

BassFigureLine objects are created by: Figured_bass_engraver

Standard settings:

`axes` (list):
  `'(1)`

  list of axis numbers. In the case of alignment grobs, this should contain only one number.

`Y-extent` (pair of numbers):
  `ly:axis-group-interface::height`

  See `X-extent`.

This object supports the following interfaces: axis-group-interface, spanner-interface and grob-interface

#### Beam

Beam objects are created by: Auto_beam_engraver, Beam_engraver, Chord_tremolo_engraver and Grace_beam_engraver

Standard settings:

`gap` (dimension, in staff space):
  `0.8`

  Size of a gap in a variable symbol.

`positions` (pair):
  `#<simple-closure #<simple-closure (#<procedure chain-grob-member-functions (grob value . funcs)> (#<primitive-procedure cons> 0 0) #<primitive-procedure ly:beam::calc-least-squares-positions> #<primitive-procedure ly:beam::slope-damping> #<primitive-procedure ly:beam::shift-region-to-valid> #<primitive-procedure ly:beam::quanting>) > >`

  Pair of staff coordinates `(`left`.` right`)`, where both left and right are in the staff-space unit of the current staff.

`concaveness` (number):
  `ly:beam::calc-concaveness`

  A beam is concave when its inner stems are closer to the beam than the two outside stems. This number is a measure of the closeness of the inner stems. It is used for damping the slope of the beam.

`direction` (direction):
  `ly:beam::calc-direction`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`beaming` (pair):
  `ly:beam::calc-beaming`

  Pair of number lists. Each number list specifies which beams to make. 0 is the central beam, 1 is the next beam toward the note etc. This information is used to determine how to connect the beaming patterns from stem to stem inside a beam.

`thickness` (number):
  `0.48`

  Bar line thickness, measured in `line-thickness`.

`neutral-direction` (direction):
  `-1`

  Which direction to take in the center of the staff.

`beamed-stem-shorten` (list):
  `'(1.0 0.5 0.25)`

  How much to shorten beamed stems, when their direction is forced. It is a list, since the value is different depending on the number flags/beams.

`damping` (number):
  `1`

  Amount of beam slope damping. 0: no, 1: yes, 100000: horizontal beams.

`auto-knee-gap` (dimension, in staff space):
  `5.5`

  If a gap is found between note heads where a horizontal beam fits that is larger than this number, make a kneed beam.

`font-family` (symbol):
  `'roman`

  The font family is the broadest category for selecting text fonts. Options include: `sans`, `roman`

This object supports the following interfaces: beam-interface, staff-symbol-referencer-interface, spanner-interface and grob-interface

#### BreakAlignGroup

BreakAlignGroup objects are created by: Break_align_engraver

Standard settings:

`axes` (list):
  `'(0)`

  list of axis numbers. In the case of alignment grobs, this should contain only one number.

`X-extent` (pair of numbers):
  `ly:axis-group-interface::width`

  Hard coded extent in X direction.

This object supports the following interfaces: axis-group-interface, break-aligned-interface, item-interface and grob-interface

#### BreakAlignment

BreakAlignment objects are created by: Break_align_engraver

Standard settings:

`breakable` (boolean):
  `#t`

  Can this object appear at a line break, like clefs and bar lines?

`stacking-dir` (direction):
  `1`

  Stack objects in which direction?

`X-extent` (pair of numbers):
  `ly:axis-group-interface::width`

  Hard coded extent in X direction.

`break-align-orders` (vector):
  `#((left-edge ambitus breathing-sign clef staff-bar key-cancellation key-signature time-signature custos) (left-edge ambitus breathing-sign clef staff-bar key-cancellation key-signature staff time-signature custos) (left-edge ambitus breathing-sign clef key-cancellation key-signature staff-bar time-signature custos))`

  Defines the order in which prefatory matter (clefs, key signatures) appears. The format is a vector of length 3, where each element is one order for end-of-line, middle of line, and start-of-line respectively. An order is a list of symbols.

  For example, clefs are put after key signatures by setting

                	\override Score.BreakAlignment #'break-align-orders = #(make-vector  3
                	  '(span-bar
                	  breathing-sign
                	  staff-bar
                	  key
                	  clef
                	  time-signature))

`axes` (list):
  `'(0)`

  list of axis numbers. In the case of alignment grobs, this should contain only one number.

This object supports the following interfaces: axis-group-interface, break-alignment-interface, item-interface and grob-interface

#### BreathingSign

BreathingSign objects are created by: Breathing_sign_engraver

Standard settings:

`break-align-symbol` (symbol):
  `'breathing-sign`

  This key is used for aligning and spacing breakable items.

`breakable` (boolean):
  `#t`

  Can this object appear at a line break, like clefs and bar lines?

`space-alist` (list):
  `'((ambitus extra-space . 2.0) (custos minimum-space . 1.0) (key-signature minimum-space . 1.5) (time-signature minimum-space . 1.5) (staff-bar minimum-space . 1.5) (clef minimum-space . 2.0) (first-note fixed-space . 1.0) (right-edge extra-space . 0.1))`

  A table that specifies distances between prefatory items, like clef and time-signature. The format is an alist of spacing tuples: `(`break-align-symbol type`.` distance`)`, where type can be the symbols `minimum-space` or `extra-space`.

`text` (markup):
  `'(#<procedure musicglyph-markup (layout props glyph-name)> scripts.rcomma)`

  Text markup. See Text markup .

`Y-offset` (number):
  `ly:breathing-sign::offset-callback`

  The vertical amount that this object is moved relative to its Y-parent

`break-visibility` (vector):
  `#(#t #t #f)`

  A vector of 3 booleans, #(end-of-line unbroken begin-of-line). #t means visible, #f means killed.

This object supports the following interfaces: font-interface, text-interface, breathing-sign-interface, break-aligned-interface, item-interface and grob-interface

#### ChordName

ChordName objects are created by: Chord_name_engraver

Standard settings:

`after-line-breaking` (boolean):
  `ly:chord-name::after-line-breaking`

  Dummy property, used to trigger callback for after-line-breaking

`word-space` (dimension, in staff space):
  `0.0`

  space to insert between words in texts.

`font-family` (symbol):
  `'sans`

  The font family is the broadest category for selecting text fonts. Options include: `sans`, `roman`

`font-size` (number):
  `1.5`

  The font size, compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Each step of 1 is approximately 12% larger, 6 steps are exactly a factor 2 larger. Fractional values are allowed.

This object supports the following interfaces: item-interface, chord-name-interface, text-interface, rhythmic-grob-interface, font-interface, item-interface and grob-interface

#### Clef

Clef objects are created by: Clef_engraver

Standard settings:

`breakable` (boolean):
  `#t`

  Can this object appear at a line break, like clefs and bar lines?

`font-family` (symbol):
  `'music`

  The font family is the broadest category for selecting text fonts. Options include: `sans`, `roman`

`break-align-symbol` (symbol):
  `'clef`

  This key is used for aligning and spacing breakable items.

`break-visibility` (vector):
  `#(#f #f #t)`

  A vector of 3 booleans, #(end-of-line unbroken begin-of-line). #t means visible, #f means killed.

`space-alist` (list):
  `'((ambitus extra-space . 2.0) (staff-bar extra-space . 0.7) (key-cancellation minimum-space . 3.5) (key-signature minimum-space . 3.5) (time-signature minimum-space . 4.2) (first-note minimum-fixed-space . 5.0) (next-note extra-space . 0.5) (right-edge extra-space . 0.5))`

  A table that specifies distances between prefatory items, like clef and time-signature. The format is an alist of spacing tuples: `(`break-align-symbol type`.` distance`)`, where type can be the symbols `minimum-space` or `extra-space`.

`Y-offset` (number):
  `ly:staff-symbol-referencer::callback`

  The vertical amount that this object is moved relative to its Y-parent

This object supports the following interfaces: break-aligned-interface, font-interface, staff-symbol-referencer-interface, clef-interface, item-interface and grob-interface

#### ClusterSpanner

ClusterSpanner objects are created by: Cluster_spanner_engraver

Standard settings:

`springs-and-rods` (boolean):
  `ly:spanner::set-spacing-rods`

  Dummy variable for triggering spacing routines.

`minimum-length` (dimension, in staff space):
  `0.0`

  Try to make a spanner at least this long. This requires an appropriate callback for the `springs-and-rods` property.

`padding` (dimension, in staff space):
  `0.25`

  Add this much extra space between objects that are next to each other.

`style` (symbol):
  `'ramp`

  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.

This object supports the following interfaces: cluster-interface, spanner-interface and grob-interface

#### ClusterSpannerBeacon

ClusterSpannerBeacon objects are created by: Cluster_spanner_engraver

Standard settings:

`Y-extent` (pair of numbers):
  `ly:cluster-beacon::height`

  See `X-extent`.

This object supports the following interfaces: cluster-beacon-interface, item-interface and grob-interface

#### CombineTextScript

CombineTextScript objects are created by: Part_combine_engraver

Standard settings:

`no-spacing-rods` (boolean):
  `#t`

  Items with this property do not cause spacing constraints.

`Y-offset` (number):
  `ly:side-position-interface::y-aligned-side`

  The vertical amount that this object is moved relative to its Y-parent

`X-offset` (number):
  `ly:self-alignment-interface::x-aligned-on-self`

  The horizontal amount that this object is moved relative to its X-parent

`direction` (direction):
  `1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`padding` (dimension, in staff space):
  `0.5`

  Add this much extra space between objects that are next to each other.

`staff-padding` (dimension, in staff space):
  `0.5`

  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.

`script-priority` (number):
  `200`

  A sorting key that determines in what order a script is within a stack of scripts.

`baseline-skip` (dimension, in staff space):
  `2`

  Distance between base lines of multiple lines of text.

`side-axis` (number):
  `1`

  Is this object horizontally or vertically next to another object?

`font-series` (symbol):
  `'bold`

  Select the series of a font. Choices include `medium`, `bold`, `bold-narrow`, etc.

This object supports the following interfaces: font-interface, side-position-interface, text-interface, text-script-interface, item-interface and grob-interface

#### Custos

Custos objects are created by: Custos_engraver

Standard settings:

`break-align-symbol` (symbol):
  `'custos`

  This key is used for aligning and spacing breakable items.

`breakable` (boolean):
  `#t`

  Can this object appear at a line break, like clefs and bar lines?

`break-visibility` (vector):
  `#(#t #f #f)`

  A vector of 3 booleans, #(end-of-line unbroken begin-of-line). #t means visible, #f means killed.

`style` (symbol):
  `'vaticana`

  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.

`neutral-direction` (direction):
  `-1`

  Which direction to take in the center of the staff.

`Y-offset` (number):
  `ly:staff-symbol-referencer::callback`

  The vertical amount that this object is moved relative to its Y-parent

`space-alist` (list):
  `'((first-note minimum-fixed-space . 0.0) (right-edge extra-space . 0.1))`

  A table that specifies distances between prefatory items, like clef and time-signature. The format is an alist of spacing tuples: `(`break-align-symbol type`.` distance`)`, where type can be the symbols `minimum-space` or `extra-space`.

This object supports the following interfaces: break-aligned-interface, font-interface, staff-symbol-referencer-interface, custos-interface, item-interface and grob-interface

#### DotColumn

DotColumn objects are created by: Dot_column_engraver

Standard settings:

`axes` (list):
  `'(0)`

  list of axis numbers. In the case of alignment grobs, this should contain only one number.

`direction` (direction):
  `1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`X-extent` (pair of numbers):
  `ly:axis-group-interface::width`

  Hard coded extent in X direction.

`X-offset` (number):
  `ly:dot-column::side-position`

  The horizontal amount that this object is moved relative to its X-parent

This object supports the following interfaces: axis-group-interface, dot-column-interface, item-interface and grob-interface

#### Dots

Dots objects are created by: Completion_heads_engraver, Drum_notes_engraver, Note_heads_engraver, Rest_engraver and Tab_note_heads_engraver

Standard settings:

`dot-count` (integer):
  `1`

  The number of dots.

This object supports the following interfaces: dots-interface, staff-symbol-referencer-interface, font-interface, item-interface and grob-interface

#### DoublePercentRepeat

DoublePercentRepeat objects are created by: Percent_repeat_engraver

Standard settings:

`breakable` (boolean):
  `#t`

  Can this object appear at a line break, like clefs and bar lines?

`slope` (number):
  `1.0`

  The slope of this object.

`font-encoding` (symbol):
  `'fetaMusic`

  The font encoding is the broadest category for selecting a font. Options include: `fetaMusic`, `fetaNumber`, `TeX-text`, `TeX-math`, `fetaBraces`, `fetaDynamic`

`width` (dimension, in staff space):
  `2.0`

  The width of a grob measured in staff space.

`thickness` (number):
  `0.48`

  Bar line thickness, measured in `line-thickness`.

`break-align-symbol` (symbol):
  `'staff-bar`

  This key is used for aligning and spacing breakable items.

`break-visibility` (vector):
  `#(#t #t #f)`

  A vector of 3 booleans, #(end-of-line unbroken begin-of-line). #t means visible, #f means killed.

This object supports the following interfaces: percent-repeat-interface, break-aligned-interface, font-interface, item-interface and grob-interface

#### DoublePercentRepeatCounter

DoublePercentRepeatCounter objects are created by: Percent_repeat_engraver

Standard settings:

`X-offset` (number):
  `#<simple-closure (#<primitive-generic +> #<simple-closure (#<primitive-procedure ly:self-alignment-interface::centered-on-y-parent>) > #<simple-closure (#<primitive-procedure ly:self-alignment-interface::x-aligned-on-self>) >) >`

  The horizontal amount that this object is moved relative to its X-parent

`Y-offset` (number):
  `ly:side-position-interface::y-aligned-side`

  The vertical amount that this object is moved relative to its Y-parent

`font-encoding` (symbol):
  `'fetaNumber`

  The font encoding is the broadest category for selecting a font. Options include: `fetaMusic`, `fetaNumber`, `TeX-text`, `TeX-math`, `fetaBraces`, `fetaDynamic`

`self-alignment-X` (number):
  `0`

  Specify alignment of an object. The value -1 means left aligned, 0 centered, and 1 right-aligned in X direction. Values in between may also be specified.

`font-size` (number):
  `-2`

  The font size, compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Each step of 1 is approximately 12% larger, 6 steps are exactly a factor 2 larger. Fractional values are allowed.

`direction` (direction):
  `1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`padding` (dimension, in staff space):
  `0.2`

  Add this much extra space between objects that are next to each other.

`staff-padding` (dimension, in staff space):
  `0.25`

  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.

`side-axis` (number):
  `1`

  Is this object horizontally or vertically next to another object?

This object supports the following interfaces: text-interface, font-interface, percent-repeat-interface, self-alignment-interface, side-position-interface, item-interface and grob-interface

#### DynamicLineSpanner

DynamicLineSpanner objects are created by: Dynamic_engraver

Standard settings:

`axes` (list):
  `'(1)`

  list of axis numbers. In the case of alignment grobs, this should contain only one number.

`Y-offset` (number):
  `ly:side-position-interface::y-aligned-side`

  The vertical amount that this object is moved relative to its Y-parent

`staff-padding` (dimension, in staff space):
  `0.1`

  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.

`padding` (dimension, in staff space):
  `0.6`

  Add this much extra space between objects that are next to each other.

`avoid-slur` (symbol):
  `'outside`

  Method of handling slur collisions. Choices are `around`, `inside`, `outside`. If unset, script and slur ignore eachother.

`slur-padding` (number):
  `0.3`

  Extra distance between slur and script.

`minimum-space` (dimension, in staff space):
  `1.2`

  Minimum distance that the victim should move (after padding).

`direction` (direction):
  `-1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`side-axis` (number):
  `1`

  Is this object horizontally or vertically next to another object?

`Y-extent` (pair of numbers):
  `ly:axis-group-interface::height`

  See `X-extent`.

`X-extent` (pair of numbers):
  `ly:axis-group-interface::width`

  Hard coded extent in X direction.

This object supports the following interfaces: side-position-interface, dynamic-line-spanner-interface, dynamic-interface, axis-group-interface, spanner-interface and grob-interface

#### DynamicText

DynamicText objects are created by: Dynamic_engraver

Standard settings:

`direction` (direction):
  `ly:script-interface::calc-direction`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`X-offset` (number):
  `ly:self-alignment-interface::x-aligned-on-self`

  The horizontal amount that this object is moved relative to its X-parent

`self-alignment-X` (number):
  `0`

  Specify alignment of an object. The value -1 means left aligned, 0 centered, and 1 right-aligned in X direction. Values in between may also be specified.

`Y-offset` (number):
  `ly:self-alignment-interface::y-aligned-on-self`

  The vertical amount that this object is moved relative to its Y-parent

`self-alignment-Y` (number):
  `0`

  like `self-alignment-X` but for Y axis.

`font-series` (symbol):
  `'bold`

  Select the series of a font. Choices include `medium`, `bold`, `bold-narrow`, etc.

`font-encoding` (symbol):
  `'fetaDynamic`

  The font encoding is the broadest category for selecting a font. Options include: `fetaMusic`, `fetaNumber`, `TeX-text`, `TeX-math`, `fetaBraces`, `fetaDynamic`

`font-shape` (symbol):
  `'italic`

  Select the shape of a font. Choices include `upright`, `italic`, `caps`.

`avoid-slur` (symbol):
  `'around`

  Method of handling slur collisions. Choices are `around`, `inside`, `outside`. If unset, script and slur ignore eachother.

`no-spacing-rods` (boolean):
  `#t`

  Items with this property do not cause spacing constraints.

`script-priority` (number):
  `100`

  A sorting key that determines in what order a script is within a stack of scripts.

This object supports the following interfaces: script-interface, dynamic-interface, self-alignment-interface, text-interface, font-interface, item-interface and grob-interface

#### DynamicTextSpanner

DynamicTextSpanner objects are created by: none

Standard settings:

`font-shape` (symbol):
  `'italic`

  Select the shape of a font. Choices include `upright`, `italic`, `caps`.

`style` (symbol):
  `'dashed-line`

  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.

`font-size` (number):
  `1`

  The font size, compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Each step of 1 is approximately 12% larger, 6 steps are exactly a factor 2 larger. Fractional values are allowed.

`bound-padding` (number):
  `0.75`

  The amount of padding to insert around spanner bounds.

`dash-fraction` (number):
  `0.2`

  Size of the dashes, relative to dash-period. Should be between 0.0 (no line) and 1.0 (continuous line).

`dash-period` (number):
  `3.0`

  the length of one dash + white space. If negative, no line is drawn at all.

This object supports the following interfaces: spanner-interface, line-spanner-interface, dynamic-text-spanner-interface, dynamic-interface, text-interface, font-interface, spanner-interface and grob-interface

#### Fingering

Fingering objects are created by: Fingering_engraver and New_fingering_engraver

Standard settings:

`padding` (dimension, in staff space):
  `0.5`

  Add this much extra space between objects that are next to each other.

`avoid-slur` (symbol):
  `'around`

  Method of handling slur collisions. Choices are `around`, `inside`, `outside`. If unset, script and slur ignore eachother.

`slur-padding` (number):
  `0.2`

  Extra distance between slur and script.

`staff-padding` (dimension, in staff space):
  `0.5`

  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.

`self-alignment-X` (number):
  `0`

  Specify alignment of an object. The value -1 means left aligned, 0 centered, and 1 right-aligned in X direction. Values in between may also be specified.

`self-alignment-Y` (number):
  `0`

  like `self-alignment-X` but for Y axis.

`script-priority` (number):
  `100`

  A sorting key that determines in what order a script is within a stack of scripts.

`direction` (direction):
  `ly:script-interface::calc-direction`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`font-encoding` (symbol):
  `'fetaNumber`

  The font encoding is the broadest category for selecting a font. Options include: `fetaMusic`, `fetaNumber`, `TeX-text`, `TeX-math`, `fetaBraces`, `fetaDynamic`

`font-size` (number):
  `-5`

  The font size, compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Each step of 1 is approximately 12% larger, 6 steps are exactly a factor 2 larger. Fractional values are allowed.

This object supports the following interfaces: item-interface, self-alignment-interface, side-position-interface, text-interface, text-script-interface, font-interface, finger-interface, item-interface and grob-interface

#### Glissando

Glissando objects are created by: Glissando_engraver and Note_head_line_engraver

Standard settings:

`style` (symbol):
  `'line`

  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.

`gap` (dimension, in staff space):
  `0.5`

  Size of a gap in a variable symbol.

`zigzag-width` (dimension, in staff space):
  `0.75`

  The width of one zigzag-squiggle. This number will be adjusted slightly so that the glissando line can be constructed from a whole number of squiggles.

`breakable` (boolean):
  `#t`

  Can this object appear at a line break, like clefs and bar lines?

`X-extent` (pair of numbers):
  `#f`

  Hard coded extent in X direction.

`Y-extent` (pair of numbers):
  `#f`

  See `X-extent`.

`after-line-breaking` (boolean):
  `ly:line-spanner::after-line-breaking`

  Dummy property, used to trigger callback for after-line-breaking

This object supports the following interfaces: line-spanner-interface, line-interface, spanner-interface and grob-interface

#### GridLine

GridLine objects are created by: Grid_line_span_engraver

Standard settings:

`X-extent` (pair of numbers):
  `ly:grid-line-interface::width`

  Hard coded extent in X direction.

`self-alignment-X` (number):
  `0`

  Specify alignment of an object. The value -1 means left aligned, 0 centered, and 1 right-aligned in X direction. Values in between may also be specified.

`X-offset` (number):
  `#<simple-closure (#<primitive-generic +> #<simple-closure (#<primitive-procedure ly:self-alignment-interface::centered-on-x-parent>) > #<simple-closure (#<primitive-procedure ly:self-alignment-interface::x-aligned-on-self>) >) >`

  The horizontal amount that this object is moved relative to its X-parent

`layer` (number):
  `0`

  The output layer [0..2]: layers define the order of printing objects. Objects in lower layers are overprinted by objects in higher layers.

This object supports the following interfaces: grid-line-interface, self-alignment-interface, item-interface and grob-interface

#### GridPoint

GridPoint objects are created by: Grid_point_engraver

Standard settings:

`X-extent` (pair of numbers):
  `'(0 . 0)`

  Hard coded extent in X direction.

`Y-extent` (pair of numbers):
  `'(0 . 0)`

  See `X-extent`.

This object supports the following interfaces: grid-point-interface, item-interface and grob-interface

#### Hairpin

Hairpin objects are created by: Dynamic_engraver

Standard settings:

`springs-and-rods` (boolean):
  `ly:spanner::set-spacing-rods`

  Dummy variable for triggering spacing routines.

`after-line-breaking` (boolean):
  `ly:hairpin::after-line-breaking`

  Dummy property, used to trigger callback for after-line-breaking

`thickness` (number):
  `1.0`

  Bar line thickness, measured in `line-thickness`.

`height` (dimension, in staff space):
  `0.6666`

  Height of an object in staff-space.

`minimum-length` (dimension, in staff space):
  `2.0`

  Try to make a spanner at least this long. This requires an appropriate callback for the `springs-and-rods` property.

`bound-padding` (number):
  `1.0`

  The amount of padding to insert around spanner bounds.

`self-alignment-Y` (number):
  `0`

  like `self-alignment-X` but for Y axis.

`Y-offset` (number):
  `ly:self-alignment-interface::y-aligned-on-self`

  The vertical amount that this object is moved relative to its Y-parent

This object supports the following interfaces: spanner-interface, dynamic-interface, self-alignment-interface, line-interface, hairpin-interface, spanner-interface and grob-interface

#### HorizontalBracket

HorizontalBracket objects are created by: Horizontal_bracket_engraver

Standard settings:

`thickness` (number):
  `1.0`

  Bar line thickness, measured in `line-thickness`.

`Y-offset` (number):
  `ly:side-position-interface::y-aligned-side`

  The vertical amount that this object is moved relative to its Y-parent

`padding` (dimension, in staff space):
  `0.2`

  Add this much extra space between objects that are next to each other.

`staff-padding` (dimension, in staff space):
  `0.2`

  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.

`direction` (direction):
  `-1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`side-axis` (number):
  `1`

  Is this object horizontally or vertically next to another object?

`bracket-flare` (pair of numbers):
  `'(0.5 . 0.5)`

  A pair of numbers specifying how much edges of brackets should slant outward. Value 0.0 means straight edges

This object supports the following interfaces: spanner-interface, line-interface, side-position-interface, horizontal-bracket-interface, spanner-interface and grob-interface

#### InstrumentName

InstrumentName objects are created by: Instrument_name_engraver

Standard settings:

`padding` (dimension, in staff space):
  `0.3`

  Add this much extra space between objects that are next to each other.

`X-offset` (number):
  `ly:side-position-interface::x-aligned-side`

  The horizontal amount that this object is moved relative to its X-parent

`direction` (direction):
  `-1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`self-alignment-Y` (number):
  `0`

  like `self-alignment-X` but for Y axis.

This object supports the following interfaces: font-interface, side-position-interface, system-start-text-interface, spanner-interface and grob-interface

#### KeyCancellation

KeyCancellation objects are created by: none

Standard settings:

`space-alist` (list):
  `'((time-signature extra-space . 1.25) (staff-bar extra-space . 0.6) (key-signature extra-space . 0.5) (right-edge extra-space . 0.5) (first-note fixed-space . 2.5))`

  A table that specifies distances between prefatory items, like clef and time-signature. The format is an alist of spacing tuples: `(`break-align-symbol type`.` distance`)`, where type can be the symbols `minimum-space` or `extra-space`.

`Y-offset` (number):
  `ly:staff-symbol-referencer::callback`

  The vertical amount that this object is moved relative to its Y-parent

`break-align-symbol` (symbol):
  `'key-cancellation`

  This key is used for aligning and spacing breakable items.

`break-visibility` (vector):
  `#(#t #t #f)`

  A vector of 3 booleans, #(end-of-line unbroken begin-of-line). #t means visible, #f means killed.

`breakable` (boolean):
  `#t`

  Can this object appear at a line break, like clefs and bar lines?

This object supports the following interfaces: break-aligned-interface, font-interface, key-signature-interface, item-interface and grob-interface

#### KeySignature

KeySignature objects are created by: Key_engraver

Standard settings:

`space-alist` (list):
  `'((time-signature extra-space . 1.15) (staff-bar extra-space . 1.1) (right-edge extra-space . 0.5) (first-note fixed-space . 2.5))`

  A table that specifies distances between prefatory items, like clef and time-signature. The format is an alist of spacing tuples: `(`break-align-symbol type`.` distance`)`, where type can be the symbols `minimum-space` or `extra-space`.

`Y-offset` (number):
  `ly:staff-symbol-referencer::callback`

  The vertical amount that this object is moved relative to its Y-parent

`break-align-symbol` (symbol):
  `'key-signature`

  This key is used for aligning and spacing breakable items.

`break-visibility` (vector):
  `#(#f #f #t)`

  A vector of 3 booleans, #(end-of-line unbroken begin-of-line). #t means visible, #f means killed.

`breakable` (boolean):
  `#t`

  Can this object appear at a line break, like clefs and bar lines?

This object supports the following interfaces: break-aligned-interface, font-interface, key-signature-interface, item-interface and grob-interface

#### LaissezVibrerTie

LaissezVibrerTie objects are created by: Laissez_vibrer_engraver

Standard settings:

`control-points` (list):
  `ly:semi-tie::calc-control-points`

  List of offsets (number-pairs) that form control points for the tie/slur/bracket shape. For beziers, this should list the control points of a 3rd order bezier curve.

`direction` (direction):
  `ly:semi-tie::calc-direction`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`thickness` (number):
  `1.0`

  Bar line thickness, measured in `line-thickness`.

This object supports the following interfaces: semi-tie-interface, item-interface and grob-interface

#### LaissezVibrerTieColumn

LaissezVibrerTieColumn objects are created by: Laissez_vibrer_engraver

Standard settings:

`X-extent` (pair of numbers):
  `#f`

  Hard coded extent in X direction.

`Y-extent` (pair of numbers):
  `#f`

  See `X-extent`.

`head-direction` (direction):
  `-1`

  Are the note heads left or right in a semitie?

This object supports the following interfaces: semi-tie-column-interface, item-interface and grob-interface

#### LedgerLineSpanner

LedgerLineSpanner objects are created by: Ledger_line_engraver

Standard settings:

`springs-and-rods` (boolean):
  `ly:ledger-line-spanner::set-spacing-rods`

  Dummy variable for triggering spacing routines.

`X-extent` (pair of numbers):
  `#f`

  Hard coded extent in X direction.

`Y-extent` (pair of numbers):
  `#f`

  See `X-extent`.

`minimum-length-fraction` (number):
  `0.25`

  Minimum length of ledger line as fraction of note head size.

`length-fraction` (number):
  `0.25`

  Multiplier for lengths. Used for determining ledger lines and stem lengths.

`layer` (number):
  `0`

  The output layer [0..2]: layers define the order of printing objects. Objects in lower layers are overprinted by objects in higher layers.

This object supports the following interfaces: ledger-line-interface, spanner-interface and grob-interface

#### LeftEdge

LeftEdge objects are created by: Break_align_engraver

Standard settings:

`break-align-symbol` (symbol):
  `'left-edge`

  This key is used for aligning and spacing breakable items.

`X-extent` (pair of numbers):
  `'(0 . 0)`

  Hard coded extent in X direction.

`breakable` (boolean):
  `#t`

  Can this object appear at a line break, like clefs and bar lines?

`break-visibility` (vector):
  `#(#t #f #t)`

  A vector of 3 booleans, #(end-of-line unbroken begin-of-line). #t means visible, #f means killed.

`space-alist` (list):
  `'((custos extra-space . 0.0) (ambitus extra-space . 2.0) (time-signature extra-space . 1.0) (staff-bar extra-space . 0.0) (breathing-sign minimum-space . 0.0) (clef extra-space . 0.8) (first-note fixed-space . 2.0) (right-edge extra-space . 0.0) (key-signature extra-space . 0.0) (key-cancellation extra-space . 0.0))`

  A table that specifies distances between prefatory items, like clef and time-signature. The format is an alist of spacing tuples: `(`break-align-symbol type`.` distance`)`, where type can be the symbols `minimum-space` or `extra-space`.

This object supports the following interfaces: break-aligned-interface, item-interface and grob-interface

#### LigatureBracket

LigatureBracket objects are created by: none

Standard settings:

`padding` (dimension, in staff space):
  `2.0`

  Add this much extra space between objects that are next to each other.

`thickness` (number):
  `1.6`

  Bar line thickness, measured in `line-thickness`.

`edge-height` (pair):
  `'(0.7 . 0.7)`

  A pair of number specifying the heights of the vertical edges '(left-height . right-height).

`shorten-pair` (pair of numbers):
  `'(-0.2 . -0.2)`

  The lengths to shorten a text-spanner on both sides, for example a pedal bracket

`direction` (direction):
  `1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`positions` (pair):
  `ly:tuplet-bracket::calc-positions`

  Pair of staff coordinates `(`left`.` right`)`, where both left and right are in the staff-space unit of the current staff.

`staff-padding` (dimension, in staff space):
  `0.25`

  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.

`connect-to-neighbor` (pair):
  `ly:tuplet-bracket::calc-connect-to-neighbors`

  Pair of booleans, indicating whether this grob looks as a continued break.

`control-points` (list):
  `ly:tuplet-bracket::calc-control-points`

  List of offsets (number-pairs) that form control points for the tie/slur/bracket shape. For beziers, this should list the control points of a 3rd order bezier curve.

This object supports the following interfaces: tuplet-bracket-interface, line-interface, spanner-interface and grob-interface

#### LyricExtender

LyricExtender objects are created by: Extender_engraver

Standard settings:

`thickness` (number):
  `0.8`

  Bar line thickness, measured in `line-thickness`.

`minimum-length` (dimension, in staff space):
  `1.5`

  Try to make a spanner at least this long. This requires an appropriate callback for the `springs-and-rods` property.

`Y-extent` (pair of numbers):
  `'(0 . 0)`

  See `X-extent`.

This object supports the following interfaces: lyric-extender-interface, lyric-interface, spanner-interface and grob-interface

#### LyricHyphen

LyricHyphen objects are created by: Hyphen_engraver

Standard settings:

`thickness` (number):
  `1.3`

  Bar line thickness, measured in `line-thickness`.

`height` (dimension, in staff space):
  `0.42`

  Height of an object in staff-space.

`dash-period` (number):
  `10.0`

  the length of one dash + white space. If negative, no line is drawn at all.

`length` (dimension, in staff space):
  `0.66`

  User override for the stem length of unbeamed stems.

`minimum-length` (dimension, in staff space):
  `0.3`

  Try to make a spanner at least this long. This requires an appropriate callback for the `springs-and-rods` property.

`minimum-distance` (dimension, in staff space):
  `0.1`

  Minimum distance between rest and notes or beam.

`padding` (dimension, in staff space):
  `0.07`

  Add this much extra space between objects that are next to each other.

`springs-and-rods` (boolean):
  `ly:hyphen-spanner::set-spacing-rods`

  Dummy variable for triggering spacing routines.

`Y-extent` (pair of numbers):
  `'(0 . 0)`

  See `X-extent`.

This object supports the following interfaces: spanner-interface, lyric-hyphen-interface, font-interface, lyric-interface, spanner-interface and grob-interface

#### LyricSpace

LyricSpace objects are created by: Hyphen_engraver

Standard settings:

`minimum-distance` (dimension, in staff space):
  `0.45`

  Minimum distance between rest and notes or beam.

`springs-and-rods` (boolean):
  `ly:hyphen-spanner::set-spacing-rods`

  Dummy variable for triggering spacing routines.

`padding` (dimension, in staff space):
  `0.0`

  Add this much extra space between objects that are next to each other.

`Y-extent` (pair of numbers):
  `#f`

  See `X-extent`.

`X-extent` (pair of numbers):
  `#f`

  Hard coded extent in X direction.

This object supports the following interfaces: spacing-interface, lyric-hyphen-interface, spanner-interface, spanner-interface and grob-interface

#### LyricText

LyricText objects are created by: Lyric_engraver

Standard settings:

`X-offset` (number):
  `ly:self-alignment-interface::aligned-on-x-parent`

  The horizontal amount that this object is moved relative to its X-parent

`self-alignment-X` (number):
  `0`

  Specify alignment of an object. The value -1 means left aligned, 0 centered, and 1 right-aligned in X direction. Values in between may also be specified.

`word-space` (dimension, in staff space):
  `0.6`

  space to insert between words in texts.

`font-series` (symbol):
  `'bold-narrow`

  Select the series of a font. Choices include `medium`, `bold`, `bold-narrow`, etc.

`font-size` (number):
  `1.0`

  The font size, compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Each step of 1 is approximately 12% larger, 6 steps are exactly a factor 2 larger. Fractional values are allowed.

This object supports the following interfaces: font-interface, text-interface, self-alignment-interface, lyric-syllable-interface, rhythmic-grob-interface, item-interface and grob-interface

#### MeasureGrouping

MeasureGrouping objects are created by: Measure_grouping_engraver

Standard settings:

`Y-offset` (number):
  `ly:side-position-interface::y-aligned-side`

  The vertical amount that this object is moved relative to its Y-parent

`side-axis` (number):
  `1`

  Is this object horizontally or vertically next to another object?

`padding` (dimension, in staff space):
  `2`

  Add this much extra space between objects that are next to each other.

`direction` (direction):
  `1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`thickness` (number):
  `1`

  Bar line thickness, measured in `line-thickness`.

`height` (dimension, in staff space):
  `2.0`

  Height of an object in staff-space.

`staff-padding` (dimension, in staff space):
  `3`

  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.

This object supports the following interfaces: measure-grouping-interface, side-position-interface, spanner-interface and grob-interface

#### MelodyItem

MelodyItem objects are created by: Melody_engraver

Standard settings:

`neutral-direction` (direction):
  `-1`

  Which direction to take in the center of the staff.

This object supports the following interfaces: spacing-interface, melody-spanner-interface, item-interface and grob-interface

#### MensuralLigature

MensuralLigature objects are created by: Mensural_ligature_engraver

Standard settings:

`thickness` (number):
  `1.4`

  Bar line thickness, measured in `line-thickness`.

This object supports the following interfaces: font-interface, mensural-ligature-interface, spanner-interface and grob-interface

#### MetronomeMark

MetronomeMark objects are created by: Metronome_mark_engraver

Standard settings:

`Y-offset` (number):
  `ly:side-position-interface::y-aligned-side`

  The vertical amount that this object is moved relative to its Y-parent

`direction` (direction):
  `1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`padding` (dimension, in staff space):
  `0.8`

  Add this much extra space between objects that are next to each other.

`side-axis` (number):
  `1`

  Is this object horizontally or vertically next to another object?

This object supports the following interfaces: metronome-mark-interface, font-interface, side-position-interface, text-interface, item-interface and grob-interface

#### MultiMeasureRest

MultiMeasureRest objects are created by: Multi_measure_rest_engraver

Standard settings:

`springs-and-rods` (boolean):
  `ly:multi-measure-rest::set-spacing-rods`

  Dummy variable for triggering spacing routines.

`Y-offset` (number):
  `ly:staff-symbol-referencer::callback`

  The vertical amount that this object is moved relative to its Y-parent

`staff-position` (number):
  `0`

  Vertical position, measured in half staff spaces, counted from the middle line.

`expand-limit` (integer):
  `10`

  maximum number of measures expanded in church rests.

`thick-thickness` (number):
  `6.6`

  Bar line thickness, measured in `line-thickness`.

`hair-thickness` (number):
  `2.0`

  Thickness of the thin line in a bar line.

`padding` (dimension, in staff space):
  `1`

  Add this much extra space between objects that are next to each other.

This object supports the following interfaces: staff-symbol-referencer-interface, font-interface, rest-interface, multi-measure-interface, multi-measure-rest-interface, spanner-interface and grob-interface

#### MultiMeasureRestNumber

MultiMeasureRestNumber objects are created by: Multi_measure_rest_engraver

Standard settings:

`bound-padding` (number):
  `2.0`

  The amount of padding to insert around spanner bounds.

`springs-and-rods` (boolean):
  `ly:multi-measure-rest::set-text-rods`

  Dummy variable for triggering spacing routines.

`X-offset` (number):
  `#<simple-closure (#<primitive-generic +> #<simple-closure (#<primitive-procedure ly:self-alignment-interface::x-aligned-on-self>) > #<simple-closure (#<primitive-procedure ly:self-alignment-interface::x-centered-on-y-parent>) >) >`

  The horizontal amount that this object is moved relative to its X-parent

`Y-offset` (number):
  `ly:side-position-interface::y-aligned-side`

  The vertical amount that this object is moved relative to its Y-parent

`side-axis` (number):
  `1`

  Is this object horizontally or vertically next to another object?

`self-alignment-X` (number):
  `0`

  Specify alignment of an object. The value -1 means left aligned, 0 centered, and 1 right-aligned in X direction. Values in between may also be specified.

`direction` (direction):
  `1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`padding` (dimension, in staff space):
  `0.4`

  Add this much extra space between objects that are next to each other.

`staff-padding` (dimension, in staff space):
  `0.4`

  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.

`font-encoding` (symbol):
  `'fetaNumber`

  The font encoding is the broadest category for selecting a font. Options include: `fetaMusic`, `fetaNumber`, `TeX-text`, `TeX-math`, `fetaBraces`, `fetaDynamic`

This object supports the following interfaces: text-interface, font-interface, self-alignment-interface, multi-measure-interface, side-position-interface, spanner-interface and grob-interface

#### MultiMeasureRestText

MultiMeasureRestText objects are created by: Multi_measure_rest_engraver

Standard settings:

`X-offset` (number):
  `#<simple-closure (#<primitive-generic +> #<simple-closure (#<primitive-procedure ly:self-alignment-interface::x-centered-on-y-parent>) > #<simple-closure (#<primitive-procedure ly:self-alignment-interface::x-aligned-on-self>) >) >`

  The horizontal amount that this object is moved relative to its X-parent

`Y-offset` (number):
  `ly:side-position-interface::y-aligned-side`

  The vertical amount that this object is moved relative to its Y-parent

`self-alignment-X` (number):
  `0`

  Specify alignment of an object. The value -1 means left aligned, 0 centered, and 1 right-aligned in X direction. Values in between may also be specified.

`direction` (direction):
  `1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`padding` (dimension, in staff space):
  `0.2`

  Add this much extra space between objects that are next to each other.

`staff-padding` (dimension, in staff space):
  `0.25`

  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.

This object supports the following interfaces: text-interface, font-interface, self-alignment-interface, multi-measure-interface, side-position-interface, spanner-interface and grob-interface

#### NonMusicalPaperColumn

NonMusicalPaperColumn objects are created by: Paper_column_engraver

Standard settings:

`axes` (list):
  `'(0)`

  list of axis numbers. In the case of alignment grobs, this should contain only one number.

`before-line-breaking` (boolean):
  `ly:paper-column::before-line-breaking`

  Dummy property, used to trigger a callback function.

`X-extent` (pair of numbers):
  `ly:axis-group-interface::width`

  Hard coded extent in X direction.

`breakable` (boolean):
  `#t`

  Can this object appear at a line break, like clefs and bar lines?

This object supports the following interfaces: spaceable-grob-interface, axis-group-interface, paper-column-interface, paper-column-interface, item-interface and grob-interface

#### NoteCollision

NoteCollision objects are created by: Collision_engraver

Standard settings:

`axes` (list):
  `'(0 1)`

  list of axis numbers. In the case of alignment grobs, this should contain only one number.

`X-extent` (pair of numbers):
  `ly:axis-group-interface::width`

  Hard coded extent in X direction.

`Y-extent` (pair of numbers):
  `ly:axis-group-interface::height`

  See `X-extent`.

This object supports the following interfaces: axis-group-interface, note-collision-interface, item-interface and grob-interface

#### NoteColumn

NoteColumn objects are created by: Rhythmic_column_engraver

Standard settings:

`axes` (list):
  `'(0 1)`

  list of axis numbers. In the case of alignment grobs, this should contain only one number.

`X-extent` (pair of numbers):
  `ly:axis-group-interface::width`

  Hard coded extent in X direction.

`Y-extent` (pair of numbers):
  `ly:axis-group-interface::height`

  See `X-extent`.

This object supports the following interfaces: note-column-interface, axis-group-interface, item-interface and grob-interface

#### NoteHead

NoteHead objects are created by: Completion_heads_engraver, Drum_notes_engraver and Note_heads_engraver

Standard settings:

`stem-attachment` (pair of numbers):
  `ly:note-head::calc-stem-attachment`

  A (x . y) pair where the stem attaches to the notehead.

`Y-offset` (number):
  `ly:staff-symbol-referencer::callback`

  The vertical amount that this object is moved relative to its Y-parent

`X-offset` (number):
  `ly:note-head::stem-x-shift`

  The horizontal amount that this object is moved relative to its X-parent

This object supports the following interfaces: staff-symbol-referencer-interface, ledgered-interface, note-head-interface, font-interface, rhythmic-head-interface, rhythmic-grob-interface, item-interface and grob-interface

#### NoteName

NoteName objects are created by: Note_name_engraver

Standard settings:

This object supports the following interfaces: font-interface, text-interface, note-name-interface, item-interface and grob-interface

#### NoteSpacing

NoteSpacing objects are created by: Rhythmic_column_engraver

Standard settings:

`stem-spacing-correction` (number):
  `0.5`

  Optical correction amount for stems that are placed in tight configurations. For opposite directions, this amount is the correction for two normal sized stems that overlap completely.

`same-direction-correction` (number):
  `0.25`

  Optical correction amount for stems that are placed in tight configurations. This amount is used for stems with the same direction to compensate for note-head to stem distance.

`knee-spacing-correction` (number):
  `1.0`

  Factor for the optical correction amount for kneed beams. Set between 0 for no correction and 1 for full correction.

This object supports the following interfaces: note-spacing-interface, spacing-interface, item-interface and grob-interface

#### OctavateEight

OctavateEight objects are created by: Clef_engraver

Standard settings:

`self-alignment-X` (number):
  `0`

  Specify alignment of an object. The value -1 means left aligned, 0 centered, and 1 right-aligned in X direction. Values in between may also be specified.

`break-visibility` (vector):
  `#(#f #f #t)`

  A vector of 3 booleans, #(end-of-line unbroken begin-of-line). #t means visible, #f means killed.

`X-offset` (number):
  `#<simple-closure (#<primitive-generic +> #<simple-closure (#<primitive-procedure ly:self-alignment-interface::x-aligned-on-self>) > #<simple-closure (#<primitive-procedure ly:self-alignment-interface::centered-on-x-parent>) >) >`

  The horizontal amount that this object is moved relative to its X-parent

`Y-offset` (number):
  `ly:side-position-interface::y-aligned-side`

  The vertical amount that this object is moved relative to its Y-parent

`Y-extent` (pair of numbers):
  `'(0 . 0)`

  See `X-extent`.

`font-shape` (symbol):
  `'italic`

  Select the shape of a font. Choices include `upright`, `italic`, `caps`.

`padding` (dimension, in staff space):
  `0.6`

  Add this much extra space between objects that are next to each other.

`staff-padding` (dimension, in staff space):
  `0.2`

  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.

`font-size` (number):
  `-4`

  The font size, compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Each step of 1 is approximately 12% larger, 6 steps are exactly a factor 2 larger. Fractional values are allowed.

This object supports the following interfaces: font-interface, side-position-interface, self-alignment-interface, text-interface, item-interface and grob-interface

#### OttavaBracket

OttavaBracket objects are created by: Ottava_spanner_engraver

Standard settings:

`Y-offset` (number):
  `ly:side-position-interface::y-aligned-side`

  The vertical amount that this object is moved relative to its Y-parent

`font-shape` (symbol):
  `'italic`

  Select the shape of a font. Choices include `upright`, `italic`, `caps`.

`shorten-pair` (pair of numbers):
  `'(0.0 . -0.6)`

  The lengths to shorten a text-spanner on both sides, for example a pedal bracket

`staff-padding` (dimension, in staff space):
  `1.0`

  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.

`padding` (dimension, in staff space):
  `0.5`

  Add this much extra space between objects that are next to each other.

`minimum-length` (dimension, in staff space):
  `1.0`

  Try to make a spanner at least this long. This requires an appropriate callback for the `springs-and-rods` property.

`dash-fraction` (number):
  `0.3`

  Size of the dashes, relative to dash-period. Should be between 0.0 (no line) and 1.0 (continuous line).

`edge-height` (pair):
  `'(0 . 1.2)`

  A pair of number specifying the heights of the vertical edges '(left-height . right-height).

`direction` (direction):
  `1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

This object supports the following interfaces: text-interface, font-interface, side-position-interface, line-interface, horizontal-bracket-interface, ottava-bracket-interface, spanner-interface and grob-interface

#### PaperColumn

PaperColumn objects are created by: Paper_column_engraver

Standard settings:

`axes` (list):
  `'(0)`

  list of axis numbers. In the case of alignment grobs, this should contain only one number.

`before-line-breaking` (boolean):
  `ly:paper-column::before-line-breaking`

  Dummy property, used to trigger a callback function.

`X-extent` (pair of numbers):
  `ly:axis-group-interface::width`

  Hard coded extent in X direction.

This object supports the following interfaces: spaceable-grob-interface, axis-group-interface, paper-column-interface, paper-column-interface, item-interface and grob-interface

#### ParenthesesItem

ParenthesesItem objects are created by: Parenthesis_engraver

Standard settings:

`font-size` (number):
  `-6`

  The font size, compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Each step of 1 is approximately 12% larger, 6 steps are exactly a factor 2 larger. Fractional values are allowed.

`padding` (dimension, in staff space):
  `0.2`

  Add this much extra space between objects that are next to each other.

This object supports the following interfaces: font-interface, parentheses-interface, item-interface and grob-interface

#### PercentRepeat

PercentRepeat objects are created by: Percent_repeat_engraver

Standard settings:

`springs-and-rods` (boolean):
  `ly:multi-measure-rest::set-spacing-rods`

  Dummy variable for triggering spacing routines.

`slope` (number):
  `1.0`

  The slope of this object.

`thickness` (number):
  `0.48`

  Bar line thickness, measured in `line-thickness`.

`font-encoding` (symbol):
  `'fetaMusic`

  The font encoding is the broadest category for selecting a font. Options include: `fetaMusic`, `fetaNumber`, `TeX-text`, `TeX-math`, `fetaBraces`, `fetaDynamic`

This object supports the following interfaces: percent-repeat-interface, font-interface, multi-measure-rest-interface, spanner-interface and grob-interface

#### PercentRepeatCounter

PercentRepeatCounter objects are created by: Percent_repeat_engraver

Standard settings:

`X-offset` (number):
  `#<simple-closure (#<primitive-generic +> #<simple-closure (#<primitive-procedure ly:self-alignment-interface::x-centered-on-y-parent>) > #<simple-closure (#<primitive-procedure ly:self-alignment-interface::x-aligned-on-self>) >) >`

  The horizontal amount that this object is moved relative to its X-parent

`Y-offset` (number):
  `ly:side-position-interface::y-aligned-side`

  The vertical amount that this object is moved relative to its Y-parent

`self-alignment-X` (number):
  `0`

  Specify alignment of an object. The value -1 means left aligned, 0 centered, and 1 right-aligned in X direction. Values in between may also be specified.

`direction` (direction):
  `1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`padding` (dimension, in staff space):
  `0.2`

  Add this much extra space between objects that are next to each other.

`staff-padding` (dimension, in staff space):
  `0.25`

  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.

`font-size` (number):
  `-2`

  The font size, compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Each step of 1 is approximately 12% larger, 6 steps are exactly a factor 2 larger. Fractional values are allowed.

`font-encoding` (symbol):
  `'fetaNumber`

  The font encoding is the broadest category for selecting a font. Options include: `fetaMusic`, `fetaNumber`, `TeX-text`, `TeX-math`, `fetaBraces`, `fetaDynamic`

This object supports the following interfaces: text-interface, font-interface, percent-repeat-interface, self-alignment-interface, side-position-interface, spanner-interface and grob-interface

#### PhrasingSlur

PhrasingSlur objects are created by: Phrasing_slur_engraver

Standard settings:

`control-points` (list):
  `ly:slur::calc-control-points`

  List of offsets (number-pairs) that form control points for the tie/slur/bracket shape. For beziers, this should list the control points of a 3rd order bezier curve.

`direction` (direction):
  `ly:slur::calc-direction`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`springs-and-rods` (boolean):
  `ly:spanner::set-spacing-rods`

  Dummy variable for triggering spacing routines.

`Y-extent` (pair of numbers):
  `ly:slur::height`

  See `X-extent`.

`thickness` (number):
  `1.1`

  Bar line thickness, measured in `line-thickness`.

`minimum-length` (dimension, in staff space):
  `1.5`

  Try to make a spanner at least this long. This requires an appropriate callback for the `springs-and-rods` property.

`height-limit` (dimension, in staff space):
  `2.0`

  Maximum slur height: the longer the slur, the closer it is to this height.

`ratio` (number):
  `0.333`

  Parameter for slur shape. The higher this number, the quicker the slur attains it `height-limit`.

This object supports the following interfaces: slur-interface, spanner-interface and grob-interface

#### PianoPedalBracket

PianoPedalBracket objects are created by: none

Standard settings:

`style` (symbol):
  `'line`

  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.

`bound-padding` (number):
  `1.0`

  The amount of padding to insert around spanner bounds.

`direction` (direction):
  `-1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`bracket-flare` (pair of numbers):
  `'(0.5 . 0.5)`

  A pair of numbers specifying how much edges of brackets should slant outward. Value 0.0 means straight edges

`edge-height` (pair):
  `'(1.0 . 1.0)`

  A pair of number specifying the heights of the vertical edges '(left-height . right-height).

`shorten-pair` (pair of numbers):
  `'(0.0 . 0.0)`

  The lengths to shorten a text-spanner on both sides, for example a pedal bracket

`thickness` (number):
  `1.0`

  Bar line thickness, measured in `line-thickness`.

This object supports the following interfaces: piano-pedal-bracket-interface, piano-pedal-interface, line-interface, spanner-interface and grob-interface

#### RehearsalMark

RehearsalMark objects are created by: Mark_engraver

Standard settings:

`X-offset` (number):
  `#<simple-closure (#<primitive-generic +> #<simple-closure (#<primitive-procedure ly:break-alignment-align-interface::self-align-callback>) > #<simple-closure (#<primitive-procedure ly:self-alignment-interface::x-aligned-on-self>) >) >`

  The horizontal amount that this object is moved relative to its X-parent

`Y-offset` (number):
  `ly:side-position-interface::y-aligned-side`

  The vertical amount that this object is moved relative to its Y-parent

`self-alignment-X` (number):
  `0`

  Specify alignment of an object. The value -1 means left aligned, 0 centered, and 1 right-aligned in X direction. Values in between may also be specified.

`direction` (direction):
  `1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`breakable` (boolean):
  `#t`

  Can this object appear at a line break, like clefs and bar lines?

`font-size` (number):
  `2`

  The font size, compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Each step of 1 is approximately 12% larger, 6 steps are exactly a factor 2 larger. Fractional values are allowed.

`baseline-skip` (dimension, in staff space):
  `2`

  Distance between base lines of multiple lines of text.

`break-visibility` (vector):
  `#(#f #t #t)`

  A vector of 3 booleans, #(end-of-line unbroken begin-of-line). #t means visible, #f means killed.

`break-align-symbol` (symbol):
  `'staff-bar`

  This key is used for aligning and spacing breakable items.

`padding` (dimension, in staff space):
  `0.8`

  Add this much extra space between objects that are next to each other.

This object supports the following interfaces: self-alignment-interface, mark-interface, font-interface, break-alignment-align-interface, side-position-interface, text-interface, item-interface and grob-interface

#### RepeatSlash

RepeatSlash objects are created by: Slash_repeat_engraver

Standard settings:

`thickness` (number):
  `0.48`

  Bar line thickness, measured in `line-thickness`.

`slope` (number):
  `1.7`

  The slope of this object.

This object supports the following interfaces: percent-repeat-interface, item-interface and grob-interface

#### RepeatTie

RepeatTie objects are created by: Repeat_tie_engraver

Standard settings:

`control-points` (list):
  `ly:semi-tie::calc-control-points`

  List of offsets (number-pairs) that form control points for the tie/slur/bracket shape. For beziers, this should list the control points of a 3rd order bezier curve.

`direction` (direction):
  `ly:semi-tie::calc-direction`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`thickness` (number):
  `1.0`

  Bar line thickness, measured in `line-thickness`.

This object supports the following interfaces: semi-tie-interface, item-interface and grob-interface

#### RepeatTieColumn

RepeatTieColumn objects are created by: Repeat_tie_engraver

Standard settings:

`X-extent` (pair of numbers):
  `#f`

  Hard coded extent in X direction.

`Y-extent` (pair of numbers):
  `#f`

  See `X-extent`.

`head-direction` (direction):
  `1`

  Are the note heads left or right in a semitie?

This object supports the following interfaces: semi-tie-column-interface, item-interface and grob-interface

#### Rest

Rest objects are created by: Rest_engraver

Standard settings:

`X-extent` (pair of numbers):
  `ly:rest::width`

  Hard coded extent in X direction.

`Y-extent` (pair of numbers):
  `ly:rest::height`

  See `X-extent`.

`Y-offset` (number):
  `ly:rest::y-offset-callback`

  The vertical amount that this object is moved relative to its Y-parent

`minimum-distance` (dimension, in staff space):
  `0.25`

  Minimum distance between rest and notes or beam.

This object supports the following interfaces: rest-interface, staff-symbol-referencer-interface, rhythmic-grob-interface, rhythmic-head-interface, font-interface, item-interface and grob-interface

#### RestCollision

RestCollision objects are created by: Rest_collision_engraver

Standard settings:

`minimum-distance` (dimension, in staff space):
  `0.75`

  Minimum distance between rest and notes or beam.

This object supports the following interfaces: rest-collision-interface, item-interface and grob-interface

#### Script

Script objects are created by: Drum_notes_engraver and Script_engraver

Standard settings:

`padding` (dimension, in staff space):
  `0.2`

  Add this much extra space between objects that are next to each other.

`staff-padding` (dimension, in staff space):
  `0.25`

  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.

`X-offset` (number):
  `ly:self-alignment-interface::centered-on-x-parent`

  The horizontal amount that this object is moved relative to its X-parent

`direction` (direction):
  `ly:script-interface::calc-direction`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`font-encoding` (symbol):
  `'fetaMusic`

  The font encoding is the broadest category for selecting a font. Options include: `fetaMusic`, `fetaNumber`, `TeX-text`, `TeX-math`, `fetaBraces`, `fetaDynamic`

This object supports the following interfaces: font-interface, side-position-interface, script-interface, item-interface and grob-interface

#### ScriptColumn

ScriptColumn objects are created by: Script_column_engraver

Standard settings:

`before-line-breaking` (boolean):
  `ly:script-column::before-line-breaking`

  Dummy property, used to trigger a callback function.

This object supports the following interfaces: script-column-interface, item-interface and grob-interface

#### SeparatingGroupSpanner

SeparatingGroupSpanner objects are created by: Separating_line_group_engraver

Standard settings:

`springs-and-rods` (boolean):
  `ly:separating-group-spanner::set-spacing-rods`

  Dummy variable for triggering spacing routines.

This object supports the following interfaces: separation-spanner-interface, spacing-interface, only-prebreak-interface, spanner-interface and grob-interface

#### SeparationItem

SeparationItem objects are created by: Separating_line_group_engraver

Standard settings:

`X-extent` (pair of numbers):
  `#f`

  Hard coded extent in X direction.

`Y-extent` (pair of numbers):
  `#f`

  See `X-extent`.

This object supports the following interfaces: separation-item-interface, spacing-interface, item-interface and grob-interface

#### Slur

Slur objects are created by: Slur_engraver

Standard settings:

`control-points` (list):
  `ly:slur::calc-control-points`

  List of offsets (number-pairs) that form control points for the tie/slur/bracket shape. For beziers, this should list the control points of a 3rd order bezier curve.

`direction` (direction):
  `ly:slur::calc-direction`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`springs-and-rods` (boolean):
  `ly:spanner::set-spacing-rods`

  Dummy variable for triggering spacing routines.

`Y-extent` (pair of numbers):
  `ly:slur::height`

  See `X-extent`.

`thickness` (number):
  `1.2`

  Bar line thickness, measured in `line-thickness`.

`line-thickness` (number):
  `0.8`

  The thickness of the tie/slur contour.

`minimum-length` (dimension, in staff space):
  `1.5`

  Try to make a spanner at least this long. This requires an appropriate callback for the `springs-and-rods` property.

`height-limit` (dimension, in staff space):
  `2.0`

  Maximum slur height: the longer the slur, the closer it is to this height.

`ratio` (number):
  `0.25`

  Parameter for slur shape. The higher this number, the quicker the slur attains it `height-limit`.

`avoid-slur` (symbol):
  `'inside`

  Method of handling slur collisions. Choices are `around`, `inside`, `outside`. If unset, script and slur ignore eachother.

This object supports the following interfaces: slur-interface, spanner-interface and grob-interface

#### SostenutoPedal

SostenutoPedal objects are created by: Piano_pedal_engraver

Standard settings:

`direction` (direction):
  `1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`X-offset` (number):
  `ly:self-alignment-interface::x-aligned-on-self`

  The horizontal amount that this object is moved relative to its X-parent

`no-spacing-rods` (boolean):
  `#t`

  Items with this property do not cause spacing constraints.

`padding` (dimension, in staff space):
  `0.0`

  Add this much extra space between objects that are next to each other.

`font-shape` (symbol):
  `'italic`

  Select the shape of a font. Choices include `upright`, `italic`, `caps`.

`self-alignment-X` (number):
  `0`

  Specify alignment of an object. The value -1 means left aligned, 0 centered, and 1 right-aligned in X direction. Values in between may also be specified.

This object supports the following interfaces: font-interface, self-alignment-interface, text-interface, item-interface and grob-interface

#### SostenutoPedalLineSpanner

SostenutoPedalLineSpanner objects are created by: Piano_pedal_engraver

Standard settings:

`axes` (list):
  `'(1)`

  list of axis numbers. In the case of alignment grobs, this should contain only one number.

`Y-extent` (pair of numbers):
  `ly:axis-group-interface::height`

  See `X-extent`.

`Y-offset` (number):
  `ly:side-position-interface::y-aligned-side`

  The vertical amount that this object is moved relative to its Y-parent

`side-axis` (number):
  `1`

  Is this object horizontally or vertically next to another object?

`staff-padding` (dimension, in staff space):
  `1.0`

  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.

`padding` (dimension, in staff space):
  `1.2`

  Add this much extra space between objects that are next to each other.

`minimum-space` (dimension, in staff space):
  `1.0`

  Minimum distance that the victim should move (after padding).

`direction` (direction):
  `-1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

This object supports the following interfaces: side-position-interface, axis-group-interface, piano-pedal-interface, spanner-interface and grob-interface

#### SpacingSpanner

SpacingSpanner objects are created by: Spacing_engraver

Standard settings:

`springs-and-rods` (boolean):
  `ly:spacing-spanner::set-springs`

  Dummy variable for triggering spacing routines.

`average-spacing-wishes` (boolean):
  `#t`

  If set, the spacing wishes are averaged over staves.

`grace-space-factor` (number):
  `0.6`

  Space grace notes at this fraction of the `spacing-increment`.

`shortest-duration-space` (dimension, in staff space):
  `2.0`

  Start with this much space for the shortest duration. This is expressed in `spacing-increment` as unit. See also spacing-spanner-interface.

`spacing-increment` (number):
  `1.2`

  Add this much space for a doubled duration. Typically, the width of a note head. See also spacing-spanner-interface.

`base-shortest-duration` (moment):
  `#<Mom 3/16>`

  Spacing is based on the shortest notes in a piece. Normally, pieces are spaced as if notes at least as short as this are present.

This object supports the following interfaces: spacing-spanner-interface, spacing-interface, spanner-interface and grob-interface

#### SpanBar

SpanBar objects are created by: Span_bar_engraver

Standard settings:

`break-align-symbol` (symbol):
  `'staff-bar`

  This key is used for aligning and spacing breakable items.

`Y-extent` (pair of numbers):
  `'()`

  See `X-extent`.

`layer` (number):
  `0`

  The output layer [0..2]: layers define the order of printing objects. Objects in lower layers are overprinted by objects in higher layers.

`breakable` (boolean):
  `#t`

  Can this object appear at a line break, like clefs and bar lines?

`bar-size` (dimension, in staff space):
  `ly:span-bar::calc-bar-size`

  size of a bar line.

`X-extent` (pair of numbers):
  `ly:span-bar::width`

  Hard coded extent in X direction.

`before-line-breaking` (boolean):
  `ly:span-bar::before-line-breaking`

  Dummy property, used to trigger a callback function.

`kern` (dimension, in staff space):
  `3.0`

  Amount of extra white space to add. For bar line, this is the amount of space after a thick line.

`thin-kern` (number):
  `3.0`

  The space after a hair-line in a bar line.

`hair-thickness` (number):
  `1.6`

  Thickness of the thin line in a bar line.

`thick-thickness` (number):
  `6.0`

  Bar line thickness, measured in `line-thickness`.

This object supports the following interfaces: bar-line-interface, font-interface, span-bar-interface, item-interface and grob-interface

#### StaffSpacing

StaffSpacing objects are created by: Separating_line_group_engraver

Standard settings:

`breakable` (boolean):
  `#t`

  Can this object appear at a line break, like clefs and bar lines?

`stem-spacing-correction` (number):
  `0.4`

  Optical correction amount for stems that are placed in tight configurations. For opposite directions, this amount is the correction for two normal sized stems that overlap completely.

This object supports the following interfaces: staff-spacing-interface, spacing-interface, item-interface and grob-interface

#### StaffSymbol

StaffSymbol objects are created by: Staff_symbol_engraver and Tab_staff_symbol_engraver

Standard settings:

`Y-extent` (pair of numbers):
  `ly:staff-symbol::height`

  See `X-extent`.

`line-count` (integer):
  `5`

  The number of staff lines.

`ledger-line-thickness` (pair of numbers):
  `'(1.0 . 0.1)`

  The thickness of ledger lines: it is the sum of 2 numbers. The first is the factor for line thickness, and the second for staff space. Both contributions are added.

`layer` (number):
  `0`

  The output layer [0..2]: layers define the order of printing objects. Objects in lower layers are overprinted by objects in higher layers.

This object supports the following interfaces: staff-symbol-interface, spanner-interface and grob-interface

#### StanzaNumber

StanzaNumber objects are created by: Stanza_number_engraver

Standard settings:

`font-series` (symbol):
  `'bold`

  Select the series of a font. Choices include `medium`, `bold`, `bold-narrow`, etc.

`padding` (dimension, in staff space):
  `1.0`

  Add this much extra space between objects that are next to each other.

`X-offset` (number):
  `ly:side-position-interface::x-aligned-side`

  The horizontal amount that this object is moved relative to its X-parent

`side-axis` (number):
  `0`

  Is this object horizontally or vertically next to another object?

`direction` (direction):
  `-1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

This object supports the following interfaces: font-interface, text-interface, stanza-number-interface, side-position-interface, item-interface and grob-interface

#### Stem

Stem objects are created by: Stem_engraver

Standard settings:

`direction` (direction):
  `ly:stem::calc-direction`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`default-direction` (direction):
  `ly:stem::calc-default-direction`

  Direction determined by note head positions.

`stem-end-position` (number):
  `ly:stem::calc-stem-end-position`

  Where does the stem end (the end is opposite to the support-head.

`neutral-direction` (direction):
  `-1`

  Which direction to take in the center of the staff.

`X-extent` (pair of numbers):
  `ly:stem::width`

  Hard coded extent in X direction.

`Y-extent` (pair of numbers):
  `ly:stem::height`

  See `X-extent`.

`length` (dimension, in staff space):
  `ly:stem::calc-length`

  User override for the stem length of unbeamed stems.

`thickness` (number):
  `1.3`

  Bar line thickness, measured in `line-thickness`.

`X-offset` (number):
  `ly:stem::offset-callback`

  The horizontal amount that this object is moved relative to its X-parent

`Y-offset` (number):
  `ly:staff-symbol-referencer::callback`

  The vertical amount that this object is moved relative to its Y-parent

This object supports the following interfaces: font-interface, stem-interface, item-interface and grob-interface

#### StemTremolo

StemTremolo objects are created by: Stem_engraver

Standard settings:

`Y-extent` (pair of numbers):
  `ly:stem-tremolo::height`

  See `X-extent`.

`X-extent` (pair of numbers):
  `#f`

  Hard coded extent in X direction.

`slope` (number):
  `ly:stem-tremolo::calc-slope`

  The slope of this object.

`beam-width` (dimension, in staff space):
  `ly:stem-tremolo::calc-width`

  width of the tremolo sign.

`style` (symbol):
  `ly:stem-tremolo::calc-style`

  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.

`beam-thickness` (dimension, in staff space):
  `0.48`

  thickness, measured in staff-space.

This object supports the following interfaces: stem-tremolo-interface, item-interface and grob-interface

#### StringNumber

StringNumber objects are created by: none

Standard settings:

`padding` (dimension, in staff space):
  `0.5`

  Add this much extra space between objects that are next to each other.

`staff-padding` (dimension, in staff space):
  `0.5`

  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.

`self-alignment-X` (number):
  `0`

  Specify alignment of an object. The value -1 means left aligned, 0 centered, and 1 right-aligned in X direction. Values in between may also be specified.

`self-alignment-Y` (number):
  `0`

  like `self-alignment-X` but for Y axis.

`script-priority` (number):
  `100`

  A sorting key that determines in what order a script is within a stack of scripts.

`font-encoding` (symbol):
  `'fetaNumber`

  The font encoding is the broadest category for selecting a font. Options include: `fetaMusic`, `fetaNumber`, `TeX-text`, `TeX-math`, `fetaBraces`, `fetaDynamic`

`font-size` (number):
  `-5`

  The font size, compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Each step of 1 is approximately 12% larger, 6 steps are exactly a factor 2 larger. Fractional values are allowed.

This object supports the following interfaces: item-interface, self-alignment-interface, side-position-interface, text-interface, text-script-interface, font-interface, string-number-interface, item-interface and grob-interface

#### SustainPedal

SustainPedal objects are created by: Piano_pedal_engraver

Standard settings:

`no-spacing-rods` (boolean):
  `#t`

  Items with this property do not cause spacing constraints.

`self-alignment-X` (number):
  `0`

  Specify alignment of an object. The value -1 means left aligned, 0 centered, and 1 right-aligned in X direction. Values in between may also be specified.

`direction` (direction):
  `1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`padding` (dimension, in staff space):
  `0.0`

  Add this much extra space between objects that are next to each other.

`X-offset` (number):
  `ly:self-alignment-interface::x-aligned-on-self`

  The horizontal amount that this object is moved relative to its X-parent

This object supports the following interfaces: font-interface, self-alignment-interface, text-interface, line-spanner-interface, text-spanner-interface, piano-pedal-interface, item-interface and grob-interface

#### SustainPedalLineSpanner

SustainPedalLineSpanner objects are created by: Piano_pedal_engraver

Standard settings:

`axes` (list):
  `'(1)`

  list of axis numbers. In the case of alignment grobs, this should contain only one number.

`Y-extent` (pair of numbers):
  `ly:axis-group-interface::height`

  See `X-extent`.

`Y-offset` (number):
  `ly:side-position-interface::y-aligned-side`

  The vertical amount that this object is moved relative to its Y-parent

`side-axis` (number):
  `1`

  Is this object horizontally or vertically next to another object?

`padding` (dimension, in staff space):
  `1.2`

  Add this much extra space between objects that are next to each other.

`staff-padding` (dimension, in staff space):
  `1.2`

  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.

`minimum-space` (dimension, in staff space):
  `1.0`

  Minimum distance that the victim should move (after padding).

`direction` (direction):
  `-1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

This object supports the following interfaces: side-position-interface, axis-group-interface, piano-pedal-interface, spanner-interface and grob-interface

#### System

System objects are created by: none

Standard settings:

`axes` (list):
  `'(0 1)`

  list of axis numbers. In the case of alignment grobs, this should contain only one number.

`X-extent` (pair of numbers):
  `ly:axis-group-interface::width`

  Hard coded extent in X direction.

`Y-extent` (pair of numbers):
  `ly:axis-group-interface::height`

  See `X-extent`.

This object supports the following interfaces: axis-group-interface, system-interface, spanner-interface, system-interface and grob-interface

#### SystemStartBar

SystemStartBar objects are created by: System_start_delimiter_engraver

Standard settings:

`Y-extent` (pair of numbers):
  `#f`

  See `X-extent`.

`padding` (dimension, in staff space):
  `-0.1`

  Add this much extra space between objects that are next to each other.

`X-offset` (number):
  `ly:side-position-interface::x-aligned-side`

  The horizontal amount that this object is moved relative to its X-parent

`direction` (direction):
  `-1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`style` (symbol):
  `'bar-line`

  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.

`thickness` (number):
  `1.6`

  Bar line thickness, measured in `line-thickness`.

This object supports the following interfaces: system-start-delimiter-interface, side-position-interface, spanner-interface and grob-interface

#### SystemStartBrace

SystemStartBrace objects are created by: System_start_delimiter_engraver

Standard settings:

`style` (symbol):
  `'brace`

  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.

`padding` (dimension, in staff space):
  `0.3`

  Add this much extra space between objects that are next to each other.

`collapse-height` (dimension, in staff space):
  `5.0`

  Minimum height of system start delimiter. If equal or smaller, the bracket is removed.

`X-offset` (number):
  `ly:side-position-interface::x-aligned-side`

  The horizontal amount that this object is moved relative to its X-parent

`direction` (direction):
  `-1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`font-encoding` (symbol):
  `'fetaBraces`

  The font encoding is the broadest category for selecting a font. Options include: `fetaMusic`, `fetaNumber`, `TeX-text`, `TeX-math`, `fetaBraces`, `fetaDynamic`

`Y-extent` (pair of numbers):
  `#f`

  See `X-extent`.

This object supports the following interfaces: font-interface, side-position-interface, system-start-delimiter-interface, spanner-interface and grob-interface

#### SystemStartBracket

SystemStartBracket objects are created by: System_start_delimiter_engraver

Standard settings:

`Y-extent` (pair of numbers):
  `#f`

  See `X-extent`.

`padding` (dimension, in staff space):
  `0.8`

  Add this much extra space between objects that are next to each other.

`X-offset` (number):
  `ly:side-position-interface::x-aligned-side`

  The horizontal amount that this object is moved relative to its X-parent

`direction` (direction):
  `-1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`style` (symbol):
  `'bracket`

  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.

`collapse-height` (dimension, in staff space):
  `5.0`

  Minimum height of system start delimiter. If equal or smaller, the bracket is removed.

`thickness` (number):
  `0.45`

  Bar line thickness, measured in `line-thickness`.

This object supports the following interfaces: system-start-delimiter-interface, side-position-interface, font-interface, spanner-interface and grob-interface

#### SystemStartSquare

SystemStartSquare objects are created by: System_start_delimiter_engraver

Standard settings:

`Y-extent` (pair of numbers):
  `#f`

  See `X-extent`.

`X-offset` (number):
  `ly:side-position-interface::x-aligned-side`

  The horizontal amount that this object is moved relative to its X-parent

`direction` (direction):
  `-1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`style` (symbol):
  `'line-bracket`

  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.

`thickness` (number):
  `1.0`

  Bar line thickness, measured in `line-thickness`.

This object supports the following interfaces: system-start-delimiter-interface, side-position-interface, font-interface, spanner-interface and grob-interface

#### TabNoteHead

TabNoteHead objects are created by: Tab_note_heads_engraver

Standard settings:

`Y-offset` (number):
  `ly:staff-symbol-referencer::callback`

  The vertical amount that this object is moved relative to its Y-parent

`font-size` (number):
  `-2`

  The font size, compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Each step of 1 is approximately 12% larger, 6 steps are exactly a factor 2 larger. Fractional values are allowed.

`stem-attachment` (pair of numbers):
  `'(0.0 . 1.35)`

  A (x . y) pair where the stem attaches to the notehead.

`font-series` (symbol):
  `'bold`

  Select the series of a font. Choices include `medium`, `bold`, `bold-narrow`, etc.

This object supports the following interfaces: text-interface, staff-symbol-referencer-interface, note-head-interface, rhythmic-grob-interface, font-interface, rhythmic-head-interface, item-interface and grob-interface

#### TextScript

TextScript objects are created by: Text_engraver

Standard settings:

`no-spacing-rods` (boolean):
  `#t`

  Items with this property do not cause spacing constraints.

`X-offset` (number):
  `ly:self-alignment-interface::x-aligned-on-self`

  The horizontal amount that this object is moved relative to its X-parent

`direction` (direction):
  `-1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`padding` (dimension, in staff space):
  `0.5`

  Add this much extra space between objects that are next to each other.

`staff-padding` (dimension, in staff space):
  `0.5`

  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.

`direction` (direction):
  `-1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`avoid-slur` (symbol):
  `'around`

  Method of handling slur collisions. Choices are `around`, `inside`, `outside`. If unset, script and slur ignore eachother.

`slur-padding` (number):
  `0.5`

  Extra distance between slur and script.

`script-priority` (number):
  `200`

  A sorting key that determines in what order a script is within a stack of scripts.

This object supports the following interfaces: font-interface, side-position-interface, text-interface, text-script-interface, item-interface and grob-interface

#### TextSpanner

TextSpanner objects are created by: Dynamic_engraver and Text_spanner_engraver

Standard settings:

`Y-offset` (number):
  `ly:side-position-interface::y-aligned-side`

  The vertical amount that this object is moved relative to its Y-parent

`font-shape` (symbol):
  `'italic`

  Select the shape of a font. Choices include `upright`, `italic`, `caps`.

`style` (symbol):
  `'dashed-line`

  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.

`staff-padding` (dimension, in staff space):
  `0.8`

  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.

`dash-fraction` (number):
  `0.2`

  Size of the dashes, relative to dash-period. Should be between 0.0 (no line) and 1.0 (continuous line).

`dash-period` (number):
  `3.0`

  the length of one dash + white space. If negative, no line is drawn at all.

`side-axis` (number):
  `1`

  Is this object horizontally or vertically next to another object?

`direction` (direction):
  `1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

This object supports the following interfaces: font-interface, side-position-interface, line-spanner-interface, text-spanner-interface, spanner-interface and grob-interface

#### Tie

Tie objects are created by: Completion_heads_engraver and Tie_engraver

Standard settings:

`control-points` (list):
  `ly:tie::calc-control-points`

  List of offsets (number-pairs) that form control points for the tie/slur/bracket shape. For beziers, this should list the control points of a 3rd order bezier curve.

`avoid-slur` (symbol):
  `'inside`

  Method of handling slur collisions. Choices are `around`, `inside`, `outside`. If unset, script and slur ignore eachother.

`direction` (direction):
  `ly:tie::calc-direction`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`font-size` (number):
  `-6`

  The font size, compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Each step of 1 is approximately 12% larger, 6 steps are exactly a factor 2 larger. Fractional values are allowed.

`thickness` (number):
  `1.2`

  Bar line thickness, measured in `line-thickness`.

`line-thickness` (number):
  `0.8`

  The thickness of the tie/slur contour.

This object supports the following interfaces: tie-interface, spanner-interface and grob-interface

#### TieColumn

TieColumn objects are created by: Tie_engraver

Standard settings:

`before-line-breaking` (boolean):
  `ly:tie-column::before-line-breaking`

  Dummy property, used to trigger a callback function.

`X-extent` (pair of numbers):
  `#f`

  Hard coded extent in X direction.

`Y-extent` (pair of numbers):
  `#f`

  See `X-extent`.

This object supports the following interfaces: tie-column-interface, spanner-interface and grob-interface

#### TimeSignature

TimeSignature objects are created by: Time_signature_engraver

Standard settings:

`break-align-symbol` (symbol):
  `'time-signature`

  This key is used for aligning and spacing breakable items.

`break-visibility` (vector):
  `#(#t #t #t)`

  A vector of 3 booleans, #(end-of-line unbroken begin-of-line). #t means visible, #f means killed.

`space-alist` (list):
  `'((first-note fixed-space . 2.0) (right-edge extra-space . 0.5) (staff-bar minimum-space . 2.0))`

  A table that specifies distances between prefatory items, like clef and time-signature. The format is an alist of spacing tuples: `(`break-align-symbol type`.` distance`)`, where type can be the symbols `minimum-space` or `extra-space`.

`breakable` (boolean):
  `#t`

  Can this object appear at a line break, like clefs and bar lines?

`style` (symbol):
  `'C`

  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.

This object supports the following interfaces: font-interface, break-aligned-interface, time-signature-interface, item-interface and grob-interface

#### TrillPitchAccidental

TrillPitchAccidental objects are created by: Pitched_trill_engraver

Standard settings:

`X-offset` (number):
  `ly:side-position-interface::x-aligned-side`

  The horizontal amount that this object is moved relative to its X-parent

`padding` (dimension, in staff space):
  `0.2`

  Add this much extra space between objects that are next to each other.

`direction` (direction):
  `-1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`font-size` (number):
  `-4`

  The font size, compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Each step of 1 is approximately 12% larger, 6 steps are exactly a factor 2 larger. Fractional values are allowed.

`side-axis` (number):
  `0`

  Is this object horizontally or vertically next to another object?

This object supports the following interfaces: font-interface, side-position-interface, accidental-interface, item-interface, item-interface and grob-interface

#### TrillPitchGroup

TrillPitchGroup objects are created by: Pitched_trill_engraver

Standard settings:

`X-offset` (number):
  `ly:side-position-interface::x-aligned-side`

  The horizontal amount that this object is moved relative to its X-parent

`axes` (list):
  `'(0)`

  list of axis numbers. In the case of alignment grobs, this should contain only one number.

`font-size` (number):
  `-4`

  The font size, compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Each step of 1 is approximately 12% larger, 6 steps are exactly a factor 2 larger. Fractional values are allowed.

`direction` (direction):
  `1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`side-axis` (number):
  `0`

  Is this object horizontally or vertically next to another object?

`padding` (dimension, in staff space):
  `0.3`

  Add this much extra space between objects that are next to each other.

This object supports the following interfaces: axis-group-interface, accidental-interface, font-interface, rhythmic-head-interface, note-head-interface, side-position-interface, item-interface and grob-interface

#### TrillPitchHead

TrillPitchHead objects are created by: Pitched_trill_engraver

Standard settings:

`duration-log` (integer):
  `2`

  The 2-log of the note head duration, i.e. 0=whole note, 1 = half note, etc.

`Y-offset` (number):
  `ly:staff-symbol-referencer::callback`

  The vertical amount that this object is moved relative to its Y-parent

`font-size` (number):
  `-4`

  The font size, compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Each step of 1 is approximately 12% larger, 6 steps are exactly a factor 2 larger. Fractional values are allowed.

This object supports the following interfaces: staff-symbol-referencer-interface, ledgered-interface, pitched-trill-interface, font-interface, rhythmic-head-interface, item-interface, item-interface and grob-interface

#### TrillSpanner

TrillSpanner objects are created by: Trill_spanner_engraver

Standard settings:

`edge-text` (pair):
  `'((#<procedure musicglyph-markup (layout props glyph-name)> scripts.trill) . )`

  A pair specifying the texts to be set at the edges '(left-text . right-text).

`style` (symbol):
  `'trill`

  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.

`staff-padding` (dimension, in staff space):
  `1.0`

  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.

`padding` (dimension, in staff space):
  `0.5`

  Add this much extra space between objects that are next to each other.

`direction` (direction):
  `1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`Y-offset` (number):
  `ly:side-position-interface::y-aligned-side`

  The vertical amount that this object is moved relative to its Y-parent

`side-axis` (number):
  `1`

  Is this object horizontally or vertically next to another object?

This object supports the following interfaces: font-interface, side-position-interface, line-spanner-interface, text-spanner-interface, spanner-interface and grob-interface

#### TupletBracket

TupletBracket objects are created by: Ligature_bracket_engraver and Tuplet_engraver

Standard settings:

`padding` (dimension, in staff space):
  `1.1`

  Add this much extra space between objects that are next to each other.

`thickness` (number):
  `1.6`

  Bar line thickness, measured in `line-thickness`.

`edge-height` (pair):
  `'(0.7 . 0.7)`

  A pair of number specifying the heights of the vertical edges '(left-height . right-height).

`shorten-pair` (pair of numbers):
  `'(-0.2 . -0.2)`

  The lengths to shorten a text-spanner on both sides, for example a pedal bracket

`staff-padding` (dimension, in staff space):
  `0.25`

  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.

`direction` (direction):
  `ly:tuplet-bracket::calc-direction`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`positions` (pair):
  `ly:tuplet-bracket::calc-positions`

  Pair of staff coordinates `(`left`.` right`)`, where both left and right are in the staff-space unit of the current staff.

`connect-to-neighbor` (pair):
  `ly:tuplet-bracket::calc-connect-to-neighbors`

  Pair of booleans, indicating whether this grob looks as a continued break.

`control-points` (list):
  `ly:tuplet-bracket::calc-control-points`

  List of offsets (number-pairs) that form control points for the tie/slur/bracket shape. For beziers, this should list the control points of a 3rd order bezier curve.

This object supports the following interfaces: tuplet-bracket-interface, line-interface, spanner-interface and grob-interface

#### TupletNumber

TupletNumber objects are created by: Tuplet_engraver

Standard settings:

`font-shape` (symbol):
  `'italic`

  Select the shape of a font. Choices include `upright`, `italic`, `caps`.

`font-size` (number):
  `-2`

  The font size, compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Each step of 1 is approximately 12% larger, 6 steps are exactly a factor 2 larger. Fractional values are allowed.

`avoid-slur` (symbol):
  `'inside`

  Method of handling slur collisions. Choices are `around`, `inside`, `outside`. If unset, script and slur ignore eachother.

This object supports the following interfaces: font-interface, tuplet-number-interface, text-interface, spanner-interface and grob-interface

#### UnaCordaPedal

UnaCordaPedal objects are created by: Piano_pedal_engraver

Standard settings:

`font-shape` (symbol):
  `'italic`

  Select the shape of a font. Choices include `upright`, `italic`, `caps`.

`no-spacing-rods` (boolean):
  `#t`

  Items with this property do not cause spacing constraints.

`self-alignment-X` (number):
  `0`

  Specify alignment of an object. The value -1 means left aligned, 0 centered, and 1 right-aligned in X direction. Values in between may also be specified.

`direction` (direction):
  `1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`padding` (dimension, in staff space):
  `0.0`

  Add this much extra space between objects that are next to each other.

`X-offset` (number):
  `ly:self-alignment-interface::x-aligned-on-self`

  The horizontal amount that this object is moved relative to its X-parent

This object supports the following interfaces: font-interface, self-alignment-interface, text-interface, item-interface and grob-interface

#### UnaCordaPedalLineSpanner

UnaCordaPedalLineSpanner objects are created by: Piano_pedal_engraver

Standard settings:

`axes` (list):
  `'(1)`

  list of axis numbers. In the case of alignment grobs, this should contain only one number.

`Y-extent` (pair of numbers):
  `ly:axis-group-interface::height`

  See `X-extent`.

`Y-offset` (number):
  `ly:side-position-interface::y-aligned-side`

  The vertical amount that this object is moved relative to its Y-parent

`side-axis` (number):
  `1`

  Is this object horizontally or vertically next to another object?

`padding` (dimension, in staff space):
  `1.2`

  Add this much extra space between objects that are next to each other.

`staff-padding` (dimension, in staff space):
  `1.2`

  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.

`minimum-space` (dimension, in staff space):
  `1.0`

  Minimum distance that the victim should move (after padding).

`direction` (direction):
  `-1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

This object supports the following interfaces: side-position-interface, axis-group-interface, piano-pedal-interface, spanner-interface and grob-interface

#### VaticanaLigature

VaticanaLigature objects are created by: Vaticana_ligature_engraver

Standard settings:

`thickness` (number):
  `0.6`

  Bar line thickness, measured in `line-thickness`.

This object supports the following interfaces: font-interface, vaticana-ligature-interface, spanner-interface and grob-interface

#### VerticalAlignment

VerticalAlignment objects are created by: Vertical_align_engraver

Standard settings:

`axes` (list):
  `'(1)`

  list of axis numbers. In the case of alignment grobs, this should contain only one number.

`after-line-breaking` (boolean):
  `ly:align-interface::stretch-after-break`

  Dummy property, used to trigger callback for after-line-breaking

`Y-extent` (pair of numbers):
  `ly:axis-group-interface::height`

  See `X-extent`.

`X-extent` (pair of numbers):
  `ly:axis-group-interface::width`

  Hard coded extent in X direction.

`stacking-dir` (direction):
  `-1`

  Stack objects in which direction?

This object supports the following interfaces: axis-group-interface, align-interface, spanner-interface and grob-interface

#### VerticalAxisGroup

VerticalAxisGroup objects are created by: Axis_group_engraver and Hara_kiri_engraver

Standard settings:

`axes` (list):
  `'(1)`

  list of axis numbers. In the case of alignment grobs, this should contain only one number.

`Y-offset` (number):
  `ly:hara-kiri-group-spanner::force-hara-kiri-callback`

  The vertical amount that this object is moved relative to its Y-parent

`Y-extent` (pair of numbers):
  `ly:hara-kiri-group-spanner::y-extent`

  See `X-extent`.

`X-extent` (pair of numbers):
  `ly:axis-group-interface::width`

  Hard coded extent in X direction.

This object supports the following interfaces: vertically-spaceable-interface, hara-kiri-group-interface, axis-group-interface, spanner-interface and grob-interface

#### VoiceFollower

VoiceFollower objects are created by: Note_head_line_engraver

Standard settings:

`style` (symbol):
  `'line`

  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.

`gap` (dimension, in staff space):
  `0.5`

  Size of a gap in a variable symbol.

`breakable` (boolean):
  `#t`

  Can this object appear at a line break, like clefs and bar lines?

`X-extent` (pair of numbers):
  `#f`

  Hard coded extent in X direction.

`Y-extent` (pair of numbers):
  `#f`

  See `X-extent`.

`after-line-breaking` (boolean):
  `ly:line-spanner::after-line-breaking`

  Dummy property, used to trigger callback for after-line-breaking

This object supports the following interfaces: line-interface, line-spanner-interface, spanner-interface and grob-interface

#### VoltaBracket

VoltaBracket objects are created by: Volta_engraver

Standard settings:

`direction` (direction):
  `1`

  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

`padding` (dimension, in staff space):
  `1`

  Add this much extra space between objects that are next to each other.

`font-encoding` (symbol):
  `'fetaNumber`

  The font encoding is the broadest category for selecting a font. Options include: `fetaMusic`, `fetaNumber`, `TeX-text`, `TeX-math`, `fetaBraces`, `fetaDynamic`

`Y-offset` (number):
  `ly:side-position-interface::y-aligned-side`

  The vertical amount that this object is moved relative to its Y-parent

`side-axis` (number):
  `1`

  Is this object horizontally or vertically next to another object?

`thickness` (number):
  `1.6`

  Bar line thickness, measured in `line-thickness`.

`edge-height` (pair):
  `'(2.0 . 2.0)`

  A pair of number specifying the heights of the vertical edges '(left-height . right-height).

`minimum-space` (dimension, in staff space):
  `5`

  Minimum distance that the victim should move (after padding).

`font-size` (number):
  `-4`

  The font size, compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Each step of 1 is approximately 12% larger, 6 steps are exactly a factor 2 larger. Fractional values are allowed.

This object supports the following interfaces: font-interface, side-position-interface, text-interface, line-interface, horizontal-bracket-interface, volta-bracket-interface, spanner-interface and grob-interface

### Graphical Object Interfaces

#### accidental-interface

a single accidental

##### User settable properties:

`accidentals` (list)
  List of alteration numbers
`avoid-slur` (symbol)
  Method of handling slur collisions. Choices are `around`, `inside`, `outside`. If unset, script and slur ignore eachother.
`cautionary` (boolean)
  Is this a cautionary accidental?
`cautionary-style` (symbol)
  How to print cautionary accidentals. Choices are `smaller` or `parentheses`.
`style` (symbol)
  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.

##### Internal properties:

`tie` (layout object)

This grob interface is used in the following graphical objects: Accidental, AccidentalSuggestion, AmbitusAccidental, TrillPitchAccidental and TrillPitchGroup

#### accidental-placement-interface

Resolve accidental collisions.

##### User settable properties:

`left-padding` (dimension, in staff space)
  The amount of space that is put left to a group of accidentals.
`padding` (dimension, in staff space)
  Add this much extra space between objects that are next to each other.
`right-padding` (dimension, in staff space)
  Space to insert between note and accidentals.

##### Internal properties:

`accidental-grobs` (list)
  Alist with (NOTENAME . GROBLIST) entries
`positioning-done` (boolean)
  Used to signal that a positioning element did its job. This ensures that a positioning is only done once.

This grob interface is used in the following graphical objects: AccidentalPlacement

#### accidental-suggestion-interface

An accidental, printed as a suggestion (typically: vertically over a note)

This grob interface is used in the following graphical objects: AccidentalSuggestion

#### align-interface

Order grobs from top to bottom, left to right, right to left or bottom to top. For vertical alignments of staves, the `break-system-details` of the left NonMusicalPaperColumn may be set to tune vertical spacing Set `alignment-extra-space` to add extra space for staves. Set `fixed-alignment-extra-space` to force staves in PianoStaves further apart.

##### User settable properties:

`align-dir` (direction)
  Which side to align? `-1`: left side, `0`: around center of width, `1`: right side.
`axes` (list)
  list of axis numbers. In the case of alignment grobs, this should contain only one number.
`forced-distance` (dimension, in staff space)
  A fixed distance between object reference points in an alignment.
`stacking-dir` (direction)
  Stack objects in which direction?
`threshold` (pair of numbers)
  (min . max), where min and max are dimensions in staff space.

##### Internal properties:

`elements` (unknown)
  list of grobs, type depending on the Grob where this is set in.
`positioning-done` (boolean)
  Used to signal that a positioning element did its job. This ensures that a positioning is only done once.

This grob interface is used in the following graphical objects: BassFigureAlignment and VerticalAlignment

#### ambitus-interface

The line between note heads for a pitch range.

##### User settable properties:

`thickness` (number)
  Bar line thickness, measured in `line-thickness`.

##### Internal properties:

`join-heads` (boolean)
  Whether to join the note heads of an ambitus grob with a vertical line.
`note-heads` (unknown)
  List of note head grobs

This grob interface is used in the following graphical objects: Ambitus, AmbitusLine and AmbitusNoteHead

#### arpeggio-interface

Functions and settings for drawing an arpeggio symbol (a wavy line left to noteheads.

##### User settable properties:

`arpeggio-direction` (direction)
  If set, put an arrow on the arpeggio squiggly line.

##### Internal properties:

`stems` (unknown)
  list of stem objects, corresponding to the notes that the arpeggio has to be before.

This grob interface is used in the following graphical objects: Arpeggio

#### axis-group-interface

An object that groups other layout objects.

##### User settable properties:

`axes` (list)
  list of axis numbers. In the case of alignment grobs, this should contain only one number.

##### Internal properties:

`elements` (unknown)
  list of grobs, type depending on the Grob where this is set in.

This grob interface is used in the following graphical objects: Ambitus, BassFigureAlignment, BassFigureLine, BreakAlignGroup, BreakAlignment, DotColumn, DynamicLineSpanner, NonMusicalPaperColumn, NoteCollision, NoteColumn, PaperColumn, SostenutoPedalLineSpanner, SustainPedalLineSpanner, System, TrillPitchGroup, UnaCordaPedalLineSpanner, VerticalAlignment and VerticalAxisGroup

#### bar-line-interface

Bar line.

Print a special bar symbol. It replaces the regular bar symbol with a special symbol. The argument bartype is a string which specifies the kind of bar to print. Options are `:|`, `|:`, `:|:`, `||`, `|.`, `.|`, and `.|.`.

These produce, respectively, a right repeat, a left repeat, a double repeat, a double bar, a start bar, an end bar, and a thick double bar. In addition, there is an option `||:` which is equivalent to `|:` except at line breaks, where it produces a double bar (`||`) at the end of the line and a repeat sign (`|:`) at the beginning of the new line.If bartype is set to `empty` then nothing is printed, but a line break is allowed at that spot.

##### User settable properties:

`bar-size` (dimension, in staff space)
  size of a bar line.
`glyph` (string)
  a string determining what (style) of glyph is typeset. Valid choices depend on the function that is reading this property.
`hair-thickness` (number)
  Thickness of the thin line in a bar line.
`kern` (dimension, in staff space)
  Amount of extra white space to add. For bar line, this is the amount of space after a thick line.
`thick-thickness` (number)
  Bar line thickness, measured in `line-thickness`.
`thin-kern` (number)
  The space after a hair-line in a bar line.

##### Internal properties:

`glyph-name` (string)
  a name of character within font.

This grob interface is used in the following graphical objects: BarLine and SpanBar

#### bass-figure-interface

A bass figure text

##### User settable properties:

`implicit` (boolean)
  Is this an implicit bass figure?

This grob interface is used in the following graphical objects: BassFigure

#### beam-interface

A beam.

The `thickness` property is the weight of beams, measured in staffspace. The `direction` property is not user-serviceable. Use the `direction` property of `Stem` instead.

##### User settable properties:

`auto-knee-gap` (dimension, in staff space)
  If a gap is found between note heads where a horizontal beam fits that is larger than this number, make a kneed beam.
`beamed-stem-shorten` (list)
  How much to shorten beamed stems, when their direction is forced. It is a list, since the value is different depending on the number flags/beams.
`beaming` (pair)
  Pair of number lists. Each number list specifies which beams to make. 0 is the central beam, 1 is the next beam toward the note etc. This information is used to determine how to connect the beaming patterns from stem to stem inside a beam.
`break-overshoot` (pair of numbers)
  How much does a broken spanner stick out of its bounds?
`concaveness` (number)
  A beam is concave when its inner stems are closer to the beam than the two outside stems. This number is a measure of the closeness of the inner stems. It is used for damping the slope of the beam.
`damping` (number)
  Amount of beam slope damping. 0: no, 1: yes, 100000: horizontal beams.
`direction` (direction)
  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)
`gap` (dimension, in staff space)
  Size of a gap in a variable symbol.
`gap-count` (integer)
  Number of gapped beams for tremolo.
`inspect-quants` (pair of numbers)
  If debugging is set, set beam quant to this position, and print the respective scores.
`knee` (boolean)
  Is this beam kneed?
`length-fraction` (number)
  Multiplier for lengths. Used for determining ledger lines and stem lengths.
`neutral-direction` (direction)
  Which direction to take in the center of the staff.
`positions` (pair)
  Pair of staff coordinates `(`left`.` right`)`, where both left and right are in the staff-space unit of the current staff.
`thickness` (number)
  Bar line thickness, measured in `line-thickness`.

##### Internal properties:

`chord-tremolo` (boolean)
`details` (list)
  alist of parameters for detailed grob behavior.

  more information on the allowed parameters can be found by inspecting lily/slur-scoring.cc, lily/beam-quanting.cc, and lily/tie-formatting-problem.cc. Setting `debug-tie-scoring`, `debug-beam-scoring` or `debug-slur-scoring` also provides useful clues.

`least-squares-dy` (number)
  ideal beam slope, without damping.
`quant-score` (string)
  Beam quanting score – can be stored for debugging
`quantized-positions` (pair of numbers)
  Beam positions after quanting.
`shorten` (dimension, in staff space)
  The amount of space that a stem. Internally used to distribute beam shortening over stems.
`stems` (unknown)
  list of stem objects, corresponding to the notes that the arpeggio has to be before.

This grob interface is used in the following graphical objects: Beam

#### break-aligned-interface

Items that are aligned in prefatory matter.

The spacing of these items is controlled by the `space-alist` property. It contains a list `break-align-symbol`s with a specification of the associated space. The space specification can be

`(minimum-space .` spc`))`
  Pad space until the distance is spc
`(fixed-space .` spc`)`
  Set a fixed space
`(semi-fixed-space .` spc`)`
  Set a space. Half of it is fixed and half is stretchable. (does not work at start of line. fixme)
`(extra-space .` spc`)`
  Add spc amount of space.

Special keys for the alist are `first-note` and `next-note`, signifying the first note on a line, and the next note halfway a line.

Rules for this spacing are much more complicated than this. See [Wanske] page 126 – 134, [Ross] pg 143 – 147

##### User settable properties:

`break-align-symbol` (symbol)
  This key is used for aligning and spacing breakable items.
`space-alist` (list)
  A table that specifies distances between prefatory items, like clef and time-signature. The format is an alist of spacing tuples: `(`break-align-symbol type`.` distance`)`, where type can be the symbols `minimum-space` or `extra-space`.

This grob interface is used in the following graphical objects: Ambitus, AmbitusAccidental, BarLine, BreakAlignGroup, BreathingSign, Clef, Custos, DoublePercentRepeat, KeyCancellation, KeySignature, LeftEdge and TimeSignature

#### break-alignment-align-interface

Object that is aligned on a break aligment.

##### User settable properties:

`break-align-symbol` (symbol)
  This key is used for aligning and spacing breakable items.

This grob interface is used in the following graphical objects: BarNumber and RehearsalMark

#### break-alignment-interface

The object that performs break aligment. See break-aligned-interface.

##### User settable properties:

`break-align-orders` (vector)
  Defines the order in which prefatory matter (clefs, key signatures) appears. The format is a vector of length 3, where each element is one order for end-of-line, middle of line, and start-of-line respectively. An order is a list of symbols.

  For example, clefs are put after key signatures by setting

                	\override Score.BreakAlignment #'break-align-orders = #(make-vector  3
                	  '(span-bar
                	  breathing-sign
                	  staff-bar
                	  key
                	  clef
                	  time-signature))

##### Internal properties:

`positioning-done` (boolean)
  Used to signal that a positioning element did its job. This ensures that a positioning is only done once.

This grob interface is used in the following graphical objects: BreakAlignment

#### breathing-sign-interface

A breathing sign.

##### User settable properties:

`direction` (direction)
  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

This grob interface is used in the following graphical objects: BreathingSign

#### chord-name-interface

A chord name.

##### Internal properties:

`begin-of-line-visible` (boolean)
  Used for marking ChordNames that should only show changes.

This grob interface is used in the following graphical objects: ChordName

#### clef-interface

A clef sign

##### User settable properties:

`full-size-change` (boolean)
  Don't make a change clef smaller.
`glyph` (string)
  a string determining what (style) of glyph is typeset. Valid choices depend on the function that is reading this property.
`non-default` (boolean)
  Set for manually specified clefs.

##### Internal properties:

`glyph-name` (string)
  a name of character within font.

This grob interface is used in the following graphical objects: Clef

#### cluster-beacon-interface

A place holder for the cluster spanner to determine the vertical extents of a cluster spanner at this X position.

##### User settable properties:

`positions` (pair)
  Pair of staff coordinates `(`left`.` right`)`, where both left and right are in the staff-space unit of the current staff.

This grob interface is used in the following graphical objects: ClusterSpannerBeacon

#### cluster-interface

A graphically drawn musical cluster.

`padding` adds to the vertical extent of the shape (top and bottom).

The property `style` controls the shape of cluster segments. Valid values include `leftsided-stairs`, `rightsided-stairs`, `centered-stairs`, and `ramp`.

##### User settable properties:

`padding` (dimension, in staff space)
  Add this much extra space between objects that are next to each other.
`style` (symbol)
  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.

##### Internal properties:

`columns` (unknown)
  list of grobs, typically containing paper-columns or note-column objects.

This grob interface is used in the following graphical objects: ClusterSpanner

#### custos-interface

A custos object.

##### User settable properties:

`neutral-direction` (direction)
  Which direction to take in the center of the staff.
`neutral-position` (number)
  Position (in half staff spaces) where to flip the direction of custos stem.
`style` (symbol)
  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.

This grob interface is used in the following graphical objects: Custos

#### dot-column-interface

Groups dot objects so they form a column, and position dots so they do not clash with staff lines

##### User settable properties:

`direction` (direction)
  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)

##### Internal properties:

`dots` (unknown)
  multiple Dots objects.
`positioning-done` (boolean)
  Used to signal that a positioning element did its job. This ensures that a positioning is only done once.

This grob interface is used in the following graphical objects: DotColumn

#### dots-interface

The dots to go with a notehead or rest.`direction` sets the preferred direction to move in case of staff line collisions.

##### User settable properties:

`direction` (direction)
  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)
`dot-count` (integer)
  The number of dots.

This grob interface is used in the following graphical objects: Dots

#### dynamic-interface

Any kind of loudness sign

This grob interface is used in the following graphical objects: DynamicLineSpanner, DynamicText, DynamicTextSpanner and Hairpin

#### dynamic-line-spanner-interface

Dynamic line spanner

##### User settable properties:

`avoid-slur` (symbol)
  Method of handling slur collisions. Choices are `around`, `inside`, `outside`. If unset, script and slur ignore eachother.

This grob interface is used in the following graphical objects: DynamicLineSpanner

#### dynamic-text-spanner-interface

A text spanner for crescendo texts

##### User settable properties:

`bound-padding` (number)
  The amount of padding to insert around spanner bounds.
`dash-fraction` (number)
  Size of the dashes, relative to dash-period. Should be between 0.0 (no line) and 1.0 (continuous line).
`dash-period` (number)
  the length of one dash + white space. If negative, no line is drawn at all.
`edge-text` (pair)
  A pair specifying the texts to be set at the edges '(left-text . right-text).
`style` (symbol)
  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.
`thickness` (number)
  Bar line thickness, measured in `line-thickness`.

This grob interface is used in the following graphical objects: DynamicTextSpanner

#### enclosing-bracket-interface

Brackets alongside bass figures.

##### User settable properties:

`bracket-flare` (pair of numbers)
  A pair of numbers specifying how much edges of brackets should slant outward. Value 0.0 means straight edges
`edge-height` (pair)
  A pair of number specifying the heights of the vertical edges '(left-height . right-height).
`padding` (dimension, in staff space)
  Add this much extra space between objects that are next to each other.
`shorten-pair` (pair of numbers)
  The lengths to shorten a text-spanner on both sides, for example a pedal bracket
`thickness` (number)
  Bar line thickness, measured in `line-thickness`.

##### Internal properties:

`elements` (unknown)
  list of grobs, type depending on the Grob where this is set in.

This grob interface is used in the following graphical objects: BassFigureBracket

#### figured-bass-continuation-interface

Simple extender line between bounds.

##### User settable properties:

`padding` (dimension, in staff space)
  Add this much extra space between objects that are next to each other.
`thickness` (number)
  Bar line thickness, measured in `line-thickness`.

##### Internal properties:

`figures` (unknown)
  Figured bass objects for continuation line.

This grob interface is used in the following graphical objects: BassFigureContinuation

#### finger-interface

A fingering instruction

This grob interface is used in the following graphical objects: Fingering

#### font-interface

Any symbol that is typeset through fixed sets of glyphs, (ie. fonts)

##### User settable properties:

`font-encoding` (symbol)
  The font encoding is the broadest category for selecting a font. Options include: `fetaMusic`, `fetaNumber`, `TeX-text`, `TeX-math`, `fetaBraces`, `fetaDynamic`
`font-family` (symbol)
  The font family is the broadest category for selecting text fonts. Options include: `sans`, `roman`
`font-magnification` (number)
  Magnification of the font, when it is selected with `font-name`.
`font-name` (string)
  Specifies a file name (without extension) of the font to load. This setting override selection using `font-family`, `font-series` and `font-shape`.
`font-series` (symbol)
  Select the series of a font. Choices include `medium`, `bold`, `bold-narrow`, etc.
`font-shape` (symbol)
  Select the shape of a font. Choices include `upright`, `italic`, `caps`.
`font-size` (number)
  The font size, compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Each step of 1 is approximately 12% larger, 6 steps are exactly a factor 2 larger. Fractional values are allowed.

##### Internal properties:

`font` (font metric)
  Cached font metric object

This grob interface is used in the following graphical objects: Accidental, AccidentalSuggestion, AmbitusAccidental, AmbitusLine, AmbitusNoteHead, Arpeggio, BarLine, BarNumber, BassFigure, BreathingSign, ChordName, Clef, CombineTextScript, Custos, Dots, DoublePercentRepeat, DoublePercentRepeatCounter, DynamicText, DynamicTextSpanner, Fingering, InstrumentName, KeyCancellation, KeySignature, LyricHyphen, LyricText, MensuralLigature, MetronomeMark, MultiMeasureRest, MultiMeasureRestNumber, MultiMeasureRestText, NoteHead, NoteName, OctavateEight, OttavaBracket, ParenthesesItem, PercentRepeat, PercentRepeatCounter, RehearsalMark, Rest, Script, SostenutoPedal, SpanBar, StanzaNumber, Stem, StringNumber, SustainPedal, SystemStartBrace, SystemStartBracket, SystemStartSquare, TabNoteHead, TextScript, TextSpanner, TimeSignature, TrillPitchAccidental, TrillPitchGroup, TrillPitchHead, TrillSpanner, TupletNumber, UnaCordaPedal, VaticanaLigature and VoltaBracket

#### fret-diagram-interface

A fret diagram

##### User settable properties:

`align-dir` (direction)
  Which side to align? `-1`: left side, `0`: around center of width, `1`: right side.
`barre-type` (symbol)
  Type of barre indication used in a fret diagram. Choices include `curved` and `straight`.
`dot-color` (symbol)
  Color of dots. Options include `black` and `white`.
`dot-radius` (number)
  Radius of dots.
`finger-code` (symbol)
  Code for the type of fingering indication in a fret diagram. Options include `none`, `in-dot`, and `below-string`.
`fret-count` (integer)
  The number of frets in a fret diagram.
`label-dir` (direction)
  Side to which label is attached. `-1` for left, `1` for right.
`number-type` (symbol)
  Type of numbers to use in label. Choices include `roman-lower`, `roman-upper`, and `arabic`.
`size` (number)
  Size of object, relative to standard size.
`string-count` (integer)
  The number of strings in a fret diagram.
`thickness` (number)
  Bar line thickness, measured in `line-thickness`.

This grob interface is used in the following graphical objects: none

#### gregorian-ligature-interface

A gregorian ligature

##### Internal properties:

`ascendens` (boolean)
  is this neume of an ascending?
`auctum` (boolean)
  is this neume augmented?
`cavum` (boolean)
  is this neume outlined?
`context-info` (integer)
  DOCME
`deminutum` (boolean)
  is this neume deminished?
`descendens` (boolean)
  is this neume of a descendent type?
`inclinatum` (boolean)
  is this neume an inclinatum?
`linea` (boolean)
  attach vertical lines to this neume?
`oriscus` (boolean)
  is this neume an oriscus?
`pes-or-flexa` (boolean)
  shall this neume be joined with the previous head?
`prefix-set` (number)
`quilisma` (boolean)
  is this neume a quilisma?
`stropha` (boolean)
  Is this neume a stropha?
`virga` (boolean)
  Is this neume a virga?

This grob interface is used in the following graphical objects: none

#### grid-line-interface

A line that spanned between grid-points.

##### User settable properties:

`thickness` (number)
  Bar line thickness, measured in `line-thickness`.

##### Internal properties:

`elements` (unknown)
  list of grobs, type depending on the Grob where this is set in.

This grob interface is used in the following graphical objects: GridLine

#### grid-point-interface

A spanning point for grid lines.

This grob interface is used in the following graphical objects: GridPoint

#### grob-interface

A grob represents a piece of music notation

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping objects.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.

Grobs have a properties: Scheme variables, that can be read and set. They have two types. Immutable variables define the default style and behavior. They are shared between many objects. They can be changed using `\override` and `\revert`.

Mutable properties are variables that are specific to one grob. Typically, lists of other objects, or results from computations are stored inmutable properties: every call to set-grob-property (or its C++ equivalent) sets a mutable property.

The properties `after-line-breaking` and `before-line-breaking` are dummies that are not user-serviceable.

##### User settable properties:

`X-extent` (pair of numbers)
  Hard coded extent in X direction.
`X-offset` (number)
  The horizontal amount that this object is moved relative to its X-parent
`Y-extent` (pair of numbers)
  See `X-extent`.
`Y-offset` (number)
  The vertical amount that this object is moved relative to its Y-parent
`after-line-breaking` (boolean)
  Dummy property, used to trigger callback for after-line-breaking
`before-line-breaking` (boolean)
  Dummy property, used to trigger a callback function.
`color` (list)
  The color of this grob.
`extra-X-extent` (pair of numbers)
  A grob is enlarged in X dimension by this much.
`extra-Y-extent` (pair of numbers)
  See `extra-Y-extent`.
`extra-offset` (pair of numbers)
  A pair representing an offset. This offset is added just before outputting the symbol, so the typesetting engine is completely oblivious to it.
`layer` (number)
  The output layer [0..2]: layers define the order of printing objects. Objects in lower layers are overprinted by objects in higher layers.
`minimum-X-extent` (pair of numbers)
  Minimum size of an object in X dimension, measured in staff space.
`minimum-Y-extent` (pair of numbers)
  See `minimum-Y-extent`.
`springs-and-rods` (boolean)
  Dummy variable for triggering spacing routines.
`transparent` (boolean)
  This makes the grob invisible.

##### Internal properties:

`axis-group-parent-X` (layout object)
  Containing X axis group
`axis-group-parent-Y` (layout object)
  Containing Y axis group
`cause` (any type)
  Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob.
`interfaces` (list)
  list of symbols indicating the interfaces supported by this object. Is initialized from the `meta` field.
`meta` (list)
  Contains meta information. It is an alist with the entries `name` and `interfaces`.
`staff-symbol` (layout object)
  the staff symbol grob that we're in.
`stencil` (unknown)
  The symbol to print.

This grob interface is used in the following graphical objects: Accidental, AccidentalPlacement, AccidentalSuggestion, Ambitus, AmbitusAccidental, AmbitusLine, AmbitusNoteHead, Arpeggio, BarLine, BarNumber, BassFigure, BassFigureAlignment, BassFigureBracket, BassFigureContinuation, BassFigureLine, Beam, BreakAlignGroup, BreakAlignment, BreathingSign, ChordName, Clef, ClusterSpanner, ClusterSpannerBeacon, CombineTextScript, Custos, DotColumn, Dots, DoublePercentRepeat, DoublePercentRepeatCounter, DynamicLineSpanner, DynamicText, DynamicTextSpanner, Fingering, Glissando, GridLine, GridPoint, Hairpin, HorizontalBracket, InstrumentName, KeyCancellation, KeySignature, LaissezVibrerTie, LaissezVibrerTieColumn, LedgerLineSpanner, LeftEdge, LigatureBracket, LyricExtender, LyricHyphen, LyricSpace, LyricText, MeasureGrouping, MelodyItem, MensuralLigature, MetronomeMark, MultiMeasureRest, MultiMeasureRestNumber, MultiMeasureRestText, NonMusicalPaperColumn, NoteCollision, NoteColumn, NoteHead, NoteName, NoteSpacing, OctavateEight, OttavaBracket, PaperColumn, ParenthesesItem, PercentRepeat, PercentRepeatCounter, PhrasingSlur, PianoPedalBracket, RehearsalMark, RepeatSlash, RepeatTie, RepeatTieColumn, Rest, RestCollision, Script, ScriptColumn, SeparatingGroupSpanner, SeparationItem, Slur, SostenutoPedal, SostenutoPedalLineSpanner, SpacingSpanner, SpanBar, StaffSpacing, StaffSymbol, StanzaNumber, Stem, StemTremolo, StringNumber, SustainPedal, SustainPedalLineSpanner, System, SystemStartBar, SystemStartBrace, SystemStartBracket, SystemStartSquare, TabNoteHead, TextScript, TextSpanner, Tie, TieColumn, TimeSignature, TrillPitchAccidental, TrillPitchGroup, TrillPitchHead, TrillSpanner, TupletBracket, TupletNumber, UnaCordaPedal, UnaCordaPedalLineSpanner, VaticanaLigature, VerticalAlignment, VerticalAxisGroup, VoiceFollower and VoltaBracket

#### hairpin-interface

A hairpin crescendo/decrescendo.

##### User settable properties:

`bound-padding` (number)
  The amount of padding to insert around spanner bounds.
`grow-direction` (direction)
  Crescendo or decrescendo?
`height` (dimension, in staff space)
  Height of an object in staff-space.

##### Internal properties:

`adjacent-hairpins` (unknown)
  List of directly neighboring hairpins

This grob interface is used in the following graphical objects: Hairpin

#### hara-kiri-group-interface

A group spanner that keeps track of interesting items. If it doesn't contain any after linebreaking, then it will remove itself and all its children.

##### User settable properties:

`remove-empty` (boolean)
  If set, remove group if it contains no `interesting-items`
`remove-first` (boolean)
  Remove the first staff of a orchestral score?

##### Internal properties:

`items-worth-living` (unknown)
  A list of interesting items. If empty in a particular staff, then that staff is erased.

This grob interface is used in the following graphical objects: VerticalAxisGroup

#### horizontal-bracket-interface

A horizontal bracket encompassing notes.

##### User settable properties:

`bracket-flare` (pair of numbers)
  A pair of numbers specifying how much edges of brackets should slant outward. Value 0.0 means straight edges
`edge-height` (pair)
  A pair of number specifying the heights of the vertical edges '(left-height . right-height).
`shorten-pair` (pair of numbers)
  The lengths to shorten a text-spanner on both sides, for example a pedal bracket

##### Internal properties:

`columns` (unknown)
  list of grobs, typically containing paper-columns or note-column objects.

This grob interface is used in the following graphical objects: HorizontalBracket, OttavaBracket and VoltaBracket

#### item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called `Item`.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the `break-visibility`. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.

The following variables for break-visibility are predefined:

                    grob will show:   before  no     after
                                      break   break  break
           all-invisible              no      no     no
           begin-of-line-visible      no      no     yes
           end-of-line-visible        yes     no     no
           all-visible                yes     yes    yes
           begin-of-line-invisible    yes     yes    no
           end-of-line-invisible      no      yes    yes
           center-invisible           yes      no    yes

##### User settable properties:

`break-visibility` (vector)
  A vector of 3 booleans, #(end-of-line unbroken begin-of-line). #t means visible, #f means killed.
`breakable` (boolean)
  Can this object appear at a line break, like clefs and bar lines?
`no-spacing-rods` (boolean)
  Items with this property do not cause spacing constraints.

This grob interface is used in the following graphical objects: Accidental, AccidentalPlacement, AccidentalSuggestion, Ambitus, AmbitusAccidental, AmbitusAccidental, AmbitusLine, AmbitusNoteHead, Arpeggio, BarLine, BarNumber, BassFigure, BassFigureBracket, BreakAlignGroup, BreakAlignment, BreathingSign, ChordName, ChordName, Clef, ClusterSpannerBeacon, CombineTextScript, Custos, DotColumn, Dots, DoublePercentRepeat, DoublePercentRepeatCounter, DynamicText, Fingering, Fingering, GridLine, GridPoint, KeyCancellation, KeySignature, LaissezVibrerTie, LaissezVibrerTieColumn, LeftEdge, LyricText, MelodyItem, MetronomeMark, NonMusicalPaperColumn, NoteCollision, NoteColumn, NoteHead, NoteName, NoteSpacing, OctavateEight, PaperColumn, ParenthesesItem, RehearsalMark, RepeatSlash, RepeatTie, RepeatTieColumn, Rest, RestCollision, Script, ScriptColumn, SeparationItem, SostenutoPedal, SpanBar, StaffSpacing, StanzaNumber, Stem, StemTremolo, StringNumber, StringNumber, SustainPedal, TabNoteHead, TextScript, TimeSignature, TrillPitchAccidental, TrillPitchAccidental, TrillPitchGroup, TrillPitchHead, TrillPitchHead and UnaCordaPedal

#### key-signature-interface

A group of accidentals, to be printed as signature sign.

##### User settable properties:

`alteration-alist` (list)
  List of `(`pitch`.` accidental`)` pairs for key signature.
`c0-position` (integer)
  An integer indicating the position of middle C.
`style` (symbol)
  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.

This grob interface is used in the following graphical objects: KeyCancellation and KeySignature

#### ledger-line-interface

This spanner draws the ledger lines of a staff. This is a separate grob because it has to process all potential collisions between all note heads.

##### User settable properties:

`gap` (dimension, in staff space)
  Size of a gap in a variable symbol.
`length-fraction` (number)
  Multiplier for lengths. Used for determining ledger lines and stem lengths.
`minimum-length-fraction` (number)
  Minimum length of ledger line as fraction of note head size.
`thickness` (number)
  Bar line thickness, measured in `line-thickness`.

##### Internal properties:

`note-heads` (unknown)
  List of note head grobs

This grob interface is used in the following graphical objects: LedgerLineSpanner

#### ledgered-interface

Objects that need ledger lines, typically note heads. See also ledger-line-interface.

##### User settable properties:

`no-ledgers` (boolean)
  If set, don't draw ledger lines on this object.

This grob interface is used in the following graphical objects: AmbitusNoteHead, NoteHead and TrillPitchHead

#### ligature-bracket-interface

A bracket indicating a ligature in the original edition

##### User settable properties:

`height` (dimension, in staff space)
  Height of an object in staff-space.
`thickness` (number)
  Bar line thickness, measured in `line-thickness`.
`width` (dimension, in staff space)
  The width of a grob measured in staff space.

This grob interface is used in the following graphical objects: none

#### ligature-interface

A ligature

This grob interface is used in the following graphical objects: none

#### line-interface

Generic line objects. Any object using lines supports this. Normally, you get a straight line. If `dash-period` is defined, a dashed line is produced; the length of the dashes is tuned with `dash-fraction`. If the latter is set to 0, a dotted line is produced. If `dash-fraction` is negative, the line is made transparent.

##### User settable properties:

`arrow-length` (number)
  Arrow length.
`arrow-width` (number)
  Arrow width.
`dash-fraction` (number)
  Size of the dashes, relative to dash-period. Should be between 0.0 (no line) and 1.0 (continuous line).
`dash-period` (number)
  the length of one dash + white space. If negative, no line is drawn at all.
`style` (symbol)
  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.
`thickness` (number)
  Bar line thickness, measured in `line-thickness`.

This grob interface is used in the following graphical objects: Glissando, Hairpin, HorizontalBracket, LigatureBracket, OttavaBracket, PianoPedalBracket, TupletBracket, VoiceFollower and VoltaBracket

#### line-spanner-interface

Generic line drawn between two objects, e.g. for use with glissandi. The property `style` can be `line`, `dashed-line`, `trill`, `dotted-line` or `zigzag`.

##### User settable properties:

`arrow` (boolean)
  Add an arrow to the line.
`gap` (dimension, in staff space)
  Size of a gap in a variable symbol.
`thickness` (number)
  Bar line thickness, measured in `line-thickness`.
`zigzag-length` (dimension, in staff space)
  The length of the lines of a zigzag, relative to `zigzag-width`. A value of 1 gives 60-degree zigzags.
`zigzag-width` (dimension, in staff space)
  The width of one zigzag-squiggle. This number will be adjusted slightly so that the glissando line can be constructed from a whole number of squiggles.

This grob interface is used in the following graphical objects: DynamicTextSpanner, Glissando, SustainPedal, TextSpanner, TrillSpanner and VoiceFollower

#### lyric-extender-interface

The extender is a simple line at the baseline of the lyric that helps show the length of a melissima (tied/slurred note).

##### User settable properties:

`next` (layout object)
  Object that is next relation (eg. the lyric syllable following an extender.
`thickness` (number)
  Bar line thickness, measured in `line-thickness`.

##### Internal properties:

`heads` (unknown)
  List of note heads.

This grob interface is used in the following graphical objects: LyricExtender

#### lyric-hyphen-interface

A centered hyphen is a simple line between lyrics used to divide syllables

##### User settable properties:

`dash-period` (number)
  the length of one dash + white space. If negative, no line is drawn at all.
`height` (dimension, in staff space)
  Height of an object in staff-space.
`length` (dimension, in staff space)
  User override for the stem length of unbeamed stems.
`minimum-distance` (dimension, in staff space)
  Minimum distance between rest and notes or beam.
`minimum-length` (dimension, in staff space)
  Try to make a spanner at least this long. This requires an appropriate callback for the `springs-and-rods` property.
`padding` (dimension, in staff space)
  Add this much extra space between objects that are next to each other.
`thickness` (number)
  Bar line thickness, measured in `line-thickness`.

This grob interface is used in the following graphical objects: LyricHyphen and LyricSpace

#### lyric-interface

Any object that is related to lyrics.

This grob interface is used in the following graphical objects: LyricExtender and LyricHyphen

#### lyric-syllable-interface

a single piece of lyrics

This grob interface is used in the following graphical objects: LyricText

#### mark-interface

a rehearsal mark

This grob interface is used in the following graphical objects: RehearsalMark

#### measure-grouping-interface

This object indicates groups of beats. Valid choices for `style` are `bracket` and `triangle`.

##### User settable properties:

`height` (dimension, in staff space)
  Height of an object in staff-space.
`style` (symbol)
  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.
`thickness` (number)
  Bar line thickness, measured in `line-thickness`.

This grob interface is used in the following graphical objects: MeasureGrouping

#### melody-spanner-interface

Context dependent typesetting decisions.

##### User settable properties:

`neutral-direction` (direction)
  Which direction to take in the center of the staff.

##### Internal properties:

`stems` (unknown)
  list of stem objects, corresponding to the notes that the arpeggio has to be before.

This grob interface is used in the following graphical objects: MelodyItem

#### mensural-ligature-interface

A mensural ligature

##### User settable properties:

`thickness` (number)
  Bar line thickness, measured in `line-thickness`.

##### Internal properties:

`delta-pitch` (number)
  the interval between this and the next note, or, more precisely, their vertical distance; this is used in ligatures for calculation of the height of vertical joins flexa shapes
`flexa-width` (dimension, in staff space)
  width of a flexa shape in a ligature grob in staff_space.
`head-width` (dimension, in staff space)
  width of this ligature head
`join-right-amount` (number)
`primitive` (integer)
  Pointer to a ligature primitive, i.e. an item similar to a note head that is part of a ligature.

This grob interface is used in the following graphical objects: MensuralLigature

#### metronome-mark-interface

a rehearsal mark

This grob interface is used in the following graphical objects: MetronomeMark

#### multi-measure-interface

Multi measure rest, and the text or number that is printed over it.

##### User settable properties:

`bound-padding` (number)
  The amount of padding to insert around spanner bounds.

This grob interface is used in the following graphical objects: MultiMeasureRest, MultiMeasureRestNumber and MultiMeasureRestText

#### multi-measure-rest-interface

A rest that spans a whole number of measures.

##### User settable properties:

`bound-padding` (number)
  The amount of padding to insert around spanner bounds.
`expand-limit` (integer)
  maximum number of measures expanded in church rests.
`hair-thickness` (number)
  Thickness of the thin line in a bar line.
`measure-count` (integer)
  The number of measures for a multimeasure rest.
`minimum-length` (dimension, in staff space)
  Try to make a spanner at least this long. This requires an appropriate callback for the `springs-and-rods` property.
`thick-thickness` (number)
  Bar line thickness, measured in `line-thickness`.

##### Internal properties:

`use-breve-rest` (boolean)
  Use breve rests for measures longer than a whole rest.

This grob interface is used in the following graphical objects: MultiMeasureRest and PercentRepeat

#### note-collision-interface

An object that handles collisions between notes with different stem directions and horizontal shifts. Most of the interesting properties are to be set in note-column-interface: these are `force-hshift` and `horizontal-shift`.

##### User settable properties:

`merge-differently-dotted` (boolean)
  Merge note heads in collisions, even if they have a different number of dots. This normal notation for some types of polyphonic music.
`merge-differently-headed` (boolean)
  Merge note heads in collisions, even if they have different note heads. The smaller of the two heads will be rendered invisible. This used polyphonic guitar notation. The value of this setting is used by note-collision-interface .

##### Internal properties:

`positioning-done` (boolean)
  Used to signal that a positioning element did its job. This ensures that a positioning is only done once.

This grob interface is used in the following graphical objects: NoteCollision

#### note-column-interface

Stem and noteheads combined

##### User settable properties:

`accidentals` (list)
  List of alteration numbers
`force-hshift` (number)
  This specifies a manual shift for notes in collisions. The unit is the note head width of the first voice note. This is used by note-collision-interface.
`horizontal-shift` (integer)
  An integer that identifies ranking of note-column for horizontal shifting. This is used by note-collision-interface.

##### Internal properties:

`arpeggio` (layout object)
  pointer to arpeggio object.
`note-heads` (unknown)
  List of note head grobs
`rest` (layout object)
  the staff symbol grob that we're in.
`rest-collision` (layout object)
  rest collision that a rest is in.
`stem` (layout object)
  pointer to Stem object.

This grob interface is used in the following graphical objects: NoteColumn

#### note-head-interface

Note head

##### User settable properties:

`note-names` (vector)
  Vector of strings containing names for easy-notation note heads.
`stem-attachment` (pair of numbers)
  A (x . y) pair where the stem attaches to the notehead.
`style` (symbol)
  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.

##### Internal properties:

`accidental-grob` (layout object)
  Accidental for this note.
`glyph-name` (string)
  a name of character within font.

This grob interface is used in the following graphical objects: AmbitusNoteHead, NoteHead, TabNoteHead and TrillPitchGroup

#### note-name-interface

Note name

##### User settable properties:

`style` (symbol)
  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.

This grob interface is used in the following graphical objects: NoteName

#### note-spacing-interface

This object calculates spacing wishes for individual voices.

##### User settable properties:

`knee-spacing-correction` (number)
  Factor for the optical correction amount for kneed beams. Set between 0 for no correction and 1 for full correction.
`same-direction-correction` (number)
  Optical correction amount for stems that are placed in tight configurations. This amount is used for stems with the same direction to compensate for note-head to stem distance.
`stem-spacing-correction` (number)
  Optical correction amount for stems that are placed in tight configurations. For opposite directions, this amount is the correction for two normal sized stems that overlap completely.

##### Internal properties:

`left-items` (unknown)
`right-items` (unknown)

This grob interface is used in the following graphical objects: NoteSpacing

#### only-prebreak-interface

Kill this grob after the line breaking process.

This grob interface is used in the following graphical objects: SeparatingGroupSpanner

#### ottava-bracket-interface

An ottava bracket

##### User settable properties:

`bracket-flare` (pair of numbers)
  A pair of numbers specifying how much edges of brackets should slant outward. Value 0.0 means straight edges
`edge-height` (pair)
  A pair of number specifying the heights of the vertical edges '(left-height . right-height).
`minimum-length` (dimension, in staff space)
  Try to make a spanner at least this long. This requires an appropriate callback for the `springs-and-rods` property.
`shorten-pair` (pair of numbers)
  The lengths to shorten a text-spanner on both sides, for example a pedal bracket

This grob interface is used in the following graphical objects: OttavaBracket

#### paper-column-interface

`Paper_column` objects form the top-most X-parents for items. The are two types of columns: musical columns, where are attached to, and non-musical columns, where bar-lines, clefs etc. are attached to. The spacing engine determines the X-positions of these objects.

They are numbered, the first (leftmost) is column 0. Numbering happens before line-breaking, and columns are not renumbered after line breaking. Since many columns go unused, you should only use the rank field to get ordering information. Two adjacent columns may have non-adjacent numbers.

##### User settable properties:

`between-cols` (pair)
  Where to attach a loose column to
`line-break-system-details` (list)
  Alist of properties to use when this column is the start of a system.
`page-penalty` (number)
  Penalty for page break at this column. 10000 or more means forbid linebreak, -10000 or less means force page break. Other values influence page breaking decisions as a real penalty.
`shortest-playing-duration` (moment)
  The duration of the shortest playing here.
`shortest-starter-duration` (moment)
  The duration of the shortest note that starts here.
`used` (boolean)
  If set, this spacing column is kept in the spacing problem
`when` (moment)
  Global time step associated with this column happen?

##### Internal properties:

`bounded-by-me` (unknown)
  list of spanners that have this column as start/begin point. Only columns that have grobs or act as bounds are spaced.

This grob interface is used in the following graphical objects: NonMusicalPaperColumn, NonMusicalPaperColumn, PaperColumn and PaperColumn

#### parentheses-interface

Parentheses for other objects

##### User settable properties:

`padding` (dimension, in staff space)
  Add this much extra space between objects that are next to each other.

This grob interface is used in the following graphical objects: ParenthesesItem

#### percent-repeat-interface

Repeats that look like percent signs

##### User settable properties:

`slope` (number)
  The slope of this object.
`thickness` (number)
  Bar line thickness, measured in `line-thickness`.

This grob interface is used in the following graphical objects: DoublePercentRepeat, DoublePercentRepeatCounter, PercentRepeat, PercentRepeatCounter and RepeatSlash

#### piano-pedal-bracket-interface

The bracket of the piano pedal. It can be tuned through the regular bracket properties.

##### User settable properties:

`bound-padding` (number)
  The amount of padding to insert around spanner bounds.
`bracket-flare` (pair of numbers)
  A pair of numbers specifying how much edges of brackets should slant outward. Value 0.0 means straight edges
`edge-height` (pair)
  A pair of number specifying the heights of the vertical edges '(left-height . right-height).
`shorten-pair` (pair of numbers)
  The lengths to shorten a text-spanner on both sides, for example a pedal bracket

##### Internal properties:

`pedal-text` (layout object)
  Pointer to the text of a mixed-style piano pedal.

This grob interface is used in the following graphical objects: PianoPedalBracket

#### piano-pedal-interface

A piano pedal sign

This grob interface is used in the following graphical objects: PianoPedalBracket, SostenutoPedalLineSpanner, SustainPedal, SustainPedalLineSpanner and UnaCordaPedalLineSpanner

#### pitched-trill-interface

A note head to indicate trill pitches

##### Internal properties:

`accidental-grob` (layout object)
  Accidental for this note.

This grob interface is used in the following graphical objects: TrillPitchHead

#### rest-collision-interface

Move around ordinary rests (not multi-measure-rests) to avoid conflicts.

##### User settable properties:

`minimum-distance` (dimension, in staff space)
  Minimum distance between rest and notes or beam.

##### Internal properties:

`elements` (unknown)
  list of grobs, type depending on the Grob where this is set in.
`positioning-done` (boolean)
  Used to signal that a positioning element did its job. This ensures that a positioning is only done once.

This grob interface is used in the following graphical objects: RestCollision

#### rest-interface

A rest symbol.

##### User settable properties:

`direction` (direction)
  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)
`minimum-distance` (dimension, in staff space)
  Minimum distance between rest and notes or beam.
`style` (symbol)
  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.

This grob interface is used in the following graphical objects: MultiMeasureRest and Rest

#### rhythmic-grob-interface

Any object with a rhythmic basis. Used to determine which grobs are interesting enough to maintain a hara-kiri staff.

This grob interface is used in the following graphical objects: BassFigure, ChordName, LyricText, NoteHead, Rest and TabNoteHead

#### rhythmic-head-interface

Note head or rest

##### User settable properties:

`duration-log` (integer)
  The 2-log of the note head duration, i.e. 0=whole note, 1 = half note, etc.

##### Internal properties:

`dot` (layout object)
  reference to Dots object.
`stem` (layout object)
  pointer to Stem object.

This grob interface is used in the following graphical objects: AmbitusNoteHead, NoteHead, Rest, TabNoteHead, TrillPitchGroup and TrillPitchHead

#### script-column-interface

An interface that sorts scripts according to their `script-priority`

This grob interface is used in the following graphical objects: ScriptColumn

#### script-interface

An object that is put above or below a note

##### User settable properties:

`add-stem-support` (boolean)
  If set, the Stem object is included in this script's support
`avoid-slur` (symbol)
  Method of handling slur collisions. Choices are `around`, `inside`, `outside`. If unset, script and slur ignore eachother.
`script-priority` (number)
  A sorting key that determines in what order a script is within a stack of scripts.
`slur-padding` (number)
  Extra distance between slur and script.

##### Internal properties:

`script-stencil` (pair)
  Pair (`type` . `arg`), which acts as an index for looking up a Stencil object.
`slur` (layout object)
  A pointer to a slur object

This grob interface is used in the following graphical objects: AccidentalSuggestion, DynamicText and Script

#### self-alignment-interface

Position this object on itself and/or on its parent. To this end, the following functions are provided:

`Self_alignment_interface::[xy]_aligned_on_self`
  Align self on reference point, using `self-alignment-X` and `self-alignment-Y`.
`Self_alignment_interface::aligned_on_[xy]_parent`
`Self_alignment_interface::centered_on_[xy]_parent`
  Shift the object so its own reference point is centered on the extent of the parent

##### User settable properties:

`self-alignment-X` (number)
  Specify alignment of an object. The value -1 means left aligned, 0 centered, and 1 right-aligned in X direction. Values in between may also be specified.
`self-alignment-Y` (number)
  like `self-alignment-X` but for Y axis.

This grob interface is used in the following graphical objects: AccidentalSuggestion, BarNumber, DoublePercentRepeatCounter, DynamicText, Fingering, GridLine, Hairpin, LyricText, MultiMeasureRestNumber, MultiMeasureRestText, OctavateEight, PercentRepeatCounter, RehearsalMark, SostenutoPedal, StringNumber, SustainPedal and UnaCordaPedal

#### semi-tie-column-interface

The interface for a column of l.v. ties.

##### User settable properties:

`head-direction` (direction)
  Are the note heads left or right in a semitie?
`tie-configuration` (list)
  List of (position . dir) pairs, indicating the desired tie configuration. A non-pair entry in the list will cause said tie to be formatted automatically.

##### Internal properties:

`positioning-done` (boolean)
  Used to signal that a positioning element did its job. This ensures that a positioning is only done once.

This grob interface is used in the following graphical objects: LaissezVibrerTieColumn and RepeatTieColumn

#### semi-tie-interface

A tie which is only on one side connected to note heads.

##### User settable properties:

`control-points` (list)
  List of offsets (number-pairs) that form control points for the tie/slur/bracket shape. For beziers, this should list the control points of a 3rd order bezier curve.
`direction` (direction)
  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)
`thickness` (number)
  Bar line thickness, measured in `line-thickness`.

##### Internal properties:

`details` (list)
  alist of parameters for detailed grob behavior.

  more information on the allowed parameters can be found by inspecting lily/slur-scoring.cc, lily/beam-quanting.cc, and lily/tie-formatting-problem.cc. Setting `debug-tie-scoring`, `debug-beam-scoring` or `debug-slur-scoring` also provides useful clues.

`note-head` (layout object)
  A single note head

This grob interface is used in the following graphical objects: LaissezVibrerTie and RepeatTie

#### separation-item-interface

Item that computes widths to generate spacing rods. This is done in concert with separation-spanner-interface.

##### User settable properties:

`X-extent` (pair of numbers)
  Hard coded extent in X direction.
`padding` (dimension, in staff space)
  Add this much extra space between objects that are next to each other.

##### Internal properties:

`conditional-elements` (unknown)
  Internal use only
`elements` (unknown)
  list of grobs, type depending on the Grob where this is set in.

This grob interface is used in the following graphical objects: SeparationItem

#### separation-spanner-interface

A spanner that calculates spacing constraints ("rods") using the `separation-item-interface` grobs in `elements`.

##### User settable properties:

`padding` (dimension, in staff space)
  Add this much extra space between objects that are next to each other.

##### Internal properties:

`elements` (unknown)
  list of grobs, type depending on the Grob where this is set in.

This grob interface is used in the following graphical objects: SeparatingGroupSpanner

#### side-position-interface

Position a victim object (this one) next to other objects (the support). The property `direction` signifies where to put the victim object relative to the support (left or right, up or down?)

The routine also takes the size the staff into account if `staff-padding` is set. If undefined, the staff symbol is ignored.

##### User settable properties:

`direction` (direction)
  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)
`minimum-space` (dimension, in staff space)
  Minimum distance that the victim should move (after padding).
`padding` (dimension, in staff space)
  Add this much extra space between objects that are next to each other.
`side-axis` (number)
  Is this object horizontally or vertically next to another object?
`side-relative-direction` (direction)
  Multiply direction of `direction-source` with this to get the direction of this object.
`slur-padding` (number)
  Extra distance between slur and script.
`staff-padding` (dimension, in staff space)
  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.

##### Internal properties:

`direction-source` (layout object)
  in case side-relative-direction is set, which grob to get the direction from .
`quantize-position` (boolean)
  If set, a vertical alignment is aligned to be within staff spaces.
`side-support-elements` (unknown)
  the support, a list of grobs.

This grob interface is used in the following graphical objects: AccidentalSuggestion, AmbitusAccidental, Arpeggio, BarNumber, CombineTextScript, DoublePercentRepeatCounter, DynamicLineSpanner, Fingering, HorizontalBracket, InstrumentName, MeasureGrouping, MetronomeMark, MultiMeasureRestNumber, MultiMeasureRestText, OctavateEight, OttavaBracket, PercentRepeatCounter, RehearsalMark, Script, SostenutoPedalLineSpanner, StanzaNumber, StringNumber, SustainPedalLineSpanner, SystemStartBar, SystemStartBrace, SystemStartBracket, SystemStartSquare, TextScript, TextSpanner, TrillPitchAccidental, TrillPitchGroup, TrillSpanner, UnaCordaPedalLineSpanner and VoltaBracket

#### slur-interface

A slur

##### User settable properties:

`avoid-slur` (symbol)
  Method of handling slur collisions. Choices are `around`, `inside`, `outside`. If unset, script and slur ignore eachother.
`control-points` (list)
  List of offsets (number-pairs) that form control points for the tie/slur/bracket shape. For beziers, this should list the control points of a 3rd order bezier curve.
`dash-fraction` (number)
  Size of the dashes, relative to dash-period. Should be between 0.0 (no line) and 1.0 (continuous line).
`dash-period` (number)
  the length of one dash + white space. If negative, no line is drawn at all.
`direction` (direction)
  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)
`eccentricity` (number)
  How asymmetrical to make a slur. Positive means move the center to the right.
`height-limit` (dimension, in staff space)
  Maximum slur height: the longer the slur, the closer it is to this height.
`line-thickness` (number)
  The thickness of the tie/slur contour.
`positions` (pair)
  Pair of staff coordinates `(`left`.` right`)`, where both left and right are in the staff-space unit of the current staff.
`ratio` (number)
  Parameter for slur shape. The higher this number, the quicker the slur attains it `height-limit`.
`thickness` (number)
  Bar line thickness, measured in `line-thickness`.

##### Internal properties:

`details` (list)
  alist of parameters for detailed grob behavior.

  more information on the allowed parameters can be found by inspecting lily/slur-scoring.cc, lily/beam-quanting.cc, and lily/tie-formatting-problem.cc. Setting `debug-tie-scoring`, `debug-beam-scoring` or `debug-slur-scoring` also provides useful clues.

`encompass-objects` (unknown)
  Objects that a slur should avoid in addition to notes and stems.
`note-columns` (pair)
  list of NoteColumn grobs.
`quant-score` (string)
  Beam quanting score – can be stored for debugging

This grob interface is used in the following graphical objects: PhrasingSlur and Slur

#### spaceable-grob-interface

A layout object that takes part in the spacing problem.

##### User settable properties:

`keep-inside-line` (boolean)
  If set, this column cannot have things sticking into the margin.
`measure-length` (moment)
  Length of a measure. Used in some spacing situations.
`penalty` (number)
  Penalty for line break at this column. 10000 or more means forbid line break, -10000 or less means force line break. Other values influence line breaking decisions as a real penalty.

##### Internal properties:

`ideal-distances` (list)
  (obj . (dist . strength)) pairs.
`left-neighbors` (unknown)
  List of spacing-wish grobs that are close to the current column.

  The closest spacing-wishes determine the actual distances between the columns.

`minimum-distances` (list)
  list of rods, that have the format (obj . dist).
`right-neighbors` (unknown)
  see left-neighbors
`spacing-wishes` (unknown)
  List of note spacing or staff spacing objects.

This grob interface is used in the following graphical objects: NonMusicalPaperColumn and PaperColumn

#### spacing-interface

Something to do with line breaking and spacing. Kill this one after determining line breaks.

This grob interface is used in the following graphical objects: LyricSpace, MelodyItem, NoteSpacing, SeparatingGroupSpanner, SeparationItem, SpacingSpanner and StaffSpacing

#### spacing-spanner-interface

The space taken by a note is dependent on its duration. Doubling a duration adds spacing-increment to the space. The most common shortest note gets `shortest-duration-space`. Notes that are even shorter are spaced proportonial to their duration.

Typically, the increment is the width of a black note head. In a piece with lots of 8th notes, and some 16th notes, the eighth note gets 2 note heads width (i.e. the space following a note is 1 note head width) A 16th note is followed by 0.5 note head width. The quarter note is followed by 3 NHW, the half by 4 NHW, etc.

##### User settable properties:

`average-spacing-wishes` (boolean)
  If set, the spacing wishes are averaged over staves.
`base-shortest-duration` (moment)
  Spacing is based on the shortest notes in a piece. Normally, pieces are spaced as if notes at least as short as this are present.
`common-shortest-duration` (moment)
  The most common shortest note length. This is used in spacing. Enlarging this will set the score tighter.
`grace-space-factor` (number)
  Space grace notes at this fraction of the `spacing-increment`.
`packed-spacing` (boolean)
  If set, the notes are spaced as tightly as possible.
`shortest-duration-space` (dimension, in staff space)
  Start with this much space for the shortest duration. This is expressed in `spacing-increment` as unit. See also spacing-spanner-interface.
`spacing-increment` (number)
  Add this much space for a doubled duration. Typically, the width of a note head. See also spacing-spanner-interface.
`strict-note-spacing` (boolean)
  If set, unbroken columns with non-musical material (clefs, barlines, etc.) are not spaced separately, but put before musical columns.
`uniform-stretching` (boolean)
  If set, items stretch proportional to their durations. This looks better in complex polyphonic patterns

This grob interface is used in the following graphical objects: SpacingSpanner

#### span-bar-interface

A bar line that spanned between other barlines. This interface is used for bar lines that connect different staves.

##### Internal properties:

`elements` (unknown)
  list of grobs, type depending on the Grob where this is set in.
`glyph-name` (string)
  a name of character within font.

This grob interface is used in the following graphical objects: SpanBar

#### spanner-interface

Some objects are horizontally spanned between objects. For example, slur, beam, tie, etc. These grobs form a subtype called `Spanner`. All spanners have two span-points (these must be `Item` objects), one on the left and one on the right. The left bound is also the X-reference point of the spanner.

##### User settable properties:

`minimum-length` (dimension, in staff space)
  Try to make a spanner at least this long. This requires an appropriate callback for the `springs-and-rods` property.

This grob interface is used in the following graphical objects: BassFigureAlignment, BassFigureContinuation, BassFigureLine, Beam, ClusterSpanner, DynamicLineSpanner, DynamicTextSpanner, DynamicTextSpanner, Glissando, Hairpin, Hairpin, HorizontalBracket, HorizontalBracket, InstrumentName, LedgerLineSpanner, LigatureBracket, LyricExtender, LyricHyphen, LyricHyphen, LyricSpace, LyricSpace, MeasureGrouping, MensuralLigature, MultiMeasureRest, MultiMeasureRestNumber, MultiMeasureRestText, OttavaBracket, PercentRepeat, PercentRepeatCounter, PhrasingSlur, PianoPedalBracket, SeparatingGroupSpanner, Slur, SostenutoPedalLineSpanner, SpacingSpanner, StaffSymbol, SustainPedalLineSpanner, System, SystemStartBar, SystemStartBrace, SystemStartBracket, SystemStartSquare, TextSpanner, Tie, TieColumn, TrillSpanner, TupletBracket, TupletNumber, UnaCordaPedalLineSpanner, VaticanaLigature, VerticalAlignment, VerticalAxisGroup, VoiceFollower and VoltaBracket

#### staff-spacing-interface

This object calculates spacing details from a breakable symbol (left) to another object. For example, it takes care of optical spacing from a bar lines to a note.

##### User settable properties:

`stem-spacing-correction` (number)
  Optical correction amount for stems that are placed in tight configurations. For opposite directions, this amount is the correction for two normal sized stems that overlap completely.

##### Internal properties:

`left-items` (unknown)
`right-items` (unknown)

This grob interface is used in the following graphical objects: StaffSpacing

#### staff-symbol-interface

This spanner draws the lines of a staff. A staff symbol definines a vertical unit, the staff space. Quantities that go by a half staff space are called positions The center (i.e. middle line or space) is position 0. The length of the symbol may be set by hand through the `width` property.

##### User settable properties:

`ledger-line-thickness` (pair of numbers)
  The thickness of ledger lines: it is the sum of 2 numbers. The first is the factor for line thickness, and the second for staff space. Both contributions are added.
`line-count` (integer)
  The number of staff lines.
`line-positions` (list)
  Vertical positions of staff lines.
`staff-space` (dimension, in staff space)
  Amount of space between staff lines, expressed in global staff-space.
`thickness` (number)
  Bar line thickness, measured in `line-thickness`.
`width` (dimension, in staff space)
  The width of a grob measured in staff space.

This grob interface is used in the following graphical objects: StaffSymbol

#### staff-symbol-referencer-interface

An object whose Y position is meant relative to a staff symbol. These usually have `Staff_symbol_referencer::callback` in their `Y-offset-callbacks`.

##### User settable properties:

`staff-position` (number)
  Vertical position, measured in half staff spaces, counted from the middle line.

This grob interface is used in the following graphical objects: AmbitusLine, AmbitusNoteHead, Arpeggio, Beam, Clef, Custos, Dots, MultiMeasureRest, NoteHead, Rest, TabNoteHead and TrillPitchHead

#### stanza-number-interface

A stanza number, to be put in from of a lyrics line

This grob interface is used in the following graphical objects: StanzaNumber

#### stem-interface

The stem represent the graphical stem. In addition, it internally connects note heads, beams andtremolos. Rests and whole notes have invisible stems.

The following properties may be set in the details list.

`beamed-lengths`
  list of stem lengths given beam multiplicity.
`beamed-minimum-free-lengths`
  list of normal minimum free stem lengths (chord to beams) given beam multiplicity.
`beamed-extreme-minimum-free-lengths`
  list of extreme minimum free stem lengths (chord to beams) given beam multiplicity.
`lengths`
  Default stem lengths. The list gives a length for each flag-count.
`stem-shorten`
  How much a stem in a forced direction should be shortened. The list gives an amount depending on the number of flags/beams.

##### User settable properties:

`avoid-note-head` (boolean)
  If set, the stem of a chord does not pass through all note heads, but starts at the last note head.
`beaming` (pair)
  Pair of number lists. Each number list specifies which beams to make. 0 is the central beam, 1 is the next beam toward the note etc. This information is used to determine how to connect the beaming patterns from stem to stem inside a beam.
`default-direction` (direction)
  Direction determined by note head positions.
`direction` (direction)
  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)
`duration-log` (integer)
  The 2-log of the note head duration, i.e. 0=whole note, 1 = half note, etc.
`flag-style` (symbol)
  a string determining what style of flag-glyph is typeset on a Stem. Valid options include `()` and `mensural`. Additionally, `"no-flag"` switches off the flag.
`french-beaming` (boolean)
  Use French beaming style for this stem. The stem will stop at the innermost beams.
`length` (dimension, in staff space)
  User override for the stem length of unbeamed stems.
`length-fraction` (number)
  Multiplier for lengths. Used for determining ledger lines and stem lengths.
`neutral-direction` (direction)
  Which direction to take in the center of the staff.
`no-stem-extend` (boolean)
  If set, notes with ledger lines do not get stems extending to the middle staff line.
`stem-end-position` (number)
  Where does the stem end (the end is opposite to the support-head.
`stemlet-length` (number)
  How long should a stem over a rest be?
`stroke-style` (string)
  set to "grace" to turn stroke through flag on.
`thickness` (number)
  Bar line thickness, measured in `line-thickness`.

##### Internal properties:

`beam` (layout object)
  pointer to the beam, if applicable.
`details` (list)
  alist of parameters for detailed grob behavior.

  more information on the allowed parameters can be found by inspecting lily/slur-scoring.cc, lily/beam-quanting.cc, and lily/tie-formatting-problem.cc. Setting `debug-tie-scoring`, `debug-beam-scoring` or `debug-slur-scoring` also provides useful clues.

`note-heads` (unknown)
  List of note head grobs
`positioning-done` (boolean)
  Used to signal that a positioning element did its job. This ensures that a positioning is only done once.
`rests` (unknown)
  A list of rest objects.
`stem-info` (pair)
  caching of stem parameters
`tremolo-flag` (layout object)
  The tremolo object on a stem.

This grob interface is used in the following graphical objects: Stem

#### stem-tremolo-interface

A beam slashing a stem to indicate a tremolo.

##### User settable properties:

`beam-thickness` (dimension, in staff space)
  thickness, measured in staff-space.
`beam-width` (dimension, in staff space)
  width of the tremolo sign.
`flag-count` (number)
  The number of tremolo beams.
`slope` (number)
  The slope of this object.
`style` (symbol)
  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.

##### Internal properties:

`stem` (layout object)
  pointer to Stem object.

This grob interface is used in the following graphical objects: StemTremolo

#### string-number-interface

A string number instruction

This grob interface is used in the following graphical objects: StringNumber

#### system-interface

This is the toplevel object: each object in a score ultimately has a System object as its X and Y parent.

##### Internal properties:

`all-elements` (unknown)
  list of all grobs in this line. Its function is to protect objects from being garbage collected.
`columns` (unknown)
  list of grobs, typically containing paper-columns or note-column objects.
`spaceable-staves` (unknown)
  Objects to be spaced during page layout.

This grob interface is used in the following graphical objects: System and System

#### system-start-delimiter-interface

The brace, bracket or bar in front of the system.

##### User settable properties:

`collapse-height` (dimension, in staff space)
  Minimum height of system start delimiter. If equal or smaller, the bracket is removed.
`style` (symbol)
  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.
`thickness` (number)
  Bar line thickness, measured in `line-thickness`.

This grob interface is used in the following graphical objects: SystemStartBar, SystemStartBrace, SystemStartBracket and SystemStartSquare

#### system-start-text-interface

A text at the beginning of a system.

##### User settable properties:

`collapse-height` (dimension, in staff space)
  Minimum height of system start delimiter. If equal or smaller, the bracket is removed.
`long-text` (markup)
  Text markup. See Text markup .
`style` (symbol)
  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.
`text` (markup)
  Text markup. See Text markup .

This grob interface is used in the following graphical objects: InstrumentName

#### tablature-interface

An interface for any notes set in a tablature staff

This grob interface is used in the following graphical objects: none

#### text-balloon-interface

A collection of routines to put text balloons around an object.

##### User settable properties:

`balloon-padding` (dimension, in staff space)
  Text to add to help balloon
`balloon-text` (markup)
  Text to add to help balloon
`balloon-text-offset` (pair of numbers)
  Where to put text relative to balloon.
`balloon-text-props` (list)
  Font properties for balloon text.
`original-stencil` (unknown)
  The original stencil drawer to draw the balloon around.

This grob interface is used in the following graphical objects: none

#### text-interface

A scheme markup text, see Text markup .

##### User settable properties:

`baseline-skip` (dimension, in staff space)
  Distance between base lines of multiple lines of text.
`text` (markup)
  Text markup. See Text markup .
`text-direction` (direction)
  This controls the ordering of the words. The default RIGHT is for roman text. Arabic or hebrew should use LEFT.
`word-space` (dimension, in staff space)
  space to insert between words in texts.

This grob interface is used in the following graphical objects: BarNumber, BassFigure, BreathingSign, ChordName, CombineTextScript, DoublePercentRepeatCounter, DynamicText, DynamicTextSpanner, Fingering, LyricText, MetronomeMark, MultiMeasureRestNumber, MultiMeasureRestText, NoteName, OctavateEight, OttavaBracket, PercentRepeatCounter, RehearsalMark, SostenutoPedal, StanzaNumber, StringNumber, SustainPedal, TabNoteHead, TextScript, TupletNumber, UnaCordaPedal and VoltaBracket

#### text-script-interface

An object that is put above or below a note

##### User settable properties:

`add-stem-support` (boolean)
  If set, the Stem object is included in this script's support
`avoid-slur` (symbol)
  Method of handling slur collisions. Choices are `around`, `inside`, `outside`. If unset, script and slur ignore eachother.
`script-priority` (number)
  A sorting key that determines in what order a script is within a stack of scripts.

##### Internal properties:

`slur` (layout object)
  A pointer to a slur object

This grob interface is used in the following graphical objects: CombineTextScript, Fingering, StringNumber and TextScript

#### text-spanner-interface

generic text spanner

##### User settable properties:

`bound-padding` (number)
  The amount of padding to insert around spanner bounds.
`bracket-flare` (pair of numbers)
  A pair of numbers specifying how much edges of brackets should slant outward. Value 0.0 means straight edges
`dash-fraction` (number)
  Size of the dashes, relative to dash-period. Should be between 0.0 (no line) and 1.0 (continuous line).
`dash-period` (number)
  the length of one dash + white space. If negative, no line is drawn at all.
`edge-height` (pair)
  A pair of number specifying the heights of the vertical edges '(left-height . right-height).
`edge-text` (pair)
  A pair specifying the texts to be set at the edges '(left-text . right-text).
`enclose-bounds` (number)
  How much of the bound a spanner should enclose: +1 = completely, 0 = center, -1 not at all.
`shorten-pair` (pair of numbers)
  The lengths to shorten a text-spanner on both sides, for example a pedal bracket
`style` (symbol)
  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.
`thickness` (number)
  Bar line thickness, measured in `line-thickness`.

This grob interface is used in the following graphical objects: SustainPedal, TextSpanner and TrillSpanner

#### tie-column-interface

Object that sets directions of multiple ties in a tied chord

##### User settable properties:

`tie-configuration` (list)
  List of (position . dir) pairs, indicating the desired tie configuration. A non-pair entry in the list will cause said tie to be formatted automatically.

##### Internal properties:

`positioning-done` (boolean)
  Used to signal that a positioning element did its job. This ensures that a positioning is only done once.

This grob interface is used in the following graphical objects: TieColumn

#### tie-interface

A horizontal curve connecting two noteheads.

##### User settable properties:

`avoid-slur` (symbol)
  Method of handling slur collisions. Choices are `around`, `inside`, `outside`. If unset, script and slur ignore eachother.
`control-points` (list)
  List of offsets (number-pairs) that form control points for the tie/slur/bracket shape. For beziers, this should list the control points of a 3rd order bezier curve.
`dash-fraction` (number)
  Size of the dashes, relative to dash-period. Should be between 0.0 (no line) and 1.0 (continuous line).
`dash-period` (number)
  the length of one dash + white space. If negative, no line is drawn at all.
`direction` (direction)
  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)
`line-thickness` (number)
  The thickness of the tie/slur contour.
`staff-position` (number)
  Vertical position, measured in half staff spaces, counted from the middle line.
`thickness` (number)
  Bar line thickness, measured in `line-thickness`.

##### Internal properties:

`details` (list)
  alist of parameters for detailed grob behavior.

  more information on the allowed parameters can be found by inspecting lily/slur-scoring.cc, lily/beam-quanting.cc, and lily/tie-formatting-problem.cc. Setting `debug-tie-scoring`, `debug-beam-scoring` or `debug-slur-scoring` also provides useful clues.

`quant-score` (string)
  Beam quanting score – can be stored for debugging

This grob interface is used in the following graphical objects: Tie

#### time-signature-interface

A time signature, in different styles. The following values for 'style are are recognized:

```C``'
  4/4 and 2/2 are typeset as C and struck C, respectively. All other time signatures are written with two digits.
```neomensural``'
  2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8 and 9/8 are typeset with neo-mensural style mensuration marks. All other time signatures are written with two digits.
```mensural``'
  2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8 and 9/8 are typeset with mensural style mensuration marks. All other time signatures are written with two digits.
```single-digit``'
  All time signatures are typeset with a single digit, e.g. 3/2 is written as 3.

See also the test-file `input/test/time.ly`.

##### User settable properties:

`fraction` (pair of numbers)
  Numerator and denominator of a time signature object.
`style` (symbol)
  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.

This grob interface is used in the following graphical objects: TimeSignature

#### tuplet-bracket-interface

A bracket with a number in the middle, used for tuplets. When the bracket spans a line break, the value of `break-overshoot` determines how far it extends beyond the staff. At a line break, the markups in the `edge-text` are printed at the edges.

##### User settable properties:

`bracket-flare` (pair of numbers)
  A pair of numbers specifying how much edges of brackets should slant outward. Value 0.0 means straight edges
`bracket-visibility` (boolean or symbol)
  This controls the visibility of the tuplet bracket. Setting it to false will prevent printing of the bracket. Setting the property to `'if-no-beam` will make it print only if there is no beam associated with this tuplet bracket.
`break-overshoot` (pair of numbers)
  How much does a broken spanner stick out of its bounds?
`connect-to-neighbor` (pair)
  Pair of booleans, indicating whether this grob looks as a continued break.
`control-points` (list)
  List of offsets (number-pairs) that form control points for the tie/slur/bracket shape. For beziers, this should list the control points of a 3rd order bezier curve.
`direction` (direction)
  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)
`edge-height` (pair)
  A pair of number specifying the heights of the vertical edges '(left-height . right-height).
`edge-text` (pair)
  A pair specifying the texts to be set at the edges '(left-text . right-text).
`gap` (dimension, in staff space)
  Size of a gap in a variable symbol.
`padding` (dimension, in staff space)
  Add this much extra space between objects that are next to each other.
`positions` (pair)
  Pair of staff coordinates `(`left`.` right`)`, where both left and right are in the staff-space unit of the current staff.
`shorten-pair` (pair of numbers)
  The lengths to shorten a text-spanner on both sides, for example a pedal bracket
`staff-padding` (dimension, in staff space)
  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.
`thickness` (number)
  Bar line thickness, measured in `line-thickness`.

##### Internal properties:

`note-columns` (pair)
  list of NoteColumn grobs.
`tuplet-number` (layout object)
  the number for a bracket.
`tuplets` (unknown)
  list of smaller tuplet brackets

This grob interface is used in the following graphical objects: LigatureBracket and TupletBracket

#### tuplet-number-interface

The number for a bracket.

##### User settable properties:

`avoid-slur` (symbol)
  Method of handling slur collisions. Choices are `around`, `inside`, `outside`. If unset, script and slur ignore eachother.

##### Internal properties:

`bracket` (layout object)
  the bracket for a number.

This grob interface is used in the following graphical objects: TupletNumber

#### vaticana-ligature-interface

A vaticana style gregorian ligature

##### User settable properties:

`thickness` (number)
  Bar line thickness, measured in `line-thickness`.

##### Internal properties:

`add-cauda` (boolean)
  does this flexa require an additional cauda on the left side?
`add-join` (boolean)
  is this ligature head joined with the next one by a vertical line?
`add-stem` (boolean)
  is this ligature head a virga and therefore needs an additional stem on the right side?
`delta-pitch` (number)
  the interval between this and the next note, or, more precisely, their vertical distance; this is used in ligatures for calculation of the height of vertical joins flexa shapes
`flexa-height` (dimension, in staff space)
  height of a flexa shape in a ligature grob in staff_space.
`flexa-width` (dimension, in staff space)
  width of a flexa shape in a ligature grob in staff_space.
`glyph-name` (string)
  a name of character within font.
`x-offset` (dimension, in staff space)
  Extra horizontal offset for ligature heads.

This grob interface is used in the following graphical objects: VaticanaLigature

#### vertically-spaceable-interface

Objects that should be kept at constant vertical distances. Typically: VerticalAxisGroup objects of Staff contexts.

This grob interface is used in the following graphical objects: VerticalAxisGroup

#### volta-bracket-interface

Volta bracket with number

##### User settable properties:

`height` (dimension, in staff space)
  Height of an object in staff-space.
`thickness` (number)
  Bar line thickness, measured in `line-thickness`.

##### Internal properties:

`bars` (unknown)
  list of bar line pointers.

This grob interface is used in the following graphical objects: VoltaBracket

### User backend properties

`X-extent` (pair of numbers)
  Hard coded extent in X direction.
`X-offset` (number)
  The horizontal amount that this object is moved relative to its X-parent
`Y-extent` (pair of numbers)
  See `X-extent`.
`Y-offset` (number)
  The vertical amount that this object is moved relative to its Y-parent
`accidentals` (list)
  List of alteration numbers
`add-stem-support` (boolean)
  If set, the Stem object is included in this script's support
`after-line-breaking` (boolean)
  Dummy property, used to trigger callback for after-line-breaking
`align-dir` (direction)
  Which side to align? `-1`: left side, `0`: around center of width, `1`: right side.
`alteration-alist` (list)
  List of `(`pitch`.` accidental`)` pairs for key signature.
`arpeggio-direction` (direction)
  If set, put an arrow on the arpeggio squiggly line.
`arrow` (boolean)
  Add an arrow to the line.
`arrow-length` (number)
  Arrow length.
`arrow-width` (number)
  Arrow width.
`auto-knee-gap` (dimension, in staff space)
  If a gap is found between note heads where a horizontal beam fits that is larger than this number, make a kneed beam.
`average-spacing-wishes` (boolean)
  If set, the spacing wishes are averaged over staves.
`avoid-note-head` (boolean)
  If set, the stem of a chord does not pass through all note heads, but starts at the last note head.
`avoid-slur` (symbol)
  Method of handling slur collisions. Choices are `around`, `inside`, `outside`. If unset, script and slur ignore eachother.
`axes` (list)
  list of axis numbers. In the case of alignment grobs, this should contain only one number.
`balloon-padding` (dimension, in staff space)
  Text to add to help balloon
`balloon-text` (markup)
  Text to add to help balloon
`balloon-text-offset` (pair of numbers)
  Where to put text relative to balloon.
`balloon-text-props` (list)
  Font properties for balloon text.
`bar-size` (dimension, in staff space)
  size of a bar line.
`barre-type` (symbol)
  Type of barre indication used in a fret diagram. Choices include `curved` and `straight`.
`base-shortest-duration` (moment)
  Spacing is based on the shortest notes in a piece. Normally, pieces are spaced as if notes at least as short as this are present.
`baseline-skip` (dimension, in staff space)
  Distance between base lines of multiple lines of text.
`beam-thickness` (dimension, in staff space)
  thickness, measured in staff-space.
`beam-width` (dimension, in staff space)
  width of the tremolo sign.
`beamed-stem-shorten` (list)
  How much to shorten beamed stems, when their direction is forced. It is a list, since the value is different depending on the number flags/beams.
`beaming` (pair)
  Pair of number lists. Each number list specifies which beams to make. 0 is the central beam, 1 is the next beam toward the note etc. This information is used to determine how to connect the beaming patterns from stem to stem inside a beam.
`before-line-breaking` (boolean)
  Dummy property, used to trigger a callback function.
`between-cols` (pair)
  Where to attach a loose column to
`bound-padding` (number)
  The amount of padding to insert around spanner bounds.
`bracket-flare` (pair of numbers)
  A pair of numbers specifying how much edges of brackets should slant outward. Value 0.0 means straight edges
`bracket-visibility` (boolean or symbol)
  This controls the visibility of the tuplet bracket. Setting it to false will prevent printing of the bracket. Setting the property to `'if-no-beam` will make it print only if there is no beam associated with this tuplet bracket.
`break-align-orders` (vector)
  Defines the order in which prefatory matter (clefs, key signatures) appears. The format is a vector of length 3, where each element is one order for end-of-line, middle of line, and start-of-line respectively. An order is a list of symbols.

  For example, clefs are put after key signatures by setting

                	\override Score.BreakAlignment #'break-align-orders = #(make-vector  3
                	  '(span-bar
                	  breathing-sign
                	  staff-bar
                	  key
                	  clef
                	  time-signature))

`break-align-symbol` (symbol)
  This key is used for aligning and spacing breakable items.
`break-overshoot` (pair of numbers)
  How much does a broken spanner stick out of its bounds?
`break-visibility` (vector)
  A vector of 3 booleans, #(end-of-line unbroken begin-of-line). #t means visible, #f means killed.
`breakable` (boolean)
  Can this object appear at a line break, like clefs and bar lines?
`c0-position` (integer)
  An integer indicating the position of middle C.
`cautionary` (boolean)
  Is this a cautionary accidental?
`cautionary-style` (symbol)
  How to print cautionary accidentals. Choices are `smaller` or `parentheses`.
`collapse-height` (dimension, in staff space)
  Minimum height of system start delimiter. If equal or smaller, the bracket is removed.
`color` (list)
  The color of this grob.
`common-shortest-duration` (moment)
  The most common shortest note length. This is used in spacing. Enlarging this will set the score tighter.
`concaveness` (number)
  A beam is concave when its inner stems are closer to the beam than the two outside stems. This number is a measure of the closeness of the inner stems. It is used for damping the slope of the beam.
`connect-to-neighbor` (pair)
  Pair of booleans, indicating whether this grob looks as a continued break.
`control-points` (list)
  List of offsets (number-pairs) that form control points for the tie/slur/bracket shape. For beziers, this should list the control points of a 3rd order bezier curve.
`damping` (number)
  Amount of beam slope damping. 0: no, 1: yes, 100000: horizontal beams.
`dash-fraction` (number)
  Size of the dashes, relative to dash-period. Should be between 0.0 (no line) and 1.0 (continuous line).
`dash-period` (number)
  the length of one dash + white space. If negative, no line is drawn at all.
`default-direction` (direction)
  Direction determined by note head positions.
`direction` (direction)
  #UP or #DOWN, #LEFT or #RIGHT? (or a numerical value, #UP=1, #DOWN=-1, #LEFT=-1, #RIGHT=1, CENTER=0)
`dot-color` (symbol)
  Color of dots. Options include `black` and `white`.
`dot-count` (integer)
  The number of dots.
`dot-radius` (number)
  Radius of dots.
`duration-log` (integer)
  The 2-log of the note head duration, i.e. 0=whole note, 1 = half note, etc.
`eccentricity` (number)
  How asymmetrical to make a slur. Positive means move the center to the right.
`edge-height` (pair)
  A pair of number specifying the heights of the vertical edges '(left-height . right-height).
`edge-text` (pair)
  A pair specifying the texts to be set at the edges '(left-text . right-text).
`enclose-bounds` (number)
  How much of the bound a spanner should enclose: +1 = completely, 0 = center, -1 not at all.
`expand-limit` (integer)
  maximum number of measures expanded in church rests.
`extra-X-extent` (pair of numbers)
  A grob is enlarged in X dimension by this much.
`extra-Y-extent` (pair of numbers)
  See `extra-Y-extent`.
`extra-offset` (pair of numbers)
  A pair representing an offset. This offset is added just before outputting the symbol, so the typesetting engine is completely oblivious to it.
`finger-code` (symbol)
  Code for the type of fingering indication in a fret diagram. Options include `none`, `in-dot`, and `below-string`.
`flag-count` (number)
  The number of tremolo beams.
`flag-style` (symbol)
  a string determining what style of flag-glyph is typeset on a Stem. Valid options include `()` and `mensural`. Additionally, `"no-flag"` switches off the flag.
`font-encoding` (symbol)
  The font encoding is the broadest category for selecting a font. Options include: `fetaMusic`, `fetaNumber`, `TeX-text`, `TeX-math`, `fetaBraces`, `fetaDynamic`
`font-family` (symbol)
  The font family is the broadest category for selecting text fonts. Options include: `sans`, `roman`
`font-magnification` (number)
  Magnification of the font, when it is selected with `font-name`.
`font-name` (string)
  Specifies a file name (without extension) of the font to load. This setting override selection using `font-family`, `font-series` and `font-shape`.
`font-series` (symbol)
  Select the series of a font. Choices include `medium`, `bold`, `bold-narrow`, etc.
`font-shape` (symbol)
  Select the shape of a font. Choices include `upright`, `italic`, `caps`.
`font-size` (number)
  The font size, compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Each step of 1 is approximately 12% larger, 6 steps are exactly a factor 2 larger. Fractional values are allowed.
`force-hshift` (number)
  This specifies a manual shift for notes in collisions. The unit is the note head width of the first voice note. This is used by note-collision-interface.
`forced-distance` (dimension, in staff space)
  A fixed distance between object reference points in an alignment.
`fraction` (pair of numbers)
  Numerator and denominator of a time signature object.
`french-beaming` (boolean)
  Use French beaming style for this stem. The stem will stop at the innermost beams.
`fret-count` (integer)
  The number of frets in a fret diagram.
`full-size-change` (boolean)
  Don't make a change clef smaller.
`gap` (dimension, in staff space)
  Size of a gap in a variable symbol.
`gap-count` (integer)
  Number of gapped beams for tremolo.
`glyph` (string)
  a string determining what (style) of glyph is typeset. Valid choices depend on the function that is reading this property.
`grace-space-factor` (number)
  Space grace notes at this fraction of the `spacing-increment`.
`grow-direction` (direction)
  Crescendo or decrescendo?
`hair-thickness` (number)
  Thickness of the thin line in a bar line.
`head-direction` (direction)
  Are the note heads left or right in a semitie?
`height` (dimension, in staff space)
  Height of an object in staff-space.
`height-limit` (dimension, in staff space)
  Maximum slur height: the longer the slur, the closer it is to this height.
`horizontal-shift` (integer)
  An integer that identifies ranking of note-column for horizontal shifting. This is used by note-collision-interface.
`implicit` (boolean)
  Is this an implicit bass figure?
`inspect-quants` (pair of numbers)
  If debugging is set, set beam quant to this position, and print the respective scores.
`keep-inside-line` (boolean)
  If set, this column cannot have things sticking into the margin.
`kern` (dimension, in staff space)
  Amount of extra white space to add. For bar line, this is the amount of space after a thick line.
`knee` (boolean)
  Is this beam kneed?
`knee-spacing-correction` (number)
  Factor for the optical correction amount for kneed beams. Set between 0 for no correction and 1 for full correction.
`label-dir` (direction)
  Side to which label is attached. `-1` for left, `1` for right.
`layer` (number)
  The output layer [0..2]: layers define the order of printing objects. Objects in lower layers are overprinted by objects in higher layers.
`ledger-line-thickness` (pair of numbers)
  The thickness of ledger lines: it is the sum of 2 numbers. The first is the factor for line thickness, and the second for staff space. Both contributions are added.
`left-padding` (dimension, in staff space)
  The amount of space that is put left to a group of accidentals.
`length` (dimension, in staff space)
  User override for the stem length of unbeamed stems.
`length-fraction` (number)
  Multiplier for lengths. Used for determining ledger lines and stem lengths.
`line-break-system-details` (list)
  Alist of properties to use when this column is the start of a system.
`line-count` (integer)
  The number of staff lines.
`line-positions` (list)
  Vertical positions of staff lines.
`line-thickness` (number)
  The thickness of the tie/slur contour.
`long-text` (markup)
  Text markup. See Text markup .
`measure-count` (integer)
  The number of measures for a multimeasure rest.
`measure-length` (moment)
  Length of a measure. Used in some spacing situations.
`merge-differently-dotted` (boolean)
  Merge note heads in collisions, even if they have a different number of dots. This normal notation for some types of polyphonic music.
`merge-differently-headed` (boolean)
  Merge note heads in collisions, even if they have different note heads. The smaller of the two heads will be rendered invisible. This used polyphonic guitar notation. The value of this setting is used by note-collision-interface .
`minimum-X-extent` (pair of numbers)
  Minimum size of an object in X dimension, measured in staff space.
`minimum-Y-extent` (pair of numbers)
  See `minimum-Y-extent`.
`minimum-distance` (dimension, in staff space)
  Minimum distance between rest and notes or beam.
`minimum-length` (dimension, in staff space)
  Try to make a spanner at least this long. This requires an appropriate callback for the `springs-and-rods` property.
`minimum-length-fraction` (number)
  Minimum length of ledger line as fraction of note head size.
`minimum-space` (dimension, in staff space)
  Minimum distance that the victim should move (after padding).
`neutral-direction` (direction)
  Which direction to take in the center of the staff.
`neutral-position` (number)
  Position (in half staff spaces) where to flip the direction of custos stem.
`next` (layout object)
  Object that is next relation (eg. the lyric syllable following an extender.
`no-ledgers` (boolean)
  If set, don't draw ledger lines on this object.
`no-spacing-rods` (boolean)
  Items with this property do not cause spacing constraints.
`no-stem-extend` (boolean)
  If set, notes with ledger lines do not get stems extending to the middle staff line.
`non-default` (boolean)
  Set for manually specified clefs.
`note-names` (vector)
  Vector of strings containing names for easy-notation note heads.
`number-type` (symbol)
  Type of numbers to use in label. Choices include `roman-lower`, `roman-upper`, and `arabic`.
`original-stencil` (unknown)
  The original stencil drawer to draw the balloon around.
`packed-spacing` (boolean)
  If set, the notes are spaced as tightly as possible.
`padding` (dimension, in staff space)
  Add this much extra space between objects that are next to each other.
`page-penalty` (number)
  Penalty for page break at this column. 10000 or more means forbid linebreak, -10000 or less means force page break. Other values influence page breaking decisions as a real penalty.
`penalty` (number)
  Penalty for line break at this column. 10000 or more means forbid line break, -10000 or less means force line break. Other values influence line breaking decisions as a real penalty.
`positions` (pair)
  Pair of staff coordinates `(`left`.` right`)`, where both left and right are in the staff-space unit of the current staff.
`ratio` (number)
  Parameter for slur shape. The higher this number, the quicker the slur attains it `height-limit`.
`remove-empty` (boolean)
  If set, remove group if it contains no `interesting-items`
`remove-first` (boolean)
  Remove the first staff of a orchestral score?
`right-padding` (dimension, in staff space)
  Space to insert between note and accidentals.
`same-direction-correction` (number)
  Optical correction amount for stems that are placed in tight configurations. This amount is used for stems with the same direction to compensate for note-head to stem distance.
`script-priority` (number)
  A sorting key that determines in what order a script is within a stack of scripts.
`self-alignment-X` (number)
  Specify alignment of an object. The value -1 means left aligned, 0 centered, and 1 right-aligned in X direction. Values in between may also be specified.
`self-alignment-Y` (number)
  like `self-alignment-X` but for Y axis.
`shorten-pair` (pair of numbers)
  The lengths to shorten a text-spanner on both sides, for example a pedal bracket
`shortest-duration-space` (dimension, in staff space)
  Start with this much space for the shortest duration. This is expressed in `spacing-increment` as unit. See also spacing-spanner-interface.
`shortest-playing-duration` (moment)
  The duration of the shortest playing here.
`shortest-starter-duration` (moment)
  The duration of the shortest note that starts here.
`side-axis` (number)
  Is this object horizontally or vertically next to another object?
`side-relative-direction` (direction)
  Multiply direction of `direction-source` with this to get the direction of this object.
`size` (number)
  Size of object, relative to standard size.
`slope` (number)
  The slope of this object.
`slur-padding` (number)
  Extra distance between slur and script.
`space-alist` (list)
  A table that specifies distances between prefatory items, like clef and time-signature. The format is an alist of spacing tuples: `(`break-align-symbol type`.` distance`)`, where type can be the symbols `minimum-space` or `extra-space`.
`spacing-increment` (number)
  Add this much space for a doubled duration. Typically, the width of a note head. See also spacing-spanner-interface.
`springs-and-rods` (boolean)
  Dummy variable for triggering spacing routines.
`stacking-dir` (direction)
  Stack objects in which direction?
`staff-padding` (dimension, in staff space)
  Maintain this much space between reference points and the staff. Its effect is to align objects of differing sizes (like the dynamic p and f) on their baselines.
`staff-position` (number)
  Vertical position, measured in half staff spaces, counted from the middle line.
`staff-space` (dimension, in staff space)
  Amount of space between staff lines, expressed in global staff-space.
`stem-attachment` (pair of numbers)
  A (x . y) pair where the stem attaches to the notehead.
`stem-end-position` (number)
  Where does the stem end (the end is opposite to the support-head.
`stem-spacing-correction` (number)
  Optical correction amount for stems that are placed in tight configurations. For opposite directions, this amount is the correction for two normal sized stems that overlap completely.
`stemlet-length` (number)
  How long should a stem over a rest be?
`strict-note-spacing` (boolean)
  If set, unbroken columns with non-musical material (clefs, barlines, etc.) are not spaced separately, but put before musical columns.
`string-count` (integer)
  The number of strings in a fret diagram.
`stroke-style` (string)
  set to "grace" to turn stroke through flag on.
`style` (symbol)
  This setting determines in what style a grob is typeset. Valid choices depend on the `stencil` callback reading this property.
`text` (markup)
  Text markup. See Text markup .
`text-direction` (direction)
  This controls the ordering of the words. The default RIGHT is for roman text. Arabic or hebrew should use LEFT.
`thick-thickness` (number)
  Bar line thickness, measured in `line-thickness`.
`thickness` (number)
  Bar line thickness, measured in `line-thickness`.
`thin-kern` (number)
  The space after a hair-line in a bar line.
`threshold` (pair of numbers)
  (min . max), where min and max are dimensions in staff space.
`tie-configuration` (list)
  List of (position . dir) pairs, indicating the desired tie configuration. A non-pair entry in the list will cause said tie to be formatted automatically.
`transparent` (boolean)
  This makes the grob invisible.
`uniform-stretching` (boolean)
  If set, items stretch proportional to their durations. This looks better in complex polyphonic patterns
`used` (boolean)
  If set, this spacing column is kept in the spacing problem
`when` (moment)
  Global time step associated with this column happen?
`width` (dimension, in staff space)
  The width of a grob measured in staff space.
`word-space` (dimension, in staff space)
  space to insert between words in texts.
`zigzag-length` (dimension, in staff space)
  The length of the lines of a zigzag, relative to `zigzag-width`. A value of 1 gives 60-degree zigzags.
`zigzag-width` (dimension, in staff space)
  The width of one zigzag-squiggle. This number will be adjusted slightly so that the glissando line can be constructed from a whole number of squiggles.

### Internal backend properties

`accidental-grob` (layout object)
  Accidental for this note.
`accidental-grobs` (list)
  Alist with (NOTENAME . GROBLIST) entries
`add-cauda` (boolean)
  does this flexa require an additional cauda on the left side?
`add-join` (boolean)
  is this ligature head joined with the next one by a vertical line?
`add-stem` (boolean)
  is this ligature head a virga and therefore needs an additional stem on the right side?
`adjacent-hairpins` (unknown)
  List of directly neighboring hairpins
`all-elements` (unknown)
  list of all grobs in this line. Its function is to protect objects from being garbage collected.
`arpeggio` (layout object)
  pointer to arpeggio object.
`ascendens` (boolean)
  is this neume of an ascending?
`auctum` (boolean)
  is this neume augmented?
`axis-group-parent-X` (layout object)
  Containing X axis group
`axis-group-parent-Y` (layout object)
  Containing Y axis group
`bars` (unknown)
  list of bar line pointers.
`beam` (layout object)
  pointer to the beam, if applicable.
`begin-of-line-visible` (boolean)
  Used for marking ChordNames that should only show changes.
`bounded-by-me` (unknown)
  list of spanners that have this column as start/begin point. Only columns that have grobs or act as bounds are spaced.
`bracket` (layout object)
  the bracket for a number.
`cause` (any type)
  Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob.
`cavum` (boolean)
  is this neume outlined?
`chord-tremolo` (boolean)
`columns` (unknown)
  list of grobs, typically containing paper-columns or note-column objects.
`conditional-elements` (unknown)
  Internal use only
`context-info` (integer)
  DOCME
`delta-pitch` (number)
  the interval between this and the next note, or, more precisely, their vertical distance; this is used in ligatures for calculation of the height of vertical joins flexa shapes
`deminutum` (boolean)
  is this neume deminished?
`descendens` (boolean)
  is this neume of a descendent type?
`details` (list)
  alist of parameters for detailed grob behavior.

  more information on the allowed parameters can be found by inspecting lily/slur-scoring.cc, lily/beam-quanting.cc, and lily/tie-formatting-problem.cc. Setting `debug-tie-scoring`, `debug-beam-scoring` or `debug-slur-scoring` also provides useful clues.

`direction-source` (layout object)
  in case side-relative-direction is set, which grob to get the direction from .
`dot` (layout object)
  reference to Dots object.
`dots` (unknown)
  multiple Dots objects.
`elements` (unknown)
  list of grobs, type depending on the Grob where this is set in.
`encompass-objects` (unknown)
  Objects that a slur should avoid in addition to notes and stems.
`figures` (unknown)
  Figured bass objects for continuation line.
`flexa-height` (dimension, in staff space)
  height of a flexa shape in a ligature grob in staff_space.
`flexa-width` (dimension, in staff space)
  width of a flexa shape in a ligature grob in staff_space.
`font` (font metric)
  Cached font metric object
`glyph-name` (string)
  a name of character within font.
`head-width` (dimension, in staff space)
  width of this ligature head
`heads` (unknown)
  List of note heads.
`ideal-distances` (list)
  (obj . (dist . strength)) pairs.
`inclinatum` (boolean)
  is this neume an inclinatum?
`interfaces` (list)
  list of symbols indicating the interfaces supported by this object. Is initialized from the `meta` field.
`items-worth-living` (unknown)
  A list of interesting items. If empty in a particular staff, then that staff is erased.
`join-heads` (boolean)
  Whether to join the note heads of an ambitus grob with a vertical line.
`join-right-amount` (number)
`least-squares-dy` (number)
  ideal beam slope, without damping.
`left-items` (unknown)
`left-neighbors` (unknown)
  List of spacing-wish grobs that are close to the current column.

  The closest spacing-wishes determine the actual distances between the columns.

`linea` (boolean)
  attach vertical lines to this neume?
`meta` (list)
  Contains meta information. It is an alist with the entries `name` and `interfaces`.
`minimum-distances` (list)
  list of rods, that have the format (obj . dist).
`note-columns` (pair)
  list of NoteColumn grobs.
`note-head` (layout object)
  A single note head
`note-heads` (unknown)
  List of note head grobs
`oriscus` (boolean)
  is this neume an oriscus?
`pedal-text` (layout object)
  Pointer to the text of a mixed-style piano pedal.
`pes-or-flexa` (boolean)
  shall this neume be joined with the previous head?
`positioning-done` (boolean)
  Used to signal that a positioning element did its job. This ensures that a positioning is only done once.
`prefix-set` (number)
`primitive` (integer)
  Pointer to a ligature primitive, i.e. an item similar to a note head that is part of a ligature.
`quant-score` (string)
  Beam quanting score – can be stored for debugging
`quantize-position` (boolean)
  If set, a vertical alignment is aligned to be within staff spaces.
`quantized-positions` (pair of numbers)
  Beam positions after quanting.
`quilisma` (boolean)
  is this neume a quilisma?
`rest` (layout object)
  the staff symbol grob that we're in.
`rest-collision` (layout object)
  rest collision that a rest is in.
`rests` (unknown)
  A list of rest objects.
`right-items` (unknown)
`right-neighbors` (unknown)
  see left-neighbors
`script-stencil` (pair)
  Pair (`type` . `arg`), which acts as an index for looking up a Stencil object.
`shorten` (dimension, in staff space)
  The amount of space that a stem. Internally used to distribute beam shortening over stems.
`side-support-elements` (unknown)
  the support, a list of grobs.
`slur` (layout object)
  A pointer to a slur object
`spaceable-staves` (unknown)
  Objects to be spaced during page layout.
`spacing-wishes` (unknown)
  List of note spacing or staff spacing objects.
`staff-symbol` (layout object)
  the staff symbol grob that we're in.
`stem` (layout object)
  pointer to Stem object.
`stem-info` (pair)
  caching of stem parameters
`stems` (unknown)
  list of stem objects, corresponding to the notes that the arpeggio has to be before.
`stencil` (unknown)
  The symbol to print.
`stropha` (boolean)
  Is this neume a stropha?
`tie` (layout object)
`tremolo-flag` (layout object)
  The tremolo object on a stem.
`tuplet-number` (layout object)
  the number for a bracket.
`tuplets` (unknown)
  list of smaller tuplet brackets
`use-breve-rest` (boolean)
  Use breve rests for measures longer than a whole rest.
`virga` (boolean)
  Is this neume a virga?
`x-offset` (dimension, in staff space)
  Extra horizontal offset for ligature heads.

## Scheme functions

— Function: ly:add-file-name-alist alist

> Add mappings for error messages from specified alist

— Function: ly:add-interface a b c

> Add an interface description.

— Function: ly:add-option sym val description

> Add a program option sym with default val.

— Function: ly:all-grob-interfaces

> Get a hash table with all interface descriptions.

— Function: ly:all-stencil-expressions

> Return all symbols recognized as stencil expressions.

— Function: ly:all-tweaks

> all tweaks

— Function: ly:assoc-get key alist default-value

> Return value if KEY in ALIST, else DEFAULT-VALUE (or #f if not specified).

— Function: ly:book-process book-smob default-paper default-layout output

> Print book. output is passed to the backend unchanged. Eg. it may be a string (for file based outputs) or a socket (for network based output).

— Function: ly:box? x

> Is x a `Box` object?

— Function: ly:bp num

> num bigpoints (1/72th inch)

— Function: ly:bracket a iv t p

> Make a bracket in direction a. The extent of the bracket is given by iv. The wings protude by an amount of p, which may be negative. The thickness is given by t.

— Function: ly:chain-assoc-get key achain dfault

> Return value for key from a list of alists achain. If no if no entry is found, return DFAULT, or #f if no DFAULT not specified.

— Function: ly:clear-anonymous-modules

> Plug a GUILE 1.6 and 1.7 memory leak by breaking a weak reference pointer cycle explicitly.

— Function: ly:clone-parser parser-smob

> Return a clone of PARSER_SMOB.

— Function: ly:cm num

> num cm

— Function: ly:command-line-verbose?

> Was be_verbose_global set?

— Function: ly:context-find context name

> Find a parent of context that has name or alias name. Return `#f` if not found.

— Function: ly:context-grob-definition context name

> Return the definition of name (a symbol) within context as an alist

— Function: ly:context-id context

> Return the id string of context, i.e. for `\context Voice = one ..` return the string `one`.

— Function: ly:context-name context

> Return the name of context, i.e. for `\context Voice = one ..` return the symbol `Voice`.

— Function: ly:context-now context

> Return now-moment of context CONTEXT

— Function: ly:context-parent context

> Return the parent of context, `#f` if none.

— Function: ly:context-property c name

> Return the value of name from context c

— Function: ly:context-property-where-defined context name

> Return the context above context where name is defined.

— Function: ly:context-pushpop-property context grob eltprop val

> Do a single `\override` or `\revert` operation in context. The grob definition `grob` is extended with `eltprop` (if val is specified) or reverted (if unspecified).

— Function: ly:context-set-property! context name val

> Set value of property name in context context to val.

— Function: ly:context-unset-property context name

> Unset value of property name in context context.

— Function: ly:context? x

> Is x a `Context` object?

— Function: ly:dimension? d

> Return d is a number. Used to distinguish length variables from normal numbers.

— Function: ly:dir? s

> type predicate. A direction is `-1`, `0` or `1`, where `-1` represents left or down and `1` represents right or up.

— Function: ly:dumper-definitions dumper

> Return list of key definitions.

— Function: ly:dumper-key-serial dumper key

> Return the key serial number key.

— Function: ly:duration-dot-count dur

> Extract the dot count from dur

— Function: ly:duration-factor dur

> Extract the compression factor from dur. Return as a pair.

— Function: ly:duration-log dur

> Extract the duration log from dur

— Function: ly:duration<? p1 p2

> Is p1 shorter than p2?

— Function: ly:duration? x

> Is x a `Duration` object?

— Function: ly:effective-prefix

> Return effective prefix.

— Function: ly:error str rest

> Scheme callable function to issue the error `msg`. The error is formatted with `format` and `rest`.

— Function: ly:export arg

> Export a Scheme object to the parser, so it is treated as an identifier.

— Function: ly:find-file name

> Return the absolute file name of name, or `#f` if not found.

— Function: ly:font-config-display-fonts

> Dump a list of all fonts visible to FontConfig.

— Function: ly:font-config-get-font-file name

> Get the file for font name

— Function: ly:font-design-size font

> Given the font metric font, return the design size, relative to the current output-scale.

— Function: ly:font-file-name font

> Given the font metric font, return the corresponding file name.

— Function: ly:font-get-glyph font name

> Return a Stencil from font for the glyph named name. font must be available as an AFM file. If the glyph is not available, return `#f`.

— Function: ly:font-glyph-name-to-charcode font name

> Return the character code for glyph name in font.

— Function: ly:font-glyph-name-to-index font name

> Return the index for name in font.

— Function: ly:font-index-to-charcode font index

> Return the character code for index font.

— Function: ly:font-load name

> Load the font name.

— Function: ly:font-magnification font

> Given the font metric font, return the magnification, relative to the current outputs-cale.

— Function: ly:font-metric? x

> Is x a `Font_metric` object?

— Function: ly:font-name font

> Given the font metric font, return the corresponding name.

— Function: ly:font-sub-fonts font

> Given the font metric font of an OpenType font, return the names of the subfonts within font.

— Function: ly:format-output context

> Given a Global context in its final state, process it and return the `Music_output` object in its final state.

— Function: ly:get-all-function-documentation

> Get a hash table with all lilypond Scheme extension functions.

— Function: ly:get-all-translators

> Return a list of all translator objects that may be instantiated.

— Function: ly:get-glyph font index

> Retrieve a Stencil for the glyph numbered index in font.

— Function: ly:get-option var

> Get a global option setting.

— Function: ly:gettext string

> Gettext wrapper.

— Function: ly:grob-alist-chain grob global

> Get an alist chain for grob grob, with global as the global default. If unspecified, `font-defaults` from the layout block is taken.

— Function: ly:grob-array-length grob-arr

> Return the grob_array length.

— Function: ly:grob-array-ref grob-arr index

> Retrieve the `index` element of `grob-arr`.

— Function: ly:grob-array? x

> Is x a `Grob_array` object?

— Function: ly:grob-basic-properties grob

> Get the immutable properties of grob.

— Function: ly:grob-common-refpoint grob other axis

> Find the common refpoint of grob and other for axis.

— Function: ly:grob-common-refpoint-of-array grob others axis

> Find the common refpoint of grob and others (a grob-array) for axis.

— Function: ly:grob-default-font grob

> Return the default font for grob gr.

— Function: ly:grob-extent grob refp axis

> Get the extent in axis direction of grob relative to the grob refp

— Function: ly:grob-insert-tweak grob tweak

> add new tweak for grob.

— Function: ly:grob-interfaces grob

> Return the interfaces list of grob grob.

— Function: ly:grob-key grob

> Return the object-key for grob.

— Function: ly:grob-layout g

> Get `\layout` definition from grob g.

— Function: ly:grob-object grob sym

> Return the value of a pointer in grob g of property sym. It will return `' ()` (end-of-list) if sym is undefined in g.

— Function: ly:grob-original grob

> Return the unbroken original Grob of grob.

— Function: ly:grob-parent grob axis

> Get the parent of grob. axis is 0 for the X-axis, 1 for the Y-axis.

— Function: ly:grob-pq-less? a b

> Compare 2 grob priority queue entries. Internal

— Function: ly:grob-properties grob

> Get the mutable proprerties of grob.

— Function: ly:grob-property grob sym deflt

> Return the value of a value in grob g of property sym. It will return `'()` or deflt (if specified) if sym is undefined in g.

— Function: ly:grob-property-data grob sym

> Retrieve sym for grob but don't process callbacks.

— Function: ly:grob-relative-coordinate grob refp axis

> Get the coordinate in axis direction of grob relative to the grob refp

— Function: ly:grob-replace-tweak grob tweak

> Replace tweak for grob.

— Function: ly:grob-script-priority-less a b

> Compare two grobs by script priority. For internal use.

— Function: ly:grob-set-property! grob sym val

> Set sym in grob grob to value val

— Function: ly:grob-staff-position sg

> Return the Y-position of sg relative to the staff.

— Function: ly:grob-suicide! g

> Kill g.

— Function: ly:grob-system g

> Return the System Grob of g.

— Function: ly:grob-translate-axis! g d a

> Translate g on axis a over distance d.

— Function: ly:grob? x

> Is x a `Grob` object?

— Function: ly:gulp-file name size

> Read the file name, and return its contents in a string. The file is looked up using the search path.

— Function: ly:inch num

> num inches

— Function: ly:input-both-locations sip

> Return input location in sip as (file-name first-line first-column last-line last-column).

— Function: ly:input-file-line-char-column sip

> Return input location in sip as (file-name line char column).

— Function: ly:input-location? x

> Is x an `input-location`?

— Function: ly:input-message sip msg rest

> Print msg as a GNU compliant error message, pointing to the location in sip. msg is interpreted similar to `format`'s argument

— Function: ly:interpret-stencil-expression expr func arg1 offset

> Parse EXPR, feed bits to FUNC with first arg ARG1

— Function: ly:intlog2 d

> The 2-logarithm of 1/d.

— Function: ly:item-break-dir it

> The break status dir of item it. `-1` is end of line, `0` unbroken, and `1` begin of line.

— Function: ly:item? g

> Is g an `Item` object?

— Function: ly:iterator? x

> Is x a `Music_iterator` object?

— Function: ly:layout-def? def

> Is def a layout definition?

— Function: ly:lily-lexer? x

> Is x a `Lily_lexer` object?

— Function: ly:lily-parser? x

> Is x a `Lily_parser` object?

— Function: ly:load-text-dimensions dimension-alist

> Load dimensions from TeX in a (KEY . (W H D)) format alist

— Function: ly:make-book paper header scores

> Make a \book of paper and header (which may be #f as well) containing `\scores`.

— Function: ly:make-dumper

> Create a key dumper.

— Function: ly:make-duration length dotcount num den

> length is the negative logarithm (base 2) of the duration: 1 is a half note, 2 is a quarter note, 3 is an eighth note, etc. The number of dots after the note is given by the optional argument dotcount.

> The duration factor is optionally given by num and den.

> A duration is a musical duration, i.e. a length of time described by a power of two (whole, half, quarter, etc.) and a number of augmentation dots.

— Function: ly:make-moment n d gn gd

> Create the rational number with main timing n/d, and optional grace timin gn/gd.

> Moment is a point in musical time. It is consists of a pair of rationals (m, g), where m is the timing for the main notes, and g the timing for grace notes. In absence of grace notes, g is zero.

— Function: ly:make-music props

> Make a C++ Music object, initialize with props.

> This function is for internal use, and is only called by `make-music`, which is the preferred interface for creating music objects.

— Function: ly:make-music-function signature func

> Make a function to process music, to be used for the parser. `func` is the function, and `signature` describes Its arguments. `signature` is a list containing either `ly:music?` predicates or other type predicates.

— Function: ly:make-output-def

> Make a output def.

— Function: ly:make-pango-description-string chain size

> Make a PangoFontDescription string for the property alist chain at size size.

— Function: ly:make-paper-outputter port format

> Create an outputter that evaluates within `output-`format, writing to port.

— Function: ly:make-pitch octave note alter

> octave is specified by an integer, zero for the octave containing middle C. note is a number from 0 to 6, with 0 corresponding to C and 6 corresponding to B. The alter is zero for a natural, negative for flats, or positive for sharps.

— Function: ly:make-prob type init rest

> Create a Prob.

— Function: ly:make-score music

> Return score with music encapsulated in score.

— Function: ly:make-simple-closure expr

> Make a simple closure. expr should be form of `(`func a1 A2`...)`, and will be invoked as `(`func delayed-arg a1 a2`... )`.

— Function: ly:make-stencil expr xext yext

> Stencils are a device independent output expressions.They carry two pieces of information:

> 1: a specification of how to print this object. This specification is processed by the output backends, for example `scm/output-ps.scm`.

> 2: the vertical and horizontal extents of the object.

— Function: ly:make-undumper

> Create a key undumper.

— Function: ly:message str rest

> Scheme callable function to issue the message `msg`. The message is formatted with `format` and `rest`.

— Function: ly:mm num

> num mm

— Function: ly:module->alist mod

> Dump the contents of module mod as an alist.

— Function: ly:module-copy dest src

> Copy all bindings from module SRC into DEST.

— Function: ly:modules-lookup modules sym def

> Lookup sym in the list modules, returning the first occurence. If not found, return default, or `#f`.

— Function: ly:moment-add a b

> Add two moments.

— Function: ly:moment-div a b

> Divide two moments.

— Function: ly:moment-grace-denominator mom

> Extract denominator from grace timing.

— Function: ly:moment-grace-numerator mom

> Extract numerator from grace timing.

— Function: ly:moment-main-denominator mom

> Extract denominator from main timing.

— Function: ly:moment-main-numerator mom

> Extract numerator from main timing.

— Function: ly:moment-mod a b

> Modulo of two moments.

— Function: ly:moment-mul a b

> Multiply two moments.

— Function: ly:moment-sub a b

> Subtract two moments.

— Function: ly:moment<? a b

> Compare two moments.

— Function: ly:moment? x

> Is x a `Moment` object?

— Function: ly:music-compress m factor

> Compress music object m by moment factor.

— Function: ly:music-deep-copy m

> Copy m and all sub expressions of m

— Function: ly:music-duration-compress mus fact

> Compress mus by factor fact, which is a `Moment`.

— Function: ly:music-duration-length mus

> Extract the duration field from mus, and return the length.

— Function: ly:music-length mus

> Get the length of music expression mus, and return as a `Moment` object.

— Function: ly:music-list? lst

> Type predicate: return true if lst is a list of music objects.

— Function: ly:music-mutable-properties mus

> Return an alist containing the mutable properties of mus. The immutable properties are not available, since they are constant and initialized by the `make-music` function.

— Function: ly:music-output? x

> Is x a `Music_output` object?

— Function: ly:music-property mus sym dfault

> Get the property sym of music expression mus. If sym is undefined, return `'()`.

— Function: ly:music-set-property! mus sym val

> Set property sym in music expression mus to val.

— Function: ly:music-transpose m p

> Transpose m such that central C is mapped to p. Return m.

— Function: ly:music? obj

> Type predicate

— Function: ly:number->string s

> Convert num to a string without generating many decimals.

— Function: ly:option-usage

> Print ly:set-option usage

— Function: ly:otf->cff otf-file-name

> Convert the contents of a OTF file to CFF file, returning it as a string.

— Function: ly:otf-font-glyph-info font glyph

> Given the font metric font of an OpenType font, return the information about named glyph glyph (a string)

— Function: ly:otf-font-table-data font tag

> Extract a table tag from font. Return empty string for non-existent tag.

— Function: ly:otf-font? font

> Is font an OpenType font?

— Function: ly:otf-glyph-list font

> Return a list of glyphnames for font.

— Function: ly:output-backend

> Return name of output backend.

— Function: ly:output-def-clone def

> Clone def.

— Function: ly:output-def-lookup pap sym def

> Lookup sym in pap. Return the value or def (which defaults to `'()`) if undefined.

— Function: ly:output-def-parent def

> Get the parent output-def of def.

— Function: ly:output-def-parser odef

> Return the parser where odef is coming from.

— Function: ly:output-def-scope def

> Get the variable scope inside def.

— Function: ly:output-description output-def

> Return the description of translators in output-def.

— Function: ly:output-formats

> Formats passed to –format as a list of strings, used for the output.

— Function: ly:outputter-close outputter

> Close port of outputter.

— Function: ly:outputter-dump-stencil outputter stencil

> Dump stencil expr onto outputter.

— Function: ly:outputter-dump-string outputter str

> Dump str onto outputter.

— Function: ly:outputter-output-scheme outputter expr

> Eval expr in module of outputter.

— Function: ly:outputter-port outputter

> Return output port for outputter.

— Function: ly:pango-font-physical-fonts f

> Return alist of (PSNAME . FILENAME) tuples.

— Function: ly:pango-font? f

> Is f a pango font?

— Function: ly:paper-book-pages pb

> Return pages in book PB.

— Function: ly:paper-book-paper pb

> Return pages in book PB.

— Function: ly:paper-book-performances paper-book

> Return performances in book paper-book.

— Function: ly:paper-book-scopes book

> Return pages in layout book book.

— Function: ly:paper-book-systems pb

> Return systems in book PB.

— Function: ly:paper-book? x

> Is x a `Paper_book` object?

— Function: ly:paper-fonts bp

> Return fonts from the `\paper` block bp.

— Function: ly:paper-get-font paper-smob chain

> Return a font metric satisfying the font-qualifiers in the alist chain chain. (An alist chain is a list of alists, containing grob properties).

— Function: ly:paper-get-number layout-smob name

> Return the layout variable name.

— Function: ly:paper-outputscale bp

> Get output-scale for BP.

— Function: ly:paper-score-paper-systems paper-score

> Return vector of paper_system objects from paper-score.

— Function: ly:paper-system? obj

> Type predicate.

— Function: ly:parse-file name

> Parse a single `.ly` file. Upon failure, throw `ly-file-failed` key.

— Function: ly:parse-string ly-code

> Parse the string LY_CODE. Upon failure, throw `ly-file-failed` key.

— Function: ly:parser-define! parser-smob symbol val

> Bind SYMBOL to VAL in PARSER_SMOB's module.

— Function: ly:parser-lookup parser-smob symbol

> Lookup symbol in parser_smob's module. Undefined is '().

— Function: ly:parser-output-name parser

> Return the base name of the output file.

— Function: ly:parser-parse-string parser-smob ly-code

> Parse the string LY_CODE with PARSER_SMOB.Upon failure, throw `ly-file-failed` key.

— Function: ly:parser-set-note-names parser names

> Replace current note names in parser. names is an alist of symbols. This only has effect if the current mode is notes.

— Function: ly:performance-write performance filename

> Write performance to filename

— Function: ly:pfb->pfa pfb-file-name

> Convert the contents of a PFB file to PFA.

— Function: ly:pitch-alteration pp

> Extract the alteration from pitch p.

— Function: ly:pitch-diff pitch root

> Return pitch delta such that `pitch` transposed by delta equals root

— Function: ly:pitch-notename pp

> Extract the note name from pitch pp.

— Function: ly:pitch-octave pp

> Extract the octave from pitch p.

— Function: ly:pitch-quartertones pp

> Calculate the number of quarter tones of p from middle C.

— Function: ly:pitch-semitones pp

> calculate the number of semitones of p from middle C.

— Function: ly:pitch-steps p

> Number of steps counted from middle C of the pitch p.

— Function: ly:pitch-transpose p delta

> Transpose p by the amount delta, where delta is relative to middle C.

— Function: ly:pitch<? p1 p2

> Is p1 lexicographically smaller than p2?

— Function: ly:pitch? x

> Is x a `Pitch` object?

— Function: ly:prob-property obj sym dfault

> Return the value for sym.

— Function: ly:prob-property? obj sym

> Is boolean prop sym set?

— Function: ly:prob-set-property! obj sym value

> Set property sym of obj to value

— Function: ly:prob-type? obj type

> If obj the specified prob-type?

— Function: ly:prob? x

> Is x a `Prob` object?

— Function: ly:programming-error str rest

> Scheme callable function to issue the warning `msg`. The message is formatted with `format` and `rest`.

— Function: ly:progress str rest

> Scheme callable function to print progress `str`. The message is formatted with `format` and `rest`.

— Function: ly:protects

> Return hash of protected objects.

— Function: ly:pt num

> num printer points

— Function: ly:register-stencil-expression symbol

> Add symbol as head of a stencil expression

— Function: ly:relative-group-extent elements common axis

> Determine the extent of elements relative to common in the axis direction.

— Function: ly:round-filled-box xext yext blot

> Make a `Stencil` that prints a black box of dimensions xext, yext and roundness blot.

— Function: ly:run-translator mus output-def key

> Process mus according to output_def. An interpretation context is set up, and mus is interpreted with it. The context is returned in its final state.

> Optionally, this routine takes an Object-key to to uniquely identify the Score block containing it.

— Function: ly:score-embedded-format score layout key

> Run score through layout, an output definition, scaled to correct output-scale already, return a list of layout-lines. Take optional Object_key argument.

— Function: ly:score-process score-smob default-header default-paper default-layout basename

> Print score without page-layout: just print the systems.

— Function: ly:score? x

> Is x a `Score` object?

— Function: ly:set-option var val

> Set a program option. Try setting 'help for a help string.

— Function: ly:set-point-and-click what

> Deprecated.

— Function: ly:simple-closure? clos

> Type predicate.

— Function: ly:smob-protects

> Return lily's internal smob protection list

— Function: ly:solve-spring-rod-problem springs rods length ragged

> Solve a spring and rod problem for count objects, that are connected by count-1 springs, and an arbitrary number of rods Springs have the format (ideal, hooke) and rods (idx1, idx2, distance) length is a number, ragged a boolean Return: a list containing the force (positive for stretching, negative for compressing and #f for non-satisfied constraints) followed by the spring-count+1 positions of the objects.

— Function: ly:spanner-bound slur dir

> Get one of the bounds of spanner. dir is `-1` for left, and `1` for right.

— Function: ly:spanner-broken-into spanner

> Return broken-into list for spanner.

— Function: ly:spanner? g

> Is g a spanner object?

— Function: ly:stderr-redirect file-name mode

> Redirect stderr to FILE-NAME, opened with MODE.

— Function: ly:stencil-add args

> Combine stencils. Takes any number of arguments.

— Function: ly:stencil-aligned-to stil axis dir

> Align stil using its own extents. dir is a number -1, 1 are left and right respectively. Other values are interpolated (so 0 means the center).

— Function: ly:stencil-combine-at-edge first axis direction second padding minimum

> Construct a stencil by putting second next to first. axis can be 0 (x-axis) or 1 (y-axis), direction can be -1 (left or down) or 1 (right or up). The stencils are juxtaposed with padding as extra space. If this puts the reference points closer than minimum, they are moved by the latter amount.first and second may also be '() or #f.

— Function: ly:stencil-empty? stil

> Return whether stil is empty

— Function: ly:stencil-expr stil

> Return the expression of stil.

— Function: ly:stencil-extent stil axis

> Return a pair of numbers signifying the extent of stil in axis direction (0 or 1 for x and y axis respectively).

— Function: ly:stencil-fonts s

> Analyse s, and return a list of fonts used in s.

— Function: ly:stencil-in-color stc r g b

> Put stc in a different color.

— Function: ly:stencil-moved-to-edge first axis direction second padding minimum

> Similar to `ly:stencil-combine-edge`, but returns second positioned to be next to first.

— Function: ly:stencil-origin stil axis

> Return a pair of numbers signifying the origin stil in axis direction (0 or 1 for x and y axis respectively).

— Function: ly:stencil-translate stil offset

> Return a stil, but translated by offset (a pair of numbers).

— Function: ly:stencil-translate-axis stil amount axis

> Return a copy of stil but translated by amount in axis direction.

— Function: ly:stencil? x

> Is x a `Stencil` object?

— Function: ly:text-dimension font text

> Given the font metric in font and the string text, compute the extents of that text in that font. The return value is a pair of number-pairs.

— Function: ly:translator-description me

> Return an alist of properties of translator me.

— Function: ly:translator-group? x

> Is x a `Translator_group` object?

— Function: ly:translator-name trans

> Return the type name of the translator object trans. The name is a symbol.

— Function: ly:translator? x

> Is x a `Translator` object?

— Function: ly:transpose-key-alist l pit

> Make a new key alist of l transposed by pitch pit

— Function: ly:ttf->pfa ttf-file-name

> Convert the contents of a TTF file to Type42 PFA, returning it as a string.

— Function: ly:ttf-ps-name ttf-file-name

> Extract the PostScript name from a TrueType font.

— Function: ly:tweak-clear-registry

> Clear global tweak registry

— Function: ly:tweak-define-keys keys

> Read keys

— Function: ly:tweak-define-tweaks tweaks

> Read tweaks

— Function: ly:undumper-lookup undumper serial

> Return the object key for number serial.

— Function: ly:undumper-read-keys undumper keys

> Read serialized keys into undumper.

— Function: ly:unit

> Return the unit used for lengths as a string.

— Function: ly:usage

> Print usage message.

— Function: ly:version

> Return the current lilypond version as a list, e.g. `(1 3 127 uu1)`.

— Function: ly:warning str rest

> Scheme callable function to issue the warning `str`. The message is formatted with `format` and `rest`.

— Function: ly:wide-char->utf-8 wc

> Encode the Unicode codepoint wc as UTF-8

## Indexes

## Concept index

- Modifying context plug-ins: Engravers
- Setting automatic beam behavior: Tunable context properties
- Setting automatic beam behavior: Auto_beam_engraver
- Setting automatic beam behavior: Voice
- Setting automatic beam behavior: VaticanaVoice
- Setting automatic beam behavior: TabVoice
- Setting automatic beam behavior: MensuralVoice
- Setting automatic beam behavior: GregorianTranscriptionVoice
- Setting automatic beam behavior: DrumVoice
- Setting automatic beam behavior: CueVoice
- Text markup: User backend properties
- Text markup: text-interface
- Text markup: system-start-text-interface
- Text markup: BreathingSign

## Variable index

## Function index

- `ly:add-file-name-alist`: Scheme functions
- `ly:add-interface`: Scheme functions
- `ly:add-option`: Scheme functions
- `ly:all-grob-interfaces`: Scheme functions
- `ly:all-stencil-expressions`: Scheme functions
- `ly:all-tweaks`: Scheme functions
- `ly:assoc-get`: Scheme functions
- `ly:book-process`: Scheme functions
- `ly:box?`: Scheme functions
- `ly:bp`: Scheme functions
- `ly:bracket`: Scheme functions
- `ly:chain-assoc-get`: Scheme functions
- `ly:clear-anonymous-modules`: Scheme functions
- `ly:clone-parser`: Scheme functions
- `ly:cm`: Scheme functions
- `ly:command-line-verbose?`: Scheme functions
- `ly:context-find`: Scheme functions
- `ly:context-grob-definition`: Scheme functions
- `ly:context-id`: Scheme functions
- `ly:context-name`: Scheme functions
- `ly:context-now`: Scheme functions
- `ly:context-parent`: Scheme functions
- `ly:context-property`: Scheme functions
- `ly:context-property-where-defined`: Scheme functions
- `ly:context-pushpop-property`: Scheme functions
- `ly:context-set-property!`: Scheme functions
- `ly:context-unset-property`: Scheme functions
- `ly:context?`: Scheme functions
- `ly:dimension?`: Scheme functions
- `ly:dir?`: Scheme functions
- `ly:dumper-definitions`: Scheme functions
- `ly:dumper-key-serial`: Scheme functions
- `ly:duration-dot-count`: Scheme functions
- `ly:duration-factor`: Scheme functions
- `ly:duration-log`: Scheme functions
- `ly:duration<?`: Scheme functions
- `ly:duration?`: Scheme functions
- `ly:effective-prefix`: Scheme functions
- `ly:error`: Scheme functions
- `ly:export`: Scheme functions
- `ly:find-file`: Scheme functions
- `ly:font-config-display-fonts`: Scheme functions
- `ly:font-config-get-font-file`: Scheme functions
- `ly:font-design-size`: Scheme functions
- `ly:font-file-name`: Scheme functions
- `ly:font-get-glyph`: Scheme functions
- `ly:font-glyph-name-to-charcode`: Scheme functions
- `ly:font-glyph-name-to-index`: Scheme functions
- `ly:font-index-to-charcode`: Scheme functions
- `ly:font-load`: Scheme functions
- `ly:font-magnification`: Scheme functions
- `ly:font-metric?`: Scheme functions
- `ly:font-name`: Scheme functions
- `ly:font-sub-fonts`: Scheme functions
- `ly:format-output`: Scheme functions
- `ly:get-all-function-documentation`: Scheme functions
- `ly:get-all-translators`: Scheme functions
- `ly:get-glyph`: Scheme functions
- `ly:get-option`: Scheme functions
- `ly:gettext`: Scheme functions
- `ly:grob-alist-chain`: Scheme functions
- `ly:grob-array-length`: Scheme functions
- `ly:grob-array-ref`: Scheme functions
- `ly:grob-array?`: Scheme functions
- `ly:grob-basic-properties`: Scheme functions
- `ly:grob-common-refpoint`: Scheme functions
- `ly:grob-common-refpoint-of-array`: Scheme functions
- `ly:grob-default-font`: Scheme functions
- `ly:grob-extent`: Scheme functions
- `ly:grob-insert-tweak`: Scheme functions
- `ly:grob-interfaces`: Scheme functions
- `ly:grob-key`: Scheme functions
- `ly:grob-layout`: Scheme functions
- `ly:grob-object`: Scheme functions
- `ly:grob-original`: Scheme functions
- `ly:grob-parent`: Scheme functions
- `ly:grob-pq-less?`: Scheme functions
- `ly:grob-properties`: Scheme functions
- `ly:grob-property`: Scheme functions
- `ly:grob-property-data`: Scheme functions
- `ly:grob-relative-coordinate`: Scheme functions
- `ly:grob-replace-tweak`: Scheme functions
- `ly:grob-script-priority-less`: Scheme functions
- `ly:grob-set-property!`: Scheme functions
- `ly:grob-staff-position`: Scheme functions
- `ly:grob-suicide!`: Scheme functions
- `ly:grob-system`: Scheme functions
- `ly:grob-translate-axis!`: Scheme functions
- `ly:grob?`: Scheme functions
- `ly:gulp-file`: Scheme functions
- `ly:inch`: Scheme functions
- `ly:input-both-locations`: Scheme functions
- `ly:input-file-line-char-column`: Scheme functions
- `ly:input-location?`: Scheme functions
- `ly:input-message`: Scheme functions
- `ly:interpret-stencil-expression`: Scheme functions
- `ly:intlog2`: Scheme functions
- `ly:item-break-dir`: Scheme functions
- `ly:item?`: Scheme functions
- `ly:iterator?`: Scheme functions
- `ly:layout-def?`: Scheme functions
- `ly:lily-lexer?`: Scheme functions
- `ly:lily-parser?`: Scheme functions
- `ly:load-text-dimensions`: Scheme functions
- `ly:make-book`: Scheme functions
- `ly:make-dumper`: Scheme functions
- `ly:make-duration`: Scheme functions
- `ly:make-moment`: Scheme functions
- `ly:make-music`: Scheme functions
- `ly:make-music-function`: Scheme functions
- `ly:make-output-def`: Scheme functions
- `ly:make-pango-description-string`: Scheme functions
- `ly:make-paper-outputter`: Scheme functions
- `ly:make-pitch`: Scheme functions
- `ly:make-prob`: Scheme functions
- `ly:make-score`: Scheme functions
- `ly:make-simple-closure`: Scheme functions
- `ly:make-stencil`: Scheme functions
- `ly:make-undumper`: Scheme functions
- `ly:message`: Scheme functions
- `ly:mm`: Scheme functions
- `ly:module->alist`: Scheme functions
- `ly:module-copy`: Scheme functions
- `ly:modules-lookup`: Scheme functions
- `ly:moment-add`: Scheme functions
- `ly:moment-div`: Scheme functions
- `ly:moment-grace-denominator`: Scheme functions
- `ly:moment-grace-numerator`: Scheme functions
- `ly:moment-main-denominator`: Scheme functions
- `ly:moment-main-numerator`: Scheme functions
- `ly:moment-mod`: Scheme functions
- `ly:moment-mul`: Scheme functions
- `ly:moment-sub`: Scheme functions
- `ly:moment<?`: Scheme functions
- `ly:moment?`: Scheme functions
- `ly:music-compress`: Scheme functions
- `ly:music-deep-copy`: Scheme functions
- `ly:music-duration-compress`: Scheme functions
- `ly:music-duration-length`: Scheme functions
- `ly:music-length`: Scheme functions
- `ly:music-list?`: Scheme functions
- `ly:music-mutable-properties`: Scheme functions
- `ly:music-output?`: Scheme functions
- `ly:music-property`: Scheme functions
- `ly:music-set-property!`: Scheme functions
- `ly:music-transpose`: Scheme functions
- `ly:music?`: Scheme functions
- `ly:number->string`: Scheme functions
- `ly:option-usage`: Scheme functions
- `ly:otf->cff`: Scheme functions
- `ly:otf-font-glyph-info`: Scheme functions
- `ly:otf-font-table-data`: Scheme functions
- `ly:otf-font?`: Scheme functions
- `ly:otf-glyph-list`: Scheme functions
- `ly:output-backend`: Scheme functions
- `ly:output-def-clone`: Scheme functions
- `ly:output-def-lookup`: Scheme functions
- `ly:output-def-parent`: Scheme functions
- `ly:output-def-parser`: Scheme functions
- `ly:output-def-scope`: Scheme functions
- `ly:output-description`: Scheme functions
- `ly:output-formats`: Scheme functions
- `ly:outputter-close`: Scheme functions
- `ly:outputter-dump-stencil`: Scheme functions
- `ly:outputter-dump-string`: Scheme functions
- `ly:outputter-output-scheme`: Scheme functions
- `ly:outputter-port`: Scheme functions
- `ly:pango-font-physical-fonts`: Scheme functions
- `ly:pango-font?`: Scheme functions
- `ly:paper-book-pages`: Scheme functions
- `ly:paper-book-paper`: Scheme functions
- `ly:paper-book-performances`: Scheme functions
- `ly:paper-book-scopes`: Scheme functions
- `ly:paper-book-systems`: Scheme functions
- `ly:paper-book?`: Scheme functions
- `ly:paper-fonts`: Scheme functions
- `ly:paper-get-font`: Scheme functions
- `ly:paper-get-number`: Scheme functions
- `ly:paper-outputscale`: Scheme functions
- `ly:paper-score-paper-systems`: Scheme functions
- `ly:paper-system?`: Scheme functions
- `ly:parse-file`: Scheme functions
- `ly:parse-string`: Scheme functions
- `ly:parser-define!`: Scheme functions
- `ly:parser-lookup`: Scheme functions
- `ly:parser-output-name`: Scheme functions
- `ly:parser-parse-string`: Scheme functions
- `ly:parser-set-note-names`: Scheme functions
- `ly:performance-write`: Scheme functions
- `ly:pfb->pfa`: Scheme functions
- `ly:pitch-alteration`: Scheme functions
- `ly:pitch-diff`: Scheme functions
- `ly:pitch-notename`: Scheme functions
- `ly:pitch-octave`: Scheme functions
- `ly:pitch-quartertones`: Scheme functions
- `ly:pitch-semitones`: Scheme functions
- `ly:pitch-steps`: Scheme functions
- `ly:pitch-transpose`: Scheme functions
- `ly:pitch<?`: Scheme functions
- `ly:pitch?`: Scheme functions
- `ly:prob-property`: Scheme functions
- `ly:prob-property?`: Scheme functions
- `ly:prob-set-property!`: Scheme functions
- `ly:prob-type?`: Scheme functions
- `ly:prob?`: Scheme functions
- `ly:programming-error`: Scheme functions
- `ly:progress`: Scheme functions
- `ly:protects`: Scheme functions
- `ly:pt`: Scheme functions
- `ly:register-stencil-expression`: Scheme functions
- `ly:relative-group-extent`: Scheme functions
- `ly:round-filled-box`: Scheme functions
- `ly:run-translator`: Scheme functions
- `ly:score-embedded-format`: Scheme functions
- `ly:score-process`: Scheme functions
- `ly:score?`: Scheme functions
- `ly:set-option`: Scheme functions
- `ly:set-point-and-click`: Scheme functions
- `ly:simple-closure?`: Scheme functions
- `ly:smob-protects`: Scheme functions
- `ly:solve-spring-rod-problem`: Scheme functions
- `ly:spanner-bound`: Scheme functions
- `ly:spanner-broken-into`: Scheme functions
- `ly:spanner?`: Scheme functions
- `ly:stderr-redirect`: Scheme functions
- `ly:stencil-add`: Scheme functions
- `ly:stencil-aligned-to`: Scheme functions
- `ly:stencil-combine-at-edge`: Scheme functions
- `ly:stencil-empty?`: Scheme functions
- `ly:stencil-expr`: Scheme functions
- `ly:stencil-extent`: Scheme functions
- `ly:stencil-fonts`: Scheme functions
- `ly:stencil-in-color`: Scheme functions
- `ly:stencil-moved-to-edge`: Scheme functions
- `ly:stencil-origin`: Scheme functions
- `ly:stencil-translate`: Scheme functions
- `ly:stencil-translate-axis`: Scheme functions
- `ly:stencil?`: Scheme functions
- `ly:text-dimension`: Scheme functions
- `ly:translator-description`: Scheme functions
- `ly:translator-group?`: Scheme functions
- `ly:translator-name`: Scheme functions
- `ly:translator?`: Scheme functions
- `ly:transpose-key-alist`: Scheme functions
- `ly:ttf->pfa`: Scheme functions
- `ly:ttf-ps-name`: Scheme functions
- `ly:tweak-clear-registry`: Scheme functions
- `ly:tweak-define-keys`: Scheme functions
- `ly:tweak-define-tweaks`: Scheme functions
- `ly:undumper-lookup`: Scheme functions
- `ly:undumper-read-keys`: Scheme functions
- `ly:unit`: Scheme functions
- `ly:usage`: Scheme functions
- `ly:version`: Scheme functions
- `ly:warning`: Scheme functions
- `ly:wide-char->utf-8`: Scheme functions

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

Other languages: English.
Using automatic language selection.