LilyPond snippets: Fretted strings

# Fretted strings

Fretted string instruments

## Adding fingerings to a score

Fingering instructions can be entered using a simple syntax.

    \relative c'' {
      c4-1 d-2 f-4 e-3
    }

## Adding fingerings to tablatures

To add fingerings to tablatures, use a combination of `\markup` and `\finger`.

    one = \markup { \finger 1 }
    two = \markup { \finger 2 }
    threeTwo = \markup {
      \override #'(baseline-skip . 2)
      \column {
        \finger 3
        \finger 2
      }
    }
    threeFour = \markup {
      \override #'(baseline-skip . 2)
      \column {
        \finger 3
        \finger 4
      }
    }

    \score {
      \new TabStaff {
        \tabFullNotation
        \stemUp
        e8\4^\one b\2 <g\3 e'\1>^>[ b\2 e\4]
        <a\3 fis'\1>^>^\threeTwo[ b\2 e\4]
      }
    }

## Allowing fingerings to be printed inside the staff

By default, vertically oriented fingerings are positioned outside the staff. However, this behavior can be canceled. Note: you must use a chord construct <>, even if it is only a single note.

    \relative c' {
      <c-1 e-2 g-3 b-5>2
      \override Fingering #'staff-padding = #'()
      <c-1 e-2 g-3 b-5>4 <g'-0>
    }

## Bar chords notation for Guitar ( with Text Spanner)

Here is how to print bar chords, or half-bar chords (just uncomment the appropriate line for to select either one).

The syntax is `\bbarre #'fret_number' { notes }`

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %% %%%%%%%  Cut here ----- Start 'bbarred.ly'

    %% PostScript -------------------------------
    pScript= \markup {
    	\with-dimensions #'(0 . 0.8) #'(0 . 2.0)
    	\postscript	#"
    	0.15 setlinewidth
    	/Times-Roman findfont
    	2.0 scalefont
    	setfont
    	(C)show %%change with B if you prefer
           %(B)show %%change with C if you prefer
    	stroke
    	0.7 -0.5 moveto
    	0.7  1.7 lineto
    	stroke"
    }
    %% Span -----------------------------------
    %% Syntax: \bbarre #"text" { notes } - text = any number of box
    bbarre= #(define-music-function (barre location str music) (string? ly:music?)
               (let ((spanned-music
                       (let ((first-element #f)
                             (last-element #f)
                             (first-found? #f))
                         (music-map (lambda (m)
                                      (if (eqv? (ly:music-property m 'name) 'EventChord)
                                          (begin
                                            (if (not first-found?)
                                                (begin
                                                  (set! first-found? #t)
                                                  (set! first-element m)))
                                            (set! last-element m)))
                                      m)
                                    music)
                         (if first-found?
                             (begin
                               (set! (ly:music-property first-element 'elements)
                                     (cons (make-music 'TextSpanEvent 'span-direction -1)
                                           (ly:music-property first-element 'elements)))
                               (set! (ly:music-property last-element 'elements)
                                     (cons (make-music 'TextSpanEvent 'span-direction 1)
                                           (ly:music-property last-element 'elements)))))
                         music)))
                 (make-music 'SequentialMusic
                   'origin location
                   'elements (list #{
    			\once \override TextSpanner #'font-size = #-2
    			\once \override TextSpanner #'font-shape = #'upright
    			\once \override TextSpanner #'staff-padding = #3
    			\once \override TextSpanner #'style = #'line
                            \once \override TextSpanner #'to-barline = ##f
                            \once \override TextSpanner #'bound-details =  #'((left (Y . 0) (padding . 0.25) (attach-dir . -2)) (right (Y . 0) (padding . 0.25) (attach-dir . 2)))
                            \once  \override TextSpanner #'bound-details #'right #'text = \markup { \draw-line #'( 0 . -.5) }
                            \once  \override TextSpanner #'bound-details #'left #'text =  \markup { \pScript $str }
    %% uncomment this line for make full barred
                           % \once  \override TextSpanner #'bound-details #'left #'text =  \markup { "B" $str }
                              #}
        spanned-music))))

    %% %%%%%%%  Cut here ----- End 'bbarred.ly'
    %% Copy and change the last line for full barred. Rename in 'fbarred.ly'
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    %% Syntaxe: \bbarre #"text" { notes } - text = any number of box
    \relative c'{ \clef "G_8" \stemUp \bbarre #"III" { <f a'>16[  c' d c d8] } }

## Changing fret orientations

Fret diagrams can be oriented in three ways. By default the top string or fret in the different orientations will be aligned.

    \include "predefined-guitar-fretboards.ly"

    <<
      \chords {
        c1
        c1
        c1
      }
      \new FretBoards {
        \chordmode {
          c1
          \override FretBoard #'(fret-diagram-details orientation) =
            #'landscape
          c1
          \override FretBoard #'(fret-diagram-details orientation) =
            #'opposing-landscape
          c1
        }
      }
      \new Voice {
        c'1
        c'1
        c'
      }
    >>

## Chord glissando in tablature

Slides for chords can be indicated in both Staff and TabStaff. String numbers are necessary for TabStaff because automatic string calculations are different for chords and for single notes, and `\chordGlissando` draws lines between single notes.

    myMusic = \relative c' {
      \chordGlissando
      <c\3 e\2 g\1>8 <f\3 a\2 c\1>
    }

    \score {
      <<
        \new Staff {
          \clef "treble_8"
          \myMusic
        }
        \new TabStaff {
          \myMusic
        }
      >>
    }

## chordChanges for FretBoards

FretBoards can be set to display only when the chord changes or at the beginning of a new line.

    \include "predefined-guitar-fretboards.ly"

    myChords = \chordmode {
      c1 c1 \break
      \set chordChanges = ##t
      c1 c1 \break
      c1 c1 \break
    }

    <<
      \new ChordNames { \myChords }
      \new FretBoards { \myChords }
      \new Staff { \myChords }
    >>

## Controlling the placement of chord fingerings

The placement of fingering numbers can be controlled precisely. For fingering orientation to apply, you must use a chord construct <> even if it is a single note.

    \relative c' {
      \set fingeringOrientations = #'(left)
      <c-1 e-3 a-5>4
      \set fingeringOrientations = #'(down)
      <c-1 e-3 a-5>4
      \set fingeringOrientations = #'(down right up)
      <c-1 e-3 a-5>4
      \set fingeringOrientations = #'(up)
      <c-1 e-3 a-5>4
      \set fingeringOrientations = #'(left)
      <c-1>2
      \set fingeringOrientations = #'(down)
      <e-3>2
    }

## Customizing fretboard fret diagrams

Fret diagram properties can be set through `'fret-diagram-details`. For FretBoard fret diagrams, overrides are applied to the `FretBoards.FretBoard` object. Like `Voice`, `FretBoards` is a bottom level context, therefore can be omitted in property overrides.

    \include "predefined-guitar-fretboards.ly"
    \storePredefinedDiagram #default-fret-table \chordmode { c' }
                            #guitar-tuning
                            #"x;1-1-(;3-2;3-3;3-4;1-1-);"
    <<
      \new ChordNames {
        \chordmode { c1 | c | c | d }
      }
      \new FretBoards {
        % Set global properties of fret diagram
        \override FretBoards.FretBoard #'size = #'1.2
        \override FretBoard
          #'(fret-diagram-details finger-code) = #'in-dot
        \override FretBoard
          #'(fret-diagram-details dot-color) = #'white
        \chordmode {
          c
          \once \override FretBoard #'size = #'1.0
          \once \override FretBoard
            #'(fret-diagram-details barre-type) = #'straight
          \once \override FretBoard
            #'(fret-diagram-details dot-color) = #'black
          \once \override FretBoard
            #'(fret-diagram-details finger-code) = #'below-string
          c'
          \once \override FretBoard
            #'(fret-diagram-details barre-type) = #'none
          \once \override FretBoard
            #'(fret-diagram-details number-type) = #'arabic
          \once \override FretBoard
            #'(fret-diagram-details orientation) = #'landscape
          \once \override FretBoard
            #'(fret-diagram-details mute-string) = #"M"
          \once \override FretBoard
            #'(fret-diagram-details label-dir) = #LEFT
          \once \override FretBoard
            #'(fret-diagram-details dot-color) = #'black
          c'
          \once \override FretBoard
            #'(fret-diagram-details finger-code) = #'below-string
          \once \override FretBoard
            #'(fret-diagram-details dot-radius) = #0.35
          \once \override FretBoard
            #'(fret-diagram-details dot-position) = #0.5
          \once \override FretBoard
            #'(fret-diagram-details fret-count) = #3
          d
        }
      }
      \new Voice {
        c'1 | c' | c' | d'
      }
    >>

## Customizing markup fret diagrams

Fret diagram properties can be set through `'fret-diagram-details`. For markup fret diagrams, overrides can be applied to the `Voice.TextScript` object or directly to the markup.

    <<
      \chords { c1 | c | c | d }

      \new Voice = "mel" {
        \textLengthOn
        % Set global properties of fret diagram
        \override TextScript #'size = #'1.2
        \override TextScript
          #'(fret-diagram-details finger-code) = #'in-dot
        \override TextScript
          #'(fret-diagram-details dot-color) = #'white

        %% C major for guitar, no barre, using defaults
           % terse style
        c'1^\markup { \fret-diagram-terse #"x;3-3;2-2;o;1-1;o;" }

        %% C major for guitar, barred on third fret
           % verbose style
           % size 1.0
           % roman fret label, finger labels below string, straight barre
        c'1^\markup {
          % standard size
          \override #'(size . 1.0) {
            \override #'(fret-diagram-details . (
                         (number-type . roman-lower)
                         (finger-code . in-dot)
                         (barre-type . straight))) {
              \fret-diagram-verbose #'((mute 6)
                                       (place-fret 5 3 1)
                                       (place-fret 4 5 2)
                                       (place-fret 3 5 3)
                                       (place-fret 2 5 4)
                                       (place-fret 1 3 1)
                                       (barre 5 1 3))
            }
          }
        }

        %% C major for guitar, barred on third fret
           % verbose style
           % landscape orientation, arabic numbers, M for mute string
           % no barre, fret label down or left, small mute label font
        c'1^\markup {
          \override #'(fret-diagram-details . (
                       (finger-code . below-string)
                       (number-type . arabic)
                       (label-dir . -1)
                       (mute-string . "M")
                       (orientation . landscape)
                       (barre-type . none)
                       (xo-font-magnification . 0.4)
                       (xo-padding . 0.3))) {
            \fret-diagram-verbose #'((mute 6)
                                     (place-fret 5 3 1)
                                     (place-fret 4 5 2)
                                     (place-fret 3 5 3)
                                     (place-fret 2 5 4)
                                     (place-fret 1 3 1)
                                     (barre 5 1 3))
          }
        }

        %% simple D chord
           % terse style
           % larger dots, centered dots, fewer frets
           % label below string
        d'1^\markup {
          \override #'(fret-diagram-details . (
                       (finger-code . below-string)
                       (dot-radius . 0.35)
                       (dot-position . 0.5)
                       (fret-count . 3))) {
            \fret-diagram-terse #"x;x;o;2-1;3-2;2-3;"
          }
        }
      }
    >>

## Defining predefined fretboards for other instruments

Predefined fret diagrams can be added for new instruments in addition to the standards used for guitar. This file shows how this is done by defining a new string-tuning and a few predefined fretboards for the Venezuelan cuatro.

This file also shows how fingerings can be included in the chords used as reference points for the chord lookup, and displayed in the fret diagram and the `TabStaff`, but not the music.

These fretboards are not transposable because they contain string information. This is planned to be corrected in the future.

    % add FretBoards for the Cuatro
    %   Note: This section could be put into a separate file
    %      predefined-cuatro-fretboards.ly
    %      and \included into each of your compositions

    cuatroTuning = #`(,(ly:make-pitch 0 6 0)
                      ,(ly:make-pitch 1 3 SHARP)
    		  ,(ly:make-pitch 1 1 0)
    		  ,(ly:make-pitch 0 5 0))

    dSix = { <a\4 b\1 d\3 fis\2> }
    dMajor = { <a\4 d\1 d\3 fis \2> }
    aMajSeven = { <a\4 cis\1 e\3 g\2> }
    dMajSeven = { <a\4 c\1 d\3 fis\2> }
    gMajor = { <b\4 b\1 d\3 g\2> }

    \storePredefinedDiagram #default-fret-table \dSix
                            #cuatroTuning
                            #"o;o;o;o;"
    \storePredefinedDiagram #default-fret-table \dMajor
                            #cuatroTuning
                            #"o;o;o;3-3;"
    \storePredefinedDiagram #default-fret-table \aMajSeven
                            #cuatroTuning
                            #"o;2-2;1-1;2-3;"
    \storePredefinedDiagram #default-fret-table \dMajSeven
                            #cuatroTuning
                            #"o;o;o;1-1;"
    \storePredefinedDiagram #default-fret-table \gMajor
                            #cuatroTuning
                            #"2-2;o;1-1;o;"

    % end of potential include file /predefined-cuatro-fretboards.ly

    #(set-global-staff-size 16)

    primerosNames = \chordmode {
      d:6 d a:maj7 d:maj7
      g
    }
    primeros = {
      \dSix \dMajor \aMajSeven \dMajSeven
      \gMajor
    }

    \score {
      <<
        \new ChordNames {
          \set chordChanges = ##t
          \primerosNames
        }

        \new Staff {
          \new Voice \with {
            \remove "New_fingering_engraver"
          }
          \relative c'' {
            \primeros
          }
        }

        \new FretBoards {
          \set stringTunings = #cuatroTuning
    %      \override FretBoard
    %        #'(fret-diagram-details string-count) = #'4
          \override FretBoard
            #'(fret-diagram-details finger-code) = #'in-dot
          \primeros
        }

        \new TabStaff \relative c'' {
          \set TabStaff.stringTunings = #cuatroTuning
          \primeros
        }

      >>

      \layout {
        \context {
          \Score
          \override SpacingSpanner
            #'base-shortest-duration = #(ly:make-moment 1 16)
        }
      }
      \midi { }
    }

## Faking a hammer in tablatures

A hammer in tablature can be faked with slurs.

    \score {
      \new TabStaff {
        \relative c'' {
          \tabFullNotation
          c4( d) d( d)
          d2( c)
        }
      }
    }

## Fingerings string indications and right-hand fingerings

This example combines left-hand fingering, string indications, and right-hand fingering.

    #(define RH rightHandFinger)

    \relative c {
      \clef "treble_8"
      <c-3\5-\RH #1 >4
      <e-2\4-\RH #2 >4
      <g-0\3-\RH #3 >4
      <c-1\2-\RH #4 >4
    }

## Flamenco notation

For flamenco guitar, special notation is used:

- a golpe symbol to indicate a slap on the guitar body with the nail of the ring finger
- an arrow to indicate (the direction of) strokes
- different letters for fingering (“p”: thumb, “i”: index finger, “m”: middle finger, “a”: ring finger and “x”: little finger)
- 3- and 4-finger rasgueados: stroke upwards with all fingers, ending with an up- and down using the index finger
- abanicos: strokes (in tuples) with thumb (down), little and index finger (both up) (there is also an abanico 2 where middle and ring finger are used instead of the little finger)
- alza pua: fast playing with the thumb

Most figures use arrows in combination with fingering; with abanicos and rasgueados, noteheads are printed only for the first chord.

This snippet contains some header-like code that can be copied as ‘`flamenco.ly`’ and included in source files.

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%  Cut here ----- Start 'flamenco.ly'

    % Text indicators
    abanico = \markup { \italic Abanico }
    rasgueaso = \markup { \italic Ras. }
    alzapua = \markup { \italic Alzapua }

    % Finger stroke symbols
    strokeUp = \markup { \postscript #"
      0.1     setlinewidth
      0.5 0   moveto
      0.5 2   lineto
      0.2 1.4 lineto
      0.5 2   moveto
      0.8 1.4 lineto
      stroke
    "}

    strokeDown = \markup { \postscript #"
      0.1     setlinewidth
      0.5 2   moveto
      0.5 0   lineto
      0.2 0.6 lineto
      0.5 0   moveto
      0.8 0.6 lineto
      stroke
    "}

    % Golpe symbol
    golpe = \markup { \postscript #"
      0.2 setlinewidth
      0 0 moveto
      1 0 lineto
      1 1 lineto
      stroke
      "\postscript #"
      0.1       setlinewidth
      -0.6 -0.1  moveto
      -0.6  1.0 lineto
      0.5  1.0 lineto
      stroke
    "}

    strokeUpGolpe = \markup { \column { \golpe \line { \strokeUp } } }
    iUpGolpe = \markup { \column { \golpe \line { \small i } \line { \strokeUp } } }

    % Strokes for all fingers
    pUp   = \markup { \column { \small p \line { \strokeUp } } }
    pDown = \markup { \column { \small p \line { \strokeDown } } }
    iUp   = \markup { \column { \small i \line { \strokeUp } } }
    iDown = \markup { \column { \small i \line { \strokeDown } } }
    mUp   = \markup { \column { \small m \line { \strokeUp } } }
    mDown = \markup { \column { \small m \line { \strokeDown } } }
    aUp   = \markup { \column { \small a \line { \strokeUp } } }
    aDown = \markup { \column { \small a \line { \strokeDown } } }
    xUp   = \markup { \column { \small x \line { \strokeUp } } }
    xDown = \markup { \column { \small x \line { \strokeDown } } }

    % Just handy :)
    tupletOff = {
      \once \override TupletNumber #'stencil = ##f
      \once \override TupletBracket #'stencil = ##f
    }

    tupletsOff = {
      \override TupletNumber #'stencil = ##f
      \override TupletBracket #'bracket-visibility = #'if-no-beam
    }

    tupletsOn = {
      \override TupletBracket #'bracket-visibility = #'default
      \revert TupletNumber #'stencil
    }

    headsOff = {
      \override TabNoteHead #'transparent = ##t
      \override NoteHead #'transparent = ##t
      \override NoteHead #'no-ledgers = ##t
    }

    headsOn = {
      \override TabNoteHead #'transparent = ##f
      \override NoteHead #'transparent = ##f
      \override NoteHead #'no-ledgers = ##f
    }

    %%%%%%%  Cut here ----- End 'flamenco.ly'
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    part = \relative c' {
      <a, e' a cis e>8^\iUp
      <a e' a cis e>8^\iDown
      r4
      r2^\golpe

      <a e' a cis e>8^\iUp
      <a e' a cis e>8^\iDown
      <a e' a cis e>8^\iUpGolpe
      <a e' a cis e>8^\iDown
      r2

      <a e' a cis e>16^\aUp
      \headsOff
      <a e' a cis e>^\mUp
      <a e' a cis e>^\iUp
      <a e' a cis e>^\iDown~
      \headsOn
      <a e' a cis e>2
      r4

      \tupletOff
      \times 4/5 {
        <a e' a cis e>16^\xUp
        \headsOff
        <a e' a cis e>^\aUp
        <a e' a cis e>^\mUp
        <a e' a cis e>^\iUp
        <a e' a cis e>^\iDown~
        \headsOn
      }
      <a e' a cis e>2
      r4

      \tupletsOff
      \times 2/3 {
        <a e' a cis e>8^\pDown
        \headsOff
        <a e' a cis e>^\xUp
        <a e' a cis e>^\iUp
        \headsOn
      }

      \times 2/3 {
        <a e' a cis e>8^\pDown
        \headsOff
        <a e' a cis e>^\xUp
        <a e' a cis e>^\iUp
        \headsOn
      }

      \times 2/3 {
        <a e' a cis e>8^\pDown
        \headsOff
        <a e' a cis e>^\xUp
        <a e' a cis e>^\iUp
        \headsOn
      }
      \times 2/3 {
        <a e' a cis e>8^\pDown
        \headsOff
        <a e' a cis e>^\xUp
        <a e' a cis e>^\iUp
        \headsOn
      }

      \tupletsOff
      \override Beam #'positions = #'(2 . 2)
      \times 2/3 {
        a8^\markup{ \small p }
        <e' a>^\strokeUpGolpe
        <e a>^\strokeDown
      }
      \times 2/3 {
        a,8^\markup{ \small p }
        <e' a>^\strokeUpGolpe
        <e a>^\strokeDown
      }
      \times 2/3 {
        a,8^\markup{ \small p }
        <e' a>^\strokeUpGolpe
        <e a>^\strokeDown
      }
      \times 2/3 {
        a,8^\markup{ \small p }
        <e' a>^\strokeUpGolpe
        <e a>^\strokeDown
      }
      \tupletsOn

      \once \override TextScript #'extra-offset = #'(0 . -1)
      <g, b f'>1_\golpe^\mUp
      \bar "|."
    }

    \score {
      \new StaffGroup <<
        \context Staff = "part" <<
          \clef G
          \transpose c c'
          {
            \part
          }
        >>
        \context TabStaff {
          \part
        }
      >>
      \layout {
        ragged-right = ##t
      }
    }

## Fret diagrams explained and developed

This snippet shows many possibilities for obtaining and tweaking fret diagrams.

    <<
      \chords {
        a2 a
        \repeat unfold 3 {
          c c c d d
        }
      }

      \new Voice = "mel" {
        \textLengthOn
        % Set global properties of fret diagram
        \override TextScript #'size = #1.2
        \override TextScript
          #'fret-diagram-details #'finger-code = #'below-string
        \override TextScript #'fret-diagram-details #'dot-color = #'black

        %% A chord for ukulele
        a'2^\markup {
          \override #'(fret-diagram-details . (
                       (string-count . 4)
                       (dot-color . white)
                       (finger-code . in-dot))) {
            \fret-diagram #"4-2-2;3-1-1;2-o;1-o;"
          }
        }

        %% A chord for ukulele, with formatting defined in definition string
        %  1.2 * size, 4 strings, 4 frets, fingerings below string
        %  dot radius .35 of fret spacing, dot position 0.55 of fret spacing
        a'2^\markup {
          \override #'(fret-diagram-details . (
                       (dot-color . white)
                       (open-string . "o"))) {
            \fret-diagram #"s:1.2;w:4;h:3;f:2;d:0.35;p:0.55;4-2-2;3-1-1;2-o;1-o;"
          }
        }

          %% These chords will be in normal orientation

        %% C major for guitar, barred on third fret
        %  verbose style
        %  roman fret label, finger labels below string, straight barre
        c'2^\markup {
          % 110% of default size
          \override #'(size . 1.1) {
            \override #'(fret-diagram-details . (
                         (number-type . roman-lower)
                         (finger-code . below-string)
                         (barre-type . straight))) {
              \fret-diagram-verbose #'((mute 6)
                                       (place-fret 5 3 1)
                                       (place-fret 4 5 2)
                                       (place-fret 3 5 3)
                                       (place-fret 2 5 4)
                                       (place-fret 1 3 1)
                                       (barre 5 1 3))
            }
          }
        }

        %% C major for guitar, barred on third fret
        %% Double barre used to test barre function
        %  verbose style
        c'2^\markup {
          % 110% of default size
          \override #'(size . 1.1) {
            \override #'(fret-diagram-details . (
                         (number-type . arabic)
                         (dot-label-font-mag . 0.9)
                         (finger-code . in-dot)
                         (fret-label-font-mag . 0.6)
                         (fret-label-vertical-offset . 0)
                         (label-dir . -1)
                         (mute-string . "M")
                         (xo-font-magnification . 0.4)
                         (xo-padding . 0.3))) {
              \fret-diagram-verbose #'((mute 6)
                                       (place-fret 5 3 1)
                                       (place-fret 4 5 2)
                                       (place-fret 3 5 3)
                                       (place-fret 2 5 4)
                                       (place-fret 1 3 1)
                                       (barre 4 2 5)
                                       (barre 5 1 3))
            }
          }
        }

        %% C major for guitar, with capo on third fret
        %  verbose style
        c'2^\markup {
          % 110% of default size
          \override #'(size . 1.1) {
            \override #'(fret-diagram-details . (
                         (number-type . roman-upper)
                         (dot-label-font-mag . 0.9)
                         (finger-code . none)
                         (fret-label-vertical-offset . 0.5)
                         (xo-font-magnification . 0.4)
                         (xo-padding . 0.3))) {
              \fret-diagram-verbose #'((mute 6)
                                       (capo 3)
                                       (open 5)
                                       (place-fret 4 5 1)
                                       (place-fret 3 5 2)
                                       (place-fret 2 5 3)
                                       (open 1))
            }
          }
        }

        %% simple D chord
        d'2^\markup {
          \override #'(fret-diagram-details . (
                       (finger-code . below-string)
                       (dot-radius . 0.35)
                       (string-thickness-factor . 0.3)
                       (dot-position . 0.5)
                       (fret-count . 3))) {
            \fret-diagram-terse #"x;x;o;2-1;3-2;2-3;"
          }
        }

        %% simple D chord, large top fret thickness
        d'2^\markup  {
          \override #'(fret-diagram-details . (
                       (finger-code . below-string)
                       (dot-radius . 0.35)
                       (dot-position . 0.5)
                       (top-fret-thickness . 7)
                       (fret-count . 3))) {
            \fret-diagram-terse #"x;x;o;2-1;3-2;2-3;"
          }
        }

          % These chords will be in landscape orientation
        \override TextScript
           #'fret-diagram-details #'orientation = #'landscape

        %% C major for guitar, barred on third fret
        %  verbose style
        %  roman fret label, finger labels below string, straight barre
        c'2^\markup {
          % 110% of default size
          \override #'(size . 1.1) {
            \override #'(fret-diagram-details . (
                         (number-type . roman-lower)
                         (finger-code . below-string)
                         (barre-type . straight))) {
              \fret-diagram-verbose #'((mute 6)
                                       (place-fret 5 3 1)
                                       (place-fret 4 5 2)
                                       (place-fret 3 5 3)
                                       (place-fret 2 5 4)
                                       (place-fret 1 3 1)
                                       (barre 5 1 3))
            }
          }
        }

        %% C major for guitar, barred on third fret
        %% Double barre used to test barre function
        %  verbose style
        c'2^\markup {
          % 110% of default size
          \override #'(size . 1.1) {
            \override #'(fret-diagram-details . (
                         (number-type . arabic)
                         (dot-label-font-mag . 0.9)
                         (finger-code . in-dot)
                         (fret-label-font-mag . 0.6)
                         (fret-label-vertical-offset . 0)
                         (label-dir . -1)
                         (mute-string . "M")
                         (xo-font-magnification . 0.4)
                         (xo-padding . 0.3))) {
              \fret-diagram-verbose #'((mute 6)
                                       (place-fret 5 3 1)
                                       (place-fret 4 5 2)
                                       (place-fret 3 5 3)
                                       (place-fret 2 5 4)
                                       (place-fret 1 3 1)
                                       (barre 4 2 5)
                                       (barre 5 1 3))
            }
          }
        }

        %% C major for guitar, with capo on third fret
        %  verbose style
        c'2^\markup {
          % 110% of default size
          \override #'(size . 1.1) {
            \override #'(fret-diagram-details . (
                         (number-type . roman-upper)
                         (dot-label-font-mag . 0.9)
                         (finger-code . none)
                         (fret-label-vertical-offset . 0.5)
                         (xo-font-magnification . 0.4)
                         (xo-padding . 0.3))) {
              \fret-diagram-verbose #'((mute 6)
                                       (capo 3)
                                       (open 5)
                                       (place-fret 4 5 1)
                                       (place-fret 3 5 2)
                                       (place-fret 2 5 3)
                                       (open 1))
            }
          }
        }

        %% simple D chord
        d'2^\markup {
          \override #'(fret-diagram-details . (
                       (finger-code . below-string)
                       (dot-radius . 0.35)
                       (dot-position . 0.5)
                       (fret-count . 3))) {
            \fret-diagram-terse #"x;x;o;2-1;3-2;2-3;"
          }
        }

        %% simple D chord, large top fret thickness
        d'2^\markup {
          \override #'(fret-diagram-details . (
                       (finger-code . below-string)
                       (dot-radius . 0.35)
                       (dot-position . 0.5)
                       (top-fret-thickness . 7)
                       (fret-count . 3))) {
            \fret-diagram-terse #"x;x;o;2-1;3-2;2-3;"
          }
        }

          % These chords will be in opposing-landscape orientation
        \override TextScript #'fret-diagram-details
                               #'orientation = #'opposing-landscape

        %% C major for guitar, barred on third fret
        %  verbose style
        %  roman fret label, finger labels below string, straight barre
        c'2^\markup {
          % 110% of default size
          \override #'(size . 1.1) {
            \override #'(fret-diagram-details . (
                         (number-type . roman-lower)
                         (finger-code . below-string)
                         (barre-type . straight))) {
              \fret-diagram-verbose #'((mute 6)
                                       (place-fret 5 3 1)
                                       (place-fret 4 5 2)
                                       (place-fret 3 5 3)
                                       (place-fret 2 5 4)
                                       (place-fret 1 3 1)
                                       (barre 5 1 3))
            }
          }
        }

        %% C major for guitar, barred on third fret
        %% Double barre used to test barre function
        %  verbose style
        c'2^\markup {
          % 110% of default size
          \override #'(size . 1.1) {
            \override #'(fret-diagram-details . (
                         (number-type . arabic)
                         (dot-label-font-mag . 0.9)
                         (finger-code . in-dot)
                         (fret-label-font-mag . 0.6)
                         (fret-label-vertical-offset . 0)
                         (label-dir . -1)
                         (mute-string . "M")
                         (xo-font-magnification . 0.4)
                         (xo-padding . 0.3))) {
              \fret-diagram-verbose #'((mute 6)
                                       (place-fret 5 3 1)
                                       (place-fret 4 5 2)
                                       (place-fret 3 5 3)
                                       (place-fret 2 5 4)
                                       (place-fret 1 3 1)
                                       (barre 4 2 5)
                                       (barre 5 1 3))
            }
          }
        }

        %% C major for guitar, with capo on third fret
        %  verbose style
        c'2^\markup {
          % 110% of default size
          \override #'(size . 1.1) {
            \override #'(fret-diagram-details . (
                         (number-type . roman-upper)
                         (dot-label-font-mag . 0.9)
                         (finger-code . none)
                         (fret-label-vertical-offset . 0.5)
                         (xo-font-magnification . 0.4)
                         (xo-padding . 0.3))) {
              \fret-diagram-verbose #'((mute 6)
                                       (capo 3)
                                       (open 5)
                                       (place-fret 4 5 1)
                                       (place-fret 3 5 2)
                                       (place-fret 2 5 3)
                                       (open 1))
            }
          }
        }

        %% simple D chord
        d'2^\markup {
          \override #'(fret-diagram-details . (
                       (finger-code . below-string)
                       (dot-radius . 0.35)
                       (dot-position . 0.5)
                       (fret-count . 3))) {
            \fret-diagram-terse #"x;x;o;2-1;3-2;2-3;"
          }
        }

        %% simple D chord, large top fret thickness
        d'2^\markup {
          \override #'(fret-diagram-details . (
                       (finger-code . below-string)
                       (dot-radius . 0.35)
                       (dot-position . 0.5)
                       (top-fret-thickness . 7)
                       (fret-count . 3))) {
            \fret-diagram-terse #"x;x;o;2-1;3-2;2-3;"
          }
        }
      }
    >>

## Alternate fretboard tables

Alternate fretboard tables can be created. These would be used in order to have alternate fretboards for a given chord.

In order to use an alternate fretboard table, the table must first be created. Fretboards are then added to the table.

The created fretboard table can be blank, or it can be copied from an existing table.

The table to be used in displaying predefined fretboards is selected by the property `\predefinedDiagramTable`.

    \include "predefined-guitar-fretboards.ly"

    % Make a blank new fretboard table
    #(define custom-fretboard-table-one (make-fretboard-table))

    % Make a new fretboard table as a copy of default-fret-table
    #(define custom-fretboard-table-two (make-fretboard-table default-fret-table))

    % Add a chord to custom-fretboard-table-one
    \storePredefinedDiagram #custom-fretboard-table-one
                            \chordmode{c}
                            #guitar-tuning
                            "3-(;3;5;5;5;3-);"

    % Add a chord to custom-fretboard-table-two
    \storePredefinedDiagram #custom-fretboard-table-two
                            \chordmode{c}
                            #guitar-tuning
                            "x;3;5;5;5;o;"

    <<
      \chords {
        c1 | d1 |
        c1 | d1 |
        c1 | d1 |
      }
      \new FretBoards {
        \chordmode {
          \set predefinedDiagramTable = #default-fret-table
          c1 | d1 |
          \set predefinedDiagramTable = #custom-fretboard-table-one
          c1 | d1 |
          \set predefinedDiagramTable = #custom-fretboard-table-two
          c1 | d1 |
        }
      }
      \new Staff {
        \clef "treble_8"
        <<
          \chordmode {
            c1 | d1 |
            c1 | d1 |
            c1 | d1 |
          }
          {
            s1_\markup "Default table" | s1 |
            s1_\markup \column {"New table" "from empty"} | s1 |
            s1_\markup \column {"New table" "from default"} | s1 |
          }
        >>
      }
    >>

## Fretted-string harmonics in tablature

Fretted-string harmonics:

    pinchedHarmonics = {
       \textSpannerDown
       \override TextSpanner #'bound-details #'left #'text =
          \markup {\halign #-0.5 \teeny "PH" }
          \override TextSpanner #'style =
             #'dashed-line
       \override TextSpanner #'dash-period = #0.6
       \override TextSpanner #'bound-details #'right #'attach-dir = #1
       \override TextSpanner #'bound-details #'right #'text =
          \markup { \draw-line #'(0 . 1) }
       \override TextSpanner #'bound-details #'right #'padding = #-0.5
    }

    harmonics = {
      %artificial harmonics (AH)
      \textLengthOn
      <\parenthesize b b''\harmonic>4_\markup{ \teeny "AH 16" }
      <\parenthesize g g''\harmonic>4_\markup{ \teeny "AH 17" }
      <\parenthesize d' d'''\harmonic>2_\markup{ \teeny "AH 19" }
      %pinched harmonics (PH)
      \pinchedHarmonics
      <a'\harmonic>2\startTextSpan
      <g'\harmonic>4
      <e'\harmonic>4\stopTextSpan
      %tapped harmonics (TH)
      <\parenthesize g\4 g'\harmonic>4_\markup{ \teeny "TH 17" }
      <\parenthesize a\4 a'\harmonic>4_\markup{ \teeny "TH 19" }
      <\parenthesize c'\3 c''\harmonic>2_\markup{ \teeny "TH 17" }
      %touch harmonics (TCH)
      a4( <e''\harmonic>2. )_\markup{ \teeny "TCH" }
    }

    frettedStrings = {
      %artificial harmonics (AH)
      \harmonicByFret #4 g4\3
      \harmonicByFret #5 d4\4
      \harmonicByFret #7 g2\3
      %pinched harmonics (PH)
      \harmonicByFret #7 d2\4
      \harmonicByFret #5 d4\4
      \harmonicByFret #7 a4\5
      %tapped harmonics (TH)
      \harmonicByFret #5 d4\4
      \harmonicByFret #5 d4\4
      \harmonicByFret #4 g2\3
      %touch harmonics (TCH)
      a4 \harmonicByFret #9 g2.\3
    }

    \score {
      <<
        \new Staff {
          \new Voice {
            \clef "treble_8"
            \harmonics
          }
        }
        \new TabStaff {
          \new TabVoice {
            \frettedStrings
          }
        }
      >>
    }

## Guitar slides

Unlike glissandos, slides may go from an imprecise point of the fretboard to a specific fret. A good way to do that is to add a grace hidden note before the note which is actually played, as demonstrated in the following example.

    %% Hide fret number: useful to draw slide into/from a casual point of
    %% the fretboard.
    hideFretNumber = {
      \once \override TabNoteHead #'transparent = ##t
      \once \override NoteHead #'transparent = ##t
      \once \override Stem #'transparent = ##t
      \once \override NoteHead #'no-ledgers = ##t
      \once \override Glissando #'(bound-details left padding) = #0.3
    }

    music= \relative c' {
      \grace { \hideFretNumber d8\2 \glissando s2 } g2\2
      \grace { \hideFretNumber g8\2 \glissando s2 } d2 |

      \grace { \hideFretNumber c,8 \glissando s } f4\5^\markup \tiny { Slide into }
      \grace { \hideFretNumber f8 \glissando s } a4\4
      \grace { \hideFretNumber e'8\3 \glissando s } b4\3^\markup \tiny { Slide from }
      \grace { \hideFretNumber b'8 \glissando s2 } g4 |
    }

    \score {
      <<
        \new Staff {
          \clef "G_8"
          \music
        }
        \new TabStaff {
          \music
        }
      >>
    }

## Guitar strum rhythms

For guitar music, it is possible to show strum rhythms, along with melody notes, chord names and fret diagrams.

    \include "predefined-guitar-fretboards.ly"
    <<
      \new ChordNames {
        \chordmode {
          c1 | f | g | c
        }
      }
      \new FretBoards {
        \chordmode {
          c1 | f | g | c
        }
      }
      \new Voice \with {
        \consists "Pitch_squash_engraver"
      } {
        \relative c'' {
          \improvisationOn
          c4 c8 c c4 c8 c
          f4 f8 f f4 f8 f
          g4 g8 g g4 g8 g
          c4 c8 c c4 c8 c
        }
      }
      \new Voice = "melody" {
        \relative c'' {
          c2 e4 e4
          f2. r4
          g2. a4
          e4 c2.
        }
      }
      \new Lyrics {
        \lyricsto "melody" {
          This is my song.
          I like to sing.
        }
      }
    >>

## How to change fret diagram position

If you want to move the position of a fret diagram, for example, to avoid collision, or to place it between two notes, you have various possibilities:

1) modify #’padding or #’extra-offset values (as shown in the first snippet)

2) you can add an invisible voice and attach the fret diagrams to the invisible notes in that voice (as shown in the second example).

If you need to move the fret according with a rythmic position inside the bar (in the example, the third beat of the measure) the second example is better, because the fret is aligned with the third beat itself.

    harmonies = \chordmode
    {
      a8:13
    % THE FOLLOWING IS THE COMMAND TO MOVE THE CHORD NAME
      \once \override ChordNames.ChordName #'extra-offset = #'(10 . 0)
      b8:13 s2.
    % THIS LINE IS THE SECOND METHOD
        s4 s4  b4:13
    }

    \score
    {
      <<
        \context ChordNames \harmonies
        \context Staff
        {a8^\markup { \fret-diagram  #"6-x;5-0;4-2;3-0;2-0;1-2;"  }
    % THE FOLLOWING IS THE COMMAND TO MOVE THE FRET DIAGRAM
         \once \override TextScript #'extra-offset = #'(10 . 0)
         b4.~^\markup { \fret-diagram  #"6-x;5-2;4-4;3-2;2-2;1-4;"  } b4. a8\break
    % HERE IS THE SECOND METHOD
         <<
           { a8 b4.~ b4. a8}
           { s4 s4 s4^\markup { \fret-diagram  #"6-x;5-2;4-4;3-2;2-2;1-4;"  }
           }
         >>
       }
      >>
    }

## Jazz combo template

This is quite an advanced template, for a jazz ensemble. Note that all instruments are notated in `\key c \major`. This refers to the key in concert pitch; the key will be automatically transposed if the music is within a `\transpose` section.

    \header {
      title = "Song"
      subtitle = "(tune)"
      composer = "Me"
      meter = "moderato"
      piece = "Swing"
      tagline = \markup {
        \column {
          "LilyPond example file by Amelie Zapf,"
          "Berlin 07/07/2003"
        }
      }
    }

    %#(set-global-staff-size 16)
    \include "english.ly"

    %%%%%%%%%%%% Some macros %%%%%%%%%%%%%%%%%%%

    sl = {
      \override NoteHead #'style = #'slash
      \override Stem #'transparent = ##t
    }
    nsl = {
      \revert NoteHead #'style
      \revert Stem #'transparent
    }
    crOn = \override NoteHead #'style = #'cross
    crOff = \revert NoteHead #'style

    %% insert chord name style stuff here.

    jazzChords = { }

    %%%%%%%%%%%% Keys'n'thangs %%%%%%%%%%%%%%%%%

    global = { \time 4/4 }

    Key = { \key c \major }

    % ############ Horns ############

    % ------ Trumpet ------
    trpt = \transpose c d \relative c'' {
      \Key
      c1 | c | c |
    }
    trpHarmony = \transpose c' d {
      \jazzChords
    }
    trumpet = {
      \global
      \set Staff.instrumentName = #"Trumpet"
      \clef treble
      <<
        \trpt
      >>
    }

    % ------ Alto Saxophone ------
    alto = \transpose c a \relative c' {
      \Key
      c1 | c | c |
    }
    altoHarmony = \transpose c' a {
      \jazzChords
    }
    altoSax = {
      \global
      \set Staff.instrumentName = #"Alto Sax"
      \clef treble
      <<
        \alto
      >>
    }

    % ------ Baritone Saxophone ------
    bari = \transpose c a' \relative c {
      \Key
      c1
      c1
      \sl
      d4^"Solo" d d d
      \nsl
    }
    bariHarmony = \transpose c' a \chordmode {
      \jazzChords s1 s d2:maj e:m7
    }
    bariSax = {
      \global
      \set Staff.instrumentName = #"Bari Sax"
      \clef treble
      <<
        \bari
      >>
    }

    % ------ Trombone ------
    tbone = \relative c {
      \Key
      c1 | c | c
    }
    tboneHarmony = \chordmode {
      \jazzChords
    }
    trombone = {
      \global
      \set Staff.instrumentName = #"Trombone"
      \clef bass
      <<
        \tbone
      >>
    }

    % ############ Rhythm Section #############

    % ------ Guitar ------
    gtr = \relative c'' {
      \Key
      c1
      \sl
      b4 b b b
      \nsl
      c1
    }
    gtrHarmony = \chordmode {
      \jazzChords
      s1 c2:min7+ d2:maj9
    }
    guitar = {
      \global
      \set Staff.instrumentName = #"Guitar"
      \clef treble
      <<
        \gtr
      >>
    }

    %% ------ Piano ------
    rhUpper = \relative c'' {
      \voiceOne
      \Key
      c1 | c | c
    }
    rhLower = \relative c' {
      \voiceTwo
      \Key
      e1 | e | e
    }

    lhUpper = \relative c' {
      \voiceOne
      \Key
      g1 | g | g
    }
    lhLower = \relative c {
      \voiceTwo
      \Key
      c1 | c | c
    }

    PianoRH = {
      \clef treble
      \global
      \set Staff.midiInstrument = #"acoustic grand"
      <<
        \new Voice = "one" \rhUpper
        \new Voice = "two" \rhLower
      >>
    }
    PianoLH = {
      \clef bass
      \global
      \set Staff.midiInstrument = #"acoustic grand"
      <<
        \new Voice = "one" \lhUpper
        \new Voice = "two" \lhLower
      >>
    }

    piano = {
      <<
        \set PianoStaff.instrumentName = #"Piano"
        \new Staff = "upper" \PianoRH
        \new Staff = "lower" \PianoLH
      >>
    }

    % ------ Bass Guitar ------
    Bass = \relative c {
      \Key
      c1 | c | c
    }
    bass = {
      \global
      \set Staff.instrumentName = #"Bass"
      \clef bass
      <<
        \Bass
      >>
    }

    % ------ Drums ------
    up = \drummode {
      \voiceOne
      hh4 <hh sn> hh <hh sn>
      hh4 <hh sn> hh <hh sn>
      hh4 <hh sn> hh <hh sn>
    }
    down = \drummode {
      \voiceTwo
      bd4 s bd s
      bd4 s bd s
      bd4 s bd s
    }

    drumContents = {
      \global
      <<
        \set DrumStaff.instrumentName = #"Drums"
        \new DrumVoice \up
        \new DrumVoice \down
      >>
    }

    %%%%%%%%% It All Goes Together Here %%%%%%%%%%%%%%%%%%%%%%

    \score {
      <<
        \new StaffGroup = "horns" <<
          \new Staff = "trumpet" \trumpet
          \new Staff = "altosax" \altoSax
          \new ChordNames = "barichords" \bariHarmony
          \new Staff = "barisax" \bariSax
          \new Staff = "trombone" \trombone
        >>

        \new StaffGroup = "rhythm" <<
          \new ChordNames = "chords" \gtrHarmony
          \new Staff = "guitar" \guitar
          \new PianoStaff = "piano" \piano
          \new Staff = "bass" \bass
          \new DrumStaff \drumContents
        >>
      >>
      \layout {
        \context { \Staff \RemoveEmptyStaves }
        \context {
          \Score
          \override BarNumber #'padding = #3
          \override RehearsalMark #'padding = #2
          skipBars = ##t
        }
      }
      \midi { }
    }

## Laissez vibrer ties

Laissez vibrer ties have a fixed size. Their formatting can be tuned using `'tie-configuration`.

    \relative c' {
      <c e g>4\laissezVibrer r <c f g>\laissezVibrer r
      <c d f g>4\laissezVibrer r <c d f g>4.\laissezVibrer r8

      <c d e f>4\laissezVibrer r
      \override LaissezVibrerTieColumn #'tie-configuration
         = #`((-7 . ,DOWN)
              (-5 . ,DOWN)
              (-3 . ,UP)
              (-1 . ,UP))
      <c d e f>4\laissezVibrer r
    }

## Letter tablature formatting

Tablature can be formatted using letters instead of numbers.

    music = \relative c {
      c4 d e f
      g4 a b c
      d4 e f g
    }

    <<
      \new Staff {
        \clef "G_8"
        \music
      }
      \new TabStaff \with {
        tablatureFormat = #fret-letter-tablature-format
      }
      {
        \music
      }
    >>

## Modern TAB text clef

Use a markup text to replace the (TAB) clef glyph with a modern font.

    \markup {
      This snippet is deprecated as of version 2.13.4 and will be removed
      in version 2.14.
    }

## Reference for open-string harmonics

Reference for open-string harmonics:

    openStringHarmonics = {
      %first harmonic
      \harmonicByFret #12 e,2\6_\markup{"1st harm."}
      \harmonicByRatio #1/2 e,\6
      %second harmonic
      \harmonicByFret #7 e,\6_\markup{"2nd harm. - - - -"}
      \harmonicByRatio #1/3 e,\6
      \harmonicByFret #19 e,\6
      \harmonicByRatio #2/3 e,\6
      %\harmonicByFret #19 < e,\6 a,\5 d\4 >
      %\harmonicByRatio #2/3 < e,\6 a,\5 d\4 >
      %third harmonic
      \harmonicByFret #5 e,\6_\markup{"3rd harm. - - - -"}
      \harmonicByRatio #1/4 e,\6
      \harmonicByFret #24 e,\6
      \harmonicByRatio #3/4 e,\6
      \break
      %fourth harmonic
      \harmonicByFret #4 e,\6_\markup{"4th harm. - - - - - - - - - - - - -"}
      \harmonicByRatio #1/5 e,\6
      \harmonicByFret #9 e,\6
      \harmonicByRatio #2/5 e,\6
      \harmonicByFret #16 e,\6
      \harmonicByRatio #3/5 e,\6
      %fifth harmonic
      \harmonicByFret #3 e,\6_\markup{"5th harm."}
      \harmonicByRatio #1/6 e,\6
      \break
      %sixth harmonic
      \harmonicByFret #2.7 e,\6_\markup{"6th harm."}
      \harmonicByRatio #1/7 e,\6
      %seventh harmonic
      \harmonicByFret #2.3 e,\6_\markup{"7th harm."}
      \harmonicByRatio #1/8 e,\6
      %eighth harmonic
      \harmonicByFret #2 e,\6_\markup{"8th harm."}
      \harmonicByRatio #1/9 e,\6
    }

    \score {
      <<
        \new Staff {
          \new Voice {
            \clef "treble_8"
            \openStringHarmonics
          }
        }
        \new TabStaff {
          \new TabVoice {
            \openStringHarmonics
          }
        }
      >>
    }

## Placement of right-hand fingerings

It is possible to exercise greater control over the placement of right-hand fingerings by setting a specific property, as demonstrated in the following example. Note: you must use a chord construct

    #(define RH rightHandFinger)

    \relative c {
      \clef "treble_8"

      \set strokeFingerOrientations = #'(up down)
      <c-\RH #1 e-\RH #2 g-\RH #3 c-\RH #4 >4

      \set strokeFingerOrientations = #'(up right down)
      <c-\RH #1 e-\RH #2 g-\RH #3 c-\RH #4 >4

      \set strokeFingerOrientations = #'(left)
      <c-\RH #1 e-\RH #2 g-\RH #3 c-\RH #4 >2
    }

## Polyphony in tablature

Polyphony is created the same way in a `TabStaff` as in a regular staff.

    upper = \relative c' {
      \time 12/8
      \key e \minor
      \voiceOne
      r4. r8 e, fis g16 b g e e' b c b a g fis e
    }

    lower = \relative c {
      \key e \minor
      \voiceTwo
      r16 e d c b a g4 fis8 e fis g a b c
    }

    \score {
      <<
        \new StaffGroup = "tab with traditional" <<
          \new Staff = "guitar traditional" <<
            \clef "treble_8"
            \context Voice = "upper" \upper
            \context Voice = "lower" \lower
          >>
          \new TabStaff = "guitar tab" <<
            \context TabVoice = "upper" \upper
            \context TabVoice = "lower" \lower
          >>
        >>
      >>
    }

## Slides in tablature

Slides can be typeset in both `Staff` and `TabStaff` contexts:

    slides = {
      c'8\3(\glissando d'8\3)
      c'8\3\glissando d'8\3
      \hideNotes
      \grace { g16\3\glissando }
      \unHideNotes
      c'4\3
      \afterGrace d'4\3\glissando {
      \stemDown \hideNotes
      g16\3 }
      \unHideNotes
    }

    \score {
      <<
        \new Staff { \clef "treble_8" \slides }
        \new TabStaff { \slides }
      >>
      \layout {
        \context {
          \Score
          \override Glissando #'minimum-length = #4
          \override Glissando #'springs-and-rods =
                              #ly:spanner::set-spacing-rods
          \override Glissando #'thickness = #2
        }
      }
    }

## Stem and beam behavior in tablature

The direction of stems is controlled the same way in tablature as in traditional notation. Beams can be made horizontal, as shown in this example.

    \new TabStaff {
      \relative c {
        \tabFullNotation
        g16 b d g b d g b
        \stemDown
        \override Beam #'damping = #+inf.0
        g,,16 b d g b d g b
      }
    }

## String number extender lines

Make an extender line for string number indications, showing that a series of notes is supposed to be played all on the same string.

    stringNumberSpanner =
    #(define-music-function (parser location StringNumber) (string?)
      #{
        \override TextSpanner #'style = #'solid
        \override TextSpanner #'font-size = #-5
        \override TextSpanner #'(bound-details left stencil-align-dir-y) = #CENTER
        \override TextSpanner #'(bound-details left text) = \markup { \circle \number $StringNumber }
      #})

    \relative c {
      \clef "treble_8"
      \stringNumberSpanner "5"
      \textSpannerDown
      a8\startTextSpan
      b c d e f\stopTextSpan
      \stringNumberSpanner "4"
      g\startTextSpan a
      bes4 a g2\stopTextSpan
    }

#### LilyPond — Snippets