5.1.7 Orden de disposición de los contextos

Los contextos se disponen en un sistema normalmente desde arriba hacia abajo en el orden en que se encuentran en el archivo de entrada. Cuando los contextos se anidan unos dentro de otros, el contexto exterior incluye a los contextos anidados tal y como se especifica en el archivo de entrada, siempre y cuando los contextos interiores estén incluidos en la lista “accepts” del contexto externo. Los contextos anidados que no está nincluidos en la lista “accepts” del contexto externo se recolocan debajo del contexto externo en lugar de anidarse dentro de él.

La lista “accepts” de un contexto se puede cambiar con las instrucciones \accepts (acepta) o \denies (niega). \accepts añade un contexto a la lista “accepts” y \denies elimina un contexto de la lista.

Por ejemplo, un grupo de pentagramas con un corchete cuadrado no se encuentra normalmente en el interior de un pentagrama con llave curva que tenga conectadas las líneas divisorias, y un GrandStaff para piano no acepta un StaffGroup dentro de él, de forma predeterminada.

\score {
  \new GrandStaff <<
    \new StaffGroup <<
      \new Staff { c'1 }
      \new Staff { d'1 }
    >>
    \new Staff { \set Staff.instrumentName = bottom f'1 }
  >>
}

[image of music]

Sin embargo, usando la instrucción \accepts, se puede añadir un StaffGroup al contexto GrandStaff:

\score {
  \new GrandStaff <<
    \new StaffGroup <<
      \new Staff { c'1 }
      \new Staff { d'1 }
    >>
    \new Staff { \set Staff.instrumentName = bottom f'1 }
  >>
  \layout {
    \context {
      \GrandStaff
      \accepts StaffGroup
    }
  }
}

[image of music]

\denies se usa principalmente cuando un contexto nuevo se está basando en otro, pero los anidamientos requeridos difieren. Por ejemplo, el contexto VaticanaStaff está basado en el contexto Staff, pero con el contexto VaticanaVoice sustituido por el contexto Voice en la lista “accepts”.

Observe que discretamente se crea un contexto de forma implícita si se encuentra una instrucción donde no hay un contexto apropiado para contenerlo.

Dentro de una definición de contexto, el tipo de un subcontexto que se va a crear implícitamente se especifica usando \defaultchild (hijo predeterminado). Algunos eventos musicales requieren un contexto ‘Bottom’ (inferior): cuando se encuentra este evento, se crean subcontextos de forma recursiva hasta que se alcanza un contexto que no tiene establecido el ‘defaultchild’.

La creación implícita de contextos puede dar lugar a pentagramas o partituras nuevos no esperados. La utilización de \new para crear contextos explícitamente evita esos problemas.

En ocasiones se necesita que un contexto exista durante un breve intervalo de tiempo, siendo un buen ejemplo el contexto de pentagrama de un ossia. Esto se consigue normalmente mediante la introducción de la definición del contexto en el lugar apropiado en paralelo con la sección correspondiente de la música principal. De forma predeterminada, el contexto tempral se coloca debajo de todos los contextos existentes. Para reposicionarlo por encima del contexto que tenga el nombre “principal”, debería definirse de esta forma:

\new Staff \with { alignAboveContext = "principal" }

Se presenta una situación similar cuando se posiciona un contexto temporal de letra de una canción dentro de una disposición de varios pentagramas tal como ChoirStaff, por ejemplo, cuando se añade una segunda estrofa a una sección que se repite. De forma predeterminada, el contexto temporal de letra se coloca debajo de los pentagramas inferiores. Mediante la definición del contexto temporal de letra con alignBelowContext se puede posicionar correctamente debajo del contexto de letra con nombre que contiene el texto de la primera estrofa.

En diversos lugares pueden verse ejemplos que muestran esta recolocación de contextos temporales: véase Anidado de expresiones musicales, Modificación de pentagramas sueltos y Técnicas específicas para la letra.

Véase también

Manual de aprendizaje: Anidado de expresiones musicales.

Referencia de la notación: Modificación de pentagramas sueltos, Técnicas específicas para la letra.

Manual de utilización del programa: Aparece un pentagrama de más.

Archivos instalados: ly/engraver-init.ly.


Referencia de la notación de GNU LilyPond v2.25.21 (rama de desarrollo).