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

[image of music]

% 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 |

[image of music]

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 |
}

[image of music]

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 }

[image of music]


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>

[image of music]


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 } >>

[image of music]

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 }
>>

[image of music]

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

[image of music]


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 \) }

[image of music]

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'' \)

[image of music]

È 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'' }
  >>
}

[image of music]

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'' }
  >>
}

[image of music]

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 |
}

[image of music]

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 |
}

[image of music]


LilyPond — Manuale di apprendimento v2.23.82 (ramo di sviluppo).