[ << Modifica dell'output ] | [Inizio][Contenuti][Indice] | [ Modelli >> ] |
[ < Spostare gli oggetti ] | [ Su : Collisioni tra oggetti ] | [ La proprietà padding > ] |
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.
[ << Modifica dell'output ] | [Inizio][Contenuti][Indice] | [ Modelli >> ] |
[ < La proprietà padding ] | [ Su : Correggere elementi della notazione sovrapposti ] | [ La proprietà staff-padding > ] |
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
.
[ << Modifica dell'output ] | [Inizio][Contenuti][Indice] | [ Modelli >> ] |
[ < La proprietà right-padding ] | [ Su : Correggere elementi della notazione sovrapposti ] | [ La proprietà self-alignment-X > ] |
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 }
[ << Modifica dell'output ] | [Inizio][Contenuti][Indice] | [ Modelli >> ] |
[ < La proprietà staff-padding ] | [ Su : Correggere elementi della notazione sovrapposti ] | [ La proprietà staff-position > ] |
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>
[ << Modifica dell'output ] | [Inizio][Contenuti][Indice] | [ Modelli >> ] |
[ < La proprietà self-alignment-X ] | [ Su : Correggere elementi della notazione sovrapposti ] | [ La proprietà extra-offset > ] |
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.
[ << Modifica dell'output ] | [Inizio][Contenuti][Indice] | [ Modelli >> ] |
[ < La proprietà staff-position ] | [ Su : Correggere elementi della notazione sovrapposti ] | [ La proprietà positions > ] |
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
[ << Modifica dell'output ] | [Inizio][Contenuti][Indice] | [ Modelli >> ] |
[ < La proprietà extra-offset ] | [ Su : Correggere elementi della notazione sovrapposti ] | [ La proprietà force-hshift > ] |
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.
[ << Modifica dell'output ] | [Inizio][Contenuti][Indice] | [ Modelli >> ] |
[ < La proprietà positions ] | [ Su : Correggere elementi della notazione sovrapposti ] | [ Esempio musicale > ] |
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 | }
[ << Modifica dell'output ] | [Inizio][Contenuti][Indice] | [ Modelli >> ] |
[ < La proprietà positions ] | [ Su : Correggere elementi della notazione sovrapposti ] | [ Esempio musicale > ] |