Manuale di apprendimento di LilyPond: 5.6.2 Correggere elementi della notazione sovrapposti

### 5.6.2 Correggere elementi della notazione sovrapposti

Vediamo ora come le proprietà presentate nella sezione precedente possano aiutare a risolvere la sovrapposizione degli elementi della notazione.

#### La proprietà `padding`

La proprietà `padding` serve a aumentare (o diminuire) la distanza tra i simboli che si trovano sopra o sotto le note.

>     c'2\fermata
>     \override Script.padding = #3
>     b2\fermata

>     % Questo non funziona, vedi sotto
>     \override MetronomeMark.padding = #3
>     \tempo 4 = 120
>     c'1 |
>     % Questo funziona
>     \override Score.MetronomeMark.padding = #3
>     \tempo 4 = 80
>     d'1 |

Nota nel secondo esempio come è importante sapere quale contesto gestisce un certo oggetto. Dato che l’oggetto `MetronomeMark` è regolato dal contesto `Score`, le modifiche della proprietà nel contesto `Voice` non vengono prese in considerazione. Per approfondire l’argomento si veda Modifica delle proprietà.

Se la proprietà `padding` di un oggetto viene aumentata quando quell’oggetto si trova insieme ad altri oggetti disposti secondo la loro proprietà `outside-staff-priority`, allora si sposteranno quell’oggetto e tutti gli oggetti esterni a esso.

#### La proprietà `right-padding`

La proprietà `right-padding` agisce sullo spazio tra l’alterazione e la nota corrispondente. Non è una necessità frequente, ma la spaziatura predefinita potrebbe risultare errata nei casi di alcuni speciali glifi delle alterazioni usati nella musica microtonale. Questi si inseriscono sovrascrivendo lo stampo (stencil) dell’alterazione con un segno che contenga il simbolo desiderato:

>     sesquisharp = \markup { \sesquisharp }
>     \relative {
>       c''4
>       % Mostra un triesis (alterazione ascendente di tre quarti di tono),
>       % ma lo spazio è troppo stretto
>       \once \override Accidental.stencil = #ly:text-interface::print
>       \once \override Accidental.text = #sesquisharp
>       cis4 c
>       % Ecco come migliorare lo spazio
>       \once \override Score.AccidentalPlacement.right-padding = #0.6
>       \once \override Accidental.stencil = #ly:text-interface::print
>       \once \override Accidental.text = #sesquisharp
>       cis4 |
>     }

Siamo costretti a usare una sovrascrittura dello stampo dell’alterazione che verrà spiegata successivamente. Il tipo di stampo deve essere una procedura e in questo esempio è stato modificato per mostrare i contenuti della proprietà `text` dell’oggetto `Accidental`, che è esso stesso impostato sul segno di triesis. Poi questo segno viene distanziato dalla testa di nota grazie alla sovrascrittura di `right-padding`.

#### La proprietà `staff-padding`

`staff-padding` serve ad allineare gli oggetti come i segni di dinamica lungo una linea di base a una certa distanza dal rigo, quando nessun altro elemento della notazione li allontana dal rigo. Non è una proprietà di `DynamicText` bensì di `DynamicLineSpanner`, perché la base deve essere applicata ugualmente a tutti i segni dinamica, compresi quelli creati come estensori. Ecco come allineare i segni di dinamica nell’esempio preso dalla sezione precedente:

>     \override DynamicLineSpanner.staff-padding = #3
>     \relative { a'4\f b\mf a\p b\mp }

#### La proprietà `self-alignment-X`

L’esempio successivo mostra come aggiustare la posizione di un numero di corda rispetto a un gambo allineando il bordo destro del numero al punto di riferimento della nota a cui si riferisce:

>     \voiceOne
>     <a''\2>
>     \once \override StringNumber.self-alignment-X = #RIGHT
>     <a''\2>

#### La proprietà `staff-position`

Le pause d’intero di una voce possono entrare in collisione con le note di un’altra. Dal momento che queste pause sono centrate rispetto alle stanghette della battuta, calcolare quali altre note potrebbero sovrapporsi richiederebbe un notevole grado d’elaborazione, dato che l’attuale gestione delle collisioni tra note e tra note e pause riguarda solo le note e le pause simultanee. Ecco un esempio di collisione di questo tipo:

>     << \relative { c'4 c c c } \\ { R1 } >>

In questo caso la soluzione migliore è spostare in basso la pausa d’intero, poiché si trova nella seconda voce. In `\voiceTwo` (ovvero nella seconda voce di un costrutto `<<{…} \\ {…}>>`) il valore predefinito di `staff-position` è -6 per la pausa multipla (MultiMeasureRest), quindi dobbiamo spostarla più in basso, ad esempio di quattro semispazi del rigo; il nuovo valore sarà `-10`.

>     <<
>       \relative { c'4 c c c }
>       \\
>       \override MultiMeasureRest.staff-position = #-10
>       { R1 }
>     >>

Questa soluzione è preferibile all’uso di `extra-offset`, perché il taglio addizionale sopra la pausa è inserito automaticamente. Vedi il frammento «Disegnare manualmente le legature di valore» in Legature di valore per la differenza tra valori precisi e imprecisi.

#### La proprietà `extra-offset`

La proprietà `extra-offset` fornisce un controllo completo sul posizionamento di un oggetto sia in orizzontale che in verticale.

Nell’esempio seguente, la seconda diteggiatura viene spostata un po’ a sinistra e in basso di 1.8 spazi rigo:

>     \stemUp
>     f4-5
>     \once \override Fingering.extra-offset = #'(-0.3 . -1.8)
>     f4-5

#### La proprietà `positions`

La proprietà `positions` permette di controllare manualmente la posizione verticale e quindi l’inclinazione delle graffette dei gruppi irregolari, delle legature di portamento e di frase e delle travature. Ecco un esempio in cui una legatura di frase e una legatura di portamento collidono:

>     \relative { a'8 \( ( a'16 ) a \) }

Si potrebbero spostare più in alto le due estremità della legatura di frase. Possiamo provare a impostare quella sinistra su 2.5 spazi sopra la linea centrale e quella destra a 4.5 spazi; LilyPond sceglierà la legatura di frase tra quelle candidate che hanno le estremità più vicine a queste:

>     \once \override PhrasingSlur.positions = #'(2.5 . 4.5)
>     a'8 \( ( a''16 ) a'' \)

È migliorato, ma perché non abbassare un po’ l’estremità destra della legatura di portamento? Se provi vedrai che non può essere fatto in questo modo. Il motivo è che non ci sono legature di portamento candidate più basse di quella già selezionata, quindi in questo caso la proprietà `positions` non può produrre effetti. Tuttavia, legature di valore, di portamento e di frase possono essere posizionate e disegnate in modo molto preciso se necessario. Per sapere come fare si veda Modifica di legature di valore e di portamento.

Ecco un altro esempio. Vediamo che le travature collidono con le legature di valore:

>     {
>       \time 4/2
>       <<
>         { c'1 ~ 2. e'8 f' }
>         \\
>         { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
>       >>
>       <<
>         { c'1 ~ 2. e'8 f' }
>         \\
>         { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
>       >>
>     }

Si può risolvere spostando manualmente in su entrambi gli estremi della travatura dalla loro posizione di 1.81 spazi rigo sotto la linea centrale a, per esempio, 1:

>     {
>       \time 4/2
>       <<
>         { c'1 ~ 2. e'8 f' }
>         \\
>         {
>           \override Beam.positions = #'(-1 . -1)
>           e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g''
>         }
>       >>
>       <<
>         { c'1 ~ 2. e'8 f' }
>         \\
>         { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
>       >>
>     }

Come vedi, la sovrascrittura si applica anche alla seconda voce della seconda misura di otto note, ma a nessuna delle travature nella prima voce, nemmeno in quelle della seconda misura. Appena la sovrascrittura non è più attiva, deve essere ripristinato, come si vede.

#### La proprietà `force-hshift`

Possiamo vedere ora come applicare le correzioni finali all’esempio di Chopin introdotto alla fine del paragrafo Sento le Voci, che avevamo lasciato così:

>     \new Staff \relative {
>       \key aes \major
>       <<
>         { c''2 aes4. bes8 }
>         \\
>         { <ees, c>2 des }
>         \\
>         \\
>         { aes'2 f4 fes }
>       >> |
>       <c ees aes c>1 |
>     }

La nota interna del primo accordo (ovvero il La bemolle della quarta voce) non deve essere allontanata dalla colonna della nota più alta, quindi usiamo `\shiftOff`.

Nel secondo accordo preferiamo che il Fa sia allineato al La bemolle e che la nota più grave sia posizionata leggermente più a destra, in modo da evitare la collisione dei gambi. Per farlo dobbiamo impostare `force-hshift` nella colonna (`NoteColumn`) del Re bemolle grave in modo che si sposti a destra di mezzo spazio di rigo e `force-hshift` per il Fa su zero. Si usa `\once` per evitare che tali impostazioni si propaghino oltre il momento musicale immediato, sebbene in questo piccolo esempio il `\once` e il secondo `\override` nella quarta voce potrebbero essere omessi. Ma non sarebbe un esempio di buona pratica.

Ecco il risultato finale:

>     \new Staff \relative {
>       \key aes \major
>       <<
>         { c''2 aes4. bes8 }
>         \\
>         { <ees, c>2 \once \override NoteColumn.force-hshift = 0.5 des }
>         \\
>         \\
>         { \once \shiftOff aes'2 \once \shiftOff f4 fes }
>       >> |
>       <c ees aes c>1 |
>     }

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