4.1.1 Introduzione alla struttura di un file di LilyPond
Un esempio basilare di un file di input di LilyPond è
\version "2.25.21" \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.