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

Questa interfaccia fornisce due 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'

[image of music]

\relative \compressMMRests {
  a'1
  R1*23
  % aumenta la lunghezza della misura con pausa
  \once \override MultiMeasureRest.minimum-length = #20
  R1*23
  a1
}

[image of music]

\relative {
  a' \< a a a \!
  % aumenta la lunghezza della forcella
  \override Hairpin.minimum-length = #20
  a \< a a a \!
}

[image of music]

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

[image of music]

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

[image of music]

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'

[image of music]

La proprietà to-barline

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

[image of music]

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.


Uso di line-spanner-interface

Gli oggetti che supportano l’interfaccia line-spanner-interface comprendono:

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'

[image of music]

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

[image of music]

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 (o LEFT) 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 }

[image of music]

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 e Y. Impostando stencil-align-dir-y o stencil-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 }

[image of music]

Nota bene che valori negativi spostano il testo in su, contrariamente a quanto si potrebbe pensare, perché un valore di -1 o DOWN fa sì che si allinei il margine inferiore del testo con la linea dell’estensore. Un valore di 1 o UP 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
}

[image of music]

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.


LilyPond — Guida alla Notazione v2.23.8 (ramo di sviluppo).