GNU LilyPond Learning Manual: 2.1.3 Working on input files

### 2.1.3 Working on input files

LilyPond input files are similar to source files in many common programming languages. They are case sensitive, and white-space is generally ignored. Expressions are formed with curly braces { }, and comments are denoted with `%` or `%{ ... %}`.

If the previous sentences sound like nonsense, don’t worry! We’ll explain what all these terms mean:

- Case sensitive: it matters whether you enter a letter in lower case (e.g. `a, b, s, t`) or upper case (e.g. `A, B, S, T`). Notes are lower case: `{ c d e }` is valid input; `{ C D E }` will produce an error message.
- Whitespace insensitive: it does not matter how many spaces (or new lines) you add. `{ c d e }` means the same thing as `{ c` d e } and:

  >     { c                        d
  >                        e   }

  Of course, the previous example is hard to read. A good rule of thumb is to indent code blocks with either a tab or two spaces:

  >     {
  >       c d e
  >     }

- Expressions: every piece of LilyPond input needs to have { curly braces } placed around the input. These braces tell LilyPond that the input is a single music expression, just like parentheses `()` in mathematics. The braces should be surrounded by a space unless they are at the beginning or end of a line to avoid ambiguities.

  A LilyPond command followed by a simple expression in braces (such as `\relative { }`) also counts as a single music expression.

- Comments: a comment is a remark for the human reader of the music input; it is ignored while parsing, so it has no effect on the printed output. There are two types of comments. The percent symbol `%` introduces a line comment; anything after `%` on that line is ignored. By convention, a line comment is placed above the code it refers to.

  >     a4 a a a
  >     % this comment refers to the Bs
  >     b2 b

  A block comment marks a whole section of music input as a comment. Anything that is enclosed in `%{` and `%}` is ignored. However, block comments do not ‘nest’. This means that you cannot place a block comment inside another block comment. If you try, the first `%}` will terminate both block comments. The following fragment shows possible uses for comments:

  >     % notes for twinkle twinkle follow
  >       c4 c g' g a a g2

  >     %{
  >       This line, and the notes below are ignored,
  >       since they are in a block comment.

  >       f f e e d d c2
  >     %}

Other languages: français, español, deutsch.

#### Learning Manual