LilyPond Application Usage: 5.1 General suggestions

## 5.1 General suggestions

Here are a few suggestions that can help to avoid (and fix) the most common problems when typesetting:

- Always include a `\version` number in your input files no matter how small they are. This prevents having to remember which version of LilyPond the file was created with and is especially relevant when Updating files with `convert-ly` command (which requires the `\version` statement to be present); or if sending your input files to other users (e.g. when asking for help on the mail lists). Note that all of the LilyPond templates contain `\version` numbers.
- For each line in your input file, write one bar of music. This will make debugging any problems in your input files much simpler.
- Include Bar and bar number checks as well as Octave checks. Including ‘checks’ of this type in your input files will help pinpoint mistakes more quickly. How often checks are added will depend on the complexity of the music being typeset. For simple compositions, checks added at a few at strategic points within the music can be enough but for more complex music, with many voices and/or staves, checks may be better placed after every bar.
- Add comments within input files. References to musical themes (i.e. ‘second theme in violins’, ‘fourth variation,’ etc.), or simply including bar numbers as comments, will make navigating the input file much simpler especically if something needs to be altered later on or if passing on LilyPond input files to another person.
- Add explicit note durations at the start of ‘sections’. For example, `c4 d e f` instead of just `c d e f` can make rearranging the music later on simpler.
- Learn to indent and align braces and parallel music. Many problems are often caused by either ‘missing’ braces. Clearly indenting ‘opening’ and ‘closing’ braces (or `<<` and `>>` indicators) will help avoid such problems. For example;

  >     \new Staff {
  >       \relative {
  >         r4 g'8 g c8 c4 d |
  >         e4 r8 |
  >         % Ossia section
  >         <<
  >           { f8 c c | }
  >           \new Staff {
  >             f8 f c |
  >           }
  >         >>
  >         r4 |
  >       }
  >     }

  is much easier to follow than;

  >     \new Staff { \relative { r4 g'8 g c4 c8 d | e4 r8
  >     % Ossia section
  >     << { f8 c c } \new Staff { f8 f c } >> r4 | } }

- Keep music and style separate by putting overrides in the `\layout` block;

  >     \score {
  >       …music…
  >       \layout {
  >        \override TabStaff.Stemstencil = ##f
  >      }
  >     }

  This will not create a new context but it will apply when one is created. Also see Saving typing with variables and functions, and Style sheets.

#### LilyPond — Usage v2.22.2 (stable-branch).