Manuale di apprendimento di LilyPond: 2.2.2 Lavorare sui file di input

### 2.2.2 Lavorare sui file di input

I file di input di LilyPond sono simili ai file sorgenti di molti comuni linguaggi di programmazione. Contengono una dichiarazione di versione, sono sensibili alle maiuscole, e in generale gli spazi bianchi vengono ignorati. Le espressioni musicali si formano con parentesi graffe `{ }`, e i commenti sono indicati con ‘`%`’ o ‘`%{ … %}`’.

Se le frasi precedenti ti sembrano assurde, non preoccuparti! Ora spieghiamo cosa significano tutti questi termini.

- Dichiarazione di versione: Ogni file LilyPond deve contenere una dichiarazione di versione. Una dichiarazione di versione è una linea che indica la versione di LilyPond per la quale il file è stato scritto, come nel seguente esempio:

  >     \version "2.24.4"

  Per convenzione, la dichiarazione di versione viene posta all’inizio del file LilyPond.

  La dichiarazione di versione è importante per almeno due ragioni. Primo, permette l’aggiornamento automatico del file di input via via che la sintassi di LilyPond cambia. Secondo, indica la versione di LilyPond richiesta per compilare il file.

  Se la dichiarazione di versione è omessa dal file di input, LilyPond mostra un avvertimento durante la compilazione del file.

- Sensibile alle maiuscole: distingue tra lettere in minuscolo (es: ‘`a`’, ‘`b`’, ‘`s`’, ‘`t`’) o in maiuscolo (es: ‘`A`’, ‘`B`’, ‘`S`’, ‘`T`’). Le note sono in minuscolo: ‘`{ c d e }`’ è un input valido; ‘`{ C D E }`’ produce un messaggio di errore.
- Insensibile agli spazi: non importa quanti spazi (o tabulazioni o nuove linee) aggiungi.

  >     { c4 d e}

  ha lo stesso significato di

  >     { c4       d e }

  o

  >     { c4                       d
  >                        e   }

  Certo, l’esempio precedente è scomodo da leggere. Una buona regola pratica è indentare i blocchi di codice con una tabulazione o due spazi:

  >     {
  >       c4 d e
  >     }

  Tuttavia, uno spazio bianco è necessario per separare molti elementi sintattici gli uni dagli altri. In altre parole, lo spazio bianco può essere aggiunto, ma non può essere eliminato. Dal momento che uno spazio bianco mancante può dare adito a strani errori, si consiglia di inserire sempre uno spazio bianco prima e dopo ogni elemento sintattico, ad esempio, prima e dopo ogni parentesi graffa.

- Espressioni: ogni parte dell’input di LilyPond deve avere { parentesi graffe } intorno. Queste parentesi dicono a LilyPond che l’input costituisce un’espressione musicale singola, proprio come le parentesi “()” in matematica. Per evitare ambiguità, le parentesi dovrebbero essere racchiuse tra spazi, a meno che non si trovino all’inizio o alla fine di una linea.

  Anche un comando di LilyPond seguito da un’espressione semplice in parentesi (come ‘`\relative { … }`’) conta come un’espressione musicale singola.

- Commenti: un commento è un appunto per il lettore umano dell’input musicale; viene ignorato quando l’input viene analizzato, dunque non ha alcun effetto sull’output finale. Ci sono due tipi di commenti. Il simbolo di percentuale ‘`%`’ introduce un commento di linea; tutto quello che sta dopo ‘`%`’ su quella linea verrà ignorato. Per convenzione, un commento di linea viene posto sopra il codice a cui si riferisce.

  >     a4 a a a
  >     % questo commento si riferisce alla prossima riga coi due Si (b)
  >     b2 b

  Un commento di blocco segna come commento un’intera sezione di input musicale. Tutto ciò che è compreso tra `%{` e `%}` viene ignorato. Tuttavia, i commenti di blocco non si “annidano”. Ovvero non si può inserire un commento di blocco dentro a un altro commento di blocco. Se si prova, il primo `%}` interromperà entrambi i commenti di blocco. Il seguente frammento mostra gli usi possibili per i commenti.

  >     % ecco le note di "Ah! Vous dirai-je, Maman"
  >       c4 c g' g a a g2

  >     %{
  >       Questa linea e le note sotto vengono ignorate,
  >       perché si trovano in un commento di blocco.

  >       f4 f e e d d c2
  >     %}

#### LilyPond — Manuale di apprendimento v2.24.4 (ramo stabile).