I'm writing down a score for a transcription of a guitar piece, and figured I could also include tabs for it. Unfortunately, lilypond seems to generate the fingerings on its own and they're very inconvenient, at least with the default settings that I have (it's for a guitar in standard tuning). I can't find in the documentation if there's a way to control this, ideally I would like to enter the frets for each note manually. Is this possible ?

  • 1
    You can specify the string number after each note, e.g. e, e\6 e'\6 but you still have write the letters (which isn’t what you want to do). I think this is probably because otherwise LilyPond would have to decide on how to spell notes with enharmonic equivalents. Commented May 2 at 7:18
  • @ElementsInSpace OP does not want to enter notes by frets, but manually specify the fret.
    – Lazy
    Commented May 2 at 9:56
  • @Lazy Oh. I thought they wanted to enter string number, fret number and not the actual note letter. Commented May 2 at 10:26
  • Sorry if there was any confusion in the phrasing, I'm interested with all the possible options either way, so thank you all Commented May 2 at 14:32

1 Answer 1


Lilypond’s fretting algorithm tries to place each note in descending order on the highest possible string. This produces small fret numbers. Lilypond does not take into account the context of each note (and also different voices). So you will often need to manually intervene here.

Lilypond offers two mechanics here (http://lilypond.org/doc/v2.24/Documentation/notation/common-notation-for-fretted-strings.html#default-tablatures):

  1. The minimumFret property: This is the lowest allowed fret position (default 0). Unless restrainOpenStrings is set true this will still allow automatic use of open strings.
  2. Manual specification of string numbers using note-\2 (or whatever number).

Say in this example

\new TabStaff { <c' e' g' > f' <c' e' g'> }

the f is placed in a bad place. We could either do

\new TabStaff { <c' e' g' > f'\2 <c' e' g'> }


\new TabStaff { \set minimumFret = 3 <c' e' g' > f' <c' e' g'> }

The second way is particularly useful if a whole passage needs to be played in a higher position. Also note that setting the string number will result in the conventional notation in a regular staff:

\new Staff { <c' e' g' > f'\2 <c' e' g'> }

(unless you do \omit StringNumber).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.