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

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

[image of music]

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

[image of music]


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'

[image of music]

Esta operación, bastante común, tiene la forma abreviada \hide como atajo:

a'4 a'
\once \hide NoteHead
a' a'

[image of music]


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

[image of music]

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

[image of music]


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:

FormaFormaAntes delSi no hayDespués del
de funciónde vectorsaltosaltosalto
all-visible#(#t #t #t)
begin-of-line-visible#(#f #f #t)nono
center-visible#(#f #t #f)nono
end-of-line-visible#(#t #f #f)nono
begin-of-line-invisible#(#t #t #f)no
center-invisible#(#t #f #t)no
end-of-line-invisible#(#f #t #t)no
all-invisible#(#f #f #f)nonono

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:

ObjetoContexto usualValor predet.
BarLineScorecalculado
BarNumberScorebegin-of-line-visible
BreathingSignVoicebegin-of-line-invisible
ClefStaffbegin-of-line-visible
CustosStaffend-of-line-visible
DoublePercentRepeatVoicebegin-of-line-invisible
KeyCancellationStaffbegin-of-line-invisible
KeySignatureStaffbegin-of-line-visible
ClefModifierStaffbegin-of-line-visible
RehearsalMarkScoreend-of-line-invisible
TimeSignatureStaffall-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
}

[image of music]

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:


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
}

[image of music]

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
}

[image of music]

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
}

[image of music]

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
}

[image of music]

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
}

[image of music]

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


LilyPond — Referencia de la notación v2.23.82 (rama de desarrollo).