Siguiente: Alinear los contextos, Anterior: Cambiar los valores por omisión de los contextos, Arriba: Contextos de interpretación
Los contextos específicos, como Staff
y Voice
, están construidos a base 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,
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 sobre
contextos de Voice
(existentes) para que siga funcionando. Esto se consigue dando al
contexto nuevo un alias Voice
,
\alias Voice
El contexto imprimirá notas y textos explicativos, por ello tenemos que añadir los grabadores que aportan esta funcionalidad,
\consists Note_heads_engraver \consists Text_engraver
Pero sólo necesitamos esto en 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 \override Stem #'transparent = ##t
Todos estos añadidos tienen que cooperar, y esto se consigue con un añadido especial,
que se debe marcar con la palabra clave \type
.
Este será siempre Engraver_group,
\type "Engraver_group"
Al juntarlo todo, obtenemos
\context { \name ImproVoice \type "Engraver_group" \consists "Note_heads_engraver" \consists "Text_engraver" \consists Pitch_squash_engraver squashedPosition = #0 \override NoteHead #'style = #'slash \override Stem #'transparent = ##t \alias Voice }
Los contextos dan lugar a jerarquías. Queremos colgar el contexto ImproVoice
bajo el contexto Staff
, como simples Voice
s normales. Por tanto, modificamos
la definición de Staff
con la instrucción
\accepts
(acepta),
\context { \Staff \accepts ImproVoice }
Lo opuesto a \accepts
(acepta) es \denies
(deniega),
lo que a veces se necesita cuando se están reutilizando definiciones de contexto existentes.
Ponemos ambos dentro de un bloque \layout
, como
\layout { \context { \name ImproVoice ... } \context { \Staff \accepts "ImproVoice" } }
Así pues, la salida que aparece al comienzo de esta sub-sección se puede escribir como
\relative c'' { a4 d8 bes8 \new ImproVoice { c4^"ad lib" c c4 c^"undress" c c_"while playing :)" } a1 }
Siguiente: Alinear los contextos, Anterior: Cambiar los valores por omisión de los contextos, Arriba: Contextos de interpretación
Esta página corresponde a LilyPond-2.11.40 (rama de desarrollo).
Informe de los fallos a http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs.
Se agradecen las sugerencias para la documentación.