Guida alla Notazione di LilyPond: 5.5.4 Modifica delle forme

### 5.5.4 Modifica delle forme

#### 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:

1. specificando di quanto spostare i punti di controllo della curva Bézier calcolata automaticamente, o
2. 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.

#### LilyPond — Guida alla Notazione v2.24.4 (ramo stabile).