[ << Conceptos fundamentales ] | [Top][Contents][Index] | [ Trucar la salida >> ] |
[ < Explicación de los grabadores ] | [ Up: Contextos y grabadores ] | [ Añadir y eliminar grabadores > ] |
4.3.4 Modificar las propiedades de los contextos
Los contextos se responsabilizan de mantener los valores de un
cierto número de properties de contexto. Muchas de ellas
se pueden cambiar para influir en la interpretación del código de
entrada y cambiar así la apariencia de la salida impresa. Se
modifican mediante la instrucción \set
. Esta instrucción
toma la forma siguiente:
\set NombreDelContexto.nombreDeLaPropiedad = valor
Donde el NombreDelContexto es normalmente Score
,
Staff
o Voice
. Se puede omitir, en cuyo caso se
supone que es Voice
.
Los nombres de las propiedades de contexto consisten en palabras unidas sin ningún guión o barra baja, y donde todas las palabras excepto la primera empiezan en mayúscula. A continuación podemos ver algunos ejemplos de nombres de propiedades utilizadas con frecuencia. Hay muchas más que las que se muestran aquí.
Nombre de la propiedad Tipo Función Valor de ejemplo extraNatural
booleano Si es verdadero, poner becuadros adicionales antes de las alteraciones ##t
,##f
currentBarNumber
entero Ajustar el número del compás actual 50
doubleSlurs
Booleano Si es verdadero, imprimir ligaduras de expresión por encima y por debajo de las notas ##t
,##f
instrumentName
texto Establecer el nombre del pentagrama, situado a la izquierda \markup { ... }
fontSize
real Aumentar o disminuir el tamaño de la fuente tipográfica 2.4
stanza
texto Establecer el texto que se imprime antes del comienzo de una estrofa "2"
En la tabla anterior, un valor Booleano es verdadero
(#t
, True) o falso (#f
, False), un entero es
un número entero (normalmente positivo), un número real es
un número decimal positivo o negativo, y el texto es una
cadena que se encierra entre comillas dobles. Observe el uso de
un cuadradillo adicionale, (‘#’), que debe usarse siempre que
siga una expresión de Scheme.
Antes de poder establecer cualquiera de estas propiedades, tenemos
que saber en qué contexto operan. A veces es algo obvio, pero en
ocasiones puede ser algo enrevesado. Si especificamos un contexto
equivocado, no se produce ningún mensaje de error, pero el
funcionamiento esperado no tendrá lugar. Por ejemplo, la
propiedad clefGlyph
(dibujo de la clave) vive claramente
dentro del contexto de Staff
, puesto que es el glifo de la
clave del pentagrama lo que se quiere cambiar. En este ejemplo,
la primera clave del pentagrama se imprime correctamente, pero no
la segunda (que imprime la clave predeterminada de Sol en lugar de
la de Fa), porque hemos omitido el nombre del contexto.
<< \new Staff \relative { \set Staff.clefGlyph = "clefs.C" c''2 c } \new Staff \relative { \set clefGlyph = "clefs.F" % Wrong! d'2 d } >>![]()
La segunda instrucción \set
establece la propiedad
Voice.clefGlyph
a clefs.F
, pero como LilyPond no
cuenta con clefGlyph
en el contexto Voice
, ajustar
el valor en ese lugar no tiene ningún efecto. Esto no es un error,
y no se produce ningún mensaje.
La propiedad clefGlyph
tendrá efecto solamente si se
establece dentro del contexto Staff
, pero algunas
propiedades se pueden establecer en más de un contexto. Por
ejemplo, la propiedad extraNatural
está establecida por
defecto al valor #t
(verdadero) para todos los pentagramas.
Si se establece a #f
(falso) en un contexto de Staff
determinado, se aplicará solamente a las alteraciones de ese
pentagrama. Si se establece a falso en el contexto de la
partitura, Score
, se aplicará a todos los contextos de
pentagrama donde no hubiera sido establecido.
Así, esto desactivará los becuadros adicionales en un pentagrama:
<< \new Staff \relative { aeses'2 aes } \new Staff \relative { \set Staff.extraNatural = ##f aeses'2 aes } >>![]()
y esto los desactivará en todos los pentagramas:
<< \new Staff \relative { aeses'2 aes } \new Staff \relative { \set Score.extraNatural = ##f aeses'2 aes } >>![]()
Como un ejemplo más, si se establece clefTransposition
dentro del contexto de Score
, se modifica la transposición
para los contextos de Staff
actuales y futuros en donde no
esté establecido de otra manera.
El comando opuesto, \unset
, elimina la propiedad del
contexto. Con frecuencia, otro comando \set
puede lograr el
mismo resultado observable que un \unset
. La principal
consideración es si el valor del contexto circundante debería
mostrarse. \set
lo enmascara y \unset
lo hace
visible.
Las instrucciones \set
y \unset
pueden aparecer en
cualquier lugar del archivo de entrada y tendrán efecto a partir
del tiempo en que se encuentran y hasta el final de la partitura o
hasta que la propiedad se establezca de nuevo mediante \set
o \unset
. Probemos a modificar el tamaño de la fuente
tipográfica, lo que afecta al tamaño de las cabezas de las notas
(entre otras cosas) varias veces. El valor se establece de forma
relativa al tamaño de fuente predeterminado, no al valor en curso.
\relative { c'4 d % make note heads smaller \set fontSize = -4 e4 f | % make note heads larger \set fontSize = 2.5 g4 a % return to default size \unset fontSize b4 c | }![]()
Hemos podido ver cómo establecer los valores de diversos tipos de
propiedad diferentes. Observe que las expresiones de Scheme van
siempre precedidas de un símbolo de cuadradillo, ‘#’, de
forma que los valores booleanos ‘verdadero’ y ‘falso’ se
especifican respectivamente mediante ##t
y ##f
, con
dos cuadradillos. Una propiedad de texto se debe encerrar entre
comillas dobles, como antes, aunque veremos más adelante que el
texto realmente se puede especificar de una forma mucho más
general utilizando la potentísima instrucción markup
.
Cambiar las propiedades de un contexto con \with
El valor de las propiedades de contexto se puede establecer en el
momento en que se crea el contexto. Cuando se crea un contexto
con una instrucción \new
puede ir inmediatamente seguido de
un bloque \with { … }
en el que se establecen los
valores iniciales de las propiedades. Por ejemplo, si quisiéramos
suprimir la impresión de becuadros adicionales, escribiríamos
\new Staff \with { extraNatural = ##f }
de la siguiente forma:
<< \new Staff { \relative { gisis'4 gis aeses aes } } \new Staff \with { extraNatural = ##f } { \relative { gisis'4 gis aeses aes } } >>![]()
\with
puede ser una forma clara de establecer valores que
se quieren mantener fijos para toda la duración del contexto. Sin
embargo, no hace nada para forzarlo; las propiedades inicializadas
de esta manera aún pueden cambiarse dinámicamente utilizando
\set
y \unset
.
Cambiar las propiedades de un contexto con \context
Los valores de propiedad de los contextos se pueden establecer
para todos los contextos de un tipo determinado, como por
ejemplo todos los contextos de Staff
, con una única
instrucción. El tipo de contexto se identifica mediante la
utilización del nombre de su tipo, como Staff
, precedido de
una barra invertida: \Staff
. El enunciado que establece el
valor de la propiedad es el mismo que el que está en un bloque
\with
, presentado anteriormente. Se coloca en un bloque
\context
dentro de un bloque \layout
. Cada bloque
\context
afecta a todos los contextos del tipo especificado
a lo largo del bloque \score
o \book
en el que
aparece el bloque \layout
. A continuación presentamos un
ejemplo que muestra el formato:
\score { \new Staff { \relative { cisis''4 e d cis } } \layout { \context { \Staff extraNatural = ##t } } }![]()
Si se quiere aplicar la sobreescritura de propiedades a todos los pentagramas 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 } } }![]()
Las propiedades de contexto establecidas de esta forma se pueden
sobreescribir para ejemplares concretos de contextos mediante
enunciados dentro de un bloque \with
, y mediante
instrucciones \set
intercaladas dentro de enunciados
musicales.
Véase también
Referencia de la notación: Cambiar los valores por omisión de los contextos, Set and unset.
Referencia de funcionamiento interno: Contexts, Tunable context properties.
[ << Conceptos fundamentales ] | [Top][Contents][Index] | [ Trucar la salida >> ] |
[ < Explicación de los grabadores ] | [ Up: Contextos y grabadores ] | [ Añadir y eliminar grabadores > ] |