4.1.4 Metodi di modifica

Il comando \override

Abbiamo già incontrato i comandi \set e \with, che servono a modificare le proprietà dei contesti e a togliere o aggiungere gli incisori, nei paragrafi Modificare le proprietà di contesto e Aggiungere e togliere gli incisori. Ora dobbiamo introdurre alcuni comandi più importanti.

Il comando che cambia le proprietà degli oggetti di formattazione è \override. Dato che questo comando ha il compito di modificare le caratteristiche interne fondamentali di LilyPond, la sua sintassi non è semplice come quella dei comandi presentati finora. Deve sapere esattamente quale proprietà di quale oggetto in quale contesto deve essere modificata e quale deve essere il suo nuovo valore. Vediamo come funziona.

La sintassi generale di questo comando è:

\override Contesto.OggettoDiFormattazione #'proprietà-formattazione =
#valore

Questo comando assegnerà alla proprietà chiamata proprietà-formattazione dell’oggetto di formattazione chiamato OggettoDiFormattazione, che fa parte del contesto Contesto, il valore valore.

Il Contesto può essere ommesso (e di solito lo è) quando il contesto richiesto è implicito e si trova a uno dei livelli più bassi dei contesti, come ad esempio Voice, ChordNames o Lyrics. Lo ometteremo in molti degli esempi seguenti; vedremo poi quando deve essere specificato.

Le sezioni successive tratteranno in modo dettagliato le proprietà e i loro valori, si veda Tipi di proprietà; in questa sezione, invece, useremo soltanto alcune proprietà e valori di facile comprensione, in modo da spiegare il formato e l’uso di questo comando.

Per ora non ti preoccupare del #', che deve precedere la proprietà di formattazione e del #, che deve precedere il valore. Tali segni vanno presentati esattamente in questa forma. Questo è il comando più usato nelle modifiche e quasi tutto il resto del capitolo ha lo scopo di mostrare alcuni esempi di utilizzo. Ecco un semplice esempio che mostra come cambiare il colore della testa di nota:

c4 d
\override NoteHead #'color = #red
e4 f |
\override NoteHead #'color = #green
g4 a b c |

[image of music]

Il comando \revert

Quando viene sovrascritta, la proprietà mantiene il suo nuovo valore finché non viene sovrascritta di nuovo o non si incontra un comando \revert. Il comando \revert fa sì che il valore della proprietà sia ripristinato al suo valore predefinito. Attenzione: non al suo valore precedente (nel caso siano stati inseriti vari comandi \override). Impiega la seguente sintassi:

\revert Contesto.OggettoDiFormmattazione #'proprietà-formattazione

Anche in questo caso, come per il comando \override, Contesto di solito non è necessario e verrà omesso in molti degli esempi seguenti. In questo esempio ripristiniamo il colore della testa delle ultime due note al valore predefinito:

c4 d
\override NoteHead #'color = #red
e4 f |
\override NoteHead #'color = #green
g4 a
\revert NoteHead #'color
b4 c |

[image of music]

Il prefisso \once

Sia il comando \override che il comando \set possono essere preceduti da \once. Questo fa sì che il successivo comando \override o \set sia effettivo solo in relazione a quel determinato momento musicale, prima che la proprietà sia ripristinata al suo valore precedente (che può essere diverso da quello predefinito se un altro \override è ancora attivo). Usando lo stesso esempio, possiamo cambiare il colore di una singola nota in questo modo:

c4 d
\override NoteHead #'color = #red
e4 f |
\once \override NoteHead #'color = #green
g4 a
\revert NoteHead #'color
b c |

[image of music]

Il comando \overrideProperty

Esiste un’altra forma di comando di sovrascrittura, \overrideProperty, che si rende necessario raramente. Lo menzioniamo qui per completezza, ma per approfondire l’argomento si veda Difficult tweaks.

Il comando \tweak

L’ultimo comando di modifica a disposizione è \tweak. Si usa quando vari oggetti compaiono nello stesso momento musicale, ma si vogliono modificare soltanto le proprietà di alcuni oggetti, come ad esempio una singola nota all’interno di un accordo. Se si usa \override la modifica ha effetto su tutte le note di un accordo, mentre \tweak ha effetto solo sul singolo elemento che segue.

Per esempio, supponiamo di voler modificare la dimensione della testa della nota centrale (il Mi) in un accordo di Do maggiore. Vediamo prima cosa succede se si usa \once \override:

<c e g>4
\once \override NoteHead #'font-size = #-3
<c e g>4
<c e g>4

[image of music]

Come si vede, la sovrascrittura riguarda tutte le teste di nota dell’accordo. Ciò è dovuto al fatto che tutte le note di un accordo si trovano nello stesso momento musicale e l’azione di \once consiste nell’applicare la sovrascrittura a tutti gli oggetti di formattazione del tipo specificato che si trovano nello stesso momento musicale del comando \override stesso.

Il comando \tweak funziona in modo diverso. Agisce sull’elemento immediatamente successivo nel flusso di codice. Nella sua forma più semplice funziona solo sugli oggetti creati direttamente dall’elemento seguente, in particolare teste di nota e articolazioni.

Tornando al nostro esempio, la dimensione della nota centrale di un accordo si cambia in questo modo:

<c e g>4
<c \tweak #'font-size #-3 e g>4

[image of music]

Si noti che la sintassi di \tweak è diversa da quella di \override. Il contesto non deve essere specificato; anzi, se lo fosse verrebbe generato un errore. Sia il contesto che l’oggetto di formattazione sono sottintesi dall’elemento che segue nel flusso di input. Nota anche che non ci devono essere segni di uguale (=). Dunque la forma semplice del comando \tweak è

\tweak #'proprietà-formattazione #valore

Il comando \tweak serve anche a modificare soltanto una di una serie di articolazioni:

a4^"Black"
  -\tweak #'color #red ^"Red"
  -\tweak #'color #green _"Green"

[image of music]

Nota che il comando \tweak deve essere preceduto da un segno di articolazione, perché la stessa espressione modificata deve essere applicata come articolazione. In caso di più sovrascritture della direzione (^ o _), prevale la sovrascrittura posizionata più a sinistra, perché viene applicata per ultima.

Alcuni oggetti, come gambi e alterazioni, vengono creati dopo, non direttamente dall’evento che segue. È comunque possibile usare \tweak con questi oggetti creati indirettamente se si indica esplicitamente l’oggetto di formattazione, purché LilyPond riesca a seguire la sua origine fino all’evento originale:

<\tweak Accidental #'color #red   cis4
 \tweak Accidental #'color #green es
                                  g>

[image of music]

Questa forma estesa del comando \tweak può essere descritta così

\tweak oggetto-formattazione #'proprietà-formattazione valore

Il comando \tweak è necessario anche quando si vuole cambiare l’aspetto di uno di una serie di gruppi irregolari annidati che iniziano nello stesso momento musicale. Nell’esempio seguente, la prima lunga parentesi del gruppo irregolare e la prima delle tre brevi parentesi iniziano nello stesso momento musicale, quindi qualsiasi comando \override produrrebbe degli effetti su entrambi. In questo esempio, si usa \tweak per distinguerli. Il primo comando \tweak indica che la lunga parentesi del gruppo irregolare deve essere posizionata sopra le note e il secondo indica che il numero del primo gruppo irregolare deve essere in rosso.

\tweak #'direction #up
\times 4/3 {
  \tweak #'color #red
  \times 2/3 { c8[ c c] }
  \times 2/3 { c8[ c c] }
  \times 2/3 { c8[ c c] }
}

[image of music]

Se i gruppi irregolari annidati non iniziano nello stesso momento, il loro aspetto può essere modificato come di consueto con i comandi \override:

\times 2/3 { c8[ c c] }
\once \override TupletNumber
  #'text = #tuplet-number::calc-fraction-text
\times 2/3 {
  c8[ c]
  c8[ c]
  \once \override TupletNumber #'transparent = ##t
  \times 2/3 { c8[ c c] }
  \times 2/3 { c8[ c c] }
}

[image of music]

Vedi anche

Guida alla Notazione: The tweak command.


Other languages: English, česky, deutsch, español, français, 日本語, nederlands.
About automatic language selection.

LilyPond — Learning Manual