LilyPond Internals Reference: 2.1.2 ChordNames

### 2.1.2 ChordNames

Typesets chord names.

This context creates the following layout object(s):

ChordName, StaffSpacing and VerticalAxisGroup.

This context sets the following properties:

- Set grob-property `nonstaff-nonstaff-spacing padding` in VerticalAxisGroup to `0.5`.
- Set grob-property `nonstaff-relatedstaff-spacing padding` in VerticalAxisGroup to `0.5`.
- Set grob-property `remove-empty` in VerticalAxisGroup to `#t`.
- Set grob-property `remove-first` in VerticalAxisGroup to `#t`.
- Set grob-property `staff-affinity` in VerticalAxisGroup to `-1`.

This context is a ‘bottom’ context; it cannot contain other contexts.

This context is built from the following engraver(s):

> `Chord_name_engraver`

>   Catch note and rest events and generate the appropriate chordname.

>   Music types accepted:

>   note-event and rest-event

>   Properties (read)

>   > `chordChanges` (boolean)

>   >   Only show changes in chords scheme?

>   > `chordNameExceptions` (list)

>   >   An alist of chord exceptions. Contains `(chord . markup)` entries.

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

>   >   A function that converts from a pitch object to a text markup. Used for single pitches.

>   > `chordRootNamer` (procedure)

>   >   A function that converts from a pitch object to a text markup. Used for chords.

>   > `majorSevenSymbol` (markup)

>   >   How should the major 7th be formatted in a chord name?

>   > `noChordSymbol` (markup)

>   >   Markup to be displayed for rests in a ChordNames context.

>   This engraver creates the following layout object(s):

>   ChordName.

> `Hara_kiri_engraver`

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

>   Properties (read)

>   > `keepAliveInterfaces` (list)

>   >   A list of symbols, signifying grob interfaces that are worth keeping a staff with `remove-empty` set around for.

>   This engraver creates the following layout object(s):

>   VerticalAxisGroup.

> `Output_property_engraver`

>   Apply a procedure to any grob acknowledged.

>   Music types accepted:

>   apply-output-event

> `Separating_line_group_engraver`

>   Generate objects for computing spacing parameters.

>   Properties (read)

>   > `createSpacing` (boolean)

>   >   Create `StaffSpacing` objects? Should be set for staves.

>   Properties (write)

>   > `hasStaffSpacing` (boolean)

>   >   True if the current `CommandColumn` contains items that will affect spacing.

>   This engraver creates the following layout object(s):

>   StaffSpacing.

#### Internals Reference