@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
-Translation of GIT committish: f0978ed121192fee9bdf2453a325d98693148acf
+Translation of GIT committish: 44011e382e91f43fb6752b3fbbf8d8984131a565
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.20"
+@c \version "2.17.6"
@node Cambiar los valores por omisión
@chapter Cambiar los valores por omisión
las variables, funciones y opciones que se encuentran disponibles en
LilyPond. Está escrito como un documento HTML, que se puede encontrar
@c leave the @uref as one long line.
-@uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/user/@/lilypond@/-internals/,en línea},
+@uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/internals/,en@tie{}línea},
pero que también va incluido en el paquete de la documentación de LilyPond.
Internamente, LilyPond utiliza el lenguaje Scheme (un dialecto de
* Modificar los complementos (plug-ins) de contexto::
* Cambiar los valores por omisión de los contextos::
* Definir contextos nuevos::
-* Alinear los contextos::
+* Orden de disposición de los contextos::
@end menu
-
@seealso
Manual de aprendizaje:
@rlearning{Contextos y grabadores}.
* Contextos del nivel más bajo. Voces::
@end menu
+
@node Score. El contexto maestro
@unnumberedsubsubsec Score. El contexto maestro
@translationof Score - the master of all contexts
procesa un bloque @code{\score @{@dots{}@}} o @code{\layout
@{@dots{}@}}.
+
@node Contextos del nivel superior. Contenedores de pentagramas
@unnumberedsubsubsec Contextos del nivel superior: contenedores de pentagramas
@translationof Top-level contexts - staff containers
Igual que @code{GrandStaff}, pero contempla la posibilidad de poner el
nombre del instrumento a la izquierda del sistema.
+
@node Contextos de nivel intermedio. Pentagramas
@unnumberedsubsubsec Contextos de nivel intermedio. Pentagramas
@translationof Intermediate-level contexts - staves
@end itemize
+
@node Mantener vivos los contextos
@subsection Mantener vivos los contextos
@translationof Keeping contexts alive
llamados @q{grabadores} que crean elementos de notación. Por ejemplo,
el contexto @code{Voice} contiene un grabador
@code{Note_heads_engraver} que crea las cabezas de nota y el contexto
-@code{Staff} contiene un grabador @code{Key_signature_engraver} que
-crea la indicación de compás.
+@code{Staff} contiene un grabador @code{Key_engraver} que
+crea la armadura.
Para ver una descripción completa de todos y cada uno de los
complementos, consulte
@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.
+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}.
-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.
@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.
+
+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 que se han de usar de forma predeterminada
+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}. 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^"Thicker stems" a a a
+ a4 a a\ff a
+ }
+ \layout {
+ \context {
+ \Staff
+ \override Stem.thickness = #4.0
+ }
+ }
+}
+@end lilypond
-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:
+@item
+Estableciendo una propiedad de contexto directamente
@lilypond[quote,verbatim]
\score {
\relative c'' {
- a4^"Really small, thicker stems, no time signature" a a a
- a a a a
+ 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}
+
+@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
+
+@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}.
-Se pueden realizar de forma similar modificaciones al contexto
-@code{Score} o a todos los contextos @code{Voice}.
+@lilypond[quote,verbatim]
+StaffDefaults = \with {
+ fontSize = #-4
+}
-@knownissues
+\score {
+ \new Staff {
+ \relative c'' {
+ a4^"Smaller font" a a a
+ a4 a a a
+ }
+ }
+ \layout {
+ \context {
+ \Staff
+ \StaffDefaults
+ }
+ }
+}
+@end lilypond
-No es posible recolectar cambios de contexto dentro de una variable y
-aplicarlos a una definición de @code{\context} por referencia a dicha
-variable.
+@end itemize
-La instrucción @code{\RemoveEmptyStaves} sobreescribe nuestros ajustes
-en curso para el contexto @code{\Staff}. Si queremos cambiar los
-valores predeterminados para un pentagrama que utilice
-@code{\RemoveEmptyStaves}, debemos hacerlo después de llamar a
-@code{\RemoveEmptyStaves}, o sea
+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.
-@example
-\layout @{
- \context @{
- \Staff \RemoveEmptyStaves
+@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
- \override Stem #'thickness = #4.0
- @}
+
+@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 única instancia de contexto]
+@} @{
+...
@}
@end example
-@c TODO: add \with in here.
+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 {
+ \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
+ }
+ }
+ >>
+}
+@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
+
+@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},
+
+@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}.
@node Definir contextos nuevos
\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
+ \override Stem.transparent = ##t
+ \override Flag.transparent = ##t
\alias Voice
}
\context { \Staff
que añadir los grabadores que aportan esta funcionalidad:
@example
-\consists Note_heads_engraver
-\consists Text_engraver
+\consists "Note_heads_engraver"
+\consists "Text_engraver"
@end example
pero sólo necesitamos esto en la línea central:
@example
-\consists Pitch_squash_engraver
+\consists "Pitch_squash_engraver"
squashedPosition = #0
@end example
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
+\override Stem.transparent = ##t
+\override Flag.transparent = ##t
@end example
Todos estos añadidos tienen que cooperar, y esto se consigue con un
\type "Engraver_group"
\consists "Note_heads_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
+ \override Stem.transparent = ##t
+ \override Flag.transparent = ##t
\alias Voice
@}
@end example
@end example
-@node Alinear los contextos
-@subsection Alinear los contextos
-@translationof Aligning contexts
-
-Los contextos nuevos se pueden alinear por encima o por debajo de
-otros contextos existentes. Esto podría ser de utilidad al preparar
-un pentagrama vocal (@rlearning{Conjuntos vocales}) y en el ossia,
-
-@cindex ossia
-@funindex alignAboveContext
-@funindex alignBelowContext
-
-@lilypond[quote,ragged-right]
-ossia = { f4 f f f }
-\score{
- \relative c' \new Staff = "main" {
- c4 c c c
- <<
- \new Staff \with { alignAboveContext = #"main" } \ossia
- { d8 f d f d f d f }
- >>
- }
-}
-@end lilypond
-
-@cindex nested contexts
-@cindex contexts, nested
+@node Orden de disposición de los contextos
+@subsection Orden de disposición de los contextos
+@translationof Context layout order
+@cindex contextos, orden de disposición
@funindex \accepts
@funindex \denies
-Los contextos como @code{PianoStaff} pueden llevar dentro otros
-contextos anidados. Los contextos que se pueden aceptar para su
-anidamiento están definidos por la lista @qq{accepts} (acepta) de un
-contexto. Los contextos que no están en esta lista se colocan debajo
-del contexto exterior en la partitura impresa. Por ejemplo, el
-contexto @code{PianoStaff} está definido para que acepte contextos
-@code{Staff} y @code{FiguredBass} de forma predeterminada, pero no un
-contexto @code{Lyrics}, por ejemplo. Así pues, en la siguiente
-estructura la letra se sitúa debajo del sistema de piano en lugar de
-colocarse entre los dos pentagramas:
+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 @qq{accepts} del contexto externo. Los
+contextos anidados que no está nincluidos en la lista @qq{accepts} del
+contexto externo se recolocan debajo del contexto externo en lugar de
+anidarse dentro de él.
+
+La lista @qq{accepts} de un contexto se puede cambiar con las
+instrucciones @code{\accepts} (acepta) y @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:
-@lilypond[verbatim,quote,relative=1]
-\new PianoStaff
-<<
- \new Staff { e4 d c2 }
- \addlyrics { Three blind mice }
+@lilypond[verbatim,quote]
+\score {
\new Staff {
- \clef "bass"
- { c,1 }
+ c' d' e' f'
+ \chords { d1:m7 b1:min7.5- }
}
->>
+}
@end lilypond
-La lista @qq{accepts} de un contexto se puede modificar para que
-incluya contextos anidados adicionales, y así si quisiéramos que la
-letra apareciese entre los dos pentagramas podríamos usar:
-
-@lilypond[verbatim,quote,relative=1]
-\new PianoStaff \with { \accepts Lyrics }
-<<
- \new Staff { e4 d c2 }
- \addlyrics { Three blind mice }
+@lilypond[verbatim,quote]
+\score {
\new Staff {
- \clef "bass"
- { c,1 }
+ c' d' e' f'
+ \chords { d1:m7 b1:min7.5- }
}
->>
+ \layout {
+ \context {
+ \Staff
+ \accepts "ChordNames"
+ }
+ }
+}
@end lilypond
-Lo contrario de @code{\accepts} (acepta) es @code{\denies} (deniega);
-esto suprime un contexto de la lista @qq{accepts}.
+@code{\denies} se usa principalmente cuando un contexto nuevo se está
+basando en otro, pero los anidamientos requeridos difieren. Por
+ejemplo, el contexto @code{VaticanaStaff} está basado en el contexto
+@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 alignAboveContext
+@cindex alignBelowContext
+@funindex alignAboveContext
+@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:
+
+@example
+@code{\new Staff \with @{ alignAboveContext = #"principal" @} }
+@end example
+
+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 @code{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 @code{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
+@rlearning{Anidado de expresiones musicales},
+@ref{Modificación de pentagramas sueltos} y
+@ref{Técnicas específicas para la letra}.
+
+@seealso
+Manual de aprendizaje:
+@rlearning{Anidado de expresiones musicales}.
+
+Referencia de la notación:
+@ref{Modificación de pentagramas sueltos},
+@ref{Técnicas específicas para la letra}.
+
+Manual de utilización del programa:
+@rprogram{Aparece un pentagrama de más}.
+
+Archivos instalados:
+@file{ly/engraver-init.ly}.
@node Explicación del Manual de referencia de funcionamiento interno
@section Explicación del Manual de referencia de funcionamiento interno
@translationof Explaining the Internals Reference
-
@menu
* Navegar por la referencia del programa::
* Interfaces de la presentación::
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
@end itemize
@end ignore
+
@node Modificar las propiedades
@section Modificar las propiedades
@translationof Modifying properties
Existen dos tipos diferentes de propiedades almacenadas en los
contextos: las propiedades de contexto y las propiedades de grob. Las
-prpopiedades de contexto son propiedades que se aplican al contexto
+propiedades de contexto son propiedades que se aplican al contexto
como un todo y controlan la forma en que el propio contexto se
imprime. Por contra, las propiedades de grob se aplican a los tipos
de grob específicos que se imprimirán dentro del contexto.
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
@rinternals{RevertProperty},
@rinternals{PropertySet}.
-
@knownissues
-
El «back-end» o motor de salida no es muy estricto en la comprobación
de tipos de las propiedades de objetos. Las referencias cíclicas en
valores Scheme de propiedades pueden producir cuelgues o salidas
@end ifnothtml
@seealso
-
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
@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
@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
instrucciones de la forma
@example
-\override Stem #'(details beamed-lengths) = #'(4 4 3)
+\override Stem.details.beamed-lengths = #'(4 4 3)
@end example
@cindex documentación interna
@end ignore
@seealso
-
Referencia de funcionamiento interno:
@rinternals{Backend}
+
@node La instrucción tweak
@subsection La instrucción @code{\tweak}
@translationof The tweak command
instrucción @code{\tweak}, que tiene la sintaxis siguiente:
@example
-\tweak #'@code{propiedad-del-grob} #@code{valor}
+\tweak @var{objeto-de-presentación} #'@var{propiedad-del-grob} @var{valor}
@end example
-La instrucción @code{\tweak} se aplica al objeto que viene
-inmediatamente después de @code{valor} dentro del flujo musical.
+Es opcional especificar el @var{objeto-de-presentación}. La
+instrucción @code{\tweak} se aplica al objeto musical que viene
+inmediatamente después de @var{valor} dentro del flujo musical.
@ignore
En ocasiones es posible tomar un atajo para realizar el ajuste fino de
@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
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
Para que funcione la instrucción @code{\tweak}, debe permanecer
adyacente al objeto al que se ha de aplicar después de que el código
-de entrada se ha convertido a un flujo musical. A veces, LilyPond
-puede insertar elementos adicionales dentro del flujo de música
-durante el proceso de análisis sintáctico. Por ejemplo, cuando una
-nota que no es parte explícita de un acorde se coloca dentro de un
-acorde por parte de LilyPond de manera que las notas que se pretenden
-modificar con @code{\tweak} se deben poner dentro de una construcción
-de acorde:
+de entrada se ha convertido a un flujo musical. El trucaje de un
+acorde completo no hace nada porque su evento musical actúa solamente
+como un contenedor, y todos los objetos de presentación se crean a
+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
+@end lilypond
+
+La instrucción @code{\tweak} sencilla no se puede usar para modificar
+ningún objeto que no se haya creado directamente a partir de la entrada.
+Concretamente, no afecta a las plicas, barras automáticas ni
+alteraciones, porque éstos se generan posteriormente por
+parte de objetos de presentación @code{NoteHead}
+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}:
@lilypond[relative=2,verbatim,quote]
-\tweak #'color #red c4
-<\tweak #'color #red c>4
+\tweak Stem.color #red
+\tweak Beam.color #green c8 e
+<c e \tweak Accidental.font-size #-3 ges>4
@end lilypond
-La instrucción @code{\tweak} no se puede usar para modificar ningún
-elemento que no aparezca explícitamente en el código de entrada.
-Concretamente, no se puede usar para modificar plicas, barras o
-alteraciones directamente, porque éstos se generan posteriormente por
-parte de las cabezas de las notas, más que por elementos musicales del
-flujo de entrada. Tampoco se puede usar @code{\tweak} para modificar
-las claves ni las indicaciones de compás, porque se separarán de
-cualquier instrucción @code{\tweak} que aparezca en el flujo de
-entrada debido a la inserción automática de los elementos adicionales
-que se requieren para especificar el contexto.
+No se puede usar @code{\tweak} para modificar las claves o las
+indicaciones de compás, porque éstos se separan de cualquier
+instrucción @code{\tweak} precedente dentro del flujo de entrada
+merced a la inserción automática de elementos adicionales que se
+requieren para especificar el contexto.
-También se pueden escribir varias instrucciones @code{\tweak} antes de
-un elemento notacional, y todas ellas le afectan:
+Se pueden colocar varias instrucciones @code{\tweak} antes de un
+elemento de notación; todos le afectan:
@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
Esto puede ser de utilidad en la determinación de lo que
puede modificarse por medio de una instrucción @code{\tweak}.
-
@seealso
Manual de aprendizaje:
@rlearning{Métodos de trucaje}.
Manual de extensión:
@rextend{Presentación de las expresiones musicales}.
-
@knownissues
-@cindex trucos en una variable
-La instrucción @code{\tweak} no se puede usar dentro de una variable.
-
-@cindex trucos en la letra
-Las instrucciones @code{\tweak} no se pueden usar dentro del modo
-@code{\lyricmode}.
-
@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}
@end example
Una forma de acercar los pentagramas entre sí es reducir el valor de
-la clave @code{basic-distance} (@code{9}) para que se corresponda con el valor
-de @code{minimum-distance} (@code{7}). Para modificar una única clave
-de forma individual, utilice una @emph{declaración anidada}:
+la clave @code{basic-distance} (@code{9}) para que se corresponda con
+el valor de @code{minimum-distance} (@code{7}). Para modificar una
+única clave de forma individual, utilice una @emph{declaración
+anidada}:
@lilypond[quote,verbatim]
% default space between staves
% 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 }
Ahora, supongamos que deseamos que los pentagramas estén tan próximos
como sea posible sin que se superpongan. La manera más sencilla de
hacerlo es establecer las cuatro claves de la lista-A a cero. Sin
-embargo, no es necesario escribir cuatro declaraciones anidadas,
-una por cada clave. En lugar de eso, se puede redefinir
-completamente la propiedad con una sola declaración, como una lista-A:
+embargo, no es necesario escribir cuatro declaraciones anidadas, una
+por cada clave. En lugar de eso, se puede redefinir completamente la
+propiedad con una sola declaración, como una lista-A:
@lilypond[quote,verbatim]
\new PianoStaff \with {
- \override StaffGrouper #'staff-staff-spacing =
+ \override StaffGrouper.staff-staff-spacing =
#'((basic-distance . 0)
(minimum-distance . 0)
(padding . 0)
valores @emph{predeterminados si no se han fijado}. En el caso de
@code{staff-staff-spacing}, el valor de cualquier clave no fijada se
reiniciaría a cero (excepto @code{stretchability}, que toma el valor
-de @code{basic-distance} si no se fija). Así, las dos declaraciones siguientes
-son equivalentes:
+de @code{basic-distance} si no se fija). Así, las dos declaraciones
+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)
@end example
Una consecuencia de esto (posiblemente no intencionada) es la
-eliminación de cualquier valor estándar que
-se establezca en un archivo de inicio y que se carga cada vez que se
-compila un archivo de entrada. En el ejemplo anterior, los ajustes
-estándar para @code{padding} y
-@code{minimum-distance} (definidos en @file{scm/define-grobs.scm}) se
-reinician a sus valores predeterminados si no se han fijado (cero para
-las dos claves). La definición de una propiedad o variable como una
-lista-A (de cualquier tamaño) siempre reinicia todos los valores de
-clave no establecidos a sus valores predeterminados si no se han
-fijado. Ano ser que este sea el resultado deseado, es más seguro
-actualizar los valores de clave individualmente con una declaración
-anidada.
+eliminación de cualquier valor estándar que se establezca en un
+archivo de inicio y que se carga cada vez que se compila un archivo de
+entrada. En el ejemplo anterior, los ajustes estándar para
+@code{padding} y @code{minimum-distance} (definidos en
+@file{scm/define-grobs.scm}) se reinician a sus valores
+predeterminados si no se han fijado (cero para las dos claves). La
+definición de una propiedad o variable como una lista-A (de cualquier
+tamaño) siempre reinicia todos los valores de clave no establecidos a
+sus valores predeterminados si no se han fijado. Ano ser que este sea
+el resultado deseado, es más seguro actualizar los valores de clave
+individualmente con una declaración anidada.
@warning{Las declaraciones anidadas no funcionan para las listas-A de
propiedades de contexto (como @code{beamExceptions},
@menu
* Modos de entrada::
* Dirección y posición::
-* Orden de disposición de los contextos::
* Distancias y medidas::
* Propiedades del símbolo del pentagrama::
* Objetos de extensión::
* Rotación de objetos::
@end menu
+
@node Modos de entrada
@subsection Modos de entrada
@translationof Input modes
@end lilypond
-
@node Dirección y posición
@subsection Dirección y posición
@translationof Direction and placement
@c TODO Add table showing these
Se puede sobreescribir la acción predeterminada mediante el prefijado
-de la articulación por un @emph{indicacor de dirección}. Están disponibles
-tres indicadores de dirección: @code{^} (que significa @qq{arriba}), @code{_}
-(que significa @qq{abajo}) o @code{-} (que significa @qq{usar la
-dirección predeterminada}). El indicador de dirección se puede normalmente
-omitir, en cuyo caso se supone el indicador predeterminado
-@code{-}, pero se necesita un indicador de dirección @strong{siempre}
-antes de:
+de la articulación por un @emph{indicacor de dirección}. Están
+disponibles tres indicadores de dirección: @code{^} (que significa
+@qq{arriba}), @code{_} (que significa @qq{abajo}) o @code{-} (que
+significa @qq{usar la dirección predeterminada}). El indicador de
+dirección se puede normalmente omitir, en cuyo caso se supone el
+indicador predeterminado @code{-}, pero se necesita un indicador de
+dirección @strong{siempre} antes de:
@itemize
@item las instrucciones @code{\tweak}
El valor de la propiedad @code{direction} se puede establecer al valor
@code{1}, con el significado de @qq{hacia arriba} o @qq{encima}, o a
-@w{@code{-1}}, con el significado de @qq{hacia abajo} o @qq{debajo}. Se
-pueden usar los símbolos @code{UP} y @code{DOWN} en sustitución de
-@code{1} y @w{@code{-1}} respectivamente. La dirección predeterminada se
-puede especificar estableciendo @code{direction} a @code{0} ó a
+@w{@code{-1}}, con el significado de @qq{hacia abajo} o @qq{debajo}.
+Se pueden usar los símbolos @code{UP} y @code{DOWN} en sustitución de
+@code{1} y @w{@code{-1}} respectivamente. La dirección predeterminada
+se puede especificar estableciendo @code{direction} a @code{0} ó a
@code{CENTER}. De forma alternativa, en muchos casos existen
instrucciones predefinidas para especificar la dirección. Todas ellas
son de la forma:
-@noindent
-@code{\xxxUp}, @code{xxxDown}, @code{xxxNeutral}
+@example
+@code{\xxxUp}, @code{\xxxDown} o @code{\xxxNeutral}
+@end example
@noindent
-donde @code{xxxNeutral} significa @qq{utilizar la dirección
+donde @code{\xxxNeutral} significa @qq{utilizar la dirección
predeterminada}. Véase @rlearning{Objetos interiores al pentagrama}.
-En alguna que otra ocasión, con el único ejemplo usual del arpegio, el
-valor de la propiedad @code{direction} especifica si el objeto se debe
+En alguna que otra ocasión como en el arpegio, el
+valor de la propiedad @code{direction} puede especificar si el objeto se debe
colocar a la izquierda o a la derecha del objeto padre. En este caso
-@w{@code{-1}} ó @code{LEFT} significan @qq{a la izquierda} y @code{1} ó
-@code{RIGHT} significan @qq{a la derecha}. @code{0} ó @code{CENTER}
-significan @qq{utilizar la dirección predeterminada}, como antes.
+@w{@code{-1}} ó @code{LEFT} significan @qq{a la izquierda} y @code{1}
+ó @code{RIGHT} significan @qq{a la derecha}. @code{0} ó @code{CENTER}
+significan @qq{utilizar la dirección predeterminada}.
Estas indicaciones afectan a todas las notas hasta que son canceladas.
c2( c)
@end lilypond
+En música polifónica, en general es mejor especificar una voz explícita
+que cambiar la dirección de un objeto. Para ver más información,
+véase @ref{Varias voces}.
-@node Orden de disposición de los contextos
-@subsection Orden de disposición de los contextos
-@translationof Context layout order
-
-@cindex contextos, orden de disposición
-
-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 @qq{accepts} del contexto externo. Los
-contextos anidados que no está nincluidos en la lista @qq{accepts} del
-contexto externo se recolocan debajo del contexto externo en lugar de
-anidarse dentro de él.
-
-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.
+@seealso
+Manual de aprendizaje:
+@rlearning{Objetos interiores al pentagrama}.
-El orden predeterminado en que los contextos se disponen, así como la
-lista @qq{accepts}, pueden cambiarse; véase @ref{Alinear los
-contextos}.
+Referencia de la notación:
+@ref{Varias voces}.
-@seealso
-Manual de utilización del programa:
-@rprogram{Aparece un pentagrama de más}.
@node Distancias y medidas
@subsection Distancias y medidas
en @code{staff-space}. Para ver una explicación y un ejemplo de su
utilización, consulte @rlearning{Longitud y grosor de los objetos}.
-
@seealso
Manual de aprendizaje:
@rlearning{Longitud y grosor de los objetos}.
@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
a~a
a
% increase the length of the tie
--\tweak #'minimum-length #5
+-\tweak minimum-length #5
~a
@end lilypond
\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
@lilypond[verbatim,quote,relative=2]
a( a)
a
--\tweak #'minimum-length #5
+-\tweak minimum-length #5
( a)
a\( a\)
a
--\tweak #'minimum-length #5
+-\tweak minimum-length #5
\( a\)
@end lilypond
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
@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
@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
Si se usa @code{\endSpanners} no es necesario cerrar \startTextSpan
con \stopTextSpan, ni cerrar los reguladores con @code{\!}.
-
@seealso
Referencia de funcionamiento interno:
@rinternals{TextSpanner},
sobreescribir su propiedad @code{break-visibility}. Las tres primeras
se aplican a todos los objetos de presentación; la última sólo a unos
pocos: los objetos @emph{divisibles}. El Manual de aprendizaje
-introduce estas cuatro técnicas, véase @rlearning{Visibilidad y color de los objetos}.
+introduce estas cuatro técnicas,
+véase @rlearning{Visibilidad y color de los objetos}.
Hay también algunas otras técnicas que son específicas de ciertos
objetos de presentación. Se estudian bajo Consideraciones especiales.
@lilypond[quote,verbatim,relative=1]
a1 a
-\override Score.BarLine #'stencil = ##f
+\override Score.BarLine.stencil = ##f
a a
-\revert Score.BarLine #'stencil
+\revert Score.BarLine.stencil
a a a
@end lilypond
+
@node Hacer transparentes los objetos
@unnumberedsubsubsec Hacer transparentes los objetos
@translationof Making objects transparent
@lilypond[quote,verbatim,relative=2]
a4 a
-\once \override NoteHead #'transparent = ##t
+\once \override NoteHead.transparent = ##t
a a
@end lilypond
+
@node Pintar los objetos de blanco
@unnumberedsubsubsec Pintar los objetos de blanco
@translationof Painting objects white
objeto blanco, como puede verse aquí:
@lilypond[quote,verbatim,relative=2]
-\override Staff.Clef #'color = #white
+\override Staff.Clef.color = #white
a1
@end lilypond
predeterminado de @code{1}, se dibuja después de las líneas del
pentagrama (valor @code{layer} predeterminado de @code{0}),
sobreimpresionándolas. Para cambiarlo, se debe dar al objeto
-@code{Clef} un valor de @code{layer} más bajo, digamos @w{@code{-1}}, para
-que se dibuje antes:
+@code{Clef} un valor de @code{layer} más bajo, digamos @w{@code{-1}},
+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
+
@node Uso de break-visibility (visibilidad en el salto)
@unnumberedsubsubsec Uso de break-visibility (visibilidad en el salto)
@translationof Using break-visibility
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
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
@item OctavateEight: véase más abajo
@end itemize
+
@node Consideraciones especiales
@unnumberedsubsubsec Consideraciones especiales
@translationof Special considerations
\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
\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
@code{explicitClefVisibility} controla tanto el símbolo de clave como
el símbolo de octava asociado.
-
@seealso
Manual de aprendizaje:
@rlearning{Visibilidad y color de los objetos}
@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
+
@node Rotación de elementos de marcado
@unnumberedsubsubsec Rotación de elementos de marcado
@translationof Rotating markup
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" }
fis^\markup { \rotate #30 "an F-Sharp" }
@end lilypond
+
@node Trucos avanzados
@section Trucos avanzados
@translationof Advanced tweaks
* Agrupación vertical de objetos gráficos::
* Modificación de los sellos::
* Modificación de las formas::
+* Contenedores unpure-pure::
@end menu
-
@seealso
Manual de aprendizaje:
@rlearning{Trucar la salida},
@ref{Explicación del Manual de referencia de funcionamiento interno},
@ref{Modificar las propiedades}.
+Manual de extensión:
+@rextend{Interfaces para programadores}.
Archivos de inicio:
@file{scm/define-grobs.scm}.
Fragmentos de código:
@rlsr{Tweaks and overrides}.
-Extender:
-@rextend{Interfaces para programadores}.
-
Referencia de funcionamiento interno:
@rinternals{All layout objects}.
de ensayo sobre dichos objetos.
@seealso
-@ref{Uso del break-alignable-interface},
+Referencia de la notación:
+@ref{Uso del break-alignable-interface}.
+
+Manual de extensión:
@rextend{Funciones de callback}.
@menu
* Uso del break-alignable-interface::
@end menu
+
@node Establecer directamente X-offset e Y-offset
@unnumberedsubsubsec Establecer directamente @code{X-offset} y @code{Y-offset}
@translationof Setting X-offset and Y-offset directly
@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
@c TODO write more
+
@node Uso del side-position-interface
@unnumberedsubsubsec Uso del @code{side-position-interface}
@translationof Using the side-position-interface
@c TODO Add examples
+
@node Uso del self-alignment-interface
@unnumberedsubsubsec Uso del @code{self-alignment-interface}
@translationof Using the self-alignment-interface
@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
@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
@lilypond[verbatim,quote,relative=1]
% The rehearsal mark will be centered above the Clef
-\override Score.RehearsalMark #'break-align-symbols = #'(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)
+\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
@lilypond[verbatim,quote,relative=1]
% The rehearsal mark will be centered above the Key Signature
-\override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef)
+\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
\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 "↓"
@lilypond[verbatim,quote,relative=1]
% The RehearsalMark will be centered above the Key Signature
-\override Score.RehearsalMark #'break-align-symbols = #'(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
+\once \override Score.KeySignature.break-align-anchor-alignment = #LEFT
\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
+\once \override Score.KeySignature.break-align-anchor-alignment = #RIGHT
\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
@subsection Agrupación vertical de objetos gráficos
@translationof Vertical grouping of grobs
+@c TODO Expand this section
+
Los grobs (objetos gráficos) @code{VerticalAlignment} y
@code{VerticalAxisGroup} trabajan de manera coordinada.
@code{VerticalAxisGroup} agrupa distintos grobs como @code{Staff},
@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"
@c TODO Add inserting Postscript or ref to later
-
@seealso
Referencia de la notación:
@ref{Notación gráfica dentro de elementos de marcado},
* Modificación de ligaduras de unión y de expresión::
@end menu
+
@node Modificación de ligaduras de unión y de expresión
@unnumberedsubsubsec Modificación de ligaduras de unión y de expresión
@translationof Modifying ties and slurs
@lilypond[verbatim,quote,relative=1]
<<
{
- \once \override Tie
- #'control-points = #'((1 . -1) (3 . 0.6) (12.5 . 0.6) (14.5 . -1))
+ \once \override Tie.control-points = #'((1 . -1) (3 . 0.6) (12.5 . 0.6) (14.5 . -1))
e1 ~ e
}
\\
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.
+@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 Contenedores unpure-pure
+@subsection Contenedores unpure-pure
+@translationof Unpure-pure containers
+
+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
+Scheme en lugar de un literal, es decir, un número o una pareja de
+números.
+
+Para ciertos objetos gráficos, las dimensiones @code{Y-extent} están
+basadas en la propiedad @code{stencil}, la sobreescritura de la
+propiedad de sello de éstos requiere una sobreescritura adicional de
+@code{Y-extent} con un contenedor unpure-pure. Cuando una función
+sobreescribe una dimensión @code{Y-offset} y/o @code{Y-extent} se
+supone que esto dispara los cálculos de los saltos de línea
+prematuramente durante la compilación. Así pues, la función no se
+evalúa en absoluto (devolviendo por lo general un valor de @samp{0} o
+@samp{'(0 . 0)}) lo que puede dar lugar a colisiones. Una función
+@q{pura} no afecta a las propiedades, objetos o suicidios de grobs, y
+por ello siempre ven sus valores relacionados con el eje Y evaluados
+correctamente.
+
+Actualmente hay unas treinta funciones que ya se consideran @q{puras}
+y los contenedores Unpure-pure son una manera de establecer funciones
+que no están en esta lista como @q{puras}. La función @q{pura} se
+evalúa @emph{antes} de cualquier salto de línea y así el espaciado
+horizontal se puede ajustar @q{a tiempo}. La función @q{impura} se
+evalúa entonces @emph{después} del salto de línea.
+
+@warning{Dado que es difícil saber siempre qué funciones están en esta
+lista, recomendamos que cualquier función @q{pura} que estemos creando
+no utilice los grobs @code{Beam} o @code{VerticalAlignment}.}
+
+Un contenedor @q{unpure-pure} se contruye de la manera siguiente:
+
+@code{(ly:make-unpure-pure-container f0 f1)}
+
+donde @code{f0} es una función que toma @var{n} argumentos (@var{n >=
+1}) y el primer argumento siempre debe ser el grob. Ésta es la
+función que da el resultado real. @var{f1} es la función que se
+etiqueta como @q{pura} que toma @var{n + 2} argumentos. De nuevo, el
+primer argumento debe ser siempre el grob pero los argumentos segundo
+y tercero son argumentos de @q{inicio} y de @q{final}.
+
+@var{inicio} y @var{final} son, a todos los efectos, valores mudos que
+sólo tienen importancia para los @code{objetos de extensión} (o sea:
+@code{Hairpin}, regulador, o @code{Beam}, barra), que pueden devolver
+distintas estimaciones de altura basadas en una columna de inicio y
+una de final.
+
+El resto son los otros argumentos para la primera función (que puede
+no ser ninguno si @var{n = 1}).
+
+El resultado de la segunda función se usa como una aproximación del
+valor necesario, que se usa entonces por la primera función para
+obtener el valor real que se usa a continuación para el ajuste de
+precisión mucho más tardío durante el proceso de espaciado.
+
+@lilypond[verbatim,quote,ragged-right]
+#(define (square-line-circle-space grob)
+(let* ((pitch (ly:event-property (ly:grob-property grob 'cause) 'pitch))
+ (notename (ly:pitch-notename pitch)))
+ (if (= 0 (modulo notename 2))
+ (make-circle-stencil 0.5 0.0 #t)
+ (make-filled-box-stencil '(0 . 1.0)
+ '(-0.5 . 0.5)))))
+
+squareLineCircleSpace = {
+ \override NoteHead.stencil = #square-line-circle-space
+}
+
+smartSquareLineCircleSpace = {
+ \squareLineCircleSpace
+ \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 disis d
+ \smartSquareLineCircleSpace
+ cis4 ces disis d
+}
+@end lilypond
+
+En el primer compás, sin el contenedor @emph{unpure-pure}, el motor de
+espaciado no conoce la anchura de la cabeza de la nota y permite que
+colisione con las alteraciones accidentales. En el segundo compás, el
+motor de espaciado conoce la anchura de las cabezas de las notas y
+evita la colisión mediante el alargamiento de la línea en la medida
+adecuada.
+
+Normalmente, para cálculos simples se pueden usar funciones casi
+idénticas tanto para las partes @q{no pura} y @q{pura}, simplemente
+cambiando el número de argumentos que se pasan a, y el ámbito de, la
+función.
+
+@warning{Si una función está caracterizada como @q{pura} y resulta que
+no lo es, el resultado puede ser inesperado.}
+
@node Uso de las funciones musicales
@section Uso de las funciones musicales
* Ejemplos de funciones de sustitución::
@end menu
+
@node Sintaxis de las funciones de sustitución
@subsection Sintaxis de las funciones de sustitución
@translationof Substitution function syntax
debe devolver @code{#t}.
@item @code{@var{@dots{}música@dots{}}}
-@tab entrada de LilyPond normal, que utiliza @code{$} para
-referenciar argumentos (p.ej. @samp{$arg1}).
+@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
+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
utilizan en algunas situaciones avanzadas como se encuentra descrito
en @rextend{Sintaxis de las funciones musicales}. Para las funciones
@example
boolean?
cheap-list? @emph{(utilizar en lugar de }@q{list?}@emph{ para un procesado más rápido)}
+ly:duration?
ly:music?
+ly:pitch?
markup?
number?
pair?
@ref{Predicados de tipo predefinidos}. También se permiten los
predicados de tipo definidos por el usuario.
-
@seealso
-
Referencia de la notación:
@ref{Predicados de tipo predefinidos}.
(parser location padding)
(number?)
#{
- \once \override TextScript #'padding = $padding
+ \once \override TextScript.padding = #padding
#})
\relative c''' {
Además de números, podemos usar expresiones musicales, como notas,
para los argumentos de las funciones musicales:
-@c TODO: use a better example (the music argument is redundant).
-
@lilypond[quote,verbatim,ragged-right]
custosNote =
#(define-music-function
(parser location note)
(ly:music?)
#{
- \once \override Voice.NoteHead #'stencil =
- #ly:text-interface::print
- \once \override Voice.NoteHead #'text =
- \markup \musicglyph #"custodes.mensural.u0"
- \once \override Voice.Stem #'stencil = ##f
- $note
+ \tweak NoteHead.stencil #ly:text-interface::print
+ \tweak NoteHead.text
+ \markup \musicglyph #"custodes.mensural.u0"
+ \tweak Stem.stencil ##f
+ #note
#})
\relative c' { c4 d e f \custosNote g }
tempoPadded =
#(define-music-function
(parser location padding tempotext)
- (number? string?)
+ (number? markup?)
#{
- \once \override Score.MetronomeMark #'padding = $padding
+ \once \override Score.MetronomeMark.padding = #padding
\tempo \markup { \bold #tempotext }
#})
\relative c'' {
\tempo \markup { "Low tempo" }
c4 d e f g1
- \tempoPadded #4.0 #"High tempo"
+ \tempoPadded #4.0 "High tempo"
g4 f e d c1
}
@end lilypond