[ << Modifica dell'output ] | [Inizio][Contenuti][Indice] | [ Modelli >> ] |
[ < Convenzioni per i nomi di oggetti e proprietà ] | [ Su : Modifiche di base ] | [ Il comando override > ] |
5.1.4 Metodi di modifica
Il comando \override | ||
Il comando \revert | ||
Il prefisso \once | ||
Il comando di ritocco \tweak | ||
Il prefisso \single |
[ << Modifica dell'output ] | [Inizio][Contenuti][Indice] | [ Modelli >> ] |
[ < Metodi di modifica ] | [ Su : Metodi di modifica ] | [ Il comando revert > ] |
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 omesso (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.
Le espressioni fondamentali di LilyPond sono gli elementi musicali come le note e le durate, ma anche le stringhe di testo e le annotazioni. Le espressioni più specifiche come numeri, simboli e liste sono elaborate nella ‘modalità Scheme’, che viene invocata inserendo ‘#’ prima del valore. Per maggiori informazioni sulla modalità Scheme, si veda LilyPond Scheme syntax.
\override
è 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:
\relative { c'4 d \override NoteHead.color = "red" e4 f | \override NoteHead.color = "green" g4 a b c | }
[ << Modifica dell'output ] | [Inizio][Contenuti][Indice] | [ Modelli >> ] |
[ < Il comando override ] | [ Su : Metodi di modifica ] | [ Il prefisso once > ] |
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.OggettoDiFormattazione.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:
\relative { c'4 d \override NoteHead.color = "red" e4 f | \override NoteHead.color = "green" g4 a \revert NoteHead.color b4 c | }
[ << Modifica dell'output ] | [Inizio][Contenuti][Indice] | [ Modelli >> ] |
[ < Il comando revert ] | [ Su : Metodi di modifica ] | [ Il comando di ritocco tweak > ] |
Il prefisso \once
I comandi \override
, revert
, \set
e \unset
possono
essere preceduti da \once
. Questo fa sì che tale comando sia operativo
solo in 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:
\relative { c'4 d \override NoteHead.color = "red" e4 f | \once \override NoteHead.color = "green" g4 a \revert NoteHead.color b c | }
Il prefisso \once
può essere usato anche di fronte a molti
comandi predefiniti per limitare il loro effetto a un momento musicale:
\relative { c'4( d) \once \slurDashed e4( f) | g4( a) \once \hideNotes b( c) | }
[ << Modifica dell'output ] | [Inizio][Contenuti][Indice] | [ Modelli >> ] |
[ < Il prefisso once ] | [ Su : Metodi di modifica ] | [ Il prefisso single > ] |
Il comando di ritocco \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
:
\relative { <c' e g>4 \once \override NoteHead.font-size = #-3 <c e g>4 <c e g>4 }
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:
\relative { <c' e g>4 <c \tweak font-size #-3 e g>4 }
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:
a'4^"Nero" -\tweak color "red" ^"Rosso" -\tweak color "green" _"Verde"
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" cis''4 \tweak Accidental.color "green" es'' g''>
Questa forma estesa del comando \tweak
può essere descritta così
\tweak OggettoFormattazione.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.
\relative c'' { \tweak direction #up \tuplet 3/4 { \tweak color "red" \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } } }
Se i gruppi irregolari annidati non iniziano nello stesso momento, il loro
aspetto può essere modificato come di consueto con i comandi \override
:
\relative { \tuplet 3/2 { c'8[ c c] } \once \override TupletNumber.text = #tuplet-number::calc-fraction-text \tuplet 3/2 { c8[ c] c8[ c] \once \override TupletNumber.transparent = ##t \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } } }
Vedi anche
Guida alla Notazione: Il comando tweak.
[ << Modifica dell'output ] | [Inizio][Contenuti][Indice] | [ Modelli >> ] |
[ < Il comando di ritocco tweak ] | [ Su : Metodi di modifica ] | [ Manuale del Funzionamento interno > ] |
Il prefisso \single
Immaginiamo di voler enfatizzare alcune teste di nota in particolare colorandole di rosso e aumentandone la dimensione; e immaginiamo anche che per comodità abbiamo definito una funzione per fare ciò:
emphNoteHead = { \override NoteHead.color = "red" \override NoteHead.font-size = 2 } \relative { c''4 a \once \emphNoteHead f d | }
Il prefisso \once
funziona bene se si desidera enfatizzare note
singole o interi accordi, ma non permette di enfatizzare una singola
nota dentro un accordo. Prima abbiamo visto come si possa usare
\tweak
per fare ciò, vedi Il comando di ritocco \tweak
.
Ma non è possibile usare \tweak
in una funzione; è in questo caso che
torna utile il comando \single
:
emphNoteHead = { \override NoteHead.color = "red" \override NoteHead.font-size = 2 } \relative { <c'' a \single \emphNoteHead f d>4 }
In sintesi, \single
converte le modifiche introdotte dal comando
\override
in modifiche eseguite dal comando \tweak
.
Ciò significa che quando ci sono vari oggetti che si trovano nello stesso
momento musicale (come le teste di nota in un accordo), \single
avrà
effetto su uno solo, quello generato dall’espressione musicale immediatamente
seguente; a differenza di \once
, che ha effetto su tutti questi oggetti.
Usando \single
in questo modo qualsiasi funzione usata come
scorciatoia che contiene soltanto \override
può essere applicata
a note individuali in un accordo. Tuttavia, \single
non converte
\revert
, \set
e \unset
in modifiche che hanno le
proprietà di \tweak
.
Vedi anche
Manuale di apprendimento:
Il comando di ritocco \tweak
,
Uso delle variabili per modificare la formattazione.
[ << Modifica dell'output ] | [Inizio][Contenuti][Indice] | [ Modelli >> ] |
[ < Il comando di ritocco tweak ] | [ Su : Metodi di modifica ] | [ Manuale del Funzionamento interno > ] |