| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@translationof Interpretation contexts
Esta sección explica qué son los contextos y cómo modificarlos.
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] | [ ? ] |
@translationof Contexts explained
Los contextos se disponen de forma jerárquica:
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@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.
Archivos instalados: ‘ly/engraver-init.ly’. ‘ly/performer-init.ly’.
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@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] | [ ? ] |
@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] | [ ? ] |
@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] | [ ? ] |
@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] | [ ? ] |
@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 } >>
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 } >>
\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:
\new con un nombre o sin él, siempre crea un contexto nuevo
y distinto, incluso si ya existe un contexto con el mismo nombre:
\new Staff << \new Voice = "A" \relative { \voiceOne c''8 c c4 c c } \new Voice = "A" \relative { \voiceTwo g'4 g g g } >>
\context con un nombre especificado, crea un contexto nuevo
solamente si no existe ya un contexto del mismo tipo y con el
mismo nombre, dentro de la misma jerarquía de contextos. En caso
contrario, se toma como referencia a dicho contexto creado
previamente, y su expresión musical se pasa a este contexto para
su interpretación.
Una aplicación de los contextos con nombre es la separación entre la disposición de la partitura y el contenido musical. Son válidas culaquiera de las dos formas siguientes:
\score { << % score layout \new Staff << \new Voice = "one" { \voiceOne } \new Voice = "two" { \voiceTwo } >> % musical content \context Voice = "one" { \relative { c''4 c c c } } \context Voice = "two" { \relative { g'8 g g4 g g } } >> }
\score { << % score layout \new Staff << \context Voice = "one" { \voiceOne } \context Voice = "two" { \voiceTwo } >> % musical content \context Voice = "one" { \relative { c''4 c c c } } \context Voice = "two" { \relative { g'8 g g4 g g } } >> }
De manera alternativa, se pueden utilizar variables con un efecto similar. Véase (learning)Organizar las piezas mediante variables sección ‘Organizar las piezas mediante variables’ en Manual de Aprendizaje.
\context sin ningún nombre corresponderá con el primer
contexto que se encuentre entre los creados previamente que sean
del mismo tipo dentro de la misma jerarquía de contextos, incluso
si tiene nombre, y su expresión musical se pasará a dicho contexto
para su interpretación. Esta forma rara vez es útil. Sin
embargo, \context sin nombre y sin expresión musical se usa
para establecer el contexto en que se ejecuta un procedimiento de
Scheme especificado con \applyContext:
\new Staff \relative {
c'1
\context Timing
\applyContext #(lambda (ctx)
(newline)
(display (ly:context-current-moment ctx)))
c1
}
|
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.
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] | [ ? ] |
@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 >> }
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 } >> }
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 } >> }
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@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 } >>
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" } } }
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:
Bar_engraver debe ir normalmente en
primer lugar,
New_fingering_engraver debe ir
antes del grabador Script_column_engraver de columnas de
inscripciones,
Timing_translator debe ir antes del grabador de números
de compás Bar_number_engraver.
Archivos instalados: ‘ly/engraver-init.ly’.
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@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.
| Cambiar todos los contextos del mismo tipo | ||
| Cambiar solamente un contexto determinado | ||
| Orden de precedencia |
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@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:
\override, pero omitiendo el nombre del
contexto
\score { \relative { a'4^"Thicker stems" a a a a4 a a\ff a } \layout { \context { \Staff \override Stem.thickness = #4.0 } } }
\score { \relative { a'4^"Smaller font" a a a a4 a a\ff a } \layout { \context { \Staff fontSize = #-4 } } }
\dynamicUp o una
expresión musical como \accidentalStyle dodecaphonic
\score { \relative { a'4^"Dynamics above" a a a a4 a a\ff a } \layout { \context { \Voice \dynamicUp } \context { \Staff \accidentalStyle dodecaphonic } } }
\with; para ver detalles acerca del bloque \with,
consulte Cambiar solamente un contexto determinado.
StaffDefaults = \with { fontSize = #-4 } \score { \new Staff { \relative { a'4^"Smaller font" a a a a4 a a a } } \layout { \context { \Staff \StaffDefaults } } }
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 } }
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@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:
\override, pero omitiendo el nombre del
contexto
\score { \new Staff { \new Voice \with { \override Stem.thickness = #4.0 } { \relative { a'4^"Thick stems" a a a a4 a a a } } } }
\score { << \new Staff { \relative { a'4^"Default font" a a a a4 a a a } } \new Staff \with { fontSize = #-4 } { \relative { a'4^"Smaller font" a a a a4 a a a } } >> }
\dynamicUp
\score { << \new Staff { \new Voice { \relative { a'4^"Dynamics below" a a a a4 a a\ff a } } } \new Staff \with { \accidentalStyle dodecaphonic } { \new Voice \with { \dynamicUp } { \relative { a'4^"Dynamics above" a a a a4 a a\ff a } } } >> }
Referencia de la notación: Modos de entrada
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@translationof Order of precedence
El valor de una propiedad que se aplica en un momento determinado se determina de la siguiente forma:
\override o \set
dentro del flujo musical, se usa dicho valor,
\with en las instrucciones de inicio del
contexto,
\context
más reciente que corresponda dentro de los bloques \layout
o \midi,
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] | [ ? ] |
@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,
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.
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] | [ ? ] |
@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 } >> }
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" } } }
\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.
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.