[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

5.1 Contextos de interpretación

@translationof Interpretation contexts

Esta sección explica qué son los contextos y cómo modificarlos.

Véase también

Manual de aprendizaje: (learning)Contextos y grabadores sección ‘Contextos y grabadores’ en Manual de Aprendizaje.

Archivos de inicio: ‘ly/engraver-init.ly’, ‘ly/performer-init.ly’.

Fragmentos de código: (snippets)Contexts and engravers sección ‘Contexts and engravers’ en Fragmentos de código.

Referencia de funcionamiento interno: (internals)Contexts sección ‘Contexts’ en Referencia de Funcionamiento Interno, (internals)Engravers and Performers sección ‘Engravers and Performers’ en Referencia de Funcionamiento Interno.


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

5.1.1 Explicación de los contextos

@translationof Contexts explained

Los contextos se disponen de forma jerárquica:


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

Definiciones de salida - estructura de los contextos

@translationof Output definitions - blueprints for contexts

Esta sección explica la relevancia de las definiciones de salida cuando se trabaja con los contextos. Más adelante ofrecemos ejemplos de definiciones de salida reales (véase Cambiar todos los contextos del mismo tipo).

Aunque la música escrita en un archivo haga referencia a tipos y nombres de contexto, los contextos se crean solamente cuando la música se está realmente interpretando. LilyPond interpreta la música bajo el control de una ‘definición de salida’ y puede hacerlo así para varias definiciones de salida distintas, dando como resultado distintas salidas también. La definicion de salida que corresponde a la impresión de la música se especifica mediante \layout.

Una definición de salida mucho más sencilla que se usa para la producción de MIDI se especifica mediante \midi. Internamente, LilyPond utiliza varias otras definiciones de salida, como cuando se usa el combinador de particellas (Combinación automática de las partes) o se crean fragmentos de notas guía citadas (Citar otras voces).

Las definiciones de salida establecen la relación entre los contextos así como sus respectivos valores predeterminados. Aunque la mayor parte de los cambios se suelen hacer dentro de un bloque \layout, los ajustes de valores relacionados con el MIDI solamente tienen efecto cuando se hacen dentro de un bloque \midi block.

Algunos ajustes afectan a varias salidas: por ejemplo, si se desactiva el barrado automático, autoBeaming, dentro de algún contexto, las barras cuentan como melismas en lo que respecta a la correspondencia entre la música y la letra, como se describe en Duración automática de las sílabas. Esta correspondencia se hace tanto para la salida impresa como para el MIDI. Si los cambios hechos sobre el autoBeaming dentro de la definición de contexto de un bloque \layout no se repiten dentro del correspondiente bloque \midi, la letra y la música dejarán de estar sincronizadas dentro del MIDI.

Véase también

Archivos instalados: ‘ly/engraver-init.ly’. ‘ly/performer-init.ly’.


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

Score. El contexto maestro

@translationof Score - the master of all contexts

Este es el contexto de notación del nivel más alto. Ningún otro contexto puede contener a un contexto Score. De forma predeterminada, el contexto Score maneja la administración de las indicaciones de compás y se asegura de que ciertos elementos como claves, compases y armaduras están siempre alineados entre los distintos pentagramas.

Se crea implícitamente una instancia del contexto Score cuando se procesa un bloque \score {…}.


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

Contextos del nivel superior: contenedores de pentagramas

@translationof Top-level contexts - staff containers

StaffGroup

Agrupa pentagramas y añade un corchete en la parte izquierda, formando un grupo. Las líneas divisorias de los pentagramas contenidos se conectan verticalmente. StaffGroup sólo consiste en una colección de pentagramas, con un corchete delante y líneas divisorias de arriba a abajo.

ChoirStaff

Idéntico a StaffGroup excepto que las barras de compás de los pentagramas contenidos no se conectan verticalmente.

GrandStaff

Un grupo de pentagramas, con una llave en la parte izquierda que abarca el grupo. Las barras de compás de los pentagramas contenidos se conectan verticalmente.

PianoStaff

Igual que GrandStaff, pero contempla la posibilidad de poner el nombre del instrumento a la izquierda del sistema.


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

Contextos de nivel intermedio. Pentagramas

@translationof Intermediate-level contexts - staves

Staff

Maneja claves, barras de compás, tonalidades y alteraciones accidentales. Puede contener contextos de Voice.

RhythmicStaff

Como Staff, pero para imprimir ritmos. Al imprimir se ignoran las alturas de las notas; las notas se imprimen sobre una línea. La salida de MIDI conserva las alturas sin modificación.

TabStaff

Contexto para generar tablaturas. De forma predeterminada dispone la expresión musical como una tablatura de guitarra, impresa sobre seis líneas.

DrumStaff

Maneja el tipografiado para instrumentos de percusión. Puede contener contextos DrumVoice.

VaticanaStaff

Igual que Staff, excepto que está pensado para tipografiar piezas en estilo gregoriano.

MensuralStaff

Igual que Staff, excepto que está diseñado para tipografiar piezas en estilo mensural.


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

Contextos del nivel más bajo. Voces

@translationof Bottom-level contexts - voices

Los contextos del mismo nivel que Voice dan un valor inicial a ciertas propiedades e inician los grabadores correspondientes. Un contexto del nivel más bajo es aquel que no tiene un contexto descendiente predeterminado defaultchild. Aunque es posible hacer que pueda aceptar o contener subcontextos, éstos solo se pueden crear e introducir de forma explícita.

Voice

Corresponde a una voz sobre un pentagrama. este contexto maneja la conversión de las indicaciones dinámicas, plicas, barras, subíndices y superíndices, ligaduras de expresión y de unión, y silencios. Tenemos que crear instancias explícitas de este contexto si necesitamos varias voces en el mismo pentagrama.

VaticanaVoice

Lo mismo que Voice, excepto que está diseñado para tipografiar piezas en estilo gregoriano.

MensuralVoice

Lo mismo que Voice, con modificaciones para el tipografiado de piezas en estilo mensural.

Lyrics

Corresponde a una voz con letra. Maneja la impresión de una sola línea de letra.

DrumVoice

El contexto de voz utilizado en una pauta de percusión.

FiguredBass

El contexto en que los objetos BassFigure se crean a partir de la entrada escrita en el modo \figuremode.

TabVoice

El contexto de voz utilizado dentro de un contexto TabStaff. Se suele dejar que se cree implícitamente.

CueVoice

El contexto de voz que se utiliza para dibujar notas de tamaño reducido, con el principal objetivo de añadir notas guía de un pentagrama a otro, véase Formateo de las notas guía. Normalmente se deja que se cree implícitamente.

ChordNames

Tipografía nombres de acordes.


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

5.1.2 Crear y referenciar contextos

@translationof Creating and referencing contexts

LilyPond crea automáticamente contextos de nifel inferior si se encuentra una expresión musical antes de que exista un contexto adecuado, pero normalmente esto sólo funciona bien para partituras sencillas o fragmentos musicales como los que aparecen en la documentación. Para partituras más complejas, se recomienda especificar explícitamente todos los contextos con las instrucciones \new o \context. La sintaxis de estas dos instrucciones es muy similar:

 
[\new | \context] Contexto [ = nombre] [expresión_musical]

donde se puede especificar \new o \context. Contexto es el tipo de contexto que se desea crear, nombre es un nombre opcional que se da al contexto concreto que se está creando, y expresión_musical es una sola expresión musical que será interpretada por los complementos grabadores y reproductores dentro de este contexto.

El prefijo \new sin ningún nombre se usa con frecuencia para crear partituras con muchos pentagramas:

 
<<
  \new Staff \relative {
    % leave the Voice context to be created implicitly
    c''4 c
  }
  \new Staff \relative {
    d''4 d
  }
>>

[image of music]

y para introducir varias voces dentro de un solo pentagrama:

 
\new Staff <<
  \new Voice \relative {
    \voiceOne
    c''8 c c4 c c
  }
  \new Voice \relative {
    \voiceTwo
    g'4 g g g
  }
>>

[image of music]

\new debería usarse siempre para especificar contextos sin nombre.

La diferencia entre \new y \context se encuentra en la acción que se realiza:

Un contexto debe tener un nombre si se va a hacer referencia a él más tarde, por ejemplo cuando se asocia la letra con la música:

 
\new Voice = "tenor" música
…
\new Lyrics \lyricsto "tenor" letra

Para ver más detalles sobre la asociación de letra y música, consulte Duración automática de las sílabas.

Las propiedades de todos los contextos de un tipo en particular se pueden modificar dentro de un bloque \layout (con una sintaxis diferente), véase Cambiar todos los contextos del mismo tipo.

Esta construcción también ofrece una forma de mantener las instrucciones de disposición separadas del contenido musical. Si se va a modificar un solo contexto, debe usarse un bloque \with, véase Cambiar solamente un contexto determinado.

Véase también

Manual de aprendizaje: (learning)Organizar las piezas mediante variables sección ‘Organizar las piezas mediante variables’ en Manual de Aprendizaje.

Referencia de la notación: Cambiar solamente un contexto determinado, Duración automática de las sílabas.


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

5.1.3 Mantener vivos los contextos

@translationof Keeping contexts alive

Normalmente los contextos finalizan en el primer momento musical en que no tienen nada que hacer. Así, los contextos de Voice mueren tan pronto como ya no contienen ningún evento, los contextos de Staff mueren tan pronto como todos los contextos de Voice que contenían ya no contengan ningún evento, etc. Esto puede ocasionar dificultades si se tiene que hacer referencia a contextos anteriores que ya han muerto, por ejemplo, al cambiar de pentagramas con instrucciones \change, asociar letra con una voz mediante instrucciones \lyricsto, o cuando se añaden eventos musicales adicionales a un contexto anterior.

Existe una excepción a esta regla general: dentro de una construcción {…} (música secuencial), la noción que la construcción tiene del “contexto actual” descenderá un nivel cada vez que un elemento de la secuencia finaliza en un subcontexto del contexto anterior. Esto evita la creación espúrea de contextos implícitos en ciertas situaciones, pero significa que el primer contexto dentro del que se desciende, se va a mantener vivo hasta el final de la expresión.

Como contraste, los contextos de una expresión hecha con la construcción <<…>> (música simultánea) no se prolongan, por lo que si una instrucción que crea un contexto se encierra en otro par de <<…>>, se impedirá que el contexto persista durante toda la duración de la secuencia {…} que lo contiene.

Cualquier contexto se puede mantener vivo si nos aseguramos de que tiene algo que hacer en cualquier momento musical dado. Los contextos de Staff se mantienen con vida si nos aseguramos de que una de sus voces se mantiene viva. Una manera de hacerlo es añadir silencios de separación a una voz en paralelo con la música real. Éstos deben añadirse a todos y cada uno de los contextos de Voice que se hayan de mantener vivos. Si se van a usar esporádicamente varias voces, es más seguro mantenerlas todas vivas en lugar de tratar de confiar en las excepciones que hemos mencionado arriba.

En el ejemplo siguiente, tanto la voz A como la voz B se mantienen vivas de esta manera durante la duración de la pieza:

 
musicA = \relative { d''4 d d d }
musicB = \relative { g'4 g g g }
keepVoicesAlive = {
  <<
    \new Voice = "A" { s1*5 }  % Keep Voice "A" alive for 5 bars
    \new Voice = "B" { s1*5 }  % Keep Voice "B" alive for 5 bars
  >>
}

music = {
  \context Voice = "A" {
    \voiceOneStyle
    \musicA
  }
  \context Voice = "B" {
    \voiceTwoStyle
    \musicB
  }
  \context Voice = "A" { \musicA }
  \context Voice = "B" { \musicB }
  \context Voice = "A" { \musicA }
}

\score {
  \new Staff <<
    \keepVoicesAlive
    \music
  >>
}

[image of music]

El ejemplo siguiente muestra cómo se puede escribir una línea melódica esporádica con letra utilizando este enfoque. Por supuesto, en una situación real la melodía y el acompañamiento consistirían en varias secciones diferentes.

 
melody = \relative { a'4 a a a }
accompaniment = \relative { d'4 d d d }
words = \lyricmode { These words fol -- low the mel -- o -- dy }
\score {
  <<
    \new Staff = "music" {
      <<
        \new Voice = "melody" {
          \voiceOne
          s1*4  % Keep Voice "melody" alive for 4 bars
        }
        {
          \new Voice = "accompaniment" {
            \voiceTwo
            \accompaniment
          }
          <<
            \context Voice = "melody" { \melody }
            \context Voice = "accompaniment" { \accompaniment }
          >>
          \context Voice = "accompaniment" { \accompaniment }
          <<
            \context Voice = "melody" { \melody }
            \context Voice = "accompaniment" { \accompaniment }
          >>
        }
      >>
    }
    \new Lyrics \with { alignAboveContext = "music" }
    \lyricsto "melody" { \words }
  >>
}

[image of music]

Una forma alternativa, que podría resultar mejor en muchas situaciones, es mantener con vida la línea melódica simplemente incluyendo notas espaciadoras para alinearla correctamente con el acompañamiento:

 
melody = \relative {
  s1  % skip a bar
  a'4 a a a
  s1  % skip a bar
  a4 a a a
}
accompaniment = \relative {
  d'4 d d d
  d4 d d d
  d4 d d d
  d4 d d d
}
words = \lyricmode { These words fol -- low the mel -- o -- dy }

\score {
  <<
    \new Staff = "music" {
      <<
        \new Voice = "melody" {
          \voiceOne
          \melody
        }
        \new Voice = "accompaniment" {
          \voiceTwo
          \accompaniment
        }
      >>
    }
    \new Lyrics \with { alignAboveContext = "music" }
    \lyricsto "melody" { \words }
  >>
}

[image of music]


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

5.1.4 Modificar los complementos (plug-ins) de contexto

@translationof Modifying context plug-ins

Los contextos de notación (como Score y Staff) no sólo almacenan propiedades, también contienen «plug-ins» o complementos llamados ‘grabadores’ que crean elementos de notación. Por ejemplo, el contexto Voice contiene un grabador Note_heads_engraver que crea las cabezas de nota y el contexto Staff contiene un grabador Key_engraver que crea la armadura.

Para ver una descripción completa de todos y cada uno de los complementos, consulte (internals)Engravers and Performers sección ‘Engravers and Performers’ en Referencia de Funcionamiento Interno. Cada contexto que se describe en (internals)Contexts sección ‘Contexts’ en Referencia de Funcionamiento Interno relaciona los grabadores que se usan para ese contexto.

Puede ser de utilidad jugar un poco con estos complementos. Se hace iniciando un contexto nuevo con \new o \context y modificándolo:

 
\new contexto \with {
  \consists …
  \consists …
  \remove …
  \remove …
  etc.
}
{
  …música…
}

donde los … deben ser el nombre de un grabador. Aquí tenemos un ejemplo sencillo que suprime los grabadores Time_signature_engraver y Clef_engraver de un contexto Staff:

 
<<
  \new Staff \relative {
    f'2 g
  }
  \new Staff \with {
     \remove "Time_signature_engraver"
     \remove "Clef_engraver"
  } \relative {
    f'2 g2
  }
>>

[image of music]

En el segundo pentagrama no hay indicación de compás ni clave. Éste es un método bastante rudimentario de hacer que desaparezcan los objetos porque afecta a todo el pentagrama. Este método también afecta al espaciado, lo que puede ser deseable o no serlo. Se muestran métodos más sofisticados para quitar objetos en (learning)Visibilidad y color de los objetos sección ‘Visibilidad y color de los objetos’ en Manual de Aprendizaje.

El ejemplo siguiente muestra una aplicación práctica. Normalmente las líneas divisorias y las indicaciones de compás están sincronizadas a lo largo de toda la partitura. Lo hacen los grabadores Timing_translator y Default_bar_line_engraver. Estos complementos mantienen al día la administración de las indicaciones de compás, posición dentro del compás, etc. Moviendo estos grabadores desde el contexto de Score al de Staff, podemos conseguir una partitura en la que cada pentagrama tiene su propio compás independiente.

 
\score {
  <<
    \new Staff \with {
      \consists "Timing_translator"
      \consists "Default_bar_line_engraver"
    }
    \relative {
        \time 3/4
        c''4 c c c c c
    }
  \new Staff \with {
    \consists "Timing_translator"
    \consists "Default_bar_line_engraver"
  }
  \relative {
      \time 2/4
      c''4 c c c c c
  }
>>
\layout {
  \context {
    \Score
    \remove "Timing_translator"
    \remove "Default_bar_line_engraver"
    }
  }
}

[image of music]

Advertencias y problemas conocidos

El orden en que los grabadores se especifican es el orden en que se llaman para realizar su tarea de procesamiento. Normalmente, el orden en que se especifican los grabadores no tiene importancia, pero en algunos casos especiales sí la tiene, por ejemplo donde un grabador escribe una propiedad y otro la lee, o donde un grabador crea un groby otro debe procesarlo.

Las siguientes ordenaciones son importantes:

Véase también

Archivos instalados: ‘ly/engraver-init.ly’.


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

5.1.5 Cambiar los valores por omisión de los contextos

@translationof Changing context default settings

Se pueden cambiar las propiedades de contexto y de grob con las instrucciones \set y \override, tal y como se describe en Modificar las propiedades. Estas instrucciones crean eventos musicales, haciendo que los cambios tengan efecto en el punto temporal en que la música se está procesando.

Por contra, esta sección explica la forma de cambiarlos valores predeterminados de las propiedades de contexto y de grob en el momento en que se crea el contexto. Existen dos formas de hacerlo. Una modifica los valores predeterminados en todos los contextos de un tipo dado, y el otro modifica los valores predeterminados solamente en una instancia concreta de un contexto.


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

Cambiar todos los contextos del mismo tipo

@translationof Changing all contexts of the same type

Los ajustes de contexto predeterminados que se han de usar para la composición tipográfica dentro de Score, Staff, Voice y otros contextos se pueden especificar en un bloque \context dentro de cualquier bloque \layout.

Los ajustes para la salida MIDI, al contrario que para la composición tipográfica, se tendrán que especificar aparte en bloques \midi (véase Definiciones de salida - estructura de los contextos).

El bloque \layout se debe colocar dentro del bloque \score al que se aplica, después de la música.

 
\layout {
  \context {
    \Voice
    [ajustes de contexto para todos los contextos Voice]
  }
  \context {
    \Staff
    [ajustes de contexto para todos los contextos Staff]
  }
}

Se pueden especificar los siguientes tipos de ajustes:

Las instrucciones de ajuste de propiedades se pueden disponer dentro de un bloque \layout sin que estén encerradas en un bloque \context. Tales ajustes son equivalentes a incluir las mismas instrucciones de ajuste de propiedades al comienzo de cada uno de los contextos del tipo especificado. Si no se especifica ningún contexto, todos y cada uno de los contextos del nivel inferior quedan afectados, véase Contextos del nivel más bajo. Voces. La sintaxis de una instrucción de ajuste de propiedades dentro de un bloque \layout es la misma que si la misma instrucción estuviera escrita en el propio flujo musical.

 
\score {
  \new Staff {
    \relative {
      a'4^"Smaller font" a a a
      a4 a a a
    }
  }
  \layout {
    \accidentalStyle dodecaphonic
    \set fontSize = #-4
    \override Voice.Stem.thickness = #4.0
  }
}

[image of music]


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

Cambiar solamente un contexto determinado

@translationof Changing just one specific context

Las propiedades de contexto de una única instancia de contexto pueden cambiarse dentro de un bloque \with. Todas las demás instancias de contexto del mismo tipo retienen los ajustes predeterminados que LilyPond tiene programados y que se modifican por parte de cualquier bloque \layout que se encuentre dentro del ámbito. El bloque \with se debe situar inmediatamente después de las instrucciones \new context-type:

 
\new Staff \with { [ajustes de contexto para esta instancia de contexto solamente] }
{
  …
}

De forma alternativa, si la música se escribe usando la forma corta de las instrucciones de especificación de modo, como por ejemplo \chords en lugar de \chordmode, la instrucción \with se debe colocar inmediatamente después de la instrucción que especifica el modo:

 
\chords \with { [ajustes de contexto para esta instancia de contexto (implícita) solamente] }
{
  …
}

dado que es el contexto implícito creado por estas formas breves el que se quiere modificar. Se aplica la misma consideración a las otras formas cortas de especificar el modo de entrada (\drums, \figures), véase Modos de entrada.

Dado las modificaciones de contexto especificadas en bloques \with están dentro de la música, afectarán a todas las salidas (tipografía y también el MIDI), a diferencia de los cambios que se hacen dentro de una definición de salida.

Se pueden especificar los siguientes tipos de ajustes:

Véase también

Referencia de la notación: Modos de entrada


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

Orden de precedencia

@translationof Order of precedence

El valor de una propiedad que se aplica en un momento determinado se determina de la siguiente forma:

Véase también

Manual de aprendizaje: (learning)Modificar las propiedades de los contextos sección ‘Modificar las propiedades de los contextos’ en Manual de Aprendizaje.

Referencia de la notación: Explicación de los contextos, Contextos del nivel más bajo. Voces, La instrucción \set, La instrucción \override, El bloque \layout.


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

5.1.6 Definir contextos nuevos

@translationof Defining new contexts

Los contextos específicos, como Staff y Voice, están construidos a partir de bloques sencillos. Es posible crear nuevos tipos de contextos con combinaciones distintas de añadidos grabadores.

El siguiente ejemplo muestra cómo construir un tipo diferente de contexto de Voice partiendo de cero. Será parecido a Voice, pero imprime solamente cabezas centradas en forma de barra inclinada. Se puede usar para indicar improvisación en piezas de jazz,

[image of music]

Estos ajustes se definen dentro de un bloque \context que a su vez está dentro de un bloque \layout,

 
\layout {
  \context {
    …
  }
}

En el siguiente análisis, la entrada de ejemplo que se muestra debe ir en el lugar de los puntos suspensivos … del fragmento anterior.

En primer lugar es necesario definir un nombre para el nuevo contexto:

 
\name ImproVoice

Debido a que es parecido al contexto Voice, queremos órdenes que funcionen dentro de los contextos Voice (existentes) para que siga funcionando. Esto se consigue dando al contexto nuevo un alias de Voice,

 
\alias Voice

El contexto imprimirá notas y textos explicativos, por ello tenemos que añadir los grabadores que aportan esta funcionalidad, y además el grabador que agrupa las notas, plicas y silencios que están en el mismo momento musical en forma de columnas,

 
\consists "Note_heads_engraver"
\consists "Text_engraver"
\consists "Rhythmic_column_engraver"

Las cabezas de todas las notas se deben situar sobre la línea central,

 
\consists "Pitch_squash_engraver"
squashedPosition = #0

El grabador Pitch_squash_engraver modifica las cabezas de nota (creadas por el grabador Note_heads_engraver) y establece sus posiciones verticales al valor de squashedPosition, en este caso 0, la línea central.

Las notas parecen barras inclinadas y no tienen plica:

 
\override NoteHead.style = #'slash
\hide Stem

Todos estos complementos o plug-ins tienen que comunicarse bajo el control del contexto. Los mecanismos con el que se comunican los contextos se establecen mediante la declaración del \type (tipo) del contexto. Dentro de un bloque \layout, casi todos los contextos serán del tipo Engraver_group. Algunos contextos especiales y los contextos de los bloques \midi usan otros tipos. La copia y la modificación de una definición de contexto existente también cumplimentan el tipo. Como este ejemplo crea una definición partiendo de cero, tiene que ser especificada explícitamente.

 
\type "Engraver_group"

Al juntarlo todo, obtenemos

 
\context {
  \name ImproVoice
  \type "Engraver_group"
  \consists "Note_heads_engraver"
  \consists "Text_engraver"
  \consists "Rhythmic_column_engraver"
  \consists "Pitch_squash_engraver"
  squashedPosition = #0
  \override NoteHead.style = #'slash
  \hide Stem
  \alias Voice
}

Los contextos dan lugar a jerarquías. Queremos poner el contexto ImproVoice dentro del contexto Staff, igual que los contextos de voz normales. Por tanto, modificamos la definición de Staff con la instrucción \accepts (acepta),

 
\context {
  \Staff
  \accepts ImproVoice
}

Con frecuencia, al reutilizar una definición de contexto existente, el contexto resultante se puede usar en cualquier lugar donde el contexto original hubiera podido hacerlo.

 
\layout {
  …
  \inherit-acceptability to from
}

consigue que tengamos contextos del tipo to aceptados por todos los contextos que asimismo aceptan from. Por ejemplo, usar

 
\layout {
  …
  \inherit-acceptability "ImproVoice" "Voice"
}

añade un \accepts para ImproVoice tanto a la definición de Staff como a la de RhythmicStaff.

Lo opuesto a \accepts (acepta) es \denies (deniega), lo que a veces se necesita cuando se están reutilizando definiciones de contexto existentes.

Organizar las piezas requeridas dentro de un bloque \layout nos deja con

 
\layout {
  \context {
    \name ImproVoice
    …
  }
  \inherit-acceptability "ImproVoice" "Voice"
}

Así pues, la salida que aparece al comienzo de esta sub-sección se puede escribir como

 
\relative {
  a'4 d8 bes8
  \new ImproVoice {
    c4^"ad lib" c
    c4 c^"desvístete"
    c c_"mientras tocas :)"
  }
  a1
}

Para completar el ejemplo, los cambios que afectan a la jerarquía de contextos se deben repetir dentro de un bloque \midi de manera que la salida MIDI dependa de las mismas relaciones de contexto.

Véase también

Referencia de funcionamiento interno: (internals)Note_heads_engraver sección ‘Note_heads_engraver’ en Referencia de Funcionamiento Interno, (internals)Text_engraver sección ‘Text_engraver’ en Referencia de Funcionamiento Interno, (internals)Rhythmic_column_engraver sección ‘Rhythmic_column_engraver’ en Referencia de Funcionamiento Interno, (internals)Pitch_squash_engraver sección ‘Pitch_squash_engraver’ en Referencia de Funcionamiento Interno.


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

5.1.7 Orden de disposición de los contextos

@translationof Context layout order

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 (learning)Anidado de expresiones musicales sección ‘Anidado de expresiones musicales’ en Manual de Aprendizaje, Modificación de pentagramas sueltos y Técnicas específicas para la letra.

Véase también

Manual de aprendizaje: (learning)Anidado de expresiones musicales sección ‘Anidado de expresiones musicales’ en Manual de Aprendizaje.

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

Manual de utilización del programa: (usage)Aparece un pentagrama de más sección ‘Aparece un pentagrama de más’ en Utilización del Programa.

Archivos instalados: ‘ly/engraver-init.ly’.


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]

Este documento ha sido generado por gub el el 13 julio 2020 utilizando texi2html 1.82.

Otros idiomas: English, català, deutsch, français, italiano, 日本語.
Acerca de la selección automática del idioma.