Guida alla Notazione di LilyPond: 3.1.5 Struttura del file

### 3.1.5 Struttura del file

Un file ‘`.ly`’ può contenere un qualsiasi numero di espressioni di livello superiore (in inglese, toplevel expressions). Per espressione di livello superiore si intende una delle seguenti:

- Una definizione di output, come `\paper`, `\midi` e `\layout`. Tale definizione, se posta nel livello superiore, cambia le impostazioni predefinite al livello del libro. Se più di una di queste definizioni viene inserita nel livello superiore, le definizioni vengono combinate, ma in caso di conflitto hanno precedenza le definizioni più recenti. Per sapere con precisione come ciò influisca sul blocco `\layout`, leggere Il blocco `\layout`.
- Un’espressione Scheme diretta, come `#(set-default-paper-size "a7" 'landscape)` o `#(ly:set-option 'point-and-click #f)`.
- Un blocco `\header`. Se all’inizio del file, imposta il blocco dell’intestazione globale. Questo è il blocco che contiene le impostazioni predefinite dei campi dei titoli come compositore, titolo, etc. per tutti i libri del file (vedi Come funzionano i titoli).
- Un blocco `\score`. Questa partitura e altre eventuali partiture di livello superiore saranno combinate insieme in un singolo blocco `\book`. Tale comportamento può essere modificato impostando la variabile `toplevel-score-handler` nel livello superiore. Il gestore (in inglese handler) predefinito è definito nel file ‘`../scm/lily-library.scm`’ e viene impostato nel file ‘`../ly/declarations-init.ly`’.
- Un blocco `\book` combina logicamente molteplici movimenti (ovvero molteplici blocchi `\score`) in un documento. Se ci sono vari blocchi `\score`, verrà creato un file di output per ogni blocco `\book`, in cui saranno concatenati tutti i movimenti corrispondenti. Ha senso specificare esplicitamente i blocchi `\book` in un file ‘`.ly`’ solo se si desidera creare vari file di output da un solo file di input. Un’eccezione è data dai documenti lilypond-book, dove bisogna aggiungere esplicitamente un blocco `\book` se si vuole più di un singolo blocco `\score` o `\markup` nello stesso esempio. Tale comportamento può essere modificato impostando la variabile `toplevel-book-handler` nel livello superiore. Il gestore predefinito è definito nel file di inizializzazione ‘`../scm/lily.scm`’.
- Un blocco `\bookpart`. Un libro può essere suddiviso in varie parti, tramite blocchi `\bookpart`, per semplificare le interruzioni di pagina o per usare impostazioni `\paper` diverse nelle varie parti.
- Un’espressione musicale composta, come

  >     { c'4 d' e'2 }

  pone il brano in un blocco `\score` e lo formatta in un unico libro insieme a tutti gli altri blocchi `\score` e espressioni musicali di livello superiore. In altre parole, un file che contiene soltanto l’espressione musicale precedente verrà trasformato in

  >     \book {
  >       \score {
  >         \new Staff {
  >           \new Voice {
  >             { c'4 d' e'2 }
  >           }
  >         }
  >         \layout { }
  >       }
  >       \paper { }
  >       \header { }
  >     }

  Tale comportamento può essere modificato impostando la variabile `toplevel-music-handler` nel livello superiore. Il gestore predefinito è definito nel file di inizializzazione ‘`../scm/lily.scm`’.

- Un testo, per esempio una strofa

  >     \markup {
  >        2.  La prima riga della seconda strofa.
  >     }

  I testi possono trovarsi sopra, sotto o in mezzo alle partiture o espressioni musicali, ovunque esse appaiano.

- Una variabile, come

  >     foo = { c4 d e d }

  può essere utilizzata in un punto successivo del file scrivendo `\foo`. Il nome di una variabile deve avere solo caratteri alfabetici; nessun numero, trattino o trattino basso.

L’esempio seguente mostra tre elementi che possono essere inseriti nel livello superiore

>     \layout {
>       % Non giustificare l'output
>       ragged-right = ##t
>     }

>     \header {
>        title = "Do-re-mi"
>     }

>     { c'4 d' e2 }

Ciascuna delle seguenti istruzioni lessicali può essere inserita in qualsiasi punto di un file:

- `\version`
- `\include`
- `\sourcefilename`
- `\sourcefileline`
- Un commento su riga singola, introdotto da un segno `%`.
- Un commento multirigo delimitato da `%{ … %}`.

Lo spazio bianco tra gli elementi dell’input viene generalmente ignorato e può essere liberamente omesso o aumentato per migliorare la leggibilità. Tuttavia esistono dei casi in cui lo spazio bianco deve essere sempre usato per non incorrere in errori:

- Intorno ad ogni parentesi graffa di apertura e di chiusura.
- Dopo ogni comando o variabile, ovvero qualsiasi elemento che inizi con un segno `\`.
- Dopo ogni elemento che debba essere interpretato come un’espressione Scheme, ovvero ogni elemento che inizi con un segno `#`.
- Per separare tutti gli elementi di un’espressione Scheme.
- Nella modalità `lyricmode` prima e dopo i comandi `\set` e `\override`.

#### Vedi anche

Manuale di apprendimento: Come funzionano i file di input di LilyPond.

Guida alla notazione: Come funzionano i titoli, Il blocco `\layout`.

#### LilyPond — Guida alla Notazione v2.22.2 (ramo stabile).