4.1.1 Introduzione alla struttura di un file di LilyPond

Un esempio basilare di un file di input di LilyPond è

\version "2.25.20"

\header { }

\score {
   … espressione musicale composta …   % tutta la musica va qui!
  \layout { }
  \midi { }
}

Ci sono molte varianti a questo modello di base, ma questo esempio serve da utile punto di partenza.

Finora nessuno degli esempi che abbiamo visto ha usato il comando \score{}. Questo si spiega col fatto che LilyPond, quando elabora un input semplice, aggiunge automaticamente gli altri comandi necessari. LilyPond tratta un input come questo:

\relative {
  c''4 a b c
}

come forma abbreviata per questo:

\book {
  \score {
    \new Staff {
      \new Voice {
        \relative {
          c''4 a b c
        }
      }
    }
    \layout { }
  }
}

In altre parole, se l’input contiene un’espressione musicale singola, LilyPond interpreterà il file come se l’espressione musicale fosse racchiusa dentro i comandi mostrati sopra.

Attenzione! Molti esempi nella documentazione di LilyPond ometteranno i comandi \new Staff e \new Voice, lasciando che questi siano creati implicitamente. Per gli esempi semplici questo metodo funziona bene, ma per quelli più complessi, soprattutto quando vengono usati ulteriori comandi, la creazione implicita dei contesti può dare risultati inattesi, ad esempio creando dei righi non voluti. Il modo per creare i contesti esplicitamente è spiegato in Contesti e incisori.

Nota: Quando si inseriscono più di poche linee di musica, si consiglia di creare sempre esplicitamente i righi e le voci.

Ora però torniamo al primo esempio ed esaminiamo il comando \score, lasciando gli altri comandi secondo l’impostazione predefinita.

Un blocco \score deve sempre contenere una sola espressione musicale. Ricorda che un’espressione musicale può essere qualsiasi cosa, da una singola nota a una grande espressione composta come

{
  \new StaffGroup <<
     … inserisci qui l'intera opera di Wagner … 
  >>
}

Tutto quanto è compreso in { … } costituisce un’unica espressione musicale.

Come abbiamo detto prima, il blocco \score può contenere altri elementi, come ad esempio

\score {
  { c'4 a b c' }
  \header { }
  \layout { }
  \midi { }
}

Si noti che questi tre comandi – \header, \layout e \midi – sono speciali: diversamente da molti altri comandi che iniziano con un backslash (\), non sono espressioni musicali né fanno parte di alcuna espressione musicale. Dunque, possono essere collocati dentro o fuori da un blocco \score. Di solito questi comandi vengono posti fuori dal blocco \score – ad esempio, \header spesso viene messo sopra il comando \score, come mostra l’esempio all’inizio di questa sezione.

Altri due comandi che non hai incontrato finora sono \layout { } e \midi {}. Se questi appaiono come in figura, LilyPond creerà rispettivamente un output per la stampa e uno per il MIDI. Sono descritti dettagliatamente nella Guida alla notazione, in Formattazione della partitura, e Creazione dell’output MIDI.

Puoi scrivere molteplici blocchi \score. Ciascuno verrà trattato come una partitura separata, ma saranno tutti combinati in un unico file di output. Non è necessario il comando \book – ne verrà creato uno automaticamente. Tuttavia, se si desiderano file di output separati da un file .ly, allora si deve usare il comando \book per separare le diverse sezioni: ogni blocco \book produrrà un file di output separato.

In breve:

Ogni blocco \book crea un file di output separato (ovvero, un file PDF). Se non ne hai aggiunto uno esplicitamente, LilyPond racchiude implicitamente tutto il tuo codice di input in un blocco \book.

Ogni blocco \score è un pezzo di musica separato all’interno di un blocco \book.

Ogni blocco \layout influenza il blocco \score o \book in cui compare – ovvero, un blocco \layout che si trova dentro un blocco \score riguarda solo quel blocco \score, mentre un blocco \layout che si trova fuori da un blocco \score (e quindi in un blocco \book, esplicitamente o implicitamente) riguarderà ogni \score in quel \book.

Per maggiori dettagli si veda Molteplici partiture in un libro.

Un’altra grande scorciatoia è la possibilità di definire variabili, come è spiegato in Organizzare i brani con le variabili). Tutti i modelli usano questa forma

melodia = \relative {
  c'4 a b c
}

\score {
  \melodia
}

Quando LilyPond esamina questo file, prende il valore di melodia (tutto ciò che si trova dopo il segno di uguale) e lo inserisce ovunque si trovi \melodia. Non c’è una regola specifica per i nomi – il nome può essere melodia, globale, tempo, manodestrapiano, o qualsiasi altro nome. Ricordati che puoi usare quasi ogni nome che vuoi, purché esso contenga solo caratteri alfabetici e sia diverso dai nomi dei comandi di LilyPond. Le esatte limitazioni relative ai nomi delle variabili sono spiegate dettagliatamente in Struttura del file.

Vedi anche

Per una definizione completa del formato di input, si veda Struttura del file.


Manuale di apprendimento di LilyPond v2.25.20 (ramo di sviluppo).