5.4.7 Visibilidad de los objetos
Hay cuatro formas principales en que se puede controlar la
visibilidad de los objetos de presentación: se puede eliminar su
sello, se pueden volver transparentes, se pueden pintar de blanco,
o se puede sobreescribir su propiedad break-visibility
.
Las tres primeras se aplican a todos los objetos de presentación;
la última sólo a unos pocos: los objetos divisibles. El
Manual de aprendizaje introduce estas cuatro técnicas, véase
Visibilidad y color de los objetos.
Hay también algunas otras técnicas que son específicas de ciertos objetos de presentación. Se estudian bajo Consideraciones especiales.
Eliminar el sello | ||
Hacer transparentes los objetos | ||
Pintar los objetos de blanco | ||
Uso de break-visibility (visibilidad en el salto) | ||
Consideraciones especiales |
Eliminar el sello
Todo objeto de presentación tiene una propiedad stencil (sello).
De forma predeterminada está establecida a la función específica
que dibuja ese objeto. Si se sobreescribe esta propiedad a
#f
no se llama a ninguna función y el objeto no se dibuja.
La acción predeterminada se puede recuperar con \revert
.
a1 a \override Score.BarLine.stencil = ##f a a \revert Score.BarLine.stencil a a a
Esta operación, bastante común, tiene la forma abreviada
\omit
como atajo:
a1 a \omit Score.BarLine a a \undo \omit Score.BarLine a a a
Hacer transparentes los objetos
Todo objeto de presentación tiene una propiedad transparent
(transparente) que de forma predeterminada está establecida a
#f
. Si se fija a #t
el objeto aún ocupa espacio
pero es invisible.
a'4 a' \once \override NoteHead.transparent = ##t a' a'
Esta operación, bastante común, tiene la forma abreviada \hide
como atajo:
a'4 a' \once \hide NoteHead a' a'
Pintar los objetos de blanco
Todo objeto de presentación tiene una propiedad de color que de
forma predeterminada está establecida a black
(negro). Si
se sobreescribe a white
(blanco) el objeto será
indistinguible del fondo blanco. Sin embargo, si el objeto cruza
a otros objetos, el color de los puntos de cruce queda determinado
por el orden en que se dibujan estos objetos, lo que puede dejar
una imagen fantasma del objeto blanco, como puede verse aquí:
\override Staff.Clef.color = #white a'1
Se puede evitar esto cambiando el orden de impresión de los
objetos. Todos los objetos de presentación tienen una propiedad
layer
(capa) que se debe establecer a un valor entero. Los
objetos con el valor de layer
más bajo se dibujan primero,
después se dibujan los objetos con valores progresivamente
mayores, y así los objetos con valores más altos se dibujan encima
de los que tienen valores más bajos. De forma predeterminada,
casi todos los objetos tienen asignado un valor layer
de
1
, aunque algunos objetos, entre ellos el pentagrama y las
líneas divisorias, StaffSymbol
y BarLine
, tienen
asignado un calor de 0
. El orden de impresión de los
objetos con el mismo valor de layer
es indeterminado.
En el ejemplo de arriba, la clave blanca, con un valor
layer
predeterminado de 1
, se dibuja después de las
líneas del pentagrama (valor layer
predeterminado de
0
), sobreimpresionándolas. Para cambiarlo, se debe dar al
objeto Clef
un valor de layer
más bajo, digamos
-1
, para que se dibuje antes:
\override Staff.Clef.color = #white \override Staff.Clef.layer = #-1 a'1
Uso de break-visibility (visibilidad en el salto)
Casi todos los objetos de presentación se imprimen una sola vez,
pero algunos como las líneas divisorias, claves, indicaciones de
compás y armaduras de tonalidad, se pueden tener que imprimir dos
veces cuando se produce un salto de línea : una vez al final de la
línea y otra al comienzo de la siguiente. Estos objetos reciben
el nombre de divisibles, y tienen una propiedad,
break-visibility
(visibilidad en el salto), para controlar
su visibilidad en las tres posiciones en que pueden aparecer: al
comienzo de una línea, dentro de la línea si se produce un cambio,
y al final de la línea si el cambio se produce en ese lugar.
Por ejemplo, la indicación de compás se imprime de forma predeterminada al comienzo de la primera línea y en ningún otro lugar a no ser que cambie, en cuyo caso se imprime en el punto en que se produce el cambio. Si este cambio se produce al final de una línea, la nueva indicación de compás se imprime al principio de la línea siguiente y también al final de la línea anterior como indicación de precaución.
Este comportamiento se controla por medio de la propiedad
break-visibility
, que se explica en
Visibilidad y color de los objetos. Esta propiedad
toma un vector de tres valores booleanos que, por orden,
determinan si el objeto se imprime al final, dentro, o al
principio de la línea. O, para ser más exactos: antes del salto
de línea, si no hay salto, o después del salto.
Como alternativa se puede especificar cualquiera de las ocho combinaciones mediante funciones predefinidas cuya definición está en ‘scm/output-lib.scm’, donde las tres últimas columnas indican si los objetos de presentación serán visibles en las posiciones que se muestran en el encabezamiento de cada columna:
Forma | Forma | Antes del | Si no hay | Después del |
---|---|---|---|---|
de función | de vector | salto | salto | salto |
all-visible | #(#t #t #t) | sí | sí | sí |
begin-of-line-visible | #(#f #f #t) | no | no | sí |
center-visible | #(#f #t #f) | no | sí | no |
end-of-line-visible | #(#t #f #f) | sí | no | no |
begin-of-line-invisible | #(#t #t #f) | sí | sí | no |
center-invisible | #(#t #f #t) | sí | no | sí |
end-of-line-invisible | #(#f #t #t) | no | sí | sí |
all-invisible | #(#f #f #f) | no | no | no |
Los ajustes predeterminados de break-visibility
dependen
del objeto de presentación. La tabla siguiente muestra todos los
objetos de presentación de interés que resultan afectados por
break-visibility
y el ajuste predeterminado de esta
propiedad:
Objeto | Contexto usual | Valor predet. |
---|---|---|
BarLine | Score | calculado |
BarNumber | Score | begin-of-line-visible |
BreathingSign | Voice | begin-of-line-invisible |
Clef | Staff | begin-of-line-visible |
Custos | Staff | end-of-line-visible |
DoublePercentRepeat | Voice | begin-of-line-invisible |
KeyCancellation | Staff | begin-of-line-invisible |
KeySignature | Staff | begin-of-line-visible |
ClefModifier | Staff | begin-of-line-visible |
RehearsalMark | Score | end-of-line-invisible |
TimeSignature | Staff | all-visible |
El ejemplo de abajo muestra el uso de la forma de vector para controlar la visibilidad de las líneas divisorias:
\relative { f'4 g a b f4 g a b % Remove bar line at the end of the current line \once \override Score.BarLine.break-visibility = ##(#f #t #t) \break f4 g a b f4 g a b }
Aunque los tres componentes del vector utilizado para
sobreescribir break-visibility
deben estar presentes, no
todos son efectivos para todos los objetos de presentación, y
algunas combinaciones pueden incluso dar errores. Son de
aplicación las siguientes limitaciones:
- Las líneas divisorias no se pueden imprimir al principio de la línea.
-
No se puede imprimir el número de compás al principio de la
primera línea a no ser que su valor establecido sea
distinto de
1
. - Clave: véase la sección siguiente.
-
Las repeticiones dobles de tipo porcentaje se imprimen todas
siempre o bien no se imprimen nunca. Utilice
begin-of line-invisible
para imprimirlas yall-invisible
para suprimirlas. - Armadura: véase la sección siguiente.
- ClefModifier: véase la sección siguiente.
Consideraciones especiales
Visibilidad después de un cambio explícito
La propiedad break-visibility
controla la visibilidad de
las armaduras y cambios de clave sólo al principio de las líneas,
es decir, después de un salto. No tiene ningún efecto sobre la
visibilidad de la armadura o la clave después de un cambio
explícito de tonalidad o de clave dentro o al final de una línea.
En el ejemplo siguiente la armadura que sigue al cambio explícito
de tonalidad a Si bemol mayor es visible incluso con
all-invisible
establecido.
\relative { \key g \major f'4 g a b % Try to remove all key signatures \override Staff.KeySignature.break-visibility = #all-invisible \key bes \major f4 g a b \break f4 g a b f4 g a b }
La visibilidad de estos cambios explícitos de tonalidad y de clave
se controla por medio de las propiedades
explicitKeySignatureVisibility
y
explicitClefVisibility
. Son los equivalentes de la
propiedad break-visibility
y las dos toman un vector de
tres valores booleanos o las funciones predefinidas relacionadas
anteriormente, exactamente igual que break-visibility
. Las
dos son propiedades del contexto Staff, no de los propios objetos
de presentación, y por tanto se establecen utilizando la
instrucción \set
. Las dos están establecidas de forma
predeterminada al valor all-visible
. Estas propiedades
controlan sólo la visibilidad de las armaduras y las claves que
resultan de los cambios explícitos y no afectan a las armaduras y
tonalidades que están al principio de las líneas; para quitarlas,
aún se debe sobreescribir la propiedad break-visibility
en
el objeto correspondiente.
\relative { \key g \major f'4 g a b \set Staff.explicitKeySignatureVisibility = #all-invisible \override Staff.KeySignature.break-visibility = #all-invisible \key bes \major f4 g a b \break f4 g a b f4 g a b }
Visibilidad de las alteraciones de precaución
Para eliminar las alteraciones de cancelación que se imprimen en
un cambio de tonalidad explícito, establezca la propiedad
printKeyCancellation
del contexto Staff a #f
:
\relative { \key g \major f'4 g a b \set Staff.explicitKeySignatureVisibility = #all-invisible \set Staff.printKeyCancellation = ##f \override Staff.KeySignature.break-visibility = #all-invisible \key bes \major f4 g a b \break f4 g a b f4 g a b }
Con estas sobreescrituras solamente permanecen las alteraciones accidentales delante de las notas para indicar el cambio de tonalidad.
Observe que al modificar la tonalidad a Do mayor o
La menor, las alteraciones de cancelación serían la
única indicación del cambio de armadura. En este caso, el
establecimiento de printKeyCancellation
al valor #f
no tiene ningún efecto:
\relative { \key g \major f'4 g a b \set Staff.explicitKeySignatureVisibility = #all-invisible \set Staff.printKeyCancellation = ##f \key c \major f4 g a b \break f4 g a b f4 g a b }
En lugar de ello, para suprimir las alteraciones de cancelación
aún cuando la armadura cambia a Do mayor o a La menor,
sobreescriba la visibilidad del grob KeyCancellation
:
\relative { \key g \major f'4 g a b \set Staff.explicitKeySignatureVisibility = #all-invisible \override Staff.KeyCancellation.break-visibility = #all-invisible \key c \major f4 g a b \break f4 g a b f4 g a b }
Líneas divisorias automáticas
Como caso especial, la impresión de las líneas divisorias también
se puede inhabilitar estableciendo la propiedad
automaticBars
en el contexto Score. Si se fija a
#f
, las barras de compás no se imprimen automáticamente; se
deben crear explícitamente con una instrucción \bar
. A
diferencia de la instrucción predefinida \cadenzaOn
, los
compases se siguen contando. La generación de compases continúa
de acuerdo a esta cuenta si esta propiedad se establece
posteriormente a #t
. Si se fija al valor #f
, sólo
pueden producirse saltos de línea en instrucciones \bar
explícitas.
Claves transportadas
El pequeño símbolo de transposición sobre una clave se produce por
parte del objeto ClefModifier
. Su visibilidad se hereda
automáticamente de la del objeto Clef
, así que no es
necesario aplicar las sobreescrituras correspondientes
break-visibility
a los objetos ClefModifier
para
suprimir los símbolos de transposición u octavación para las
claves invisibles.
Para los cambios de clave explícitos, la propiedad
explicitClefVisibility
controla tanto el símbolo de clave
como el símbolo de transposición o de octava asociado.
Véase también
Manual de aprendizaje: Visibilidad y color de los objetos