@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
-Translation of GIT committish: bcd9d85bfc1dd6cc2dd3e98901b4df33fd6d0989
+Translation of GIT committish: a43fe59b0205af99f84532935b103d0c064b4526
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.15.39"
+@c \version "2.19.2"
@node Cambiar los valores por omisión
@chapter Cambiar los valores por omisión
@menu
* Explicación de los contextos::
-* Crear contextos::
+* Crear y referenciar contextos::
* Mantener vivos los contextos::
* Modificar los complementos (plug-ins) de contexto::
* Cambiar los valores por omisión de los contextos::
Los contextos se disponen de forma jerárquica:
@menu
+* Definiciones de salida - estructura de los contextos::
* Score. El contexto maestro::
* Contextos del nivel superior. Contenedores de pentagramas::
* Contextos de nivel intermedio. Pentagramas::
* Contextos del nivel más bajo. Voces::
@end menu
+@node Definiciones de salida - estructura de los contextos
+@unnumberedsubsubsec 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
+@ref{Cambiar todos los contextos del mismo tipo}).
+
+@cindex salida, definiciones de
+@funindex \layout
+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 @q{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
+@code{\layout}.
+
+@funindex \midi
+Una definición de salida mucho más sencilla que se usa para la
+producción de MIDI se especifica mediante @code{\midi}.
+Internamente, LilyPond utiliza varias otras definiciones de
+salida, como cuando se usa el combinador de particellas
+(@ref{Combinación automática de las partes}) o se crean fragmentos
+de notas guía citadas (@ref{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 @code{\layout}, los ajustes de valores relacionados con el
+MIDI solamente tienen efecto cuando se hacen dentro de un bloque
+@code{\midi} block.
+
+@funindex autoBeaming
+Algunos ajustes afectan a varias salidas: por ejemplo, si se
+desactiva el barrado automático, @code{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 @ref{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 @code{autoBeaming} dentro de
+la definición de contexto de un bloque @code{\layout} no se
+repiten dentro del correspondiente bloque @code{\midi}, la letra y
+la música dejarán de estar sincronizadas dentro del MIDI.
+
+@seealso
+Archivos instalados:
+@file{ly/engraver-init.ly}.
+@file{ly/performer-init.ly}.
@node Score. El contexto maestro
@unnumberedsubsubsec Score. El contexto maestro
armaduras están siempre alineados entre los distintos pentagramas.
Se crea implícitamente una instancia del contexto Score cuando se
-procesa un bloque @code{\score @{@dots{}@}} o @code{\layout
-@{@dots{}@}}.
+procesa un bloque @code{\score @{@dots{}@}}.
@node Contextos del nivel superior. Contenedores de pentagramas
@strong{@emph{RhythmicStaff}}
-Como @code{Staff}, pero para imprimir ritmos. Se ignoran las alturas
-de las notas; las notas se imprimen sobre una línea.
+Como @code{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.
@strong{@emph{TabStaff}}
@unnumberedsubsubsec 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. Siendo
-contextos del nivel más bajo, no pueden contener a otros contextos.
+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 @code{defaultchild}. Aunque es
+posible hacer que pueda aceptar o contener subcontextos, éstos
+solo se pueden crear e introducir de forma explícita.
@strong{@emph{Voice}}
Tipografía nombres de acordes.
-@node Crear contextos
-@subsection Crear contextos
-@translationof Creating contexts
-
-@c TODO more complete descriptions rather than learning style
-
-Para partituras que sólo tienen una voz y un pentagrama, los contextos
-se crean automáticamente. Para partituras más complejas, es necesario
-crearlos a mano. Existen tres instrucciones que hacen esto.
-
-@itemize
-
-@item
-La instrucción más fácil es @code{\new}, y es también la más rápida de
-escribir. Se antepone a una expresión musical, por ejemplo
+@node Crear y referenciar contextos
+@subsection Crear y referenciar contextos
+@translationof Creating and referencing contexts
@funindex \new
-@cindex nuevos, contextos
-@cindex Contexto, creación de
+@funindex \context
+@cindex nuevos contextos
+@cindex contextos, creación y referenciación de
+@cindex referenciar contextos
+
+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 @code{\new} o @code{\context}. La sintaxis de estas
+dos instrucciones es muy similar:
@example
-\new @var{tipo} @var{expresión_musical}
+[\new | \context] @var{Contexto} [ = @var{nombre}] [@var{expresión_musical}]
@end example
@noindent
-donde @var{tipo} es el nombre de un contexto (como @code{Staff} o
-@code{Voice}). Esta instrucción crea un contexto nuevo, y empieza a
-interpretar la @var{expresión_musical} con él.
+donde se puede especificar @code{\new} o @code{\context}.
+@var{Contexto} es el tipo de contexto que se desea crear,
+@var{nombre} es un nombre opcional que se da al contexto concreto
+que se está creando, y @var{expresión_musical} es una sola
+expresión musical que será interpretada por los complementos
+grabadores y reproductores dentro de este contexto.
-Una aplicación práctica de @code{\new} es una partitura con muchos
-pentagramas. Cada parte que debe ir en su propio pentagrama, va
-precedida de @code{\new Staff}.
+El prefijo @code{\new} sin ningún nombre se usa con frecuencia
+para crear partituras con muchos pentagramas:
-@lilypond[quote,verbatim,relative=2,ragged-right]
+@lilypond[quote,verbatim,relative=2]
<<
- \new Staff { c4 c }
- \new Staff { d4 d }
+ \new Staff {
+ % leave the Voice context to be created implicitly
+ c4 c
+ }
+ \new Staff {
+ d4 d
+ }
>>
@end lilypond
-La instrucción @code{\new} puede también dar nombre al contexto,
+@noindent
+y para introducir varias voces dentro de un solo pentagrama:
-@example
-\new @var{tipo} = @var{identificador} @var{música}
-@end example
-Sin embargo, este nombre especificado por el usuario sólo se utiliza
-si no hay ya otro contexto anterior con el mismo nombre.
+@lilypond[quote,verbatim,relative=2]
+<<
+ \new Staff <<
+ \new Voice {
+ \voiceOne
+ c8 c c4 c c
+ }
+ \new Voice {
+ \voiceTwo
+ g4 g g g
+ }
+ >>
+>>
+@end lilypond
+@noindent
+@code{\new} debería usarse siempre para especificar contextos sin
+nombre.
-@funindex \context
+La diferencia entre @code{\new} y @code{\context} se encuentra en
+la acción que se realiza:
+@itemize
@item
-Como @code{\new}, la instrucción @code{\context} también dirige una
-expresión musical a un objeto de contexto, pero da al contexto un
-nombre explícito. La sintaxis es
+@code{\new} con un nombre o sin él, siempre crea un contexto nuevo
+y distinto, incluso si ya existe un contexto con el mismo nombre:
-@example
-\context @var{tipo} = @var{identificador} @var{música}
-@end example
+@lilypond[quote,verbatim,relative=2]
+<<
+ \new Staff <<
+ \new Voice = "A" {
+ \voiceOne
+ c8 c c4 c c
+ }
+ \new Voice = "A" {
+ \voiceTwo
+ g4 g g g
+ }
+ >>
+>>
+@end lilypond
-En esta forma, la instrucción buscará un contexto existente del
-@var{tipo} especificado que tenga el nombre @var{identificador}. Si
-ese contexto aún no existe, se crea un contexto nuevo con el nombre
-especificado. Esto es útil si nos vamos a referir más tarde al
-contexto. Por ejemplo, cuando se escribe la letra, la melodía está
-dentro de un contexto con nombre
+@item
+@code{\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.
-@example
-\context Voice = "@b{tenor}" @var{música}
-@end example
+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:
-@noindent
-de forma que los textos se puedan alinear correctamente con sus notas,
+@lilypond[quote,verbatim]
+\score {
+ <<
+ % score layout
+ \new Staff <<
+ \new Voice = "one" {
+ \voiceOne
+ }
+ \new Voice = "two" {
+ \voiceTwo
+ }
+ >>
-@example
-\new Lyrics \lyricsto "@b{tenor}" @var{letra}
-@end example
+ % musical content
+ \context Voice = "one" {
+ \relative c'' {
+ c4 c c c
+ }
+ }
+ \context Voice = "two" {
+ \relative c'' {
+ g8 g g4 g g
+ }
+ }
+ >>
+}
+@end lilypond
-@noindent
+@lilypond[quote,verbatim]
+\score {
+ <<
+ % score layout
+ \new Staff <<
+ \context Voice = "one" {
+ \voiceOne
+ }
+ \context Voice = "two" {
+ \voiceTwo
+ }
+ >>
-Otro uso posible de los contextos con nombre es la fusión de dos
-expresiones musicales distintas en un solo contexto. En el siguiente
-ejemplo, se introducen por separado las articulaciones y las notas:
+ % musical content
+ \context Voice = "one" {
+ \relative c'' {
+ c4 c c c
+ }
+ }
+ \context Voice = "two" {
+ \relative c'' {
+ g8 g g4 g g
+ }
+ }
+ >>
+}
+@end lilypond
-@example
-musica = @{ c4 c4 @}
-decoracion = @{ s4-. s4-> @}
-@end example
+@noindent
+De manera alternativa, se pueden utilizar variables con un efecto
+similar. Véase @rlearning{Organizar las piezas mediante variables}.
-se combinan enviando los dos al mismo contexto @code{Voice},
+@item
+@code{\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, @code{\context} sin nombre y sin expresión musical se usa
+para establecer el contexto en que se ejecuta un procedimiento de
+Scheme especificado con @code{\applyContext}:
@example
-<<
- \new Staff \context Voice = "A" \musica
- \context Voice = "A" \decoracion
->>
+\new Staff \relative c' @{
+ c1
+ \context Timing
+ \applyContext #(lambda (ctx)
+ (newline)
+ (display (ly:context-current-moment ctx)))
+ c1
+@}
@end example
-@lilypond[quote,ragged-right]
-music = { c4 c4 }
-arts = { s4-. s4-> }
-\relative c'' <<
- \new Staff \context Voice = "A" \music
- \context Voice = "A" \arts
->>
-@end lilypond
-Con este mecanismo, es posible definir un @qq{urtext} (una edición
-original), con la posibilidad de poner articulaciones distintas sobre
-las mismas notas.
+@end itemize
-@cindex crear contextos
+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:
-@item
-La tercera instrucción para crear contextos es
@example
-\context @var{tipo} @var{música}
+\new Voice = "tenor" @var{música}
+@dots{}
+\new Lyrics \lyricsto "tenor" @var{letra}
@end example
-
@noindent
-Esto es similar a @code{\context} con @code{= @var{identificador}},
-pero se corresponde con cualquier contexto del tipo @var{tipo}, sin
-importar qué nombre se le ha dado.
+Para ver más detalles sobre la asociación de letra y música,
+consulte @ref{Duración automática de las sílabas}.
-Esta variante se usa con expresiones musicales que se pueden
-interpretar en varios niveles. Por ejemplo, la instrucción
-@code{\applyOutput} (véase
-@rextend{Ejecutar una función sobre todos los objetos de la presentación}).
-Sin una instrucción @code{\context}
-explícita, normalmente se aplicaría a @code{Voice}
+Las propiedades de todos los contextos de un tipo en particular se
+pueden modificar dentro de un bloque @code{\layout} (con una
+sintaxis diferente), véase @ref{Cambiar todos los contextos del mismo tipo}.
-@example
-\applyOutput #'@var{contexto} #@var{función} % aplicar al contexto Voice
-@end example
+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
+@code{\with}, véase @ref{Cambiar solamente un contexto determinado}.
-Para que se interprete dentro de los niveles de @code{Score} o
-@code{Staff}, utilice las siguientes formas:
-
-@example
-\applyOutput #'Score #@var{función}
-\applyOutput #'Staff #@var{función}
-@end example
+@seealso
+Manual de aprendizaje:
+@rlearning{Organizar las piezas mediante variables}.
-@end itemize
+Referencia de la notación:
+@ref{Cambiar solamente un contexto determinado},
+@ref{Duración automática de las sílabas}.
@node Mantener vivos los contextos
Existe una excepción a esta regla general: precisamente uno de los
contextos de @code{Voice} que están dentro de un contexto de
-@code{Staff} o de una construcción @code{<<...>>} persiste siempre
+@code{Staff} o de una construcción @code{<<@dots{}>>} persiste siempre
hasta el final de, contexto de @code{Staff} circundante o la
-construcción @code{<<...>>}, incluso aunque puede haber períodos en
+construcción @code{<<@dots{}>>}, incluso aunque puede haber períodos en
que no tiene nada que hacer. El contexto que persiste de esta forma
será el primero que se encuentre en la primera construcción encerrada
-entre llaves @code{@{...@}}, ignorando cualquiera que se encuentre
-dentro de construcciones encerradas por ángulos dobles @code{<<...>>}.
+entre llaves @code{@{@dots{}@}}, ignorando cualquiera que se encuentre
+dentro de construcciones encerradas por ángulos dobles @code{<<@dots{}>>}.
Cualquier contexto se puede mantener vivo si nos aseguramos de que
tiene algo que hacer en cualquier momento musical dado. Los
@emph{etc.}
@}
@{
- @emph{..música..}
+ @emph{@dots{}música@dots{}}
@}
@end example
\new Staff \with {
\consists "Timing_translator"
\consists "Default_bar_line_engraver"
- } {
+ }
+ \relative c'' {
\time 3/4
c4 c c c c c
}
\new Staff \with {
\consists "Timing_translator"
\consists "Default_bar_line_engraver"
- } {
+ }
+ \relative c'' {
\time 2/4
c4 c c c c c
}
@end lilypond
@knownissues
-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. El orden en que los
-grabadores se especifican es el orden en que se llaman para realizar
-su tarea de procesamiento.
-Las siguientes ordenaciones son importantes: el grabador de compases
-@code{Bar_engraver} debe ir normalmente en primer lugar, y el grabador
-de digitaciones @code{New_fingering_engraver} debe ir antes del
-grabador @code{Script_column_engraver} de columnas de inscripciones.
-Podría haber otros que tengan dependencias de ordenación.
+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:
+
+@itemize
+@item
+el grabador de compases @code{Bar_engraver} debe ir normalmente en
+primer lugar,
+
+@item
+el grabador de digitaciones @code{New_fingering_engraver} debe ir
+antes del grabador @code{Script_column_engraver} de columnas de
+inscripciones,
+
+@item
+el @code{Timing_translator} debe ir antes del grabador de números de
+compás @code{Bar_number_engraver}.
+
+@end itemize
+
+@seealso
+Archivos instalados:
+@file{ly/engraver-init.ly}.
@node Cambiar los valores por omisión de los contextos
@subsection Cambiar los valores por omisión de los contextos
@translationof Changing context default settings
-Los ajustes de contexto que están preparados para usarse de forma
-predeterminada en los contextos @code{Score}, @code{Staff} y
-@code{Voice}, se pueden especificar dentro de un bloque
-@code{\layout}, como se ilustra en el ejemplo siguiente. El bloque
-@code{\layout} se debe colocar dentro del bloque @code{\score} en que
-se quiere que haga efecto, pero fuera de la música.
+@cindex predeterminadas, cambio de propiedades de contexto
+@cindex contexto, cambiar propiedades predeterminadas de
+
+Se pueden cambiar las propiedades de contexto y de grob con las
+instrucciones @code{\set} y @code{\override}, tal y como se describe
+en @ref{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.
-Observe que la propia instrucción @code{\set} y el contexto se deben
-omitir cuando se especifican de esta manera los valores de contexto
-predeterminados:
+Por contra, esta sección explica la forma de cambiarlos valores
+@emph{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.
+
+@menu
+* Cambiar todos los contextos del mismo tipo::
+* Cambiar solamente un contexto determinado::
+* Orden de precedencia::
+@end menu
+
+@node Cambiar todos los contextos del mismo tipo
+@unnumberedsubsubsec Cambiar todos los contextos del mismo tipo
+@translationof Changing all contexts of the same type
+
+@cindex \context dentro de un bloque \layout
+@funindex \context
+@funindex \layout
+
+Los ajustes de contexto predeterminados que se han de usar para la composición
+tipográfica dentro de @code{Score}, @code{Staff}, @code{Voice} y otros contextos
+se pueden especificar en un bloque @code{\context} dentro de cualquier
+bloque @code{\layout}.
+
+Los ajustes para la salida MIDI, al contrario que para la
+composición tipográfica, se tendrán que especificar aparte en
+bloques @code{\midi} (véase
+@ref{Definiciones de salida - estructura de los contextos}).
+
+El bloque @code{\layout} se debe colocar
+dentro del bloque @code{\score} al que se aplica, después de la
+música.
+
+@example
+\layout @{
+ \context @{
+ \Voice
+ [ajustes de contexto para todos los contextos Voice]
+ @}
+ \context @{
+ \Staff
+ [ajustes de contexto para todos los contextos Staff]
+ @}
+@}
+@end example
+
+Se pueden especificar los siguientes tipos de ajustes:
+
+@itemize
+@item
+Una instrucción @code{\override}, pero omitiendo el nombre del contexto
@lilypond[quote,verbatim]
\score {
\relative c'' {
- a4^"Really small, thicker stems, no time signature" a a a
- a a a a
+ a4^"Thicker stems" a a a
+ a4 a a\ff a
+ }
+ \layout {
+ \context {
+ \Staff
+ \override Stem.thickness = #4.0
+ }
+ }
+}
+@end lilypond
+
+@item
+Estableciendo una propiedad de contexto directamente
+
+@lilypond[quote,verbatim]
+\score {
+ \relative c'' {
+ a4^"Smaller font" a a a
+ a4 a a\ff a
}
\layout {
\context {
\Staff
fontSize = #-4
- \override Stem #'thickness = #4.0
- \remove "Time_signature_engraver"
}
}
}
@end lilypond
-En este ejemplo, la instrucción @code{\Staff} especifica que los
-ajustes siguientes se apliquen a todos los pentagramas dentro del
-bloque de partitura.
+@item
+Una instrucción predefinida tal como @code{\dynamicUp} o una expresión
+musical como @code{\accidentalStyle dodecaphonic}
-Se pueden realizar de forma similar modificaciones al contexto
-@code{Score} o a todos los contextos @code{Voice}.
+@lilypond[quote,verbatim]
+\score {
+ \relative c'' {
+ a4^"Dynamics above" a a a
+ a4 a a\ff a
+ }
+ \layout {
+ \context {
+ \Voice
+ \dynamicUp
+ }
+ \context {
+ \Staff
+ \accidentalStyle dodecaphonic
+ }
+ }
+}
+@end lilypond
-Los cambios de contexto se pueden poner dentro de una variable y
-aplicarse a una definición de contexto @code{\context} anteponiendo la
-modificación mediante @code{\with}:
+@item
+Una variable definida por el usuario que contenga un bloque
+@code{\with}; para ver detalles acerca del bloque @code{\with},
+consulte @ref{Cambiar solamente un contexto determinado}.
@lilypond[quote,verbatim]
-blubb = \with {
+StaffDefaults = \with {
fontSize = #-4
- \override Stem #'thickness = #4.0
- \remove "Time_signature_engraver"
}
-bla = \with {
- fontSize = #3
- \override Stem #'thickness = #-2.0
+\score {
+ \new Staff {
+ \relative c'' {
+ a4^"Smaller font" a a a
+ a4 a a a
+ }
+ }
+ \layout {
+ \context {
+ \Staff
+ \StaffDefaults
+ }
+ }
}
+@end lilypond
-melody = \relative c'' {
- a4 a a a |
- a4 a a a |
+@end itemize
+
+Las instrucciones de ajuste de propiedades se pueden disponer dentro
+de un bloque @code{\layout} sin que estén encerradas en un bloque
+@code{\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,
+@emph{todos y cada uno} de los contextos del nivel inferior quedan
+afectados, véase @ref{Contextos del nivel más bajo. Voces}. La
+sintaxis de una instrucción de ajuste de propiedades dentro de un
+bloque @code{\layout} es la misma que si la misma instrucción
+estuviera escrita en el propio flujo musical.
+
+@lilypond[quote,verbatim]
+\score {
+ \new Staff {
+ \relative c'' {
+ a4^"Smaller font" a a a
+ a4 a a a
+ }
+ }
+ \layout {
+ \accidentalStyle dodecaphonic
+ \set fontSize = #-4
+ \override Voice.Stem.thickness = #4.0
+ }
+}
+@end lilypond
+
+
+@node Cambiar solamente un contexto determinado
+@unnumberedsubsubsec Cambiar solamente un contexto determinado
+@translationof Changing just one specific context
+
+@cindex \with
+@funindex \with
+
+Las propiedades de contexto de una única instancia de contexto pueden
+cambiarse dentro de un bloque @code{\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 @code{\layout} que se encuentre dentro del
+ámbito. El bloque @code{\with} se debe situar inmediatamente después
+de las instrucciones @code{\new} @var{context-type}:
+
+@example
+\new Staff \with @{ [ajustes de contexto para esta instancia de contexto solamente] @}
+@{
+ @dots{}
+@}
+@end example
+
+Dado que dicha @q{modificación de contexto} está especificada
+dentro de la música, afectará a @emph{todas} las salidas
+(tipografía @emph{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:
+
+@itemize
+@item
+Una instrucción @code{\override}, pero omitiendo el nombre del
+contexto
+
+@lilypond[quote,verbatim]
+\score {
+ \new Staff {
+ \new Voice \with { \override Stem.thickness = #4.0 }
+ {
+ \relative c'' {
+ a4^"Thick stems" a a a
+ a4 a a a
+ }
+ }
+ }
}
+@end lilypond
+
+@item
+Estableciendo una propiedad de contexto directamente
+@lilypond[quote,verbatim]
\score {
<<
- \new Staff <<
- \melody
- s4^"Small, thicker stems, no time signature"
- >>
- \new Staff \bla <<
- \melody
- s4^"Different"
- >>
+ \new Staff {
+ \relative c'' {
+ a4^"Default font" a a a
+ a4 a a a
+ }
+ }
+ \new Staff \with { fontSize = #-4 }
+ {
+ \relative c'' {
+ a4^"Smaller font" a a a
+ a4 a a a
+ }
+ }
>>
- \layout {
- \context {
- \Staff
- \blubb
+}
+@end lilypond
+
+@item
+Una instrucción predefinida tal como @code{\dynamicUp}
+
+@lilypond[quote,verbatim]
+\score {
+ <<
+ \new Staff {
+ \new Voice {
+ \relative c'' {
+ a4^"Dynamics below" a a a
+ a4 a a\ff a
+ }
+ }
}
- }
+ \new Staff \with { \accidentalStyle dodecaphonic }
+ {
+ \new Voice \with { \dynamicUp }
+ {
+ \relative c'' {
+ a4^"Dynamics above" a a a
+ a4 a a\ff a
+ }
+ }
+ }
+ >>
}
@end lilypond
-@c TODO: add \with in here.
+@end itemize
+@node Orden de precedencia
+@unnumberedsubsubsec 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:
+
+@itemize
+@item
+si está en efecto una instrucción @code{\override} o @code{\set}
+dentro del flujo musical, se usa dicho valor,
+
+@item
+de lo contrario, se usa el valor predeterminado tomado de un enunciado
+@code{\with} en las instrucciones de inicio del contexto,
+
+@item
+de lo contrario, se usa el valor tomado del bloque @code{\context} más
+reciente que corresponda dentro de los bloques @code{\layout} o @code{\midi},
+
+@item
+de lo contrario se usa el valor predeterminado que LilyPond lleva
+preprogramado.
+@end itemize
+
+@seealso
+Manual de aprendizaje:
+@rlearning{Modificar las propiedades de los contextos}.
+
+Referencia de la notación:
+@ref{Explicación de los contextos},
+@ref{Contextos del nivel más bajo. Voces},
+@ref{La instrucción set},
+@ref{La instrucción override},
+@ref{El bloque layout,,El bloque @code{@bs{}layout}}.
@node Definir contextos nuevos
@funindex denies
Los contextos específicos, como @code{Staff} y @code{Voice}, están
-construidos a base de bloques sencillos. Es posible crear nuevos
+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
barra inclinada. Se puede usar para indicar improvisación en piezas
de jazz,
-@c KEEP LY
@lilypond[quote,ragged-right]
\layout { \context {
\name ImproVoice
\consists "Note_heads_engraver"
\consists "Rhythmic_column_engraver"
\consists "Text_engraver"
- \consists Pitch_squash_engraver
+ \consists "Pitch_squash_engraver"
squashedPosition = #0
- \override NoteHead #'style = #'slash
- \override Stem #'transparent = ##t
- \override Flag #'transparent = ##t
+ \override NoteHead.style = #'slash
+ \hide Stem
\alias Voice
}
\context { \Staff
\relative c'' {
a4 d8 bes8 \new ImproVoice { c4^"ad lib" c
- c4 c^"desvístete" c_"mientras tocas :)" c }
+ c4 c^"undress" c_"while playing :)" c }
a1
}
@end lilypond
\name ImproVoice
@end example
-Debido a que es parecido al contexto @code{Voice}, queremos órdenes
-que funcionen sobre contextos de @code{Voice} (existentes) para que
-siga funcionando. Esto se consigue dando al contexto nuevo un alias
-@code{Voice},
+Debido a que es parecido al contexto @code{Voice}, queremos
+órdenes que funcionen dentro de los contextos @code{Voice}
+(existentes) para que siga funcionando. Esto se consigue dando al
+contexto nuevo un alias de @code{Voice},
@example
\alias Voice
@end example
-El contexto imprimirá notas y textos explicativos, por ello tenemos
-que añadir los grabadores que aportan esta funcionalidad:
+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,
@example
-\consists Note_heads_engraver
-\consists Text_engraver
+\consists "Note_heads_engraver"
+\consists "Text_engraver"
+\consists "Rhythmic_column_engraver"
@end example
-pero sólo necesitamos esto en la línea central:
+Las cabezas de todas las notas se deben situar sobre la línea
+central,
@example
-\consists Pitch_squash_engraver
+\consists "Pitch_squash_engraver"
squashedPosition = #0
@end example
-El grabador @rinternals{Pitch_squash_engraver} modifica las cabezas de
-nota (creadas por el grabador @rinternals{Note_heads_engraver}) y
+El grabador @code{Pitch_squash_engraver} modifica las cabezas de
+nota (creadas por el grabador @code{Note_heads_engraver}) y
establece sus posiciones verticales al valor de
-@code{squashedPosition}, en este caso@tie{}@code{0}, la línea central.
+@code{squashedPosition}, en este caso@tie{}@code{0}, la línea
+central.
Las notas parecen barras inclinadas y no tienen plica:
@example
-\override NoteHead #'style = #'slash
-\override Stem #'transparent = ##t
-\override Flag #'transparent = ##t
+\override NoteHead.style = #'slash
+\hide Stem
@end example
-Todos estos añadidos tienen que cooperar, y esto se consigue con un
-añadido especial, que se debe marcar con la palabra clave
-@code{\type}. Este será siempre @code{Engraver_group},
+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 @code{\type}
+(tipo) del contexto. Dentro de un bloque @code{\layout}, casi
+todos los contextos serán del tipo @code{Engraver_group}. Algunos
+contextos especiales y los contextos de los bloques @code{\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.
@example
\type "Engraver_group"
\type "Engraver_group"
\consists "Note_heads_engraver"
\consists "Text_engraver"
- \consists Pitch_squash_engraver
+ \consists "Rhythmic_column_engraver"
+ \consists "Pitch_squash_engraver"
squashedPosition = #0
- \override NoteHead #'style = #'slash
- \override Stem #'transparent = ##t
- \override Flag #'transparent = ##t
+ \override NoteHead.style = #'slash
+ \hide Stem
\alias Voice
@}
@end example
@funindex \accepts
-Los contextos dan lugar a jerarquías. Queremos colgar el contexto
-@code{ImproVoice} bajo el contexto @code{Staff}, como simples
-@code{Voice}s normales. Por tanto, modificamos la definición de
+Los contextos dan lugar a jerarquías. Queremos poner el contexto
+@code{ImproVoice} dentro del contexto @code{Staff}, igual que los contextos
+de voz normales. Por tanto, modificamos la definición de
@code{Staff} con la instrucción @code{\accepts} (acepta),
@example
@}
@end example
+Para completar el ejemplo, los cambios que afectan a la jerarquía
+de contextos se deben repetir dentro de un bloque @code{\midi} de
+manera que la salida MIDI dependa de las mismas relaciones de
+contexto.
+
+@seealso
+
+Referencia de funcionamiento interno:
+@rinternals{Engraver_group},
+@rinternals{Note_heads_engraver},
+@rinternals{Text_engraver},
+@rinternals{Rhythmic_column_engraver},
+@rinternals{Pitch_squash_engraver}.
+
@node Orden de disposición de los contextos
@subsection Orden de disposición de los contextos
anidarse dentro de él.
La lista @qq{accepts} de un contexto se puede cambiar con las
-instrucciones @code{\accepts} (acepta) y @code{\denies} (niega).
+instrucciones @code{\accepts} (acepta) o @code{\denies} (niega).
@code{\accepts} añade un contexto a la lista @qq{accepts} y
-@code{\denies} elimina un contexto de la lista. Por ejemplo,
-normalmente no sería deseable que los acordes de cifrado americano
-estuvieran anidados dentro de un contexto @code{Staff}, por lo que el
-contexto @code{ChordNames} no se incluye de forma predeterminada
-dentro de la lista @qq{accepts} del contexto @code{Staff}, pero podría
-hacerse si fuera necesario:
+@code{\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
+@code{GrandStaff} para piano no acepta un @code{StaffGroup} dentro
+de él, de forma predeterminada.
@lilypond[verbatim,quote]
\score {
- \new Staff {
- c' d' e' f'
- \chords { d1:m7 b1:min7.5- }
- }
+ \new GrandStaff <<
+ \new StaffGroup <<
+ \new Staff { c'1 }
+ \new Staff { d'1 }
+ >>
+ \new Staff { \set Staff.instrumentName = bottom f'1 }
+ >>
}
@end lilypond
+Sin embargo, usando la instrucción @code{\accepts}, se puede
+añadir un @code{StaffGroup} al contexto @code{GrandStaff}:
+
@lilypond[verbatim,quote]
\score {
- \new Staff {
- c' d' e' f'
- \chords { d1:m7 b1:min7.5- }
- }
+ \new GrandStaff <<
+ \new StaffGroup <<
+ \new Staff { c'1 }
+ \new Staff { d'1 }
+ >>
+ \new Staff { \set Staff.instrumentName = bottom f'1 }
+ >>
\layout {
\context {
- \Staff
- \accepts "ChordNames"
+ \GrandStaff
+ \accepts "StaffGroup"
}
}
}
@code{Staff}, pero con el contexto @code{VaticanaVoice} sustituido por
el contexto @code{Voice} en la lista @qq{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. Esto puede dar lugar a pentagramas o partituras nuevos no
-esperados.
+
+@cindex contextos implícitos
+@cindex implícitos, contextos
+@funindex \defaultchild
+
+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
+@code{\defaultchild} (hijo predeterminado). Algunos eventos
+musicales requieren un contexto @samp{Bottom} (inferior): cuando
+se encuentra este evento, se crean subcontextos de forma recursiva
+hasta que se alcanza un contexto que no tiene establecido el
+@samp{defaultchild}.
+
+La creación implícita de contextos puede dar lugar a pentagramas o
+partituras nuevos no esperados. La utilización de @code{\new}
+para crear contextos explícitamente evita esos problemas.
@cindex alignAboveContext
@cindex alignBelowContext
@funindex alignBelowContext
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 reposicionallo por encima del contexto que
-tenga el nombre @qq{principal}, debería definirse de esta forma:
+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 @qq{principal}, debería definirse
+de esta forma:
@example
@code{\new Staff \with @{ alignAboveContext = #"principal" @} }
espacio en blanco de 3 espacios de pentagrama entre la nota y la
digitación:
@example
-\once \override Voice.Fingering #'padding = #3
+\once \override Voice.Fingering.padding = #3
@end example
Al insertar esta instrucción antes de que se haya creado el objeto
resultado:
@lilypond[quote,relative=2,verbatim]
-\once \override Voice.Fingering #'padding = #3
+\once \override Voice.Fingering.padding = #3
c-2
\stemUp
f
La instrucción
@verbatim
-\override Staff.Stem #'thickness = #4.0
+\override Staff.Stem.thickness = #4.0
@end verbatim
@noindent
@lilypond[quote,verbatim,relative=2]
c4
-\override Staff.Stem #'thickness = #4.0
+\override Staff.Stem.thickness = #4.0
c4
c4
c4
@lilypond[quote,verbatim,relative=2]
c4
-\once \override Stem #'thickness = #4.0
+\once \override Stem.thickness = #4.0
c4
c4
@end lilypond
en el momento en que se crea el objeto. En este ejemplo:
@lilypond[quote,verbatim,relative=2]
-\override Slur #'thickness = #3.0
+\override Slur.thickness = #3.0
c8[( c
-\override Beam #'beam-thickness = #0.6
+\override Beam.beam-thickness = #0.6
c8 c])
@end lilypond
siguiente ejemplo no hace nada.
@example
-\override Voice.Stem #'thickness = #4.0
-\revert Staff.Stem #'thickness
+\override Voice.Stem.thickness = #4.0
+\revert Staff.Stem.thickness
@end example
Algunas opciones «trucables» se llaman @q{subpropiedades} y residen
tales como
@example
-\override Stem #'(details beamed-lengths) = #'(4 4 3)
+\override Stem.details.beamed-lengths = #'(4 4 3)
@end example
@end ignore
Referencia de funcionamiento interno:
@rinternals{Tunable context properties}.
-@cindex grob, propiedades de
-@cindex propiedades de grob
-@funindex \override
-
-
@node La instrucción override
@subsection La instrucción @code{\override}
@translationof The override command
+@cindex grob, propiedades de
+@cindex propiedades de grob
+@funindex \override
+
Existe un tipo especial de propiedad de contexto: la descripción de
los grobs. Las decscripciones de los grobs reciben un nombre en
@code{MayúsculasDeCamello} (empezando en mayúscula). Contienen los
ver los ajustes de cada descripción de grob. Las descripciones de
grob se modifican con @code{\override}.
-@code{\override} es en realidad una forma abreviada;
+La sintaxis de la instrucción @code{\override} es
@example
-\override @var{contexto}.@var{NombreDelGrob} #'@var{propiedad} = #@var{valor}
+\override [@var{contexto}.]@var{NombreDelGrob}.@var{propiedad} = #@var{valor}
@end example
-@noindent
-equivale más o menos a
-
-@c leave this long line -gp
-@example
-\set @var{contexto}.@var{NombreDelGrob} =
- #(cons (cons '@var{propiedad} @var{valor})
- <valor anterior de @var{contexto}.@var{NombreDelGrob}>)
-@end example
-
-El valor de @code{contexto}.@code{NombreDelGrob} (la lista-A) se
-utiliza para inicializar las propiedades de los grobs individuales.
-Los grobs tienen propiedades, denominadas en el estilo de Scheme, con
-@code{palabras-con-guiones}. Los valores de las propiedades de grob
-cambian durante el proceso de formateo: éste se realiza básicamente
-calculando las propiedades utilizando funciones de @q{callback}
-(pasadas como parámetro).
-
Por ejemplo, podemos aumentar el grosor de la plica de una figura
sobreescribiendo la propiedad @code{thickness} (grosor) del objeto
@code{Stem} (plica):
@lilypond[quote,verbatim,relative=2]
c4 c
-\override Voice.Stem #'thickness = #3.0
+\override Voice.Stem.thickness = #3.0
c4 c
@end lilypond
@code{\override}, se utiliza el contexto del nivel inferior:
@lilypond[quote,verbatim,relative=2]
-{ \override Staff.Stem #'thickness = #3.0
+{ \override Staff.Stem.thickness = #3.0
<<
{
e4 e
- \override Stem #'thickness = #0.5
+ \override Stem.thickness = #0.5
e4 e
} \\ {
c4 c c c
}
@end lilypond
+Algunas opciones susceptibles de trucaje, se llaman
+@q{subpropiedades} y residen dentro de las propiedades. Para
+efectura trujajes sobre ellas, utilice instrucciones de la forma
+
+@example
+\override Stem.details.beamed-lengths = #'(4 4 3)
+@end example
+
+o para modificar los extremos de los objetos extensos, utilice una
+forma como las siguientes:
+
+@example
+\override TextSpanner.bound-details.left.text = #"left text"
+\override TextSpanner.bound-details.right.text = #"right text"
+@end example
+
@funindex \revert
@cindex reversión de sobreescrituras
@cindex sobreescrituras, reversión de
El efecto de una instrucción de sobreescritura @code{\override} se
-puede deshacer con @code{\revert}:
+puede deshacer con @code{\revert}.
+
+La sintaxis de la instrucción @code{\revert} es
+
+@example
+\revert [@var{Contexto}.]@var{NombreDelGrob}.@var{propiedad}
+@end example
+
+Por ejemplo,
@lilypond[quote,verbatim,relative=2]
c4
-\override Voice.Stem #'thickness = #3.0
+\override Voice.Stem.thickness = #3.0
c4 c
-\revert Voice.Stem #'thickness
+\revert Voice.Stem.thickness
c4
@end lilypond
<<
{
e4
- \override Staff.Stem #'thickness = #3.0
+ \override Staff.Stem.thickness = #3.0
e4 e e
} \\ {
c4 c c
- \revert Staff.Stem #'thickness
+ \revert Staff.Stem.thickness
c4
}
>>
{
<<
{
- \override Stem #'thickness = #3.0
+ \override Stem.thickness = #3.0
e4 e e e
} \\ {
c4
- \once \override Stem #'thickness = #3.0
+ \once \override Stem.thickness = #3.0
c4 c c
}
>>
aspecto como
@example
-\override Voice.Stem #'thickness = #3.0
+\override Voice.Stem.thickness = #3.0
@end example
@noindent
@item un valor adecuado: aquí @code{3.0}.
@end itemize
-Ciertas opciones ajustables se denominan @q{subpropiedades} y residen
-en el interior de las propiedades normales. Para modificarlas utilice
-instrucciones de la forma
-
-@example
-\override Stem #'(details beamed-lengths) = #'(4 4 3)
-@end example
-
@cindex documentación interna
@cindex buscar objetos gráficos
@cindex gráficos, descripción de los objetos
instrucción @code{\tweak}, que tiene la sintaxis siguiente:
@example
-\tweak @var{objeto-de-presentación} #'@var{propiedad-del-grob} @var{valor}
+\tweak [@var{objeto-de-presentación}.]@var{propiedad-del-grob} @var{valor}
@end example
Es opcional especificar el @var{objeto-de-presentación}. La
@lilypond[relative=2,verbatim,quote]
< c
- \tweak #'color #red
+ \tweak color #red
d
g
- \tweak #'duration-log #1
+ \tweak duration-log #1
a
> 4
--\tweak #'padding #8
+-\tweak padding #8
-^
@end lilypond
-Pero el uso principal de la instrucción @code{\tweak} es modificar
+El uso principal de la instrucción @code{\tweak} es modificar
solamente uno de varios elementos de notación que dan comienzo en el
mismo momento musical, como las notas de un acorde, o corchetes de
tresillo que empiezan al mismo tiempo.
Así, esto funciona:
@lilypond[relative=2,verbatim,quote]
-<\tweak #'color #red c>4
+<\tweak color #red c>4
@end lilypond
@noindent
pero esto no funciona:
@lilypond[relative=2,verbatim,quote]
-\tweak #'color #red c4
+\tweak color #red c4
@end lilypond
@end ignore
@lilypond[relative=2,verbatim,quote]
< c
- \tweak #'color #red
+ \tweak color #red
d
g
- \tweak #'duration-log #1
+ \tweak duration-log #1
a
> 4
@end lilypond
@code{\tweak} se puede usar para modificar ligaduras de expresión:
@lilypond[verbatim,quote,relative=1]
-c-\tweak #'thickness #5 ( d e f)
+c-\tweak thickness #5 ( d e f)
@end lilypond
partir de eventos dentro del @code{EventChord}:
@lilypond[relative=2,verbatim,quote]
-\tweak #'color #red c4
-\tweak #'color #red <c e>4
-<\tweak #'color #red c e>4
+\tweak color #red c4
+\tweak color #red <c e>4
+<\tweak color #red c e>4
@end lilypond
La instrucción @code{\tweak} sencilla no se puede usar para modificar
más que por elementos musicales del
flujo de entrada.
-Tales objetos de presencaión creados indirectamente se pueden trucar
-usando la forma explícita de la instrucción @code{\tweak}:
+Tales objetos de presentación creados indirectamente se pueden trucar
+usando la forma de la instrucción @code{\tweak} en que el nombre
+del grob se especifica de forma explícita:
@lilypond[relative=2,verbatim,quote]
-\tweak Stem #'color #red
-\tweak Beam #'color #green c8 e
-<c e \tweak Accidental #'font-size #-3 ges>4
+\tweak Stem.color #red
+\tweak Beam.color #green c8 e
+<c e \tweak Accidental.font-size #-3 ges>4
@end lilypond
No se puede usar @code{\tweak} para modificar las claves o las
@lilypond[verbatim,quote,relative=1]
c
--\tweak #'style #'dashed-line
--\tweak #'dash-fraction #0.2
--\tweak #'thickness #3
--\tweak #'color #red
+-\tweak style #'dashed-line
+-\tweak dash-fraction #0.2
+-\tweak thickness #3
+-\tweak color #red
\glissando
f'
@end lilypond
@cindex trucar puntos de control
@cindex control, trucar puntos de
-La instrucción @code{\tweak} solamente se aplica a la primera de
-varias ligaduras generadas dentro de un acorde.
+No se puede usar la instrucción @code{\tweak} para modificar los
+puntos de control de una sola de varias ligaduras de unión dentro de
+un acorde, aparte de la primera que se encuentre en el código de
+entrada.
@node set frente a override
@subsection @code{\set} frente a @code{\override}
@translationof set versus override
-@c HACER: probablemente esta sección es innecesaria.
-
-@ignore
-We have seen two methods of changing properties: @code{\set} and
-@code{\override}. There are actually two different kinds of
-properties.
-
-@code{fontSize} is a special property: it is equivalent to
-entering @code{\override ... #'font-size} for all pertinent
-objects. Since this is a common change, the special
-property (modified with @code{\set}) was created.
-
-@end ignore
+@c TODO Should't a bunch of that be explained earlier?
+@funindex \set
+@funindex \override
+Tanto @code{\set} como @code{\override} manipulan propiedades
+asociadas a contextos. En ambos casos las propiedades tienen en
+cuenta la jerarquía de contextos: las propiedades no establecidas en
+el propio contexto presentan los valores del contexto padre
+respectivo.
+
+El valor y la duración en el tiempo de las propiedades de contexto son
+dinámicos y están disponibles solamente cuando la música se está
+interpretando o @q{iterando}. En el momento de la creación del
+contexto, se inicializan las propiedades a partir de la definición de
+contexto correspondiente y las posibles modificaciones de contexto.
+Después de esto, cualquier cambio se obtiene a través de instrucciones
+de establecimiento de propiedades dentro de la propia música.
+
+Ahora bien, las definiciones de grob (objetos gráficos) son una clase
+especial de propiedades de contexto. Dado que su estructura,
+mantenimiento y utilización es distinta de las propiedades de contexto
+ordinarias, se accede a ellas con un conjunto de instrucciones
+diferente, y se estudian por separado dentro de la documentación.
+
+A diferencia de las propiedades de contexto normales, las definiciones
+de grob están subdivididas en propiedades de grob. Un @qq{grob}
+(objeto gráfico) se crea normalmente por parte de un grabador en el
+momento de la interpretación de una expresión musical y recibe sus
+propiedades iniciales de la definición de grob en curso del contexto
+del grabador. El grabador (u otras partes del @q{backend} de
+LilyPond) pueden después añadir o modificar propiedades del grob, pero
+ello no afecta a la definición de grob del contexto.
+
+Lo que conocemos como @q{propiedades de grob} en el contexto del
+trucaje a nivel de usuario son en realidad las propiedades de la
+definición de grob de un contexto. A diferencia de las propiedades de
+contexto normales, las definiciones de grob mantienen la contabilidad
+necesaria para seguir la pista de sus partes, las propiedades de grob
+individuales (e incluso subpropiedades de éstos), de forma separada,
+de forma que es posible definir dichas partes dentro de contextos
+diferentes y hacer que la definición de grob en su conjunto, en el
+momento de la creación del grob, se monte a partir de las piezas
+proporcionadas en diferentes contextos entre el contexto actual y sus
+contextos padre.
+
+Las definiciones de grob se manipulan usando @code{\override} y
+@code{\revert} y tienen un nombre que empieza con una letra mayúscula
+(como @samp{NoteHead}) mientras que las propiedades de contexto
+ordinarias se manipulan utilizando @code{\set} y @code{\unset} y se
+nombran empezando en letra minúscula.
+
+@cindex tweak, relación con @code{\override}
+@funindex \tweak
+@funindex \overrideProperty
+Las instrucciones especiales @code{\tweak} y @code{\overrideProperty}
+cambian las propiedades de grob pasando por encima de las propiedades
+de contexto completamente. En su lugar, atrapan a los grobs tan
+pronto se crean, y después establecen propiedades sobre ellos
+directamente cuando se originan a partir de un evento musical trucado
+o son de un tipo en particular, respectivamente.
@node Modificación de las listas-A
@subsection Modificación de las listas-A
% reduced space between staves
\new PianoStaff \with {
% this is the nested declaration
- \override StaffGrouper #'staff-staff-spacing #'basic-distance = #7
+ \override StaffGrouper.staff-staff-spacing.basic-distance = #7
} <<
\new Staff { \clef treble c''1 }
\new Staff { \clef bass c1 }
@lilypond[quote,verbatim]
\new PianoStaff \with {
- \override StaffGrouper #'staff-staff-spacing =
+ \override StaffGrouper.staff-staff-spacing =
#'((basic-distance . 0)
(minimum-distance . 0)
(padding . 0)
siguientes son equivalentes:
@example
-\override StaffGrouper #'staff-staff-spacing =
+\override StaffGrouper.staff-staff-spacing =
#'((basic-distance . 7))
-\override StaffGrouper #'staff-staff-spacing =
+\override StaffGrouper.staff-staff-spacing =
#'((basic-distance . 7)
(minimum-distance . 0)
(padding . 0)
de entrada se interprete con la sintaxis del bajo cifrado, véase
@ref{Introducir el bajo cifrado}.
-El modo de cifrase también se activa con la instrucción
-@code{\figures}. También crea un contexto de @code{FiguredBass} nuevo
-y hace que el código que viene a continuación se interprete con la
-sintaxis del bajo cifrado y se imprima como símbolos de bajo cifrado
-dentro del contexto @code{FiguredBass}, véase @ref{Introducción al bajo cifrado}.
+El modo de cifras también se activa con la instrucción
+@code{\figures}. También crea un contexto de @code{FiguredBass}
+nuevo y hace que el código que viene a continuación se interprete
+con la sintaxis del bajo cifrado y se imprima como símbolos de
+bajo cifrado dentro del contexto @code{FiguredBass}, véase
+@ref{Introducción al bajo cifrado}.
@strong{Modos de traste y tablatura}
LilyPond las determine automáticamente, pero en ciertos casos puede
ser deseable forzar una dirección o colocación concreta.
-@strong{Acciones predeterminadas}
+@menu
+* Indicadores de dirección de las articulaciones::
+* La propiedad de dirección::
+@end menu
+
+@node Indicadores de dirección de las articulaciones
+@unnumberedsubsubsec Indicadores de dirección de las articulaciones
+@translationof Articulation direction indicators
De forma predeterminada algunas direcciones siempre son hacia arriba o
siempre hacia abajo (p. ej. los matices o el calderón), mientras que
c2^( c)
@end lilypond
-@strong{La propiedad de dirección}
+@node La propiedad de dirección
+@unnumberedsubsubsec La propiedad de dirección
+@translationof The direction property
La posición o dirección de muchos objetos de presentación está
controlada por la propiedad @code{direction}.
@lilypond[verbatim,quote,relative=1]
\new Staff \with {
- \override StaffSymbol #'line-positions = #'(7 3 0 -4 -6 -7)
+ \override StaffSymbol.line-positions = #'(7 3 0 -4 -6 -7)
}
{ a4 e' f b | d1 }
@end lilypond
@lilypond[verbatim,quote,relative=1]
\new Staff \with {
- \override StaffSymbol #'width = #23
+ \override StaffSymbol.width = #23
}
{ a4 e' f b | d1 }
@end lilypond
una línea recta entre los dos objetos, contemplan también el interface
@code{line-spanner-interface}.
+@menu
+* Uso del spanner-interface::
+* Uso del line-spanner-interface::
+@end menu
+
+@node Uso del spanner-interface
@unnumberedsubsubsec Uso del @code{spanner-interface}
+@translationof Using the spanner-interface
Este interface proporciona dos propiedades que se aplican a varios
extensores.
-@strong{@i{La propiedad @code{minimum-length}}}
+@subsubsubheading La propiedad @code{minimum-length} (longitud mínima)
-La longitud mínima del objeto de extensión se especifica a través de
-la propiedad @code{minimum-length}. Su aumento suele producir el
-efecto necesario de aumentar el espaciado de las notas entre los dos
-puntos extremos. Sin embargo, esta sobreescritura no tiene ningún
-efecto sobre muchos extensores, pues su longitud está determinada por
-otras consideraciones. Más abajo se muestran algunos ejemplos de
-dónde es efectiva.
+La longitud mínima del objeto de extensión se especifica a través
+de la propiedad @code{minimum-length}. Su aumento suele producir
+el efecto necesario de aumentar el espaciado de las notas entre
+los dos puntos extremos. Sin embargo, esta sobreescritura no
+tiene ningún efecto sobre muchos extensores, pues su longitud está
+determinada por otras consideraciones. Más abajo se muestran
+algunos ejemplos de dónde es efectiva.
@ignore
Works for:
@end ignore
@lilypond[verbatim,quote,relative=2]
-a~a
+a~ a
a
% increase the length of the tie
--\tweak #'minimum-length #5
-~a
+-\tweak minimum-length #5
+~ a
@end lilypond
@lilypond[verbatim,quote,relative=2]
\compressFullBarRests
R1*23
% increase the length of the rest bar
-\once \override MultiMeasureRest #'minimum-length = #20
+\once \override MultiMeasureRest.minimum-length = #20
R1*23
a1
@end lilypond
@lilypond[verbatim,quote,relative=2]
a \< a a a \!
% increase the length of the hairpin
-\override Hairpin #'minimum-length = #20
+\override Hairpin.minimum-length = #20
a \< a a a \!
@end lilypond
las ligaduras de expresión y de fraseo:
@lilypond[verbatim,quote,relative=2]
-a( a)
+a( g)
a
--\tweak #'minimum-length #5
-( a)
+-\tweak minimum-length #5
+( g)
-a\( a\)
+a\( g\)
a
--\tweak #'minimum-length #5
-\( a\)
+-\tweak minimum-length #5
+\( g\)
@end lilypond
Para algunos objetos de presentación, la propiedad
e \glissando c'
% not effective alone
-\once \override Glissando #'minimum-length = #20
+\once \override Glissando.minimum-length = #20
e, \glissando c'
% effective only when both overrides are present
-\once \override Glissando #'minimum-length = #20
-\once \override Glissando #'springs-and-rods = #ly:spanner::set-spacing-rods
+\once \override Glissando.minimum-length = #20
+\once \override Glissando.springs-and-rods = #ly:spanner::set-spacing-rods
e, \glissando c'
@end lilypond
@lilypond[verbatim,quote,relative=1]
% not effective alone
-\once \override Beam #'minimum-length = #20
+\once \override Beam.minimum-length = #20
e8 e e e
% effective only when both overrides are present
-\once \override Beam #'minimum-length = #20
-\once \override Beam #'springs-and-rods = #ly:spanner::set-spacing-rods
+\once \override Beam.minimum-length = #20
+\once \override Beam.springs-and-rods = #ly:spanner::set-spacing-rods
e8 e e e
@end lilypond
-@strong{@i{The @code{to-barline} property}}
+@subsubsubheading La propiedad @code{to-barline}
La segunda propiedad útil del @code{spanner-interface} es
@code{to-barline}. De forma predeterminada tiene el valor cierto,
@lilypond[verbatim,quote,relative=2]
a \< a a a a \! a a a \break
-\override Hairpin #'to-barline = ##f
+\override Hairpin.to-barline = ##f
a \< a a a a \! a a a
@end lilypond
ligaduras de expresión o de fraseo, o sobre otros extensores para los
que terminar en la barra de compás no tendría ningún significado.
+@node Uso del line-spanner-interface
@unnumberedsubsubsec Uso del @code{line-spanner-interface}
+@translationof Using the line-spanner-interface
Entre los objetos que contemplan el interface
@code{line-spanner-interface} se encuentran
@lilypond[relative=2,quote,verbatim]
e2 \glissando b
-\once \override Glissando #'(bound-details left Y) = #3
-\once \override Glissando #'(bound-details right Y) = #-2
+\once \override Glissando.bound-details.left.Y = #3
+\once \override Glissando.bound-details.right.Y = #-2
e2 \glissando b
@end lilypond
@code{right-broken} de @code{bound-details}. Por ejemplo:
@lilypond[relative=2,ragged-right,verbatim,quote]
-\override Glissando #'breakable = ##t
-\override Glissando #'(bound-details right-broken Y) = #-3
+\override Glissando.breakable = ##t
+\override Glissando.bound-details.right-broken.Y = #-3
c1 \glissando \break
f1
@end lilypond
de extensión horizontales.
@lilypond[quote,ragged-right,relative=2,verbatim]
-\override TextSpanner #'(bound-details left text)
+\override TextSpanner.bound-details.left.text
= \markup { \small \bold Slower }
c2\startTextSpan b c a\stopTextSpan
@end lilypond
símbolo del borde verticalmente con relación al extremo de la línea:
@lilypond[relative=1,quote,verbatim]
-\override TextSpanner
- #'(bound-details left stencil-align-dir-y) = #-2
-\override TextSpanner
- #'(bound-details right stencil-align-dir-y) = #UP
-
-\override TextSpanner
- #'(bound-details left text) = #"ggg"
-\override TextSpanner
- #'(bound-details right text) = #"hhh"
+\override TextSpanner.bound-details.left.stencil-align-dir-y = #-2
+\override TextSpanner.bound-details.right.stencil-align-dir-y = #UP
+
+\override TextSpanner.bound-details.left.text = #"ggg"
+\override TextSpanner.bound-details.right.text = #"hhh"
c4^\startTextSpan c c c \stopTextSpan
@end lilypond
@translationof Removing the stencil
@cindex sello, eliminar
+@funindex \omit
Todo objeto de presentación tiene una propiedad stencil (sello). De
forma predeterminada está establecida a la función específica que
@lilypond[quote,verbatim,relative=1]
a1 a
-\override Score.BarLine #'stencil = ##f
+\override Score.BarLine.stencil = ##f
+a a
+\revert Score.BarLine.stencil
+a a a
+@end lilypond
+
+Esta operación, bastante común, tiene la forma abreviada @code{\omit}
+como atajo:
+
+@lilypond[quote,verbatim,relative=1]
+a1 a
+\omit Score.BarLine
a a
-\revert Score.BarLine #'stencil
+\undo \omit Score.BarLine
a a a
@end lilypond
@translationof Making objects transparent
@cindex transparentes, hacer los objetos
+@funindex \hide
Todo objeto de presentación tiene una propiedad transparent
(transparente) que de forma predeterminada está establecida a
@lilypond[quote,verbatim,relative=2]
a4 a
-\once \override NoteHead #'transparent = ##t
+\once \override NoteHead.transparent = ##t
+a a
+@end lilypond
+
+Esta operación, bastante común, tiene la forma abreviada @code{\hide}
+como atajo:
+
+@lilypond[quote,verbatim,relative=2]
+a4 a
+\once \hide NoteHead
a a
@end lilypond
objeto blanco, como puede verse aquí:
@lilypond[quote,verbatim,relative=2]
-\override Staff.Clef #'color = #white
+\override Staff.Clef.color = #white
a1
@end lilypond
para que se dibuje antes:
@lilypond[quote,verbatim,relative=2]
-\override Staff.Clef #'color = #white
-\override Staff.Clef #'layer = #-1
+\override Staff.Clef.color = #white
+\override Staff.Clef.layer = #-1
a1
@end lilypond
los objetos de presentación serán visibles en las posiciones que se
muestran en el encabezamiento de cada columna:
-@multitable {@code{begin-of-line-invisible}} {@code{'#(#t #t #t)}} {yes} {yes} {yes}
+@multitable {@code{begin-of-line-invisible}} {@code{'#(#t #t #t)}} {Antes del} {Si no hay} {Después del}
@headitem Forma @tab Forma @tab Antes del @tab Si no hay @tab Después del
@headitem de función @tab de vector @tab salto @tab salto @tab salto
@item @code{Clef} @tab @code{Staff} @tab @code{begin-of-line-visible}
@item @code{Custos} @tab @code{Staff} @tab @code{end-of-line-visible}
@item @code{DoublePercentRepeat} @tab @code{Voice} @tab @code{begin-of-line-invisible}
-@c omit KeyCancellation until it can be explained -td
-@c @item @code{KeyCancellation} @tab ?? @tab @code{begin-of-line-invisible}
+@item @code{KeyCancellation} @tab @code{Staff} @tab @code{begin-of-line-invisible}
@item @code{KeySignature} @tab @code{Staff} @tab @code{begin-of-line-visible}
@c omit LeftEdge until it can be explained -td
@c @item @code{LeftEdge} @tab @code{Score} @tab @code{center-invisible}
-@item @code{OctavateEight} @tab @code{Staff} @tab @code{begin-of-line-visible}
+@item @code{ClefModifier} @tab @code{Staff} @tab @code{begin-of-line-visible}
@item @code{RehearsalMark} @tab @code{Score} @tab @code{end-of-line-invisible}
@item @code{TimeSignature} @tab @code{Staff} @tab @code{all-visible}
f4 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)
+\once \override Score.BarLine.break-visibility = ##(#f #t #t)
\break
f4 g a b
f4 g a b
se suprimen por completo. Utilice begin-of line-invisible para
imprimirlas y all-invisible para suprimirlas.
@item Armadura: véase más abajo
-@item OctavateEight: véase más abajo
+@item ClefModifier: véase más abajo
@end itemize
@unnumberedsubsubsec Consideraciones especiales
@translationof Special considerations
-@strong{@emph{Visibilidad después de un cambio explícito}}
+@subsubsubheading Visibilidad después de un cambio explícito
@cindex armadura, visibilidad después de un cambio explícito
@cindex explicitKeySignatureVisibility
\key g \major
f4 g a b
% Try to remove all key signatures
-\override Staff.KeySignature #'break-visibility = #all-invisible
+\override Staff.KeySignature.break-visibility = #all-invisible
\key bes \major
f4 g a b
\break
\key g \major
f4 g a b
\set Staff.explicitKeySignatureVisibility = #all-invisible
-\override Staff.KeySignature #'break-visibility = #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
@end lilypond
-@strong{@emph{Visibilidad de las alteraciones de precaución}}
+@subsubsubheading Visibilidad de las alteraciones de precaución
-Para eliminar las alteraciones de precaución que se imprimen en un
+Para eliminar las alteraciones de cancelación que se imprimen en un
cambio de tonalidad explícito, establezca la propiedad
@code{printKeyCancellation} del contexto Staff a @code{#f}:
f4 g a b
\set Staff.explicitKeySignatureVisibility = #all-invisible
\set Staff.printKeyCancellation = ##f
-\override Staff.KeySignature #'break-visibility = #all-invisible
+\override Staff.KeySignature.break-visibility = #all-invisible
\key bes \major
f4 g a b \break
f4 g a b
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@tie{}mayor o
+La@tie{}menor, las alteraciones de cancelación serían @emph{la
+única} indicación del cambio de armadura. En este caso, el
+establecimiento de @code{printKeyCancellation} al valor @code{#f}
+no tiene ningún efecto:
+
+@lilypond[quote,verbatim,relative=1,ragged-right]
+\key g \major
+f4 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
+@end lilypond
+
+En lugar de ello, para suprimir las alteraciones de cancelación
+aún cuando la armadura cambia a Do@tie{}mayor o a La@tie{}menor,
+sobreescriba la visibilidad del grob @code{KeyCancellation}:
+
+@lilypond[quote,verbatim,relative=1,ragged-right]
+\key g \major
+f4 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
+@end lilypond
+
@c TODO Add visibility of cautionary accidentals before notes
-@strong{@emph{Automatic bars}}
+@subsubsubheading Líneas divisorias automáticas
@cindex automaticBars
@cindex líneas divisorias, eliminación
@c TODO Add example
-@strong{@emph{Octavated clefs}}
+@subsubsubheading Claves transportadas
-@cindex octavadas, visibilidad de las claves
-@cindex visibilidad de las claves octavadas
-@cindex claves, visibilidad de la octavación
+@cindex transportadas, visibilidad de las claves
+@cindex visibilidad de las claves transportadas
+@cindex claves, visibilidad de la transposición
-El pequeño símbolo de octava sobre las claves en octava alta o baja se
-produce por parte del objeto @code{OctavateEight}. Su visibilidad se
-hereda automáticamente de la del objeto @code{Clef}, así que no es
+El pequeño símbolo de transposición sobre una clave se produce por
+parte del objeto @code{ClefModifier}. Su visibilidad se hereda
+automáticamente de la del objeto @code{Clef}, así que no es
necesario aplicar las sobreescrituras correspondientes
-@code{break-visibility} a los objetos
-@code{OctavateEight} para suprimir los símbolos de octavación
-para las claves invisibles.
+@code{break-visibility} a los objetos @code{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
-@code{explicitClefVisibility} controla tanto el símbolo de clave como
-el símbolo de octava asociado.
+@code{explicitClefVisibility} controla tanto el símbolo de clave
+como el símbolo de transposición o de octava asociado.
@seealso
Manual de aprendizaje:
@lilypond[relative=2,ragged-right,verbatim,quote]
d2 \glissando d'2
-\once \override Glissando #'style = #'dashed-line
+\once \override Glissando.style = #'dashed-line
d,2 \glissando d'2
-\override Glissando #'style = #'dotted-line
+\override Glissando.style = #'dotted-line
d,2 \glissando d'2
-\override Glissando #'style = #'zigzag
+\override Glissando.style = #'zigzag
d,2 \glissando d'2
-\override Glissando #'style = #'trill
+\override Glissando.style = #'trill
d,2 \glissando d'2
@end lilypond
@c TODO Complete
@lilypond[relative=2,ragged-right,verbatim,quote]
e2 \glissando f
-\once \override Glissando #'(bound-details right Y) = #-2
+\once \override Glissando.bound-details.right.Y = #-2
e2 \glissando f
@end lilypond
@lilypond[quote,verbatim,relative=1]
g4\< e' d' f\!
-\override Hairpin #'rotation = #'(20 -1 0)
+\override Hairpin.rotation = #'(20 -1 0)
g,,4\< e' d' f\!
@end lilypond
que empuja al texto a una posición muy alta.
@lilypond[quote,verbatim,relative=1]
-\override TextScript #'outside-staff-priority = ##f
+\override TextScript.outside-staff-priority = ##f
g4^\markup { \rotate #30 "a G" }
b^\markup { \rotate #30 "a B" }
des^\markup { \rotate #30 "a D-Flat" }
* Agrupación vertical de objetos gráficos::
* Modificación de los sellos::
* Modificación de las formas::
+* Modificación de objetos de extensión divididos::
* Contenedores unpure-pure::
@end menu
@lilypond[verbatim,quote,relative=2]
a-3
a
--\tweak #'X-offset #0
--\tweak #'Y-offset #0
+-\tweak X-offset #0
+-\tweak Y-offset #0
-3
a
--\tweak #'X-offset #-1
--\tweak #'Y-offset #1
+-\tweak X-offset #-1
+-\tweak Y-offset #1
-3
@end lilypond
@unnumberedsubsubsec Uso del @code{self-alignment-interface}
@translationof Using the self-alignment-interface
-@emph{Auto-alineación horizontal de los objetos}
+@subsubsubheading Auto-alineación horizontal de los objetos
La alineación horizontal de un objeto que contempla el interface
@code{self-alignment-interface} está controlada por el valor de la
@lilypond[quote,verbatim,relative=1]
a'
--\tweak #'self-alignment-X #-1
+-\tweak self-alignment-X #-1
^"left-aligned"
--\tweak #'self-alignment-X #0
+-\tweak self-alignment-X #0
^"center-aligned"
--\tweak #'self-alignment-X #RIGHT
+-\tweak self-alignment-X #RIGHT
^"right-aligned"
--\tweak #'self-alignment-X #-2.5
+-\tweak self-alignment-X #-2.5
^"aligned further to the right"
@end lilypond
-@emph{Auto-alineación vertical de los objetos}
+@subsubsubheading Auto-alineación vertical de los objetos
Los objetos se pueden alinear verticalmente en una forma análoga a la
alineación horizontal si la propiedad @code{Y-offset} está establecida
@lilypond[quote,verbatim,relative=2]
a
--\tweak #'self-alignment-X #0.5 % move horizontally left
--\tweak #'Y-offset #ly:self-alignment-interface::y-aligned-on-self
--\tweak #'self-alignment-Y #-1 % move vertically up
+-\tweak self-alignment-X #0.5 % move horizontally left
+-\tweak Y-offset #ly:self-alignment-interface::y-aligned-on-self
+-\tweak self-alignment-Y #-1 % move vertically up
-3 % third finger
@end lilypond
@code{left-edge}, @code{key-cancellation}, @code{key-signature} y
@code{time-signature}.
-De forma predeterminada, las letras de ensayo y los números de compás
-se centran horizontalmente sobre el objeto:
+Cada tipo de objeto tiene su propio punto de referencia
+predeterminado, con el que se alinean las marcas de ensayo:
@lilypond[verbatim,quote,relative=1]
-% The rehearsal mark will be centered above the Clef
-\override Score.RehearsalMark #'break-align-symbols = #'(clef)
+% The rehearsal mark will be aligned to the right edge of the Clef
+\override Score.RehearsalMark.break-align-symbols = #'(clef)
\key a \major
\clef treble
\mark "↓"
e1
-% The rehearsal mark will be centered above the Time Signature
-\override Score.RehearsalMark #'break-align-symbols = #'(time-signature)
+% The rehearsal mark will be aligned to the left edge of the Time Signature
+\override Score.RehearsalMark.break-align-symbols = #'(time-signature)
\key a \major
\clef treble
\time 3/4
\mark "↓"
e2.
% The rehearsal mark will be centered above the Breath Mark
-\override Score.RehearsalMark #'break-align-symbols = #'(breathing-sign)
+\override Score.RehearsalMark.break-align-symbols = #'(breathing-sign)
\key a \major
\clef treble
\time 4/4
con el punto en el que se encontraría la línea divisoria.
@lilypond[verbatim,quote,relative=1]
-% The rehearsal mark will be centered above the Key Signature
-\override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef)
+% The rehearsal mark will be aligned to the right edge of the Key Signature
+\override Score.RehearsalMark.break-align-symbols = #'(key-signature clef)
\key a \major
\clef treble
\mark "↓"
e1
-% The rehearsal mark will be centered above the Clef
+% The rehearsal mark will be aligned to the right edge of the Clef
\set Staff.explicitKeySignatureVisibility = #all-invisible
-\override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef)
+\override Score.RehearsalMark.break-align-symbols = #'(key-signature clef)
\key a \major
\clef bass
\mark "↓"
% The rehearsal mark will be centered above the Bar Line
\set Staff.explicitKeySignatureVisibility = #all-invisible
\set Staff.explicitClefVisibility = #all-invisible
-\override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef)
+\override Score.RehearsalMark.break-align-symbols = #'(key-signature clef)
\key a \major
\clef treble
\mark "↓"
los pentagramas.
@lilypond[verbatim,quote,relative=1]
-% The RehearsalMark will be centered above the Key Signature
-\override Score.RehearsalMark #'break-align-symbols = #'(key-signature)
+% The RehearsalMark will be aligned with the right edge of the Key Signature
+\override Score.RehearsalMark.break-align-symbols = #'(key-signature)
\key a \major
\clef treble
\time 4/4
\mark "↓"
e1
-% The RehearsalMark will be aligned with the left edge of the Key Signature
-\once \override Score.KeySignature #'break-align-anchor-alignment = #LEFT
+% The RehearsalMark will be centered above the Key Signature
+\once \override Score.KeySignature.break-align-anchor-alignment = #CENTER
\mark "↓"
\key a \major
e1
-% The RehearsalMark will be aligned with the right edge of the Key Signature
-\once \override Score.KeySignature #'break-align-anchor-alignment = #RIGHT
+% The RehearsalMark will be aligned with the left edge of the Key Signature
+\once \override Score.KeySignature.break-align-anchor-alignment = #LEFT
\key a \major
\mark "↓"
e1
@lilypond[verbatim,quote,relative=1]
% The RehearsalMark will be aligned with the left edge of the Key Signature
% and then shifted right by 3.5 staff-spaces
-\override Score.RehearsalMark #'break-align-symbols = #'(key-signature)
-\once \override Score.KeySignature #'break-align-anchor = #3.5
+\override Score.RehearsalMark.break-align-symbols = #'(key-signature)
+\once \override Score.KeySignature.break-align-anchor = #3.5
\key a \major
\mark "↓"
e1
% The RehearsalMark will be aligned with the left edge of the Key Signature
% and then shifted left by 2 staff-spaces
-\once \override Score.KeySignature #'break-align-anchor = #-2
+\once \override Score.KeySignature.break-align-anchor = #-2
\key a \major
\mark "↓"
e1
@lilypond[verbatim,quote]
XinO = {
- \once \override NoteHead #'stencil = #ly:text-interface::print
- \once \override NoteHead #'text = \markup {
+ \once \override NoteHead.stencil = #ly:text-interface::print
+ \once \override NoteHead.text = \markup {
\combine
\halign #-0.7 \draw-circle #0.85 #0.2 ##f
\musicglyph #"noteheads.s2cross"
@cindex Bézier, curvas de, puntos de control
@cindex puntos de control en curvas de Bézier
-Las ligaduras de unión, de expresión y de fraseo se trazan como curvas
-de Bézier de tercer orden. Si la forma de la ligadura calculada
-automáticamente no resulta óptima, se puede modificar su forma
-manualmente mediante la especificación explícita de los cuatro puntos
-de control necesarios para definir una curva de Bézier de tercer
-orden.
-
-Las curvas Bézier de tercer orden o cúbicas están definidas por cuatro
-puntos de control. El primer y cuarto puntos de control son
-exactamente los puntos extremos de comienzo y de final de la curva.
-Los dos puntos de control intermedios definen la forma. Se pueden
-encontrar en la web animaciones que muestran cómo se traza la curva,
-pero la descripción siguiente puede ser de ayuda. La curva comienza a
-partir del primer punto de control dirigiéndose directamente hacia el
-segundo, curvándose progresivamente para dirigirse hacia el tercero y
-continuando la curva hacia el cuarto, llegando a éste en viaje directo
-desde el tercer punto de control. La curva está contenida enteramente
+Las ligaduras de unión (@code{Tie}s), de expresión (@code{Slur}s),
+de fraseo (@code{PhrasingSlur}s), de dejar vibrar
+(@code{LaissezVibrerTie}s) y de repetición (@code{RepeatTie}s) se
+trazan como curvas de Bézier de tercer orden. Si la forma de la
+ligadura calculada automáticamente no resulta óptima, se puede
+modificar su forma manualmente de dos formas:
+
+@enumerate a
+@item
+mediante la especificación de los desplazamientos que se quieren
+realizar sobre los puntos de control de la curva de Bézier
+calculada automáticamente, o bien
+
+@item
+mediante la especificación explícita de las posiciones de los
+cuatro puntos de control que se requieren para definir la curva
+deseada.
+@end enumerate
+
+A continuación se explican ambos métodos. El primer método es más
+adecuado cuando solo se requieren ligeros ajustes de la curva; el
+segundo puede ser mejor para crear curvas que tienen relación con
+una única nota.
+
+@subsubsubheading Curvas de Bézier cúbicas
+
+Las curvas Bézier de tercer orden o cúbicas están definidas por
+cuatro puntos de control. El primer y cuarto puntos de control
+son exactamente los puntos extremos de comienzo y de final de la
+curva. Los dos puntos de control intermedios definen la forma.
+Se pueden encontrar en la web animaciones que muestran cómo se
+traza la curva, pero la descripción siguiente puede ser de ayuda.
+La curva comienza a partir del primer punto de control
+dirigiéndose directamente hacia el segundo, curvándose
+progresivamente para dirigirse hacia el tercero y continuando la
+curva hacia el cuarto, llegando a éste en viaje directo desde el
+tercer punto de control. La curva está contenida enteramente
dentro del cuadrilátero definido por los cuatro puntos de control.
+Todas las traslaciones, rotaciones y escalado de los puntos de
+control producen exactamente las mismas operaciones sobre la
+curva.
+
+@subsubsubheading Especificar desplazamientos a partir de los puntos de control actuales
-He aquí un ejemplo de un caso en que la ligadura no es óptima, y donde
-@code{\tieDown} no sirve de ayuda.
+@cindex conformar ligaduras
+@funindex \shape
+
+En este ejemplo, la colocación automática de la ligadura no
+resulta óptima, y @code{\tieDown} no es la solución.
@lilypond[verbatim,quote,relative=1]
<<
- { e1~ e }
+ { e1~ 1 }
\\
{ r4 <g c,> <g c,> <g c,> }
>>
@end lilypond
-Una forma de mejorar esta ligadura es modificar manualmente sus puntos
-de control como sigue.
-
-Las coordenadas de los puntos de control de Bézier se especifican en
-unidades de espacios de pentagrama. La coordenada@tie{}X está en
-relación con el punto de referencia de la nota a la que está unida la
-ligadura, y la coordenada@tie{}Y está en relación con la línea central
-del pentagrama. Las coordenadas se introducen como una lista de
-cuatro parejas de números decimales (reales). Un enfoque es estimar
-las coordenadas de los dos puntos extremos, y luego tratar de adivinar
-los dos puntos intermedios. Los valores óptimos se encuentran por
-ensayo y error.
-
-Es útil recordar que una curva simétrica necesita puntos de control
-simétricos, y que las curvas de Bézier tienen la útil propiedad de que
-las transformaciones de la curva tales como la traslación, rotación y
-escalado se pueden obtener aplicando la misma transformación a los
-puntos de control de la curva.
-
-Para el ejemplo anterior, la sobreescritura siguiente da una ligadura
-satisfactoria. Observe la colocación: debe ir inmediatamente antes de
-la nota a la que se asigna el comienzo de la ligadura de expresión o
-de unión.
+El ajuste de los puntos de control de la ligadura mediante la
+instrucción @code{\shape} permite evitar las colisiones.
+
+La sintaxis de @code{\shape} es:
+
+@example
+[-]@code{\shape} @var{desplazamientos} @var{elemento}
+@end example
+
+Esta instrucción recoloca los puntos de control de @var{elemento}
+en las cantidades dadas por @var{desplazamientos}. El argumento
+@var{desplazamientos} es una lista de parejas de números o una
+lista de tales listas. Cada elemento de una pareja representa el
+desplazamiento de una de las coordenadas de un punto de control.
+Si el @var{elemento} es una cadena de caracteres, el resultado es
+@code{\once\override} para el tipo de grob especificado. Si
+@var{elemento} es una expresión musical, el resultado es la misma
+expresión musical con la consiguiente modificación aplicada.
+
+En otras palabras, la función @code{\shape} puede actuar como una
+instrucción @code{\once\override} o como una instrucción
+@code{\tweak} dependiendo de si el argumento @var{elemento} es el
+nombre de un grob, como @qq{Slur}, o una expresión musical, como
+@qq{(}. El argumento @var{desplazamientos} especifica los
+desplazamientos de los cuatro puntos de control como una lista de
+cuatro parejas de valores (dx . dy) en unidades de espacios de
+pentagrama (o una lista de tales listas si la curva tiene más de
+un segmento).
+
+El guión precedente se exige si, y sólo si, se usa la forma
+@code{\tweak}.
+
+Así, usando el mismo ejemplo de arriba y la forma
+@code{\once\override} de la instrucción @code{\shape}, lo
+siguiente tiene el efecto de elevar la ligadura de unión en la
+mitad de un espacio de pentagrama:
+
+@lilypond[verbatim,quote,relative=1]
+<<
+ {
+ \shape #'((0 . 0.5) (0 . 0.5) (0 . 0.5) (0 . 0.5)) Tie
+ e1~ 1
+ }
+\\
+ { r4 <g c,> <g c,> <g c,> }
+>>
+@end lilypond
+
+Este posicionamiento de la ligadura de unión es mejor, pero quizá
+debería elevarse más en la parte central. El ejemplo siguiente
+hace esto, esta vez usando la forma alternativa @code{\tweak}:
@lilypond[verbatim,quote,relative=1]
<<
{
- \once \override Tie
- #'control-points = #'((1 . -1) (3 . 0.6) (12.5 . 0.6) (14.5 . -1))
- e1 ~ e
+ e1-\shape #'((0 . 0.5) (0 . 1) (0 . 1) (0 . 0.5)) ~ e
}
\\
{ r4 <g c,> <g c,> <g c,> }
>>
@end lilypond
+Los cambios en las posiciones horizontales de los puntos de
+control se pueden hacer de la misma forma, y dos curvas distintas
+que dan comienzo en el mismo momento musical se pueden conformar
+también:
+
+@lilypond[verbatim,quote,ragged-right,relative=2]
+c8(\( a) a'4 e c\)
+\shape #'((0.7 . -0.4) (0.5 . -0.4) (0.3 . -0.3) (0 . -0.2)) Slur
+\shape #'((0 . 0) (0 . 0.5) (0 . 0.5) (0 . 0)) PhrasingSlur
+c8(\( a) a'4 e c\)
+@end lilypond
+
+La función @code{\shape} también puede desplazar los puntos de
+control de las curvas que se extienden atravesando saltos de
+línea. Cada pieza de la curva dividida puede recibir su propia
+lista de desplazamientos. Si no se necesita hacer cambios a uno
+de los segmentos en particular, se puede usar una lista vacía como
+contenedor. En este ejemplo, el salto de línea hace que la única
+ligadura de expresión aparezca como si fueran dos:
+
+@lilypond[verbatim,quote,ragged-right,relative=1]
+c4( f g c
+\break
+d,4 c' f, c)
+@end lilypond
+
+Los cambios en la forma de las dos mitades de la ligadura de
+expresión deja más claro que la ligadura continúa más allá del
+salto de línea:
+
+@lilypond[verbatim,quote,ragged-right,relative=1]
+% () may be used as a shorthand for ((0 . 0) (0 . 0) (0 . 0) (0 . 0))
+% if any of the segments does not need to be changed
+\shape #'(
+ (( 0 . 0) (0 . 0) (0 . 0) (0 . 1))
+ ((0.5 . 1.5) (1 . 0) (0 . 0) (0 . -1.5))
+ ) Slur
+c4( f g c
+\break
+d,4 c' f, c)
+@end lilypond
+
+En una curva en forma de «S» siempre es necesario ajustar
+manualmente los puntos de control: LilyPond nunca escoge tales
+formas automáticamente.
+
+@lilypond[verbatim,quote,relative=2]
+c8( e b-> f d' a e-> g)
+\shape #'((0 . -1) (5.5 . -0.5) (-5.5 . -10.5) (0 . -5.5)) PhrasingSlur
+c8\( e b-> f d' a e-> g\)
+@end lilypond
+
+@subsubsubheading Especificar los puntos de control explícitamente
+
+Las coordenadas de los puntos de contro de Bézier se especifican
+en unidades de espacios de pentagrama. La coordenada@tie{}X es
+relativa al punto de referencia al que se adjunta la ligadura, y
+la coordenada@tie{}Y es relativa a la línea central del
+pentagrama. Las coordenadas se especifican como una lista de
+cuatro parejas de números decimales (reales). Un enfoque consiste
+en estimar las coordenadas de los dos extremos, y después adivinar
+los dos puntos intermedios. Los valores óptimos se encuentran
+después por ensayo y error. Tenga en cuenta que estos valores
+podrían requerir un ajuste manual si se hace posteriormente
+cualquier cambio manual a la música o a la disposición.
+
+Una situación en la que es preferible especificar los puntos de
+control explícitamente a especificar los desplazamientos es cuando
+se necesita especificarlos de forma relativa a una nota única. A
+continuación presentamos un ejemplo de esto. Muestra una forma de
+indicar una ligadura que se extiende hacia el interior de las
+casillas de primera y segunda vez de una repetición.
+
+@lilypond[verbatim,quote,relative=2]
+c1
+\repeat volta 3 { c4 d( e f }
+\alternative {
+ { g2) d }
+ {
+ g2
+ % create a slur and move it to a new position
+ % the <> is just an empty chord to carry the slur termination
+ -\tweak control-points #'((-2 . 3.8) (-1 . 3.9) (0 . 4) (1 . 3.4)) ( <> )
+ f,
+ }
+ {
+ e'2
+ % create a slur and move it to a new position
+ -\tweak control-points #'((-2 . 3) (-1 . 3.1) (0 . 3.2) (1 . 2.4)) ( <> )
+ f,
+ }
+}
+@end lilypond
+
@knownissues
No es posible modificar la forma de las ligaduras de unión o de
-expresión cambiando la propiedad @code{control-points} si hay más de
-una en el mismo momento musical, ni siquiera usando la instrucción
-@code{\tweak}. Sin embargo, se puede sobreescribir la propiedad
-@code{tie-configuration} de @code{TieColumn} para fijar la línea de
-inicio y la dirección según se requiera.
+expresión cambiando la propiedad @code{control-points} si hay más
+de una en el mismo momento musical, ni siquiera usando la
+instrucción @code{\tweak}. Sin embargo, se puede sobreescribir la
+propiedad @code{tie-configuration} de @code{TieColumn} para fijar
+la línea de inicio y la dirección según se requiera.
@seealso
Referencia de funcionamiento interno:
@rinternals{TieColumn}.
-@cindex Scheme, contenedores puros
-@cindex Scheme, contenedores no-puros
-@cindex puros, contenedores de Scheme
-@cindex no-puros: contenedores de Scheme
-@cindex horizontal, sobreescribir el espaciado
+
+@node Modificación de objetos de extensión divididos
+@subsection Modificación de objetos de extensión divididos
+@translationof Modifying broken spanners
+
+@menu
+* Uso de alterBroken::
+@end menu
+
+@node Uso de alterBroken
+@unnumberedsubsubsec Uso de @code{\alterBroken}
+@translationof Using alterBroken
+
+@cindex extensión, modificación de objetos de
+@cindex divididos, modificación de objetos de extensión
+@funindex \alterBroken
+
+Cuando un @qq{spanner} u objeto extenso atraviesa uno o varios saltos
+de línea, cada fragmento hereda los atributos del objeto de extensión
+original. Así, el trucado ordinario de un objeto dividido aplica las
+mismas modificaciones a todos y cada uno de sus segmentos. En el
+ejemplo que aparece a continuación, la sobreescritura de
+@code{thickness} (grosor) afecta a la ligadura a ambos lados del salto
+de línea.
+
+@lilypond[verbatim,quote,ragged-right,relative=2]
+r2
+\once\override Slur.thickness = 10
+c8( d e f
+\break
+g8 f e d) r2
+@end lilypond
+
+Es posible modificar de forma independiente el aspecto de los
+fragmentos individuales de un objeto de extensión dividido, con la
+instrucción @code{\alterBroken}. Esta instrucción puede producir un
+@code{\override} o bien un @code{\tweak} de una propiedad del objeto
+de extensión.
+
+La sintaxis de @code{\alterBroken} es
+
+@example
+[-]@code{\alterBroken} @var{propiedad} @var{valores} @var{elemento}
+@end example
+
+El argumento @var{valores} es una lista de valores, uno por cada
+fragmento. Si @var{elemento} el el nombre de un grob como @code{Slur}
+o @code{Staff.PianoPedalBracket}, el resultado es una instrucción de
+sobreescritura @code{\override} del tipo de grob especificado. Si
+@var{elemento} es una expresión musical como @qq{(} o @qq{[} el
+resultado es la misma expresión musical con el correspondiente truco
+aplicado.
+
+El guión inicial se debe utilizar con la forma de trucaje,
+@code{\tweak}. No lo escriba cuando utilice @code{\alterBroken} como
+una operación de sobreescritura, @code{\override}.
+
+En su uso como @code{\override}, @code{\alterBroken} puede ir
+precedido de @code{\once} o @code{\temporary} y ser revertido con
+@code{\revert} con el argumento @var{propiedad}.
+
+EL código siguiente aplica un @code{\override} independiente a cada
+uno de los fragmentos de la ligadura del ejemplo anterior:
+
+@lilypond[verbatim,quote,ragged-right,relative=2]
+r2
+\alterBroken thickness #'(10 1) Slur
+c8( d e f
+\break
+g8 f e d) r2
+@end lilypond
+
+La instrucción @code{\alterBroken} se puede usar con cualquier objeto
+de extensión, incluidos @code{Tie}, @code{PhrasingSlur}, @code{Beam} y
+@code{TextSpanner}. Por ejemplo, un editor que está preparando una
+edición académica podría desear indicar la ausencia de parte de una
+ligadura de fraseo en una fuente haciendo discontinuo solamente el
+segmento que se ha añadido. El siguiente ejemplo ilustra de qué
+manera se puede hacer esto, en este caso usando la forma @code{\tweak}
+de la instrucción:
+
+@lilypond[verbatim,quote,ragged-right,relative=2]
+% The empty list is conveniently used below, because it is the
+% default setting of dash-definition, resulting in a solid curve.
+c2-\alterBroken dash-definition #'(() ((0 1.0 0.4 0.75))) \(e
+\break
+g2 e\)
+@end lilypond
+
+Es importante comprender que @code{\alterBroken} fija cada pieza del
+objeto fragmentado al valor correspondiente dentro del argumento
+@var{valores}. Cuando hay menos valores que piezas, cualquier
+fragmento adicional recibe la asignación de la lista vacía. Esto
+puede conllevar resultados no deseados si la propiedad de disposición
+no está establecida a la lista vacía de forma predeterminada. En
+estos casos, se debe asignar a cada segmento un valor adecuado.
+
+@knownissues
+Los saltos de línea pueden ocurrir en distintos lugares según cambia
+la disposición de la música. Los ajustes elegidos para
+@code{\alterBroken} podrían no ser adecuados para un objeto de
+extensión que ya no está dividido o que se fragmenta en más piezas que
+antes. El uso explícito (manual) de saltos de línea mediante
+@code{\break} puede prevenir situaciones como ésta.
+
+La instrucción @code{\alterBroken} no es efectiva para propiedades de
+los objetos extensos accedidas antes del salto de línea, como
+@code{direction}.
+
+@seealso
+Extender LilyPond:
+@rextend{Trucos difíciles}.
@node Contenedores unpure-pure
@subsection Contenedores unpure-pure
@translationof Unpure-pure containers
+@cindex Scheme, contenedores puros
+@cindex Scheme, contenedores no-puros
+@cindex puros, contenedores de Scheme
+@cindex no-puros: contenedores de Scheme
+@cindex horizontal, sobreescribir el espaciado
+
Los contenedores @q{unpure-pure} (pura y no pura) son útiles para la
sobreescritura de los cálculos del espaciado en el @emph{eje Y}
(concretamente @code{Y-offset} e @code{Y-extent}) con una función de
'(-0.5 . 0.5)))))
squareLineCircleSpace = {
- \override NoteHead #'stencil = #square-line-circle-space
+ \override NoteHead.stencil = #square-line-circle-space
}
smartSquareLineCircleSpace = {
\squareLineCircleSpace
- \override NoteHead #'Y-extent =
+ \override NoteHead.Y-extent =
#(ly:make-unpure-pure-container
ly:grob::stencil-height
(lambda (grob start end) (ly:grob::stencil-height grob)))
\new Voice \with { \remove "Stem_engraver" }
\relative c'' {
\squareLineCircleSpace
- cis4 ces cisis c
+ cis4 ces disis d
\smartSquareLineCircleSpace
- cis4 ces cisis c
+ cis4 ces disis d
}
@end lilypond
@item @code{@var{@dots{}música@dots{}}}
@tab código de entrada normal de LilyPond, que utiliza @code{$} (en los
lugares en que sólo se permiten construcciones de Lilypond) o @code{#}
-(para usarlo como un valor de Scheme o un argumento de función
-musical) para referenciar argumentos (p.ej. @samp{#arg1}).
+(para usarlo como un valor de Scheme o un argumento de función musical
+o música dentro de listas de música) para referenciar argumentos
+(p.ej. @samp{#arg1}).
@end multitable
Los argumentos @code{parser} y @code{location} son necesarios, y se
(parser location padding)
(number?)
#{
- \once \override TextScript #'padding = #padding
+ \once \override TextScript.padding = #padding
#})
-\relative c''' {
+\relative c'' {
c4^"piu mosso" b a b
\padText #1.8
- c4^"piu mosso" d e f
+ c4^"piu mosso" b a b
\padText #2.6
- c4^"piu mosso" fis a g
+ c4^"piu mosso" b a b
}
@end lilypond
(parser location note)
(ly:music?)
#{
- \tweak NoteHead #'stencil #ly:text-interface::print
- \tweak NoteHead #'text
+ \tweak NoteHead.stencil #ly:text-interface::print
+ \tweak NoteHead.text
\markup \musicglyph #"custodes.mensural.u0"
- \tweak Stem #'stencil ##f
- $note
+ \tweak Stem.stencil ##f
+ #note
#})
\relative c' { c4 d e f \custosNote g }
(parser location padding tempotext)
(number? markup?)
#{
- \once \override Score.MetronomeMark #'padding = #padding
+ \once \override Score.MetronomeMark.padding = #padding
\tempo \markup { \bold #tempotext }
#})