Manuale di apprendimento di LilyPond: 3.4.3 Scrivere una partitura da zero

### 3.4.3 Scrivere una partitura da zero

Dopo aver acquisito un po’ di confidenza nella scrittura del codice LilyPond, potresti scoprire che è più facile costruire una partitura da zero piuttosto che modificare uno dei modelli. In questo modo puoi anche sviluppare il tuo stile per adattarlo al tipo di musica che vuoi. Come esempio, vediamo come mettere insieme la partitura di un preludio per organo.

Cominciamo con una sezione d’intestazione. Qui va il titolo, il nome del compositore, etc, poi vengono le varie definizioni, e infine il blocco della partitura. Spieghiamo questi prima a grandi linee e in seguito aggiungeremo i dettagli.

Useremo le prime due battute del preludio di Bach basato su Jesu, meine Freude, che è scritto per organo con due manuali e pedaliera. Puoi vedere queste due battute in fondo a questa sezione. La parte per il manuale superiore ha due voci, quella inferiore e la pedaliera ne hanno una. Abbiamo quindi bisogno di quattro definizioni musicali e di una definizione per stabilire il tempo e la tonalità:

>     \version "2.22.2"
>     \header {
>       title = "Jesu, meine Freude"
>       composer = "J S Bach"
>     }
>     keyTime = { \key c \minor \time 4/4 }
>     ManualOneVoiceOneMusic = { s1 }
>     ManualOneVoiceTwoMusic = { s1 }
>     ManualTwoMusic = { s1 }
>     PedalOrganMusic = { s1 }

>     \score {
>     }

Per ora abbiamo usato soltanto una nota spaziatrice, `s1`, invece di musica vera e propria. La aggiungeremo in seguito.

Ora vediamo cosa dovrebbe andare nel blocco della partitura. Mostriamo soltanto la struttura del pentagramma che vogliamo. La musica per organo di solito viene scritta su tre righi, uno per ogni mano e uno per i pedali. I righi della tastiera dovrebbero essere raggruppati insieme con una graffa, dunque dobbiamo usare PianoStaff per loro. La parte del primo manuale ha bisogno di due voci mentre la parte per il secondo manuale di una soltanto.

>     \new PianoStaff <<
>       \new Staff = "ManualOne" <<
>         \new Voice {
>           \ManualOneVoiceOneMusic
>         }
>         \new Voice {
>           \ManualOneVoiceTwoMusic
>         }
>       >>  % fine del contesto Staff ManualOne
>       \new Staff = "ManualTwo" <<
>         \new Voice {
>           \ManualTwoMusic
>         }
>       >>  % fine del contesto Staff ManualTwo
>     >>  % fine del contesto PianoStaff

Poi dobbiamo aggiungere un rigo per i pedali. Questo va sotto il PianoStaff, ma deve svolgersi simultaneamente a quest’ultimo, quindi abbiamo bisogno delle parentesi angolari intorno ai due gruppi. Altrimenti, verrà generato un errore nel file di log. È un errore comune che farai prima o poi! Prova a copiare l’esempio finale alla fine di questa sezione, togli le parentesi angolari, e compilalo per vedere quali errori genera.

>     <<  % PianoStaff e il rigo del pedale devono essere simultanei
>       \new PianoStaff <<
>         \new Staff = "ManualOne" <<
>           \new Voice {
>             \ManualOneVoiceOneMusic
>           }
>           \new Voice {
>             \ManualOneVoiceTwoMusic
>           }
>         >>  % fine del contesto Staff ManualOne
>         \new Staff = "ManualTwo" <<
>           \new Voice {
>             \ManualTwoMusic
>           }
>         >>  % fine del contesto Staff ManualTwo
>       >>  % fine del contesto PianoStaff
>       \new Staff = "PedalOrgan" <<
>         \new Voice {
>           \PedalOrganMusic
>         }
>       >>
>     >>

Non è necessario usare il costrutto simultaneo `<< … >>` per il rigo del secondo manuale e per quello della pedaliera, poiché contengono solo una espressione musicale, ma non è male usarlo comunque; usare sempre le parentesi angolari dopo `\new Staff` è una buona abitudine da coltivare nel caso ci sia più di una voce. Per le Voci, è vero l’opposto: queste devono essere seguite regolarmente da parentesi graffe `{ … }` nel caso in cui la musica sia composta da diverse variabili che devono essere eseguite consecutivamente.

Aggiungiamo questa struttura al blocco della partitura, e aggiustiamo l’indentazione. Aggiungiamo anche le chiavi appropriate, controlliamo che i gambi, le legature di portamento e quelle di valore in ogni voce del rigo superiore puntino nella direzione giusta usando `\voiceOne` e `\voiceTwo`, e inseriamo l’armatura di chiave e il tempo per ogni rigo attraverso la nostra variabile predefinita, `\keyTime`.

>     \score {
>       <<  % PianoStaff e il rigo del pedale devono essere simultanei
>         \new PianoStaff <<
>           \new Staff = "ManualOne" <<
>             \keyTime  % imposta l'armatura di chiave e il tempo
>             \clef "treble"
>             \new Voice {
>               \voiceOne
>               \ManualOneVoiceOneMusic
>             }
>             \new Voice {
>               \voiceTwo
>               \ManualOneVoiceTwoMusic
>             }
>           >>  % fine del contesto Staff ManualOne
>           \new Staff = "ManualTwo" <<
>             \keyTime
>             \clef "bass"
>             \new Voice {
>               \ManualTwoMusic
>             }
>           >>  % fine del contesto Staff ManualTwo
>         >>  % fine del contesto PianoStaff
>         \new Staff = "PedalOrgan" <<
>           \keyTime
>           \clef "bass"
>           \new Voice {
>             \PedalOrganMusic
>           }
>         >>  % fine del contesto Staff PedalOrgan
>       >>
>     }  % fine del contesto Score

L’aspetto dei righi dell’organo mostrati sopra è quasi perfetto; tuttavia c’è un piccolo difetto che non è visibile se si guarda un sistema singolo soltanto: La distanza tra il rigo della pedaliera e il rigo della mano sinistra dovrebbe essere all’incirca la stessa distanza tra il rigo della mano destra e quello della mano sinistra. In particolare, l’allungabilità dei righi in un contesto `PianoStaff` è limitata (in modo che la distanza tra i righi della mano destra e sinistra non possa diventare eccessiva), e il rigo della pedaliera dovrebbe comportarsi allo stesso modo.

L’allungabilità dei righi può essere controllata con la proprietà `staff-staff-spacing` dell’ ‘oggetto grafico’ `VerticalAxisGroup` (gli oggetti grafici vengono comunemente chiamati ‘grob’ nella documentazione di LilyPond) – non preoccuparti dei dettagli in questo momento; in seguito verrà fornita una spiegazione approfondita. I curiosi possono dare un’occhiata a Panoramica sulla modifica delle proprietà. In questo caso, vogliamo modificare soltanto la sottoproprietà `stretchability`. Se i valori non vengono cambiati si useranno quelli predefiniti. Di nuovo, chi è curioso può trovare i valori predefiniti per la proprietà `staff-staff-spacing` nel file ‘`scm/define-grobs.scm`’ guardando la definizione della proprietà `default-staff-staff-spacing` del grob `VerticalAxisGroup`. Il valore di `stretchability` nel prossimo esempio viene preso dalla definizione del grob `StaffGrouper` (nel file ‘`scm/define-grobs.scm`’) così che i valori siano identici.

>     \score {
>       <<  % PianoStaff e Pedal Staff devono essere simultanei
>         \new PianoStaff <<
>           \new Staff = "ManualOne" <<
>             \keyTime  % imposta l'armatura di chiave e il tempo
>             \clef "treble"
>             \new Voice {
>               \voiceOne
>               \ManualOneVoiceOneMusic
>             }
>             \new Voice {
>               \voiceTwo
>               \ManualOneVoiceTwoMusic
>             }
>           >>  % fine del contesto Staff ManualOne
>           \new Staff = "ManualTwo" \with {
>             \override VerticalAxisGroup.staff-staff-spacing.stretchability = 5
>           } <<
>             \keyTime
>             \clef "bass"
>             \new Voice {
>               \ManualTwoMusic
>             }
>           >>  % fine del contesto Staff ManualTwo
>         >>  % fine del contesto PianoStaff
>         \new Staff = "PedalOrgan" <<
>           \keyTime
>           \clef "bass"
>           \new Voice {
>             \PedalOrganMusic
>           }
>         >>  % fine del contesto Staff PedalOrgan
>       >>
>     }  % fine del contesto Score

Questo completa la struttura. Qualsiasi musica per organo a tre righi avrà una struttura simile, sebbene il numero delle voci possa variare. Tutto ciò che resta da fare ora è aggiungere la musica, e combinare tutte le parti insieme.

>     \header {
>       title = "Jesu, meine Freude"
>       composer = "J S Bach"
>     }
>     keyTime = { \key c \minor \time 4/4 }
>     ManualOneVoiceOneMusic = \relative {
>       g'4 g f ees |
>       d2 c |
>     }
>     ManualOneVoiceTwoMusic = \relative {
>       ees'16 d ees8~ 16 f ees d c8 d~ d c~ |
>       8 c4 b8 c8. g16 c b c d |
>     }
>     ManualTwoMusic = \relative {
>       c'16 b c8~ 16 b c g a8 g~ 16 g aes ees |
>       f16 ees f d g aes g f ees d ees8~ 16 f ees d |
>     }
>     PedalOrganMusic = \relative {
>       r8 c16 d ees d ees8~ 16 a, b g c b c8 |
>       r16 g ees f g f g8 c,2 |
>     }

>     \score {
>       <<  % PianoStaff e Pedal Staff devono essere simultanei
>         \new PianoStaff <<
>           \new Staff = "ManualOne" <<
>             \keyTime  % imposta l'armatura di chiave e il tempo
>             \clef "treble"
>             \new Voice {
>               \voiceOne
>               \ManualOneVoiceOneMusic
>             }
>             \new Voice {
>               \voiceTwo
>               \ManualOneVoiceTwoMusic
>             }
>           >>  % fine del contesto Staff ManualOne
>           \new Staff = "ManualTwo" \with {
>             \override VerticalAxisGroup.staff-staff-spacing.stretchability = 5
>           } <<
>             \keyTime
>             \clef "bass"
>             \new Voice {
>               \ManualTwoMusic
>             }
>           >>  % fine del contesto Staff ManualTwo
>         >>  % fine del contesto PianoStaff
>         \new Staff = "PedalOrgan" <<
>           \keyTime
>           \clef "bass"
>           \new Voice {
>             \PedalOrganMusic
>           }
>         >>  % fine del contesto Staff PedalOrgan
>       >>
>     }  % fine del contesto Score

#### Vedi anche

Glossario musicale: sistema.

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