Guida alla Notazione di LilyPond: 2.1.2 Tecniche specifiche per il testo vocale

### 2.1.2 Tecniche specifiche per il testo vocale

#### Lavorare con testo e variabili

Si possono creare delle variabili contenenti il testo vocale, ma questo deve essere inserito in modalità testo vocale:

>     musicOne = \relative {
>       c''4 b8. a16 g4. f8 e4 d c2
>     }
>     verseOne = \lyricmode {
>       Joy to the world, the Lord is come.
>     }
>     \score {
>       <<
>         \new Voice = "one" {
>           \time 2/4
>           \musicOne
>         }
>         \new Lyrics \lyricsto "one" {
>           \verseOne
>         }
>       >>
>     }

Non è necessario aggiungere le durate se la variabile viene richiamata con `\addlyrics` o `\lyricsto`. Se la musica ha un ordine diverso e più complesso, conviene definire prima le variabili che contengono la musica e il testo, poi impostare la gerarchia di righi e testo, omettendo il testo stesso, e infine aggiungere il testo all’interno di un blocco `\context`. Ciò garantisce che le voci richiamate da `\lyricsto` siano sempre state definite prima. Per esempio:

>     sopranoMusic = \relative { c''4 c c c }
>     contraltoMusic = \relative { a'4 a a a }
>     sopranoWords = \lyricmode { Sop -- ra -- no words }
>     contraltoWords = \lyricmode { Con -- tral -- to words }

>     \score {
>       \new ChoirStaff <<
>         \new Staff {
>           \new Voice = "sopranos" {
>             \sopranoMusic
>           }
>         }
>         \new Lyrics = "sopranos"
>         \new Lyrics = "contraltos"
>         \new Staff {
>           \new Voice = "contraltos" {
>             \contraltoMusic
>           }
>         }
>         \context Lyrics = "sopranos" {
>           \lyricsto "sopranos" {
>             \sopranoWords
>           }
>         }
>         \context Lyrics = "contraltos" {
>           \lyricsto "contraltos" {
>             \contraltoWords
>           }
>         }
>       >>
>     }

#### Vedi anche

Guida alla notazione: Posizionamento verticale del testo.

Guida al funzionamento interno: LyricCombineMusic, Lyrics.

#### Posizionamento verticale del testo

A seconda del tipo di musica, il testo può trovarsi sopra o sotto il rigo oppure tra i righi. Posizionare il testo sotto il rigo associato è il modo più semplice, infatti basta definire il contesto `Lyrics` sotto il contesto `Staff`;

>     \score {
>       <<
>         \new Staff {
>           \new Voice = "melody" {
>             \relative { c''4 c c c }
>           }
>         }
>         \new Lyrics {
>           \lyricsto "melody" {
>             Here are the words
>           }
>         }
>       >>
>     }

Per posizionare il testo sopra il rigo ci sono due metodi. Il metodo più semplice (e preferito) consiste nell’usare la stessa sintassi precedente e indicare in modo esplicito la posizione del testo:

>     \score {
>       <<
>         \new Staff = "staff" {
>           \new Voice = "melody" {
>             \relative { c''4 c c c }
>           }
>         }
>         \new Lyrics \with { alignAboveContext = "staff" } {
>           \lyricsto "melody" {
>             Here are the words
>           }
>         }
>       >>
>     }

Altrimenti si possono usare due passaggi. Prima si dichiara il contesto Lyrics (privo di contenuto) prima dei contesti Staff e Voice, poi il comando `\lyricsto` viene posizionato dopo la voce a cui si riferisce tramite `\context`. Ecco un esempio:

>     \score {
>       <<
>         \new Lyrics = "lyrics" \with {
>           % il testo sopra un rigo deve avere questo override
>           \override VerticalAxisGroup.staff-affinity = #DOWN
>         }
>         \new Staff {
>           \new Voice = "melody" {
>             \relative { c''4 c c c }
>           }
>         }
>         \context Lyrics = "lyrics" {
>           \lyricsto "melody" {
>             Here are the words
>           }
>         }
>       >>
>     }

Quando ci sono due voci in righi separati, si può posizionare il testo tra i righi usando uno di questi metodi. Ecco un esempio del secondo metodo:

>     \score {
>       \new ChoirStaff <<
>         \new Staff {
>           \new Voice = "sopranos" {
>             \relative { c''4 c c c }
>           }
>         }
>         \new Lyrics = "sopranos"
>         \new Lyrics = "contraltos" \with {
>           % il testo sopra un rigo deve avere questo override
>           \override VerticalAxisGroup.staff-affinity = #DOWN
>         }
>         \new Staff {
>           \new Voice = "contraltos" {
>             \relative { a'4 a a a }
>           }
>         }
>         \context Lyrics = "sopranos" {
>           \lyricsto "sopranos" {
>             Sop -- ra -- no words
>           }
>         }
>         \context Lyrics = "contraltos" {
>           \lyricsto "contraltos" {
>             Con -- tral -- to words
>           }
>         }
>       >>
>     }

Si possono generare altre combinazioni di testo e righi a partire da questi esempi oppure studiando i modelli nel Manuale di apprendimento, vedi Modelli per gruppi vocali.

#### Frammenti di codice selezionati

Ottenere la spaziatura del testo della vecchia versione 2.12

Il motore di spaziatura verticale è cambiato a partire dalla versione 2.14. Ciò può far sì che il testo vocale abbia un posizionamento diverso.

È possibile impostare delle proprietà dei contesti `Lyric` e `Staff` che facciano sì che il motore di spaziatura si comporti come nella versione 2.12.

>     global = {
>       \key d \major
>       \time 3/4
>     }

>     sopMusic = \relative c' {
>       % VERSE ONE
>       fis4 fis fis | \break
>       fis4. e8 e4
>     }

>     altoMusic = \relative c' {
>       % VERSE ONE
>       d4 d d |
>       d4. b8 b4 |
>     }

>     tenorMusic = \relative c' {
>       a4 a a |
>       b4. g8 g4 |
>     }

>     bassMusic = \relative c {
>       d4 d d |
>       g,4. g8 g4 |
>     }

>     words = \lyricmode {
>       Great is Thy faith -- ful -- ness,
>     }

>     \score {
>       \new ChoirStaff <<
>         \new Lyrics = sopranos
>         \new Staff = women <<
>           \new Voice = "sopranos" {
>             \voiceOne
>             \global \sopMusic
>           }
>           \new Voice = "altos" {
>             \voiceTwo
>             \global \altoMusic
>           }
>         >>
>         \new Lyrics = "altos"
>         \new Lyrics = "tenors"
>         \new Staff = men <<
>           \clef bass
>           \new Voice = "tenors" {
>             \voiceOne
>             \global \tenorMusic
>           }
>           \new Voice = "basses" {
>             \voiceTwo  \global \bassMusic
>           }
>         >>
>         \new Lyrics = basses
>         \context Lyrics = sopranos \lyricsto sopranos \words
>         \context Lyrics = altos \lyricsto altos \words
>         \context Lyrics = tenors \lyricsto tenors \words
>         \context Lyrics = basses \lyricsto basses \words
>       >>
>       \layout {
>         \context {
>           \Lyrics
>           \override VerticalAxisGroup.staff-affinity = ##f
>           \override VerticalAxisGroup.staff-staff-spacing =
>             #'((basic-distance . 0)
>     	   (minimum-distance . 2)
>     	   (padding . 2))
>         }
>         \context {
>           \Staff
>           \override VerticalAxisGroup.staff-staff-spacing =
>             #'((basic-distance . 0)
>     	   (minimum-distance . 2)
>     	   (padding . 2))
>         }
>       }
>     }

#### Vedi anche

Manuale di apprendimento: Modelli per gruppi vocali.

Guida alla notazione: Ordine di disposizione dei contesti, Creazione e citazione di un contesto.

#### Posizionamento orizzontale delle sillabe

Per aumentare lo spazio tra le righe del testo, si imposta la proprietà `minimum-distance` di `LyricSpace`.

>     \relative c' {
>       c c c c
>       \override Lyrics.LyricSpace.minimum-distance = #1.0
>       c c c c
>     }
>     \addlyrics {
>       longtext longtext longtext longtext
>       longtext longtext longtext longtext
>     }

Per applicare questa modifica a tutti i testi della partitura, impostare la proprietà nel blocco `\layout`.

>     \score {
>       \relative {
>       c' c c c
>       c c c c
>       }
>       \addlyrics {
>       longtext longtext longtext longtext
>       longtext longtext longtext longtext
>       }
>       \layout {
>         \context {
>           \Lyrics
>           \override LyricSpace.minimum-distance = #1.0
>         }
>       }
>     }

#### Frammenti di codice selezionati

Allineamento del testo vocale

L’allineamento orizzontale del testo vocale si imposta attraverso la proprietà `self-alignment-X` dell’oggetto `LyricText`. `#-1` è sinistra, `#0` è centro e `#1` è destra; si possono usare anche `#LEFT`, `#CENTER` e `#RIGHT`.

>     \layout { ragged-right = ##f }
>     \relative c'' {
>       c1
>       c1
>       c1
>     }
>     \addlyrics {
>       \once \override LyricText.self-alignment-X = #LEFT
>       "This is left-aligned"
>       \once \override LyricText.self-alignment-X = #CENTER
>       "This is centered"
>       \once \override LyricText.self-alignment-X = #1
>       "This is right-aligned"
>     }

#### Problemi noti e avvertimenti

Verificare che le annotazioni testuali e il testo vocale stiano dentro i margini richiede ulteriori calcoli. Se si desidera velocizzare un po’ l’elaborazione, tale funzionalità può essere disabilitata:

>     \override Score.PaperColumn.keep-inside-line = ##f

Per far sì che il testo eviti anche le stanghette, usare

>     \layout {
>       \context {
>         \Lyrics
>           \consists "Bar_engraver"
>           \consists "Separating_line_group_engraver"
>           \hide BarLine
>       }
>     }

#### Testo e ripetizioni

### Ripetizioni semplici

Le ripetizioni in musica sono trattate in un’altra sezione: Ripetizioni. Questa sezione spiega come aggiungere del testo vocale a delle parti musicali ripetute.

Il testo che si riferisce a una sezione musicale ripetuta deve avere lo stesso costrutto di ripetizione della musica, se le parole non sono modificate.

>     \score {
>       <<
>         \new Staff {
>           \new Voice = "melody" {
>             \relative {
>               a'4 a a a
>               \repeat volta 2 { b4 b b b }
>             }
>           }
>         }
>         \new Lyrics {
>           \lyricsto "melody" {
>             Non ri -- petu -- to.
>             \repeat volta 2 { Ri -- petu -- to due. }
>           }
>         }
>       >>
>     }

Le parole verranno poi espanse correttamente se le ripetizioni sono ripetute.

>     \score {
>       \unfoldRepeats {
>         <<
>           \new Staff {
>             \new Voice = "melody" {
>               \relative {
>                 a'4 a a a
>                 \repeat volta 2 { b4 b b b }
>               }
>             }
>           }
>           \new Lyrics {
>             \lyricsto "melody" {
>               Non ri -- petu -- to.
>               \repeat volta 2 { Ri -- petu -- to due. }
>             }
>           }
>         >>
>       }
>     }

Se la sezione ripetuta deve essere ripetuta di nuovo con parole diverse, è sufficiente inserire tutte le parole:

>     \score {
>       <<
>         \new Staff {
>           \new Voice = "melody" {
>             \relative {
>               a'4 a a a
>               \repeat unfold 2 { b4 b b b }
>             }
>           }
>         }
>         \new Lyrics {
>           \lyricsto "melody" {
>             Non ri -- petu -- to.
>             Parole della prima volta.
>             Parole della seconda volta.
>           }
>         }
>       >>
>     }

Quando le parole che si riferiscono a una ripetizione sono diverse, le parole di ogni ripetizione devono essere inserite in contesti `Lyrics` separati, annidati correttamente in sezioni parallele:

>     \score {
>       <<
>         \new Staff {
>           \new Voice = "melody" {
>             \relative {
>               a'4 a a a
>               \repeat volta 2 { b4 b b b }
>             }
>           }
>         }
>         \new Lyrics \lyricsto "melody" {
>           Non ri -- petu -- to.
>           <<
>       { Parole della prima volta. }
>       \new Lyrics {
>         \set associatedVoice = "melody"
>         Parole della seconda volta.
>       }
>           >>
>         }
>       >>
>     }

Si possono aggiungere più strofe in modo analogo:

>     \score {
>       <<
>         \new Staff {
>           \new Voice = "singleVoice" {
>       \relative {
>         a'4 a a a
>         \repeat volta 3 { b4 b b b }
>         c4 c c c
>       }
>           }
>         }
>         \new Lyrics \lyricsto "singleVoice" {
>           Non ri -- petu -- to.
>           <<
>       { Parole della prima volta. }
>       \new Lyrics {
>         \set associatedVoice = "singleVoice"
>         Parole della seconda volta.
>       }
>       \new Lyrics {
>         \set associatedVoice = "singleVoice"
>         Parole della terza volta.
>       }
>           >>
>           La sezione fi -- nale.
>         }
>       >>
>     }

Tuttavia, se questo costrutto si trova all’interno di un contesto multirigo come `ChoirStaff`, il testo della seconda e terza strofa apparirà sotto il rigo inferiore.

Per posizionarli correttamente usare `alignBelowContext`:

>     \score {
>       <<
>         \new Staff {
>           \new Voice = "melody" {
>       \relative {
>         a'4 a a a
>         \repeat volta 3 { b4 b b b }
>         c4 c c c
>       }
>           }
>         }
>         \new Lyrics = "firstVerse" \lyricsto "melody" {
>           Non ri -- petu -- to.
>           <<
>       { Parole della prima volta. }
>       \new Lyrics = "secondVerse"
>       \with { alignBelowContext = "firstVerse" } {
>         \set associatedVoice = "melody"
>         Parole della seconda volta.
>       }
>       \new Lyrics = "thirdVerse"
>       \with { alignBelowContext = "secondVerse" } {
>         \set associatedVoice = "melody"
>         Parole della terza volta..
>       }
>           >>
>           La sezione fi -- nale.
>         }
>         \new Voice = "harmony" {
>           \relative {
>       f'4 f f f \repeat volta 2 { g8 g g4 g2 } a4 a8. a16 a2
>           }
>         }
>       >>
>     }

### Ripetizioni con finali alternativi

Se le parole della sezione ripetuta sono le stesse, e nessuno dei finali alternativi inizia con una pausa, si può usare la stessa identica struttura sia per il testo che per la musica. Ciò comporta il vantaggio che `unfoldRepeats` espanderà correttamente sia la musica che il testo vocale.

>     \score {
>       <<
>         \new Staff {
>           \time 2/4
>           \new Voice = "melody" {
>       \relative {
>         a'4 a a a
>         \repeat volta 2 { b4 b }
>         \alternative { { b b } { b c } }
>       }
>           }
>         }
>         \new Lyrics {
>           \lyricsto "melody" {
>       Non ri -- petu -- to.
>       \repeat volta 2 { Ripe -- tu -- }
>       \alternative { { to due. } { to due. } }
>           }
>         }
>       >>
>     }

Ma quando la sezione ripetuta ha parole diverse o uno dei blocchi `\alternative` inizia con una pausa, non si può usare il costrutto della ripetizione per le parole e bisogna inserire manualmente i comandi `\skip` per le note delle sezioni alternative prive di un testo corrispondente.

Attenzione: non usare il trattino basso, `_`, per saltare le note, perché il trattino basso indica un melisma e fa sì che la sillaba precedente sia allineata a sinistra.

Nota: Il comando `\skip` deve essere seguito da un numero, ma questo numero viene ignorato se nel testo vocale la durata delle sillabe deriva dalla durata delle note in una melodia associata attraverso `addlyrics` o `lyricsto`. Ogni `\skip` salta una singola nota di un qualsiasi valore, senza tener conto del valore del numero che segue.

>     \score {
>       <<
>         \new Staff {
>           \time 2/4
>           \new Voice = "melody" {
>       \relative {
>         \repeat volta 2 { b'4 b }
>         \alternative { { b b } { b c } }
>         c4 c
>       }
>           }
>         }
>         \new Lyrics {
>           \lyricsto "melody" {
>       Parole della prima volta.
>       \repeat unfold 2 { \skip 1 }
>       Termina qui.
>           }
>         }
>         \new Lyrics {
>           \lyricsto "melody" {
>       Pa -- role
>       \repeat unfold 2 { \skip 1 }
>       seconda volta.
>           }
>         }
>       >>
>     }

Quando una nota è legata verso uno o più finali alternativi, si usa una legatura di valore per portare quella nota nel primo finale alternativo e `\repeatTie` per portarla nel secondo e nei successivi. Questa struttura comporta dei problemi di difficile allineamento quando è presente il testo; si può ottenere un risultato più accettabile aumentando la lunghezza delle sezioni alternative in modo che le note legate siano contenute interamente al loro interno.

La legatura crea un melisma nella prima alternativa, ma non nella seconda e nelle successive, dunque per allineare il testo correttamente occorre disabilitare la creazione automatica dei melismi dopo la sezione delle volte e inserire dei salti manuali.

>     \score {
>       <<
>         \new Staff {
>           \time 2/4
>           \new Voice = "melody" {
>       \relative {
>         \set melismaBusyProperties = #'()
>         \repeat volta 2 { b'4 b ~}
>         \alternative { { b b } { b \repeatTie c } }
>         \unset melismaBusyProperties
>         c4 c
>       }
>           }
>         }
>         \new Lyrics {
>           \lyricsto "melody" {
>       \repeat volta 2 { Ecco una __ }
>       \alternative {
>         { \skip 1 strofa }
>         { \skip 1 sec }
>       }
>       onda strofa.
>           }
>         }
>       >>
>     }

Se `\unfoldRepeats` precede una sezione contenente `\repeatTie`, bisogna togliere `\repeatTie` per evitare che appaiano entrambi i tipi di legatura.

Quando la sezione ripetuta ha parola diverse, non si può mettere il testo in un blocco `\repeat` e bisogna inserire manualmente i comandi `\skip`, come si è visto prima.

>     \score {
>       <<
>         \new Staff {
>           \time 2/4
>           \new Voice = "melody" {
>       \relative {
>         \repeat volta 2 { b'4 b ~}
>         \alternative { { b b } { b \repeatTie c } }
>         c4 c
>       }
>           }
>         }
>         \new Lyrics {
>           \lyricsto "melody" {
>       Ecco una __ strofa.
>       \repeat unfold 2 { \skip 1 }
>           }
>         }
>         \new Lyrics {
>           \lyricsto "melody" {
>       Eccone un'
>       \repeat unfold 2 { \skip 1 }
>       altra da cantare.
>           }
>         }
>       >>
>     }

Se si desidera mostrare gli estensori e i trattini subito prima o dopo un finale alternativo, questi vanno inseriti a mano.

>     \score {
>       <<
>         \new Staff {
>           \time 2/4
>           \new Voice = "melody" {
>       \relative {
>         \repeat volta 2 { b'4 b ~}
>         \alternative { { b b } { b \repeatTie c } }
>         c4 c
>       }
>           }
>         }
>         \new Lyrics {
>           \lyricsto "melody" {
>       Ecco una __ strofa.
>       \repeat unfold 2 { \skip 1 }
>           }
>         }
>         \new Lyrics {
>           \lyricsto "melody" {
>       Ecco "una_"
>       \skip 1
>       "_" sec -- onda  strofa.
>           }
>         }
>       >>
>     }

#### Vedi anche

Guida alla notazione: Conservazione di un contesto, Ripetizioni.

#### Testi alternati

Quando solo le parole e le durate di due parti differiscono mentre le altezze sono le stesse, conviene disabilitare temporaneamente la rilevazione automatica dei melismi e indicare il melisma nel testo cantato:

>     \score {
>       <<
>         \new Voice = "melody" {
>           \relative c' {
>       \set melismaBusyProperties = #'()
>       \slurDown
>       \slurDashed
>       e4 e8 ( e ) c4 c |
>       \unset melismaBusyProperties
>       c
>           }
>         }
>         \new Lyrics \lyricsto "melody" {
>           They shall not o -- ver -- come
>         }
>         \new Lyrics \lyricsto "melody" {
>           We will _
>         }
>       >>
>     }

Quando sia la musica che le parole differiscono, è meglio nominare i contesti della voce in cui musica e testo sono diversi e assegnare il testo a quei contesti specifici:

>     \score {
>       <<
>         \new Voice = "melody" {
>           \relative {
>       <<
>         {
>           \voiceOne
>           e'4 e8 e
>         }
>         \new Voice = "splitpart" {
>           \voiceTwo
>           c4 c
>         }
>       >>
>       \oneVoice
>       c4 c |
>       c
>           }
>         }
>         \new Lyrics \lyricsto "melody" {
>           They shall not o -- ver -- come
>         }
>         \new Lyrics \lyricsto "splitpart" {
>           We will
>         }
>       >>
>     }

Nella musica corale è comune avere una voce divisa in varie misure. Il costrutto `<< {…} \\ {…} >>`, in cui due (o più) espressioni musicali sono separate dalla doppia barra inversa, potrebbe sembrare il modo giusto di impostare le voci divise. Tuttavia questo costrutto assegna tutte le espressioni al suo interno a NUOVI contesti Voice, dunque nessun testo cantato sarà impostato per esse perché il testo si collegherà al contesto della voce originale. Di norma, non è ciò che si desidera. Il costrutto adatto in questa situazione è il passaggio polifonico temporaneo, spiegato nella sezione Passaggi polifonici temporanei in Polifonia su un solo rigo.

#### Polifonia con testo in comune

Quando due voci contenenti durate diverse condividono lo stesso testo cantato, allineare il testo a una delle voci può creare dei problemi nell’altra voce. Per esempio, il secondo estensore del testo nell’esempio seguente è troppo corto, perché il testo è allineato solo alla voce superiore:

>     soprano = \relative { b'8( c d c) d2 }
>     alto = \relative { g'2 b8( a g a) }
>     words = \lyricmode { la __ la __ }

>     \new Staff <<
>       \new Voice = "sopranoVoice" { \voiceOne \soprano }
>       \new Voice { \voiceTwo \alto }
>       \new Lyrics \lyricsto "sopranoVoice" \words
>     >>

Per ottenere il risultato desiderato, si allinea il testo a un nuovo contesto `NullVoice` contenente una giusta combinazione delle due voci. Le note del contesto `NullVoice` non appaiono nello spartito, ma servono soltanto ad allineare il testo nel modo corretto:

>     soprano = \relative { b'8( c d c) d2 }
>     alto = \relative { g'2 b8( a g a) }
>     aligner = \relative { b'8( c d c) b( a g a) }
>     words = \lyricmode { la __ la __ }

>     \new Staff <<
>       \new Voice { \voiceOne \soprano }
>       \new Voice { \voiceTwo \alto }
>       \new NullVoice = "aligner" \aligner
>       \new Lyrics \lyricsto "aligner" \words
>     >>

Questo metodo si può usare anche con la funzione `\partCombine`, che di per sé non accetta il testo cantato:

>     soprano = \relative { b'8( c d c) d2 }
>     alto = \relative { g'2 b8( a g a) }
>     aligner = \relative { b'8( c d c) b( a g a) }
>     words = \lyricmode { la __ la __ }

>     \new Staff <<
>       \new Voice \partCombine \soprano \alto
>       \new NullVoice = "aligner" \aligner
>       \new Lyrics \lyricsto "aligner" \words
>     >>

#### Problemi noti e avvertimenti

La funzione `\addlyrics` funziona solo con testi vocali collegati a contesti `Voice` e non può essere usata con `NullVoice`.

La funzione `\partCombine` è descritta in Combinazione automatica delle parti.

Infine, si può usare questo metodo anche quando le voci si trovano su righi diversi e non è limitata a due sole voci:

>     soprano = \relative { b'8( c d c) d2 }
>     altoOne = \relative { g'2 b8( a b4) }
>     altoTwo = \relative { d'2 g4( fis8 g) }
>     aligner = \relative { b'8( c d c) d( d d d) }
>     words = \lyricmode { la __ la __ }

>     \new ChoirStaff \with {\accepts NullVoice } <<
>       \new Staff <<
>         \soprano
>         \new NullVoice = "aligner" \aligner
>       >>
>       \new Lyrics \lyricsto "aligner" \words
>       \new Staff \partCombine \altoOne \altoTwo
>     >>

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