5.5.4 Modifica delle forme
Modifica di legature di valore e di portamento |
Modifica di legature di valore e di portamento
Le legature, siano esse di valore (Tie
), di portamento (Slur
),
di frase (PhrasingSlur
), di laisser-vibrer (LaissezVibrerTie
)
o di valore ripetute (RepeatTie
), sono tutte disegnate come curve Bézier
di terzo ordine. Se la forma della legatura di valore o di frase che viene
calcolata automaticamente non è ottimale, può essere modificata manualmente
in due modi:
- specificando di quanto spostare i punti di controllo della curva Bézier calcolata automaticamente, o
- specificando esplicitamente le posizioni dei quattro punti di controllo richiesti per definire la curva desiderata.
Entrambi i metodi sono spiegati di seguito. Il primo metodo è più adatto se sono necessari solo piccoli aggiustamenti alla curva; il secondo può essere migliore per creare curve che riguardano soltanto una singola nota.
Curve Bézier cubiche
Le curve Bézier di terzo ordine o cubiche sono definite da quattro punti di controllo. Il primo e il quarto punto di controllo sono esattamente i punti di inizio e fine della curva. I due punti intermedi definiscono la forma. Sul web si trovano delle animazioni che mostrano come viene disegnata la curva, ma la seguente descrizione e immagine può comunque essere utile. La curva inizia dal primo punto di controllo e si dirige verso il secondo, piegandosi gradualmente per arrivare al terzo e poi al quarto, arrivando lì direttamente dal terzo punto di controllo. La curva è contenuta interamente nel quadrilatero definito dai quattro punti di controllo.
Traslazioni, rotazioni e ridimensionamenti dei punti di controllo risultano tutti esattamente nelle stesse operazioni sulla curva.
Specificare gli spostamenti dai punti di controllo correnti
In questo esempio la disposizone automatica della legatura di valore non è
ottimale, e \tieDown
non sarebbe di aiuto.
<< { e'1~ 1 } \\ \relative { r4 <g' c,> <g c,> <g c,> } >>
Cambiando i punti di controllo della legatura con \shape
consente di
evitare le collisioni.
La sintassi di \shape
è
[-]\shape spostamenti elemento
Questo comando riposiziona i punti di controllo di elemento di quanto
indicato da spostamenti. L’argomento spostamenti è una lista
di coppie di numeri o una lista di tali liste. Ogni elemento di una coppia
rappresenta lo spostamento di una delle coordinate di un punto di controllo.
Se elemento è una stringa, il risultato è \once\override
per il
tipo di grob specificato. Se elemento è un’espressione musicale, il
risultato è la stessa espressione musicale con un’appropriata modifica.
In altre parole, la funzione \shape
può comportarsi come un comando
\once\override
o un comando \tweak
a seconda che l’argomento
elemento sia il nome di un grob, come “Slur”, o un’espressione
musicale, come “(”. L’argomento spostamenti specifica gli
sfasamenti dei quattro punti di controllo nella forma di una lista di
quattro coppie di valori (dx . dy) in unità di spazi rigo (o una lista
di tali liste se la curva ha più di un segmento).
Il trattino iniziale è richiesto se e solo se si usa la forma con
\tweak
.
Dunque usando lo stesso esempio precedente e la forma \once\override
di \shape
, il seguente comando alzerà la legatura di valore di
metà spazio rigo:
<< { \shape #'((0 . 0.5) (0 . 0.5) (0 . 0.5) (0 . 0.5)) Tie e'1~ 1 } \\ \relative { r4 <g' c,> <g c,> <g c,> } >>
Questo posizionamento è migliore, ma forse dovrebbe essere alzato di più
al centro, come viene fatto nel prossimo esempio, dove stavolta si usa
la forma alternativa \tweak
:
<< { e'1-\shape #'((0 . 0.5) (0 . 1) (0 . 1) (0 . 0.5)) ~ e' } \\ \relative { r4 <g' c,> <g c,> <g c,> } >>
Per facilitare il processo di modifica viene fornita la funzione \vshape
.
Il suo nome vuol dire visual shape (forma visiva): si comporta esattamente
come \shape
, con la differenza che vengono mostrati anche i punti di
controllo e il poligono.
\relative { c''8(\( a) e4 gis a\) \vshape #'((0 . -0.3) (0.5 . -0.2) (0.5 . -0.3) (0 . -0.7)) PhrasingSlur c8(\( a) e4 gis a\) }
Si consiglia di cominciare con \vshape
e aggiustare i valori finché
non si ottiene una curva soddisfacente, quindi si può semplicemente togliere
la lettera “v” in \vshape
.
Si possono ridefinire anche due curve diverse che iniziano nello stesso momento musicale:
\relative { c''8(\( a) a'4 e c\) \shape #'((0.7 . -0.4) (0.5 . -0.4) (0.3 . -0.3) (0 . -0.2)) Slur \shape #'((0 . 0) (0 . 0.5) (0 . 0.5) (0 . 0)) PhrasingSlur c8(\( a) a'4 e c\) }
La funzione \shape
può sostituire anche i punti di controllo di
curve che si estendono oltre le interruzioni di linea. A ogni pezzo
della curva spezzata può essere assegnata la sua lista di spostamenti.
Se non sono necessarie delle modifiche a un segmento in particolare,
la lista vuota può servire come segnaposto. In questo esempio l’interruzione
di linea fa sembrare doppia la legatura di portamento singola:
\relative { c'4( f g c \break d,4 c' f, c) }
Cambiando le forme delle due metà della legatura di portamento diventa più chiaro che la legatura continua oltre l’interruzione di linea:
% () può essere usato come una scorciatoia per ((0 . 0) (0 . 0) (0 . 0) (0 . 0)) % nel caso in cui uno dei segmenti non necessiti di modifiche \relative c' { \shape #'( (( 0 . 0) (0 . 0) (0 . 0) (0 . 1)) ((0.5 . 1.5) (1 . 0) (0 . 0) (0 . -1.5)) ) Slur c4( f g c \break d,4 c' f, c) }
Se è richiesta una curva a forma di S, bisogna sempre definire manualmente i punti di controllo — LilyPond non sceglierà mai tali forme automaticamente.
\relative c'' { c8( e b-> f d' a e-> g) \shape #'((0 . -1) (5.5 . -0.5) (-5.5 . -10.5) (0 . -5.5)) PhrasingSlur c8\( e b-> f d' a e-> g\) }
Specificare i punti di controllo esplicitamente
Le coordinate dei punti di controllo della curva di Bézier sono specificate in unità di spazi rigo. La coordinata X è relativa al punto di riferimento della nota a cui la legatura si attacca, mentre la coordinata Y è relativa alla linea centrale del rigo. Le coordinate sono specificate come una lista di quattro coppie di numeri decimali (reali). Un possibile approccio consiste nel valutare prima le coordinate delle due estremità e poi indovinare i due punti intermedi. I valori ottimali vengono quindi trovati per tentativi. Tenere conto del fatto che, in caso di ulteriori modifiche alla musica o alla formattazione, questi valori potrebbero dover essere nuovamente cambiati manualmente.
Una situazione in cui è preferibile specificare i punti di controllo esplicitamente invece di specificarne gli spostamenti è quella in cui devono essere indicati per una singola nota. Il prossimo esempio mostra un modo in cui rappresentare una legatura di portamento che si estende nelle sezioni alternative di una volta.
\relative { c''1 \repeat volta 3 { c4 d( e f } \alternative { \volta 1 { g2) d } \volta 2 { g2 % crea una legatura di portamento e spostala in una nuova posizione % il <> è solamente un accordo vuoto che serve a terminare la legatura -\tweak control-points #'((-2 . 3.8) (-1 . 3.9) (0 . 4) (1 . 3.4)) ( <> ) f, } \volta 3 { e'2 % crea una legatura di portamento e spostala in una nuova posizione -\tweak control-points #'((-2 . 3) (-1 . 3.1) (0 . 3.2) (1 . 2.4)) ( <> ) f, } } }
Problemi noti e avvertimenti
Non è possibile modificare le forme di legature di valore e di portamento
cambiando la proprietà control-points
se ci sono molteplici legature
nello stesso momento musicale – anche il comando \tweak
non funzionerà
in questo caso. Tuttavia si può sovrascrivere la proprietà
tie-configuration
di TieColumn
per impostare l’inizio della linea
e la direzione come desiderato.
Vedi anche
Guida al funzionamento interno: TieColumn.