[ << Conceptes fonamentals ] | [Part superior][Continguts][Índex] | [ Ajustament de la sortida >> ] |
[ < Explicació dels gravadors ] | [ Amunt : Contextos i gravadors ] | [ Afegir i eliminar gravadors > ] |
4.3.4 Modificar les propietats dels contextos
Els contextos es responsabilitzen de mantenir els valors d’un cert
nombre de properties de context. Moltes d’elles es poden
canviar per influir en la interpretació del codi d’entrada i
canviar així l’aparença de la sortida impresa. Es modifiquen
mitjançant la instrucció \set
. Aquesta instrucció pren la
forma següent:
\set NomDelContext.nomDeLaPropietat = #valor
On el NomDelContext és normalment Score
,
Staff
o Voice
. Es pot ometre, i en aquest cas se
suposa que és el context en curs (normalment Voice
).
Els noms de les propietats de context consisteixen en paraules unides sense cap guió o barra fixa, i on totes les paraules excepte la primera comencen en majúscula. A continuació podem veure alguns exemples de noms de propietats utilitzades amb freqüència. Hi ha moltes més que les que es mostren aquí.
nomDeLaPropietat | Tipus | Funció | Valor d’exemple |
---|---|---|---|
extraNatural | Booleà | Si és vertader, posa becaires addicionals abans de les alteracions | #t , #f |
currentBarNumber | Enter | Ajustar el número del compàs actual | 50 |
doubleSlurs | Booleà | Si és vertader, imprimir lligadures d’expressió per sobre i per sota de les notes | #t , #f |
instrumentName | Text | Establir el nom del pentagrama, situat a l’esquerra | "Cello I" |
fontSize | Real | Augmentar o disminuir la mida de la font tipogràfica | 2.4 |
stanza | Text | Establir el text que s’imprimeix abans del començament d’una estrofa | "2" |
on un valor Booleà es vertader (#t
, True) o fals
(#f
, False), un Enter és un nombre enter positiu, un nombre
real és un nombre decimal positiu o negatiu, i el text es tanca
entre cometes dobles. Observeu l’aparició de signes de coixinet
(#
), en dos llocs diferents: com a part del valor Booleà
abans de la t
o la f
, i abans del valor dins
de la instrucció \set
. Així doncs, quan s’està escrivint
un valor Booleà, s’han d’escriure dos signes de coixinet, per
exemple: ##t
.
Abans de poder establir qualsevol d’aquestes propietats, hem de
saber en quin context operen. A vegades és quelcom obvi, però en
ocasions pot ser quelcom complicat. Si especifiquem un context
equivocat, no es produeix cap missatge d’error, però el
funcionament esperat no tindrà lloc. Per exemple, la propietat
instrumentName
(nom de l’instrument) viu clarament dins del
context de Staff
, ja que és el pentagrama el que ha de ser
anomenat. En aquest exemple, el primer pentagrama resulta
etiquetat, però no el segon, perquè hem omès el nom del context.
<< \new Staff \relative { \set Staff.instrumentName = "Soprano" c''2 c } \new Staff \relative { \set instrumentName = "Alto" % Incorrecte! d'2 d } >>
Recordeu que el nom del context predeterminat és Voice
,
així que la segona instrucció \set
estableix la propietat
instrumentName
del context Voice
a “Alto”, pero com
el LilyPond no busca aquesta propietat al context Voice
, no
es realitza cap acció. Això no és un error, i no es registra cap
missatge al fitxer Log del registre d’errors.
De forma semblant, si el nom de la propietat s’escriu amb alguna
falta, no es produeix cap missatge d’error, i clarament l’acció
esperada no pot tenir lloc. De fet, es pot establir qualsevol
‘property’ (fictícia) usant qualsevol nom que volem en qualsevol
context que existeixi, mitjançant l’ús de la instrucció
\set
. Però si el nom no és conegut per al LilyPond, no
produirà cap acció. Alguns editors de text que donen suport als
fitxers d’entrada del LilyPond de manera especial, documenten els
noms de propietats amb vinyetes quan passem sobre ells el punter
del ratolí, com ara JEdit amb l’extensió LilyPondTool, o destaquen
els noms de propietats desconegudes de manera diferent, com ara
ConTEXT. Si no s’utilitza un editor amb aquesta possibilitats, es
recomana comprovar la correcció del nom de la propietat al manual
de Referència de funcionament intern: vegeu
Tunable context properties o
Contexts.
La propietat instrumentName
tindrà efecte solament si
s’estableix dins del context Staff
, però algunes propietats
es poden establir a més d’un context. Per exemple, la propietat
extraNatural
està establerta de forma predeterminada al
valor ##t
(vertader) per a tots els pentagrames. Si
s’estableix a ##f
(fals) en un context de Staff
determinat s’aplicarà solament a les alteracions d’aquest
pentagrama. Si s’estableix a fals en el context de la partitura,
Score
, s’aplicarà a tots els pentagrames.
Així, això desactivarà els bequadres addicionals a un pentagrama:
<< \new Staff \relative { aeses'2 aes } \new Staff \relative { \set Staff.extraNatural = ##f aeses'2 aes } >>
i això els desactivarà a tots els pentagrames:
<< \new Staff \relative { aeses'2 aes } \new Staff \relative { \set Score.extraNatural = ##f aeses'2 aes } >>
Com un exemple més, si s’estableix clefTransposition
dins
del context de Score
, aquesta instrucció canvia
immediatament el valor de la transposició en tots els pentagrames
en curs i estableix un nou valor predeterminat que s’aplicarà a
tots els pentagrames.
La instrucció oposada, \unset
, té l’efecte de suprimir la
propietat del context, el que ocasiona que la major part de les
propietats tornin al seu valor predeterminat. Normalment no és
necessari l’ús de \unset
, atès que una nova instrucció
\set
farà l’ajust desitjat.
Les instruccions \set
i \unset
poden aparèixer en
qualsevol lloc del fitxer d’entrada i tindran un efecte a partir
del temps on es troben i fins al final de la partitura o fins que la
propietat es torni a establir mitjançant \set
o
\unset
. Provem a modificar la mida de la font tipogràfica,
el que afecta la mida dels caps de les notes (entre altres coses)
diverses vegades. El canvi s’agafa a partir del valor
predeterminat, no el valor en curs.
c4 d % fes que els caps de nota siguin més petits \set fontSize = #-4 e4 f | % fes que els caps de nota siguin més grans \set fontSize = #2.5 g4 a % torna a la mida predeterminada \unset fontSize b4 c |
Hem pogut veure com establir els valors de diversos tipus de
propietat diferents. Observeu que els nombres enters i reals van
sempre precedits d’un símbol de coixinet, #
, mentre que un
valor booleà vertader o fals s’especifica mitjançant
##t
i ##f
, amb dos coixinets. Una propietat de
test s’ha de tancar entre cometes dobles, com abans, tot i que
veurem més endavant que el text realment es pot especificar d’una
forma molt més general utilitzant la molt potent instrucció
markup
.
Canviar les propietats d’un context amb \with
El valor predeterminat de les propietats de context es pot
establir en el moment que es crea el context. A vegades aquesta
forma d’establir el valor d’una propietat és molt més clara, si ha
de quedar fix durant tot el temps que duri el context. Quan es
crea un context amb una instrucció \new
pot anar
immediatament seguit d’un bloc \with { … }
en el
que s’estableix els valors predeterminats de les propietats. Per
exemple, si volem suprimir la impressió de bequadres addicionals per
a tota la duració d’un pentagrama, podem escriure:
\new Staff \with { extraNatural = ##f }
de la forma següent:
<< \new Staff { \relative { gisis'4 gis aeses aes } } \new Staff \with { extraNatural = ##f } { \relative { gisis'4 gis aeses aes } } >>
Les propietats ajustades d’aquesta manera encara poden canviar-se
dinàmicament utilitzant \set
i tornar-se al valor
predeterminat que es va establir al bloc \with
mitjançant
\unset
.
Així doncs, si la propietat fontSize
s’ajusta dins d’una
instrucció \with
, té l’efecte de reiniciar el valor
predeterminat de la mida de la font tipogràfica. Si més tard es
modifica amb \set
, aquest nou valor predeterminat pot
restablir-se amb la instrucció \unset fontSize
.
Canviar las propietats d’un context amb \context
Els valors de propietat dels contextos es poden establir per a
tots els contextos d’un tipus determinat, com per exemple
tots els contextos de Staff
, amb una única instrucció. El
tipus de context s’identifica mitjançant la utilització del nom
del seu tipus, com Staff
, precedit d’una barra invertida:
\Staff
. L’enunciat que estableix el valor de la propietat
és el mateix que el que està en un bloc \with
, presentat
anteriorment. Es col·loca en un bloc \context
dins d’un
bloc \layout
. Cada bloc \context
afecta a tots els
contextos del tipus especificat al llarg del bloc \score
o
\book
en el que apareix el bloc \layout
. A
continuació presentem un exemple que mostra el format:
\score { \new Staff { \relative { cisis''4 e d cis } } \layout { \context { \Staff extraNatural = ##t } } }
Si es vol aplicar la sobreescriptura de propietats a tos els pentagrames de la partitura:
\score { << \new Staff { \relative { gisis'4 gis aeses aes } } \new Staff { \relative { gisis'4 gis aeses aes } } >> \layout { \context { \Score extraNatural = ##f } } }
Les propietats de context establertes d’aquesta forma es poden
sobreescriure per a exemples concrets de contextos mitjançant
enunciats dins d’un bloc \with
, i mitjançant instruccions
\set
intercalades dins d’enunciats musicals.
Vegeu també
Referència de la notació: Canvi dels paràmetres predeterminats dels contextos. L'ordre set
Referència de funcionament intern: Contexts, Tunable context properties.
[ << Conceptes fonamentals ] | [Part superior][Continguts][Índex] | [ Ajustament de la sortida >> ] |
[ < Explicació dels gravadors ] | [ Amunt : Contextos i gravadors ] | [ Afegir i eliminar gravadors > ] |