Guida alla Notazione di LilyPond: 1.3.1 Segni di espressione collegati alle note

### 1.3.1 Segni di espressione collegati alle note

Questa sezione spiega come creare segni di espressione collegati alle note: articolazioni, abbellimenti e dinamiche. Sono trattati anche i metodi per creare nuove indicazioni dinamiche.

#### Articolazioni e abbellimenti

I diversi simboli che rappresentano articolazioni, ornamenti e altre indicazioni esecutive possono essere collegati a una nota con questa sintassi:

>     nota\nome

I valori possibili per `nome` sono elencati in Elenco delle articolazioni. Ad esempio:

>     \relative {
>       c''4\staccato c\mordent b2\turn
>       c1\fermata
>     }

Alcune di queste articolazioni hanno delle abbreviazioni che ne semplificano l’inserimento. Le abbreviazioni sono attaccate al nome della nota e la loro sintassi è composta da un trattino `-` seguito da un simbolo che indica l’articolazione. Esistono abbreviazioni predefinite per marcato, chiuso, tenuto, staccatissimo, accento, staccato e portato. L’output corrispondente è:

>     \relative {
>       c''4-^ c-+ c-- c-!
>       c4-> c-. c2-_
>     }

Le regole per il posizionamento predefinito delle articolazioni sono definite in ‘`scm/script.scm`’. Articolazioni e ornamenti possono essere posizionati manualmente sopra o sotto il rigo; si veda Direzione e posizionamento.

Le articolazioni sono oggetti `Script`. Le loro proprietà sono descritte in dettaglio in Script.

Le articolazioni possono essere attaccate alle pause normali, alle pause multiple e alle note. Attaccando un’articolazione a una pausa multipla si crea un oggetto `MultiMeasureRestScript`.

>     \override Script.color = #red
>     \override MultiMeasureRestScript.color = #blue
>     a'2\fermata r\fermata
>     R1\fermata

Oltre alle articolazioni, si può attaccare alle note anche un testo, posto tra virgolette o in un blocco `\markup{}`. Si veda Scritte.

Ulteriori informazioni sull’ordine degli oggetti Script e TextScript collegati alle note si trovano in Posizionamento degli oggetti.

#### Frammenti di codice selezionati

#### Modificare i valori predefiniti per le abbreviazioni delle articolazioni

Le abbreviazioni sono definite in ‘`ly/script-init.ly`’, dove sono assegnati valori predefiniti alle variabili `dashHat`, `dashPlus`, `dashDash`, `dashBang`, `dashLarger`, `dashDot` e `dashUnderscore`. Questi valori predefiniti possono essere modificati. Ad esempio, per associare l’abbreviazione `-+` (`dashPlus`) al simbolo del trillo invece che al simbolo + predefinito, si assegna il valore `trill` alla variabile `dashPlus`:

>     \relative c'' { c1-+ }

>     dashPlus = \trill

>     \relative c'' { c1-+ }

#### Controllo dell’ordine verticale degli script

L’ordine verticale degli script è determinato dalla proprietà `'script-priority`. Più il numero è piccolo, più sarà posto vicino alla nota. In questo esempio, il simbolo di diesis (oggetto `TextScript`) ha prima la priorità più bassa, dunque è posto più in basso nel primo esempio. Nel secondo, il trillo (oggetto `Script`) ha la priorità più bassa, quindi si trova all’interno. Quando due oggetti hanno la stessa priorità, l’ordine in cui sono inseriti determina quale viene prima.

>     \relative c''' {
>       \once \override TextScript.script-priority = #-100
>       a2^\prall^\markup { \sharp }

>       \once \override Script.script-priority = #-100
>       a2^\prall^\markup { \sharp }
>     }

#### Creare un gruppetto ritardato

Creare un gruppetto ritardato, dove la nota più bassa del gruppetto usa l’alterazione, richiede vari \override. La proprietà `outside-staff-priority` deve essere impostata su `#f`, perché altrimenti questa avrebbe la precedenza sulla proprietà `avoid-slur`. Cambiando la frazione `2/3` si aggiusta la posizione orizzontale.

>     \relative c'' {
>       \after 2*2/3 \turn c2( d4) r |
>       \after 4 \turn c4.( d8)
>       \after 4
>       {
>         \once \set suggestAccidentals = ##t
>         \once \override AccidentalSuggestion.outside-staff-priority = ##f
>         \once \override AccidentalSuggestion.avoid-slur = #'inside
>         \once \override AccidentalSuggestion.font-size = -3
>         \once \override AccidentalSuggestion.script-priority = -1
>         \once \hideNotes
>         cis8\turn \noBeam
>       }
>       d4.( e8)
>     }

#### Vedi anche

Glossario Musicale: tenuto, accento, staccato, portato.

Manuale di apprendimento: Posizionamento degli oggetti.

Guida alla notazione: Scritte, Direzione e posizionamento, Elenco delle articolazioni, Trilli.

File installati: ‘`scm/script.scm`’.

Frammenti: Expressive marks.

Guida al funzionamento interno: Script, TextScript.

#### Dinamiche

Le indicazioni dinamiche assolute si indicano con un comando che segue una nota, come ad esempio `c4\ff`. Le indicazioni dinamiche disponibili sono `\ppppp`, `\pppp`, `\ppp`, `\pp`, `\p`, `\mp`, `\mf`, `\f`, `\ff`, `\fff`, `\ffff`, `\fffff`, `\fp`, `\sf`, `\sff`, `\sp`, `\spp`, `\sfz`, `\rfz` e `\n`. Le indicazioni dinamiche possono essere posizionate manualmente sopra o sotto il rigo, come è spiegato in dettaglio in Direzione e posizionamento.

>     \relative c'' {
>       c2\ppp c\mp
>       c2\rfz c^\mf
>       c2_\spp c^\ff
>     }

Un’indicazione di crescendo inizia con `\<` e termina con `\!`, un’indicazione dinamica assoluta o un’ulteriore indicazione di crescendo o decrescendo. Un’indicazione di decrescendo inizia con `\>` e termina nello stesso modo, ovvero con `\!`, un’indicazione dinamica assoluta oppure un altro segno di crescendo o decrescendo. Si possono usare `\cr` e `\decr` al posto di `\<` e `\>`; si possono usare `\endcr` e `\enddecr` al posto di `\!` per terminare unindicazione di crescendo o decrescendo, rispettivamente. Le forcelle vengono create con questa notazione.

>     \relative c'' {
>       c2\< c\!
>       d2\< d\f
>       e2\< e\>
>       f2\> f\!
>       e2\> e\mp
>       d2\> d\>
>       c1\!
>     }

Una forcella che termina con `\!` si estenderà fino al margine destro della nota a cui è assegnato `\!`. Nel caso in cui sia terminata con l’inizio di un altro segno di crescendo o decrescendo, si estenderà fino al centro della nota a cui è assegnato il successivo `\<` o `\>`. La forcella successiva partirà dal margine destro della stessa nota invece che dal margine sinistro, come accade quando si termina con `\!`. Una forcella che termina sul battere si fermerà alla stanghetta precedente.

>     \relative {
>       c''1\< | c4 a c\< a | c4 a c\! a\< | c4 a c a\!
>     }

Le forcelle terminate con indicazioni dinamiche assolute invece che da `\!` avranno un aspetto simile. Tuttavia, la lunghezza dell’indicazione dinamica assoluta stessa può cambiare il punto in cui finisce la forcella precedente.

>     \relative {
>       c''1\< | c4 a c\mf a | c1\< | c4 a c\ffff a
>     }

Segni come crescendo o decrescendo devono spesso iniziare o terminare nel corso di una nota sostenuta. Lo si può fare con `\after`, che può essere usato anche per creare articolazioni o scritte testuali differite:

>     <<
>       \relative {
>         \after 2 \< c'1
>         d4\f\> e f g
>         \after 2. \pp c,1
>         \after 2. \fermata e
>         \after 2. ^"Fine." f
>       }
>       \relative {
>         \repeat unfold 12 c'4
>         c c c c\fermata
>         c c c c
>       }
>     >>

Si può usare ripetutamente `\after` per attaccare più di un’indicazione a una nota. Questo è utile soprattutto quando si aggiungono un crescendo e un decrescendo alla stessa nota:

>     \relative {
>       c''4\< d\! e\> c\!
>       \after 4 \< \after 2\> \after 2. \! f1
>       \textLengthOn
>       \after 4 \> \after 2. ^"hush!" c1
>       g4\pp
>     }

Se il primo di tale sequenza di segni su una nota coincide con l’attacco della nota, conviene attaccarlo a un accordo vuoto `<>`. In questo modo tutti i segni possono essere inseriti nel loro ordine visivo naturale:

>     {
>       <>\< \after 4 \> \after 2 \! c'1
>       % più facile da leggere e scrivere di:
>       \after 4 \> \after 2 \! c'1\<
>     }

Il comando `\espressivo` può essere usato anche per indicare un crescendo e un decrescendo sulla stessa nota. Tuttavia, si tenga presente che viene implementato come articolazione, non come dinamica.

>     \relative {
>       c''2 b4 a
>       g1\espressivo
>       \after 2. \espressivo c
>     }

Le indicazioni di crescendo testuali iniziano con `\cresc`, quelle di decrescendo con `\decresc` o `\dim`. Le linee di estensione sono aggiunte automaticamente.

>     \relative {
>       g'8\cresc a b c b c d e\mf |
>       f8\decresc e d c e\> d c b |
>       a1\dim ~ |
>       a2. r4\! |
>     }

Le indicazioni testuali per i cambi di dinamica possono essere impiegate anche per sostituire le forcelle:

>     \relative c'' {
>       \crescTextCresc
>       c4\< d e f\! |
>       \dimTextDecresc
>       g4\> e d c\! |
>       \dimTextDecr
>       e4\> d c b\! |
>       \dimTextDim
>       d4\> c b a\! |
>       \crescHairpin
>       \dimHairpin
>       c4\< d\! e\> d\! |
>     }

Per creare nuove indicazioni dinamiche assolute o testi da allineare alle dinamiche, si veda Nuove indicazioni dinamiche.

Il posizionamento verticale della dinamica è gestito da DynamicLineSpanner.

Esiste un contesto `Dynamics` che permette di posizionare le indicazioni dinamiche su un’apposita linea orizzontale. Si usano le pause spaziatrici per indicarne la collocazione temporale (le note in un contesto `Dynamics` occupano infatti il rispettivo valore musicale, ma senza comparire sul rigo). Il contesto `Dynamics` può contenere altri elementi utili come indicazioni testuali, estensori del testo e indicazioni di pedalizzazione del pianoforte.

>     <<
>       \new Staff \relative {
>         c'2 d4 e |
>         c4 e e,2 |
>         g'4 a g a |
>         c1 |
>       }
>       \new Dynamics {
>         s1\< |
>         s1\f |
>         s2\dim s2-"rit." |
>         s1\p |
>       }
>     >>

#### Comandi predefiniti

`\dynamicUp`, `\dynamicDown`, `\dynamicNeutral`, `\crescTextCresc`, `\dimTextDim`, `\dimTextDecr`, `\dimTextDecresc`, `\crescHairpin`, `\dimHairpin`.

#### Frammenti di codice selezionati

#### Impostare il comportamento delle forcelle sulle stanghette

Se la nota che termina una forcella si trova sul primo battito di una battuta, la forcella si ferma prima della stanghetta che precede la nota. Si può controllare questo comportamento modificando la proprietà `'to-barline`.

>     \relative c'' {
>       e4\< e2.
>       e1\!
>       \override Hairpin.to-barline = ##f
>       e4\< e2.
>       e1\!
>     }

#### Impostare la lunghezza minima delle forcelle

Se le forcelle sono troppo corte, possono essere allungate modificando la proprietà `minimum-length` dell’oggetto `Hairpin`.

>     <<
>       {
>         \after 4 \< \after 2 \> \after 2. \! f'1
>         \override Hairpin.minimum-length = #8
>         \after 4 \< \after 2 \> \after 2. \! f'1
>       }
>       {
>         \repeat unfold 8 c'4
>       }
>     >>

#### Allineare le estremità delle forcelle alle direzioni di NoteColumn

Le estremità delle forcelle possono essere allineate alle direzioni `LEFT`, `CENTER` o `RIGHT` dei grob `NoteColumn` modificando la proprietà `endpoint-alignments`, che è costituita da una coppia di numeri che rappresentano le estremità sinistra e destra della forcella. `endpoint-alignments` devono essere direzioni (-1, 0 o 1). Valori diversi verranno trasformati emettendo un avviso. Non ha effetto quando l’estremità destra di una forcella termina su una pausa; in questo caso termina sempre sul margine sinistro della pausa.

>     {
>       c'2\< <c' d'>\! |
>       \override Hairpin.endpoint-alignments = #'(1 . -1)
>       c'2\< <c' d'>\! |
>       \override Hairpin.endpoint-alignments = #`(,LEFT . ,CENTER)
>       c'2\< <c' d'>\! |
>     }

#### Spostare le estremità delle forcelle

Le estremità delle forcelle possono essere spostate in modo relativo alla loro posizione predefinita (offset) impostando la proprietà `shorten-pair` dell’oggetto `Hairpin`. Valori positivi spostano le estremità a destra, valori negativi le spostano a sinistra. Diversamente dalla proprietà `minimum-length`, questa proprietà modifica solo l’aspetto della forcella; non cambia la spaziatura orizzontale (inclusa la posizione delle dinamiche confinanti). Questo metodo è quindi utile per ritoccare una forcella entro lo spazio ad essa allocato.

>     {
>       c'1~\<
>       c'2~ c'\!
>       \once \override Hairpin.shorten-pair = #'(2 . 2)
>       c'1~\<
>       c'2~ c'\!
>       \once \override Hairpin.shorten-pair = #'(-2 . -2)
>       c'1~\<
>       c'2~ c'\!
>       c'1~\p-\tweak shorten-pair #'(2 . 0)\<
>       c'2~ c'\ffff
>     }

#### Forcelle con notazione al niente

Le forcelle di dinamica possono essere rappresentate con ua punta tonda (notazione “al niente”) impostando la proprietà `circled-tip` dell’oggetto `Hairpin` su `#t`.

>     \relative c'' {
>       \override Hairpin.circled-tip = ##t
>       c2\< c\!
>       c4\> c\< c2\!
>     }

#### Stampare le forcelle in vari stili

Il segno di dinamica della forcella può avere diversi stili

>     \relative c'' {
>       \override Hairpin.stencil = #flared-hairpin
>       a4\< a a a\f
>       a4\p\< a a a\ff
>       a4\sfz\< a a a\!
>       \override Hairpin.stencil = #constante-hairpin
>       a4\< a a a\f
>       a4\p\< a a a\ff
>       a4\sfz\< a a a\!
>       \override Hairpin.stencil = #flared-hairpin
>       a4\> a a a\f
>       a4\p\> a a a\ff
>       a4\sfz\> a a a\!
>       \override Hairpin.stencil = #constante-hairpin
>       a4\> a a a\f
>       a4\p\> a a a\ff
>       a4\sfz\> a a a\!
>     }

#### Dinamiche e segni testuali allineati verticalmente

Tutti gli oggetti `DynamicLineSpanner` (forcelle e testi di dinamica) sono posti a una distanza minima dal rigo determinata da `'staff-padding`. Se si imposta `'staff-padding` su un valore abbastanza grande, le dinamiche saranno allineate.

>     music = \relative c' {
>       a'2\p b\f
>       e4\p f\f\> g, b\p
>       c2^\markup { \huge gorgeous } c^\markup { \huge fantastic }
>     }

>     {
>       \music
>       \break
>       \override DynamicLineSpanner.staff-padding = #3
>       \textLengthOn
>       \override TextScript.staff-padding = #1
>       \music
>     }

#### Nascondere la linea di estensione per le dinamiche testuali

I cambi di dinamica in stile testuale (come cresc. e dim.) appaiono con una linea tratteggiata che mostra la loro estensione. Questa linea può essere soppressa nel modo seguente:

>     \relative c'' {
>       \override DynamicTextSpanner.style = #'none
>       \crescTextCresc
>       c1\< | d | b | c\!
>     }

#### Nascondere la linea di estensione per le dinamiche testuali

Il testo usato per i crescendo e i decrescendo può essere cambiato modificando le proprietà di contesto `crescendoText` e `decrescendoText`.

Lo stile della linea dell’estensore può essere cambiato modificando la proprietà `'style` di `DynamicTextSpanner`. Il valore predefinito è `'dashed-line`; gli altri valori possibili sono `'line`, `'dotted-line` e `'none`.

>     \relative c'' {
>       \set crescendoText = \markup { \italic { cresc. poco } }
>       \set crescendoSpanner = #'text
>       \override DynamicTextSpanner.style = #'dotted-line
>       a2\< a
>       a2 a
>       a2 a
>       a2 a\mf
>     }

#### Vedi anche

Glossario Musicale: al niente, crescendo, decrescendo, forcella. Manuale di apprendimento: Articolazioni e dinamiche.

Guida alla notazione: Direzione e posizionamento, Nuove indicazioni dinamiche, Miglioramento dell’output MIDI, Gestione delle dinamiche nel MIDI.

Frammenti: Expressive marks.

Guida al funzionamento interno: DynamicText, Hairpin, DynamicLineSpanner, Dynamics.

#### Nuove indicazioni dinamiche

Il modo più semplice per creare indicazioni dinamiche è usare gli oggetti `\markup`.

>     moltoF = \markup { molto \dynamic f }

>     \relative {
>       <d' e>16_\moltoF <d e>
>       <d e>2..
>     }

In modalità markup, si possono creare dinamiche editoriali (racchiuse tra parentesi normali o quadrate). La sintassi della modalità markup è descritta in Formattazione del testo.

>     roundF = \markup {
>         \center-align \concat { \bold { \italic ( }
>                \dynamic f \bold { \italic ) } } }
>     boxF = \markup { \bracket { \dynamic f } }
>     \relative {
>       c'1_\roundF
>       c1_\boxF
>     }

È possibile creare semplicemente indicazioni dinamiche centrate verticalmente con la funzione `make-dynamic-script`.

>     sfzp = #(make-dynamic-script "sfzp")
>     \relative {
>       c'4 c c\sfzp c
>     }

In generale, `make-dynamic-script` assume come argomento qualsiasi oggetto markup. Il tipo di carattere per la dinamica contiene solo i caratteri `f,m,p,r,s` e `z`; dunque, se si desidera creare un’indicazione dinamica che contenga testo semplice e simboli di punteggiatura, occorre usare dei comandi markup che ripristinino la famiglia e la codifica del tipo di carattere per il testo normale, ad esempio `\normal-text`. Il vantaggio nell’uso di `make-dynamic-script` al posto di un normale markup è l’allineamento verticale degli oggetti markup e delle forcelle collegate alla stessa testa di nota.

>     roundF = \markup { \center-align \concat {
>                \normal-text { \bold { \italic ( } }
>                \dynamic f
>                \normal-text { \bold { \italic ) } } } }
>     boxF = \markup { \bracket { \dynamic f } }
>     mfEspress = \markup { \center-align \line {
>                   \hspace #3.7 mf \normal-text \italic espress. } }
>     roundFdynamic = #(make-dynamic-script roundF)
>     boxFdynamic = #(make-dynamic-script boxF)
>     mfEspressDynamic = #(make-dynamic-script mfEspress)
>     \relative {
>       c'4_\roundFdynamic\< d e f
>       g,1~_\boxFdynamic\>
>       g1
>       g'1~\mfEspressDynamic
>       g1
>     }

Si può usare anche la forma Scheme della modalità markup. La sintassi è spiegata in Markup construction in Scheme.

>     moltoF = #(make-dynamic-script
>                 (markup #:normal-text "molto"
>                         #:dynamic "f"))
>     \relative {
>       <d' e>16 <d e>
>       <d e>2..\moltoF
>     }

Per allineare a sinistra il testo di dinamica invece di centrarlo su una nota, si usa un `\tweak`:

>     moltoF = \tweak DynamicText.self-alignment-X #LEFT
>              #(make-dynamic-script
>                 (markup #:normal-text "molto"
>                         #:dynamic "f"))
>     \relative {
>       <d' e>16 <d e>
>       <d e>2..\moltoF <d e>1
>     }

Le impostazioni dei tipi di carattere in modalità markup sono descritti in Scelta del tipo di carattere e della dimensione.

#### Vedi anche

Guida alla notazione: Formattazione del testo, Scelta del tipo di carattere e della dimensione, Miglioramento dell’output MIDI, Gestione delle dinamiche nel MIDI.

Extending LilyPond: Markup construction in Scheme.

Frammenti: Expressive marks.

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