LilyPond Internals Reference: 2.1.11 FretBoards

### 2.1.11 `FretBoards`

A context for displaying fret diagrams.

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

This context creates the following layout object(s): `FretBoard`, `InstrumentName`, `StaffSpacing` and `VerticalAxisGroup`.

This context sets the following properties:

- Set context property `handleNegativeFrets` to `'recalculate`.
- Set context property `instrumentName` to `'()`.
- Set context property `predefinedDiagramTable` to `#<hash-table 5b68c73f78c0 0/113>`.
- Set context property `restrainOpenStrings` to `#f`.
- Set context property `shortInstrumentName` to `'()`.

This is a ‘Bottom’ context; no contexts will be created implicitly from it.

This context cannot contain other contexts.

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

`Axis_group_engraver`

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

  Properties (read)

  `currentCommandColumn` (graphical (layout) object)

    Grob that is X-parent to all current breakable items (clef, key signature, etc.).

  `hasAxisGroup` (boolean)

    True if the current context is contained in an axis group.

  `keepAliveInterfaces` (list)

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

  Properties (write)

  `hasAxisGroup` (boolean)

    True if the current context is contained in an axis group.

  This engraver creates the following layout object(s): `VerticalAxisGroup`.

`Font_size_engraver`

  Put `fontSize` into `font-size` grob property.

  Properties (read)

  `fontSize` (number)

    The relative size of all grobs in a context.

`Fretboard_engraver`

  Generate fret diagram from one or more events of type `NoteEvent`.

  Music types accepted: `fingering-event`, `note-event` and `string-number-event`

  Properties (read)

  `chordChanges` (boolean)

    Only show changes in chords scheme?

  `defaultStrings` (list)

    A list of strings to use in calculating frets for tablatures and fretboards if no strings are provided in the notes for the current moment.

  `highStringOne` (boolean)

    Whether the first string is the string with highest pitch on the instrument. This used by the automatic string selector for tablature notation.

  `maximumFretStretch` (number)

    Don’t allocate frets further than this from specified frets.

  `minimumFret` (number)

    The tablature auto string-selecting mechanism selects the highest string with a fret at least `minimumFret`.

  `noteToFretFunction` (procedure)

    Convert list of notes and list of defined strings to full list of strings and fret numbers. Parameters: The context, a list of note events, a list of tabstring events, and the fretboard grob if a fretboard is desired.

  `predefinedDiagramTable` (hash table)

    The hash table of predefined fret diagrams to use in FretBoards.

  `stringTunings` (list)

    The tablature strings tuning. It is a list of the pitches of each string (starting with the lowest numbered one).

  `tablatureFormat` (procedure)

    A function formatting a tablature note head. Called with three arguments: context, string number and, fret number. It returns the text as a markup.

  This engraver creates the following layout object(s): `FretBoard`.

`Instrument_name_engraver`

  Create a system start text for instrument or vocal names.

  Properties (read)

  `currentCommandColumn` (graphical (layout) object)

    Grob that is X-parent to all current breakable items (clef, key signature, etc.).

  `instrumentName` (markup)

    The name to print left of a staff. The `instrumentName` property labels the staff in the first system, and the `shortInstrumentName` property labels following lines.

  `shortInstrumentName` (markup)

    See `instrumentName`.

  `shortVocalName` (markup)

    Name of a vocal line, short version.

  `vocalName` (markup)

    Name of a vocal line.

  This engraver creates the following layout object(s): `InstrumentName`.

`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 `currentCommandColumn` contains items that will affect spacing.

  This engraver creates the following layout object(s): `StaffSpacing`.

#### LilyPond – Internals Reference v2.24.4 (stable-branch).