@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
-Translation of GIT committish: 08a099c3829fea6b8192a1073347aee4ef07519f
+Translation of GIT committish: 2055f35c47a045a50a01ff4dba8524322cfc3b48
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.12.0"
+@c \version "2.14.0"
@node Cambiar los valores por omisión
@chapter Cambiar los valores por omisión
LISP) para aportar la infraestructura. La sobreescritura de las
decisiones de disposición da acceso efectivo a las interioridades del
programa, lo que requiere código de Scheme como entrada. Los
-elementos de Scheme se inauguran dentro de un archivo @code{.ly} con
-el símbolo de cuadradillo @code{#}.@footnote{@rextend{Tutorial de
-Scheme} contiene un breve tutorial sobre la introducción de números,
+elementos de Scheme se inauguran dentro de un archivo @file{.ly} con
+el símbolo de cuadradillo @code{#}.@footnote{@rextend{Tutorial de Scheme}
+contiene un breve tutorial sobre la introducción de números,
listas, cadenas y símbolos en Scheme.}
@menu
@rlearning{Contextos y grabadores}.
Archivos de inicio:
-@file{ly/@/engraver@/-init@/.ly},
-@file{ly/@/performer@/-init@/.ly}.
+@file{ly/engraver-init.ly},
+@file{ly/performer-init.ly}.
Fragmentos de código:
@rlsr{Contexts and engravers}.
@menu
* Score. El contexto maestro::
-* Contextos del nivel superior. Contenedores de pentagramas::
+* Contextos del nivel superior. Contenedores de pentagramas::
* Contextos de nivel intermedio. Pentagramas::
* Contextos del nivel más bajo. Voces::
@end menu
Se crea implícitamente una instancia del contexto Score cuando se
procesa un bloque @code{\score @{@dots{}@}} o @code{\layout
-@{@dots{}@}}, o explícitamente cuando se ejecuta una instrucción
-@code{\new Score}.
+@{@dots{}@}}.
@node Contextos del nivel superior. Contenedores de pentagramas
@unnumberedsubsubsec Contextos del nivel superior: contenedores de pentagramas
@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.
pentagramas. Cada parte que debe ir en su propio pentagrama, va
precedida de @code{\new Staff}.
-@lilypond[quote,verbatim,relative=2,ragged-right,fragment]
+@lilypond[quote,verbatim,relative=2,ragged-right]
<<
\new Staff { c4 c }
\new Staff { d4 d }
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}
+@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}
@example
almacenan propiedades, también contienen «plug-ins» o complementos
llamados @q{grabadores} que crean elementos de notación. Por ejemplo,
el contexto @code{Voice} contiene un grabador
-@code{Note_head_engraver} que crea las cabezas de nota y el contexto
+@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{Time_signature_engraver} y @code{Clef_engraver} de un contexto
@code{Staff}:
-@lilypond[quote,relative=1,verbatim,fragment]
+@lilypond[quote,relative=1,verbatim]
<<
\new Staff {
f2 g
@cindex polimétricas, partituras
@cindex compases distintos al mismo tiempo
-@lilypond[quote,relative=1,ragged-right,verbatim,fragment]
-\new Score \with {
- \remove "Timing_translator"
- \remove "Default_bar_line_engraver"
-} <<
+@lilypond[quote,verbatim]
+\score {
+ <<
+ \new Staff \with {
+ \consists "Timing_translator"
+ \consists "Default_bar_line_engraver"
+ } {
+ \time 3/4
+ c4 c c c c c
+ }
\new Staff \with {
\consists "Timing_translator"
\consists "Default_bar_line_engraver"
} {
- \time 3/4
+ \time 2/4
c4 c c c c c
}
- \new Staff \with {
- \consists "Timing_translator"
- \consists "Default_bar_line_engraver"
- } {
- \time 2/4
- c4 c c c c c
- }
>>
+\layout {
+ \context {
+ \Score
+ \remove "Timing_translator"
+ \remove "Default_bar_line_engraver"
+ }
+ }
+}
@end lilypond
@knownissues
aplicarlos a una definición de @code{\context} por referencia a dicha
variable.
-La instrucción @code{\RemoveEmptyStaffContext} sobreescribe nuestros
-ajustes en curso para @code{\Staff}. Si queremos cambiar los valores
-predeterminados para un pentagrama que utilice
-@code{\RemoveEmptyStaffContext}, debe hacerlo después de llamar a
-@code{\RemoveEmptyStaffContext}, o sea
+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
@example
\layout @{
\context @{
- \RemoveEmptyStaffContext
+ \Staff \RemoveEmptyStaves
\override Stem #'thickness = #4.0
@}
Supongamos que queremos mover la indicación de digitación del
fragmento siguiente:
-@lilypond[quote,fragment,relative=2,verbatim]
+@lilypond[quote,relative=2,verbatim]
c-2
\stemUp
f
Hemos estado hablando de @emph{el} objeto @code{Fingering}, pero
realmente esto no significa mucho. El archivo de inicialización
(véase @rlearning{Otras fuentes de información})
-@file{scm/@/define@/-grobs@/.scm} muestra el alma del @q{objeto},
+@file{scm/define-grobs.scm} muestra el alma del @q{objeto},
@example
(Fingering
(script-priority . 100)
(stencil . ,ly:text-interface::print)
(direction . ,ly:script-interface::calc-direction)
- (font-encoding . fetaNumber)
+ (font-encoding . fetaText)
(font-size . -5) ; don't overlap when next to heads.
(meta . ((class . Item)
(interfaces . (finger-interface
Recordemos que queríamos cambiar la posición del @b{2} en
-@lilypond[quote,fragment,relative=2,verbatim]
+@lilypond[quote,relative=2,verbatim]
c-2
\stemUp
f
Fingering, es decir, antes del @code{c2}, llegamos al siguiente
resultado:
-@lilypond[quote,relative=2,fragment,verbatim]
+@lilypond[quote,relative=2,verbatim]
\once \override Voice.Fingering #'padding = #3
c-2
\stemUp
* La instrucción override::
* La instrucción tweak::
* set frente a override::
+* Modificación de las listas-A::
@end menu
pentagrama actual. Otros pentagramas mantienen su aspecto normal.
Aquí vemos la instrucción en pleno funcionamiento:
-@lilypond[quote,verbatim,relative=2,fragment]
+@lilypond[quote,verbatim,relative=2]
c4
\override Staff.Stem #'thickness = #4.0
c4
@code{Voice}. Al añadir @code{\once} se aplica el cambio durante un
solo paso de tiempo.
-@lilypond[quote,fragment,verbatim,relative=2]
+@lilypond[quote,verbatim,relative=2]
c4
\once \override Stem #'thickness = #4.0
c4
ligaduras o barras, la instrucción @code{\override} se debe ejecutar
en el momento en que se crea el objeto. En este ejemplo:
-@lilypond[quote,fragment,verbatim,relative=2]
+@lilypond[quote,verbatim,relative=2]
\override Slur #'thickness = #3.0
c8[( c
-\override Beam #'thickness = #0.6
+\override Beam #'beam-thickness = #0.6
c8 c])
@end lilypond
si el valor de la propiedad de contexto @code{skipBars} se establece a
@code{#t} (verdadero):
-@lilypond[quote,verbatim,relative=2,fragment]
+@lilypond[quote,verbatim,relative=2]
R1*2
\set Score.skipBars = ##t
R1*2
contexto actual de nivel más bajo (normalmente @code{ChordNames},
@code{Voice} o @code{Lyrics}). En este ejemplo:
-@lilypond[quote,verbatim,relative=2,fragment]
+@lilypond[quote,verbatim,relative=2]
\set Score.autoBeaming = ##f
<<
{
nivel más bajo, que en este caso es @code{Voice}, no tendrá ningún
efecto, porque skipBars es una propiedad del contexto @code{Score}.
-@lilypond[quote,verbatim,relative=2,fragment]
+@lilypond[quote,verbatim,relative=2]
R1*2
\set skipBars = ##t
R1*2
@var{contexto}. Properties that have been set in enclosing contexts will
not be altered by an unset in an enclosed context:
-@lilypond[quote,verbatim,relative=2,fragment]
+@lilypond[quote,verbatim,relative=2]
\set Score.autoBeaming = ##t
<<
{
Los ajustes que se aplican solamente a un único paso de tiempo se
pueden escribir con @code{\once}, por ejemplo en
-@lilypond[quote,verbatim,relative=2,fragment]
+@lilypond[quote,verbatim,relative=2]
c4
\once \set fontSize = #4.7
c4
los grobs. Las decscripciones de los grobs reciben un nombre en
@code{MayúsculasDeCamello} (empezando en mayúscula). Contienen los
@q{ajustes predeterminados} para un tipo particular de grob, en forma
-de lista asociativa. Consulte @file{scm/@/define@/-grobs@/.scm} para
+de lista asociativa. Consulte @file{scm/define-grobs.scm} para
ver los ajustes de cada descripción de grob. Las descripciones de
grob se modifican con @code{\override}.
sobreescribiendo la propiedad @code{thickness} (grosor) del objeto
@code{Stem} (plica):
-@lilypond[quote, verbatim, relative=2, fragment]
+@lilypond[quote,verbatim,relative=2]
c4 c
\override Voice.Stem #'thickness = #3.0
c4 c
Si no se ha especificado ningún contexto en la instrucción
@code{\override}, se utiliza el contexto del nivel inferior:
-@lilypond[quote, verbatim, relative=2, fragment]
+@lilypond[quote,verbatim,relative=2]
{ \override Staff.Stem #'thickness = #3.0
<<
{
El efecto de una instrucción de sobreescritura @code{\override} se
puede deshacer con @code{\revert}:
-@lilypond[quote, verbatim, relative=2, fragment]
+@lilypond[quote,verbatim,relative=2]
c4
\override Voice.Stem #'thickness = #3.0
c4 c
los grobs del contexto afectado partiendo del momento actual y hacia
adelante:
-@lilypond[quote, verbatim, relative=2, fragment]
+@lilypond[quote,verbatim,relative=2]
{
<<
{
Se puede usar @code{\once} con @code{\override} para afectar solamente
al instante de tiempo actual:
-@lilypond[quote, verbatim, relative=2, fragment]
+@lilypond[quote,verbatim,relative=2]
{
<<
{
elemento de código de la entrada, puede usar la función @code{\tweak},
por ejemplo
-@lilypond[relative=2,verbatim]
+@lilypond[relative=2,verbatim,quote]
< c
\tweak #'color #red
d
El flujo musical que se genera a partir de una sección de un archivo
de entrada (incluido cualquier elemento insertado automáticamente)
-puede examinarse, véase @rextend{Presentación de las expresiones
-musicales}. Esto puede ser de utilidad en la determinación de lo que
+puede examinarse, véase @rextend{Presentación de las expresiones musicales}.
+Esto puede ser de utilidad en la determinación de lo que
puede modificarse por medio de una instrucción @code{\tweak}.
@subsection @code{\set} frente a @code{\override}
@translationof set versus override
-HACER: probablemente esta sección es innecesaria.
+@c HACER: probablemente esta sección es innecesaria.
@ignore
We have seen two methods of changing properties: @code{\set} and
@end ignore
+
+@node Modificación de las listas-A
+@subsection Modificación de las listas-A
+@translationof Modifying alists
+
+Ciertas propiedades configurables por parte del usuario se representan
+internamente como @emph{listas-A} (listas asociativas), que almacenan
+duplas de @emph{claves} y @emph{valores}. La estructura de una
+lista-A es la siguiente:
+
+@example
+'((@var{clave1} . @var{valor1})
+ (@var{clave2} . @var{valor2})
+ (@var{clave3} . @var{valor3})
+ @dots{})
+@end example
+
+Si una lista-A es una propiedad de un grob o una variable de
+@code{\paper}, sus claves se pueden modificar individualmente sin que
+afecte a las otras claves.
+
+Por ejemplo, para reducir el espacio entre pentagramas adyacentes
+dentro de un grupo, use la propiedad @code{staff-staff-spacing}
+del grob @code{StaffGrouper}. La propiedad es una lista-A con cuatro
+claves: @code{basic-distance} (distancia básica),
+@code{minimum-distance} (distancia mínima), @code{padding} (relleno)
+y @code{stretchability} (ampliabilidad).
+Los ajustes estándar para esta propiedad
+se relacionan en la sección
+@qq{Backend} de la Referencia de Funcionamiento Interno
+(véase @rinternals{StaffGrouper}):
+
+@example
+'((basic-distance . 9)
+ (minimum-distance . 7)
+ (padding . 1)
+ (stretchability . 5))
+@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}:
+
+@lilypond[quote,verbatim]
+% default space between staves
+\new PianoStaff <<
+ \new Staff { \clef treble c''1 }
+ \new Staff { \clef bass c1 }
+>>
+
+% reduced space between staves
+\new PianoStaff \with {
+ % this is the nested declaration
+ \override StaffGrouper #'staff-staff-spacing #'basic-distance = #7
+} <<
+ \new Staff { \clef treble c''1 }
+ \new Staff { \clef bass c1 }
+>>
+@end lilypond
+
+La utilización de una declaración anidada actualiza la clave
+especificada (como @code{basic-distance} en el ejemplo anterior)
+sin alterar ninguna
+de las otras claves que ya se habían establecido para la misma
+propiedad.
+
+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:
+
+@lilypond[quote,verbatim]
+\new PianoStaff \with {
+ \override StaffGrouper #'staff-staff-spacing =
+ #'((basic-distance . 0)
+ (minimum-distance . 0)
+ (padding . 0)
+ (stretchability . 0))
+} <<
+ \new Staff { \clef treble c''1 }
+ \new Staff { \clef bass c1 }
+>>
+@end lilypond
+
+Observe que cualquier clave que no haya sido relacionada
+explícitamente en la definición de la lista-A, será reiniciada a sus
+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:
+
+@example
+\override StaffGrouper #'staff-staff-spacing =
+ #'((basic-distance . 7))
+
+\override StaffGrouper #'staff-staff-spacing =
+ #'((basic-distance . 7)
+ (minimum-distance . 0)
+ (padding . 0)
+ (stretchability . 7))
+@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.
+
+@warning{Las declaraciones anidadas no funcionan para las listas-A de
+propiedades de contexto (como @code{beamExceptions},
+@code{keySignature}, @code{timeSignatureSettings}, etc.). Estas
+propiedades sólo se pueden modificar redefiniéndolas completamente
+como listas-A.}
+
+
@node Conceptos y propiedades útiles
@section Conceptos y propiedades útiles
@translationof Useful concepts and properties
@code{\pt}@tie{}(puntos, 1/72.27 pulgadas). Las distancias de diseño
de página se pueden especificar también en unidades escalables (véase
el párrafo siguiente) adjuntando @code{\staff-space} a la cantidad.
-La disposición de página se describe en detalle en @ref{Formateo de
-las páginas}.
+La disposición de página se describe en detalle en
+@ref{Disposición de la página}.
Las distancias escaladas siempre se especifican en unidades de un
espacio del pentagrama o, más raramente, medio espacio del pentagrama.
@rlearning{Longitud y grosor de los objetos}.
Referencia de la notación:
-@ref{Formateo de las páginas},
+@ref{Disposición de la página},
@ref{Establecer el tamaño del pentagrama}.
especifican por las sub-listas @code{left-broken} y
@code{right-broken} de @code{bound-details}. Por ejemplo:
-@lilypond[relative=2,ragged-right,verbatim,fragment]
+@lilypond[relative=2,ragged-right,verbatim,quote]
\override Glissando #'breakable = ##t
\override Glissando #'(bound-details right-broken Y) = #-3
c1 \glissando \break
usa para escribir @i{cresc.}, @i{tr} y otros textos sobre los objetos
de extensión horizontales.
-@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
+@lilypond[quote,ragged-right,relative=2,verbatim]
\override TextSpanner #'(bound-details left text)
= \markup { \small \bold Slower }
c2\startTextSpan b c a\stopTextSpan
@code{stencil-align-dir-y} o @code{stencil-offset} se moverá el
símbolo del borde verticalmente con relación al extremo de la línea:
-@lilypond[relative=1,fragment,verbatim]
+@lilypond[relative=1,quote,verbatim]
\override TextSpanner
#'(bound-details left stencil-align-dir-y) = #-2
\override TextSpanner
siguiente barra de compás si @code{to-barline} es verdadero y se
produce una divisoria antes de la siguiente nota.
-@lilypond[verbatim,quote,ragged-right,relative=2,fragment]
+@lilypond[verbatim,quote,ragged-right,relative=2]
\endSpanners
c2 \startTextSpan c2 c2
\endSpanners
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
-controla independientemente de la del objeto @code{Clef}, así que es
+hereda automáticamente de la del objeto @code{Clef}, así que no es
necesario aplicar las sobreescrituras correspondientes
-@code{break-visibility} tanto a los objetos @code{Clef} como
-@code{OctavateEight} para suprimir completamente estos símbolos de
-clave al comienzo de cada línea.
+@code{break-visibility} a los objetos
+@code{OctavateEight} para suprimir los símbolos de 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
He aquí un ejemplo de los distintos estilos de línea disponibles, y
cómo aplicarles ajustes finos.
-@lilypond[relative=2,ragged-right,verbatim,fragment]
+@lilypond[relative=2,ragged-right,verbatim,quote]
d2 \glissando d'2
\once \override Glissando #'style = #'dashed-line
d,2 \glissando d'2
computan al vuelo para cada uno de los objetos gráficos, pero es
posible sobreescribirlos:
-@lilypond[relative=2,ragged-right,verbatim,fragment]
+@c TODO Complete
+@lilypond[relative=2,ragged-right,verbatim,quote]
e2 \glissando f
\once \override Glissando #'(bound-details right Y) = #-2
e2 \glissando f
Archivos de inicio:
-@file{scm/@/define@/-grobs@/.scm}.
+@file{scm/define-grobs.scm}.
Fragmentos de código:
@rlsr{Tweaks and overrides}.
Extender:
-@rextend{Interfaces for programmers}.
+@rextend{Interfaces para programadores}.
Referencia de funcionamiento interno:
@rinternals{All layout objects}.
La posición de un objeto sobre el pentagrama viene dada por los
valores de las propiedades @code{X-offset} e @code{Y-offset}. El
-valor de @code{X-offset} da el desplazamiento desde la coordenada x
+valor de @code{X-offset} da el desplazamiento desde la coordenada X
del punto de referencia del objeto padre, y el valor de
@code{Y-offset} da el desplazamiento a partir de la línea central del
pentagrama. Los valores de @code{X-offset} y @code{Y-offset} se
pueden establecer directamente o se puede dejar que se calculen por
parte de procedimientos para conseguir una alineación con el objeto
-padre de distintas maneras.
+padre.
@warning{Muchos objetos tienen consideraciones de posicionamiento
especiales que hacen que se ignore o se modifique cualquier ajuste
realizado a @code{X-offset} o a @code{Y-offset}, a pesar de que el
-objeto contemple el interface @code{self-alignment-interface}.}
+objeto contemple el interface @code{self-alignment-interface}. La
+sobreescritura de las propiedades @code{X-offset} ó @code{Y-offset} a
+un valor fijo hace que se descarte la respectiva propiedad
+@code{self-alignment}.}
Por ejemplo, una alteración accidental se puede reposicionar
verticalmente estableciendo @code{Y-offset} pero los cambios a
@code{break-aligned-interface} para el posicionamiento de las letras
de ensayo sobre dichos objetos.
+@seealso
+@ref{Uso del break-alignable-interface},
+@rextend{Funciones de callback}.
+
@menu
* Establecer directamente X-offset e Y-offset::
* Uso del side-position-interface::
Los argumentos @code{parser} y @code{location} son necesarios, y se
utilizan en algunas situaciones avanzadas como se encuentra descrito
-en @rextend{Music function syntax}. Para las funciones de
-sustitución, tan sólo hemos de asegurarnos de incluirlos.
+en @rextend{Sintaxis de las funciones musicales}. Para las funciones
+de sustitución, tan sólo hemos de asegurarnos de incluirlos.
También es necesaria la lista de predicados de tipo. Algunos de los
predicados de tipo más comunes que se utilizan en las funciones
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
\relative c' { c4 d e f \custosNote g }
@end lilypond
-Substitution functions with multiple arguments can be defined:
+Se pueden definir funciones de sustitución con más de un argumento:
@lilypond[quote,verbatim,ragged-right]
tempoPadded =
}
@end lilypond
-@c @seealso
-
-
+@c TODO: add appropriate @@ref's here.