[ << Concetti fondamentali ] | [Inizio][Contenuti][Indice][ ? ] | [ Tweaking output >> ] | ||
[ < Gli incisori ] | [ Su : Contesti e incisori ] | [ Aggiungere e togliere gli incisori > ] |
3.3.4 Modificare le proprietà di contesto
I contesti si occupano di tenere i valori di un certo numero di
proprietà del contesto. Molte di queste possono essere cambiate
per influenzare l’interpretazione dell’input e quindi modificare
l’aspetto dell’output. Per cambiarle si usa il comando
\set
. Questo assume la seguente forma
\set NomeDelContesto.nomeDellaProprietà = #valore
Dove il NomeDelContesto è di solito Score
,
Staff
o Voice
. Può essere omesso,
e in questo caso viene considerato come contesto Voice
.
I nomi delle proprietà del contesto consistono in parole unite insieme e senza lineette o trattini bassi, e solo la prima parola inizia con una lettera maiuscola. Ecco alcuni esempi di quelle più usate comunemente. Ma ne esistono molte altre.
nomeDellaProprietà | Tipo | Funzione | Valore di esempio |
---|---|---|---|
extraNatural | Booleano | Se è vero, mette i segni di bequadro prima degli accidenti | |
currentBarNumber | Intero | Imposta il numero della battuta corrente | |
doubleSlurs | Booleano | Se è vero, stampa le legature di portamento sia sopra che sotto le note | |
instrumentName | Testo | Imposta il nome da inserire all’inizio del rigo | |
fontSize | Reale | Aumenta o riduce la dimensione del carattere | |
stanza | Testo | Imposta il testo da stampare prima dell’inizio di una strofa | |
mentre un Booleano è o Vero (#t
) o Falso (#f
),
un Intero è un numero intero positivo, un Reale è un numero
decimale positivo o negativo, e il testo è racchiuso tra
virgolette. Si noti la presenza del segno cancelletto,
(#
), in due punti diversi – come parte del valore Booleano
prima di t
o f
, e prima del valore
nell’affermazione \set
. Dunque quando si inserisce un valore
Booleano bisogna scrivere due cancelletti, ad esempio ##t
.
Prima di poter impostare una qualsiasi di queste proprietà dobbiamo sapere
in quale contesto esse operino. Talvolta questo è ovvio,
ma talvolta può risultare complicato. Se viene specificato il
contesto sbagliato, non viene generato alcun messaggio di errore, ma l’azione
desiderata non avrà luogo. Ad esempio, la proprietà
instrumentName
risiede ovviamente nel contesto Staff
, poiché
è il pentagramma a dover essere nominato.
Nell’esempio seguente viene etichettato il primo pentagramma, ma non il secondo,
perché abbiamo omesso il nome del contesto.
<< \new Staff \relative c'' { \set Staff.instrumentName = #"Soprano" c4 c } \new Staff \relative c' { \set instrumentName = #"Alto" % Wrong! d4 d } >>
Ricorda che il nome di contesto predefinito è Voice
, dunque il
secondo comando \set
imposta la proprietà instrumentName
nel
contesto Voice
col valore “Alto”, ma dato che LilyPond non trova
tale proprietà nel contesto Voice
, non ha avuto luogo
alcuna altra azione. Questo non è un errore, e nessun messaggio di
errore viene riportato nel file di log.
Analogalmente, se il nome della proprietà è stato scritto male, non viene
generato alcun messaggio di errore, e ovviamente l’azione desiderata non può essere
eseguita. Infatti, col comando \set
puoi impostare qualsiasi ‘proprietà’
(anche inventata) usando qualsiasi nome che ti piaccia in qualsiasi contesto
esistente. Ma se LilyPond non conosce il nome, allora non verrà intrapresa
alcuna azione. Alcuni editor di testo che hanno uno speciale supporto per i file
di input di LilyPond presentano i nomi delle proprietà con una lista scorrevole
al passaggio del mouse, come JEdit col plugin LilyPondTool, oppure
evidenziano in modo diverso i nomi delle proprietà non conosciuti, come fa ConTEXT.
Se non usi un editor con queste funzionalità, è consigliabile controllare il nome
delle proprietà nella Guida al funzionamento interno: si veda
Tunable context properties, o
Contexts.
La proprietà instrumentName
funzionerà soltanto se
inserita nel contesto Staff
, ma alcune proprietà
possono essere collocate in più di un contesto.
Ad esempio, la proprietà extraNatural
è impostata di
default sul valore ##t (vero) su tutti i righi.
Se viene impostata su ##f (falso) in uno specifico contesto Staff
si applica solo alle alterazioni presenti su quel rigo.
Se impostata su falso nel contesto Score
si applica a tutti i righi.
Quindi in questo modo si disattiva il bequadro su un rigo:
<< \new Staff \relative c'' { ais4 aes } \new Staff \relative c'' { \set Staff.extraNatural = ##f ais4 aes } >>
e in questo modo si disattiva in tutti i righi:
<< \new Staff \relative c'' { ais4 aes } \new Staff \relative c'' { \set Score.extraNatural = ##f ais4 aes } >>
Un altro esempio: se la proprietà clefOctavation
viene posta
nel contesto Score
, cambia immediatamente il valore
dell’ottavazione in tutti i righi presenti e imposta un nuovo
valore predefinito che sarà applicato a tutti i righi.
Il comando opposto, \unset
, di fatto rimuove la proprietà
dal contesto, e questo fa sì che molte proprietà
tornino al valore predefinito. Solitamente \unset
non è
necessario dal momento che un nuovo comando \set
permetterà
di ottenere quanto si desidera.
I comandi \set
e \unset
possono trovarsi in qualsiasi
punto del file di input e avranno effetto dal momento in cui si
incontrano fino alla fine della partitura o finché la proprietà non
viene attivata (\set
) o disattivata (\unset
) di nuovo.
Proviamo a cambiare varie volte la dimensione del font, che influisce (tra
le altre cose) sulla dimensione delle teste delle note. La modifica è relativa
al valore predefinito, non all’ultimo valore impostato.
c4 % make note heads smaller \set fontSize = #-4 d e % make note heads larger \set fontSize = #2.5 f g % return to default size \unset fontSize a b
Abbiamo visto come impostare i valori di diversi tipi di
proprietà. Si note che gli interi e i numeri sono sempre preceduti
da un segno di cancelletto, #
, mentre un valore vero o falso è
specificato con ##t
e ##f
, con due cancelletti. Una proprietà testuale
dovrebbe essere racchiusa tra virgolette, come abbiamo visto prima, sebbene
vedremo in seguito che in realtà il testo può essere specificato in un
modo molto più generale usando il potente comando \markup
.
Setting context properties with \with
Il valore predefinito delle proprietà di contesto possono essere impostate
anche nel momento in cui il contesto viene creato. Talvolta questo è un
modo più chiaro per specificare il valore della proprietà se questa deve
rimanere fissa per la durata del contesto. Un contesto creato col comando \new
può essere immediatamente seguito da un blocco \with { .. }
dove
vengono impostati i valori predefiniti della proprietà. Ad esempio, se vogliamo
eliminare la stampa del bequadro per l’estensione di un rigo possiamo scrivere:
\new Staff \with { extraNatural = ##f }
così:
<< \new Staff \relative c'' { gis ges aes ais } \new Staff \with { extraNatural = ##f } \relative c'' { gis ges aes ais } >>
Oppure, se la sovrascrittura della proprietà deve essere applicata a tutti
i righi della partitura, può essere aggiunto a un comando
\new Score
esplicito, in questo modo:
\score { \new Score \with { extraNatural = ##f } << \new Staff { \relative c'' { gis ges aes ais } } \new Staff { \relative c'' { gis ges aes ais } } >> }
Si possono ancora cambiare dinamicamente le proprietà impostate in questo modo
usando \set
, mentre con \unset
si possono riportare al valore
predefinito impostato nel blocco \with
.
Quindi se la proprietà fontSize
viene inserita in una
proposizione \with
, imposta il valore predefinito
della dimensione del font. Se viene in seguito modificato con \set
,
questo nuovo valore predefinito può essere recuperato col comando
\unset fontSize
.
Setting context properties with \context
I valori delle proprietà di un contesto possono essere impostate in tutti
i contesti di un particolare tipo, così come in tutti i contesti Staff
, con un
solo comando. Il tipo di contesto viene identificato attraverso il
suo nome, come Staff
, preceduto da una barra inversa (backslash): \Staff
.
La dichiarazione che imposta il valore della proprietà è la stessa che
abbiamo visto nel blocco \with
, introdotto prima. Viene posta in
un blocco \context
all’interno di un blocco \layout
. Ogni
blocco \context
avrà effetto su tutti i contesti del tipo specificato
nel blocco \score
o \book
nel quale il blocco
\layout
si trova. Ecco un esempio per mostrare la struttura:
\score { \new Staff { \relative c'' { cis4 e d ces } } \layout { \context { \Staff extraNatural = ##t } } }
Le proprietà di contesto impostate in questo modo possono essere sovrascritte per
alcuni particolari contesti attraverso asserzioni in un blocco \with
, e tramite
comandi \set
incorporati nelle asserzioni musicali.
Vedi anche
Guida alla notazione: Changing context default settings.
Guida al funzionamento interno: Contexts, Tunable context properties.
[ << Concetti fondamentali ] | [Inizio][Contenuti][Indice][ ? ] | [ Tweaking output >> ] | ||
[ < Gli incisori ] | [ Su : Contesti e incisori ] | [ Aggiungere e togliere gli incisori > ] |
Other languages: English, deutsch, español, français, 日本語, nederlands.