5.4.6 Estensori
Molti oggetti della notazione musicale si estendono per varie note o addirittura per molte battute. Ne sono un esempio le legature di portamento, le travature, le parentesi dei gruppi irregolari, quelle delle volte delle ripetizioni, i crescendi, i trilli e i glissandi. Tali oggetti in LilyPond si chiamano “spanner”, ovvero estensori, e hanno delle proprietà speciali per regolare il loro aspetto e comportamento. Alcune di queste proprietà sono comuni a tutti gli estensori; altre sono limitate a un sottoinsieme di estensori.
Tutti gli estensori supportano l’interfaccia spanner-interface
. Ma pochi,
essenzialmente quelli che disegnano una linea dritta tra due oggetti, supportano
anche l’interfaccia line-spanner-interface
.
Uso di spanner-interface | ||
Uso di line-spanner-interface |
[ << Modifica delle impostazioni predefinite ] | [Inizio][Contenuti][Indice] | [ Tabelle del manuale della notazione >> ] |
[ < Estensori ] | [ Su : Estensori ] | [ Uso di line-spanner-interface > ] |
Uso di spanner-interface
Questa interfaccia fornisce tre proprietà che si applicano a vari estensori.
La proprietà minimum-length
La lunghezza minima dell’estensore è specificata dalla proprietà
minimum-length
. Aumentando questa si aumenta necessariamente
anche la spaziatura delle note comprese tra le due estremità.
Tuttavia questa modifica non ha effetto su molti estensori, perché
la loro lunghezza è determinata da altre considerazioni. Di seguito
vengono mostrati alcuni esempi in cui è in funzione.
a'~ a' a' % aumenta la lunghezza della legatura di valore -\tweak minimum-length #5 ~ a'
\relative \compressMMRests { a'1 R1*23 % aumenta la lunghezza della misura con pausa \once \override MultiMeasureRest.minimum-length = #20 R1*23 a1 }
\relative { a' \< a a a \! % aumenta la lunghezza della forcella \override Hairpin.minimum-length = #20 a \< a a a \! }
Questa modifica può essere usata anche per aumentare la lunghezza delle legature di portamento e di frase:
\relative { a'( g) a -\tweak minimum-length #5 ( g) a\( g\) a -\tweak minimum-length #5 \( g\) }
Per alcuni oggetti della formattazione, la proprietà minimum-length
diventa effettiva solo se viene richiamata esplicitamente la procedura
set-spacing-rods
. Per farlo, la proprietà springs-and-rods
deve essere impostata su ly:spanner::set-spacing-rods
. Per esempio,
la lunghezza minima di un glissando cambia solo quando si imposta la
proprietà springs-and-rods
:
% default e' \glissando c'' % non funziona da sola \once \override Glissando.minimum-length = #20 e' \glissando c'' % funziona solo quando entrambe le modifiche sono presenti \once \override Glissando.minimum-length = #20 \once \override Glissando.springs-and-rods = #ly:spanner::set-spacing-rods e' \glissando c''
Lo stesso vale per l’oggetto Beam
:
% non funziona da sola \once \override Beam.minimum-length = #20 e'8 e' e' e' % funziona solo quando entrambe le modifiche sono presenti \once \override Beam.minimum-length = #20 \once \override Beam.springs-and-rods = #ly:spanner::set-spacing-rods e'8 e' e' e'
La proprietà minimum-length-after-break
La proprietà minimum-length-after-break
può essere usata per
allungare stensori spezzati dopo un a capo.
Come per la proprietà minimum-length
, viene spesso usata per impostare
la proprietà springs-and-rods
su ly:spanner::set-spacing-rods
.
{ \once \override Tie.minimum-length-after-break = 20 a1~ \break a1 \once \override Slur.minimum-length-after-break = 20 a1( \break d'1) \once \override TextSpanner.springs-and-rods = #ly:spanner::set-spacing-rods \once \override TextSpanner.minimum-length-after-break = 20 a1\startTextSpan \break a1\stopTextSpan \once \override Hairpin.after-line-breaking = ##t \once \override Hairpin.to-barline = ##f \once \override Hairpin.minimum-length-after-break = 20 a1\< \break a1\! \once \override Glissando.springs-and-rods = #ly:spanner::set-spacing-rods \once \override Glissando.breakable = ##t \once \override Glissando.after-line-breaking = ##t \once \override Glissando.minimum-length-after-break = 20 a1\glissando \break d'1 }
La proprietà to-barline
La terza proprietà utile di spanner-interface
è
to-barline
. Il valore predefinito (vero) fa sì che le forcelle e
gli altri estensori che terminano sulla prima nota di una misura si estendano
invece fino alla stanghetta immediatamente precedente. Se impostata su falso,
l’estensore andrà oltre la stanghetta e terminerà sulla nota stessa:
\relative { a' \< a a a a \! a a a \break \override Hairpin.to-barline = ##f a \< a a a a \! a a a }
Questa proprietà non funziona con tutti gli estensori. Per esempio,
impostandola su #t
non si produce alcun effetto su legature di
portamento o di frase, o su altri estensori per i quali terminare sulla
stanghetta non avrebbe senso.
[ << Modifica delle impostazioni predefinite ] | [Inizio][Contenuti][Indice] | [ Tabelle del manuale della notazione >> ] |
[ < Uso di spanner-interface ] | [ Su : Estensori ] | [ Visibilità degli oggetti > ] |
Uso di line-spanner-interface
Gli oggetti che supportano l’interfaccia line-spanner-interface
comprendono:
-
DynamicTextSpanner
-
Glissando
-
TextSpanner
-
TrillSpanner
-
VoiceFollower
La routine responsabile del disegno di questi estensori è
ly:line-spanner::print
. Essa determina la posizione esatta
delle due estremità e disegna una linea tra di esse, nello stile
richiesto. Le posizioni delle due estremità dell’estensore sono
calcolate al volo, ma è possibile sovrascrivere le loro coordinate
Y. Le proprietà da specificare sono annidate di due livelli nella
gerarchia della proprietà, ma la sintassi del comando \override
è piuttosto semplice:
e''2 \glissando b' \once \override Glissando.bound-details.left.Y = #3 \once \override Glissando.bound-details.right.Y = #-2 e''2 \glissando b'
Le unità di misura della proprietà Y
sono gli spazi rigo
(staff-space
), con la linea centrale del rigo che è il
punto zero. Per il glissando, questo è il valore per Y
alla
coordinata X che corrisponde al punto centrale della testa di ogni
nota, se si immagina che la linea si estenda fino a là.
Se Y
non è impostato, il valore viene calcolato dalla posizione
verticale del punto di attacco corrispondente dell’estensore.
In caso di un’interruzione di linea, i valori per le estremità sono
specificati dalle sottoliste left-broken
e right-broken
di bound-details
. Per esempio:
\override Glissando.breakable = ##t \override Glissando.bound-details.right-broken.Y = #-3 c''1 \glissando \break f''1
Altre proprietà delle sottoliste left
e right
della proprietà
bound-details
possono essere modificate nello stesso modo di Y
:
-
Y
Questa imposta la coordinata Y dell’estremità, che si sposta di un certo numero di
staff-space
dalla linea centrale del rigo. Per impostazione predefinita, è il centro dell’oggetto a cui è associato, dunque un glissando punta al centro verticale della testa di nota.Nel caso di estensori orizzontali, come quelli del testo e del trillo, il suo valore è fisso su 0.
-
attach-dir
Questa determina dove la linea inizia e termina nella direzione X, relativa all’oggetto a cui è associato. Quindi un valore di
-1
(oLEFT
) fa sì che la linea inizi/termini sul lato sinistro della testa della nota a cui è attaccata.-
X
Questa è la coordinata X assoluta dell’estremità. Viene solitamente calcolata al volo e sovrascriverla produce solitamente un effetto poco utile.
-
stencil
Gli estensori della linea possono avere dei simboli all’inizio o alla fine, contenuti in questa sottoproprietà. Questa proprietà è per uso interno; si raccomanda di usare
text
al suo posto.-
text
Questo è un testo markup che viene valutato per produrre lo stampo (stencil, in inglese). Viene usato per mettere cresc., tr e altro testo su estensori orizzontali.
\override TextSpanner.bound-details.left.text = \markup { \small \bold Rall. } \relative { c''2\startTextSpan b c a\stopTextSpan }
-
stencil-align-dir-y
-
stencil-offset
Se non si imposta una di queste proprietà, lo stampo viene messo semplicemente all’estremità, centrato sulla linea, come definito nelle sottoproprietà
X
eY
. Impostandostencil-align-dir-y
ostencil-offset
il simbolo si sposterà verticalmente sul margine rispetto all’estremità della linea:\override TextSpanner.bound-details.left.stencil-align-dir-y = #-2 \override TextSpanner.bound-details.right.stencil-align-dir-y = #UP \override TextSpanner.bound-details.left.text = "ggg" \override TextSpanner.bound-details.right.text = "hhh" \relative { c'4^\startTextSpan c c c \stopTextSpan }
Nota bene che valori negativi spostano il testo in su, contrariamente a quanto si potrebbe pensare, perché un valore di
-1
oDOWN
fa sì che si allinei il margine inferiore del testo con la linea dell’estensore. Un valore di1
oUP
allinea il margine superiore del testo con la linea dell’estensore.-
arrow
Impostando questa sottoproprietà su
#t
viene generata la punta di una freccia a un’estremità della linea.-
padding
Questa sottoproprietà regola lo spazio tra l’estremità della linea specificata e la fine reale. Senza padding, un glissando inizia e termina nel centro della testa di ogni nota.
La funzione musicale \endSpanners
termina prematuramente l’estensore
che inizia nella nota immediatamente seguente. Viene terminato esattamente
dopo una nota o alla stanghetta seguente se to-barline
è impostato
su vero e c’è una stanghetta prima della nota successiva.
\relative c'' { \endSpanners c2 \startTextSpan c2 c2 \endSpanners c2 \< c2 c2 }
Quando si usa \endSpanners
non è necessario chiudere
\startTextSpan con \stopTextSpan, né è necessario chiudere le
forcelle con \!
.
Vedi anche
Guida al funzionamento interno: TextSpanner, Glissando, VoiceFollower, TrillSpanner, line-spanner-interface.
[ << Modifica delle impostazioni predefinite ] | [Inizio][Contenuti][Indice] | [ Tabelle del manuale della notazione >> ] |
[ < Uso di spanner-interface ] | [ Su : Estensori ] | [ Visibilità degli oggetti > ] |