\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: b6f94447415dded7c6e146b41b6139fe76cb84c4
+ Translation of GIT committish: efec448b936bd63d82571cf79f8435768605c66d
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@end ignore
@item
-Se reserva espacio horizontal para las indicaciones de tempo y las
-marcas de ensayo, de forma que no se superpongan. La instrucción
-nueva @code{\markLengthOff} desactiva esta funcionalidad.
-@lilypond[quote,relative=0]
-\compressFullBarRests
-\tempo "Molto vivace" c''2 c'
-\mark\default
-\tempo "Meno mosso" R1*16
+Se ha cambiado el nombre de @code{OctavateEight} por el de
+@code{ClefModifier}. Las propiedades de contexto relacionadas han
+cambiado su nombre @code{xxxOctavationyyy} por el de
+@code{xxxTranspositionyyy}.
+
+@item
+Existe una nueva instrucción @code{\absolute} que marca
+explícitamente la música introducida en alturas absolutas. Aunque
+esto era antes el comportamiento predeterminado, una instrucción
+@code{\absolute} explícita evita también la reinterpretación
+cuando el pasaje está dentro de un bloque marcado como
+@code{\relative}:
+@lilypond[verbatim,quote]
+\relative c { c'4 \absolute { f'' g'' } c }
@end lilypond
@item
era equivalente a @code{\transposition f'}. Ahora se mantiene
como equivalente a @code{\transposition bes'}.
+@item
+Cuando se comprueba la existencia de colisiones, LilyPond ya no
+trata los objetos como rectángulos. En lugar de ello se aproxima
+la forma verdadera de los objetos utilizando un enfoque parecido
+al uso de integrales, lo que por lo común dará como resultado un
+posicionamiento más ceñido y regular de los objetos y los sistemas
+de pentagramas:
+
+@lilypond[relative=1]
+#(ly:set-option 'debug-skylines #t)
+\dynamicUp
+c'4\f a4\f d\f( f)
+a,4\< c c c\!
+d4-.\downbow a4^"r'venu..." c \tempo "T1" e
+@end lilypond
+
+El fragmento anterior tenía anteriormente este aspecto:
+
+@lilypond[relative=1]
+#(ly:set-option 'debug-skylines #t)
+\override Hairpin #'vertical-skylines = #'()
+\override DynamicText #'vertical-skylines = #'()
+\override TextScript #'vertical-skylines = #'()
+\override Score.MetronomeMark #'vertical-skylines = #'()
+\override Staff.Clef #'vertical-skylines = #'()
+\dynamicUp
+c'4\f a4\f d\f( f)
+a,4\< c c c\!
+d4-.\downbow a4^"r'venu..." c \tempo "T1" e
+@end lilypond
+
+Entre los objetos afectados se encuentran @code{Accidentals},
+@code{Beams}, @code{Clefs}, @code{Dynamics}, @code{FiguredBass},
+@code{Flags}, @code{Glissandos}, @code{Lyrics},
+@code{MetronomeMarks}, @code{OttavaBrackets}, @code{Pedals},
+@code{RehearsalMarks}, @code{Rests}, @code{Scripts},
+@code{TextScripts}, @code{Ties}, @code{Tuplets} y
+@code{VoltaBrackets}.
+
@item
Ahora los grupos de valoración especial se crean mediante la
instrucción @code{\tuplet}, que toma una fracción
comienza en@tie{}0.
@item
-La instrucción @code{\clef} contempla un cambio opcional de octava:
+La instrucción @code{\clef} contempla una transposición opcional:
@lilypond[verbatim,quote,relative=1]
\clef "treble_(8)"
c2 c
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@c This file is part of extending.tely
@ignore
- Translation of GIT committish: b24aaf5d1e10c5ea055043ce6b2c3d50d2a9c943
+ Translation of GIT committish: fc43a05568a1be2fc78bd7a16a42e474d239aac8
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@node Bloques de código de LilyPond
@section Bloques de código de LilyPond
-@translationof Lilypond code blocks
+@translationof LilyPond code blocks
+
+@cindex Bloques de código de LilyPond
+@cindex LilyPond, bloques de código de
+@funindex #@{ @dots{} #@}
+@funindex $
+@funindex #
+
+La creación de expresiones musicales en Scheme puede ser una tarea
+tediosa porque a veces presentan muchos niveles de profundidad de
+anidamiento y el código resultante es grande. Para algunas tareas
+sencillas, esto puede evitarse utilizando bloques de código de
+LilyPond, que permiten usar la sintaxis ordinaria de LilyPond
+dentro de Scheme.
Los bloques de código de LilyPond tienen el siguiente aspecto:
@example
#@{ @var{código de LilyPond} #@}
@end example
-Se pueden usar en cualquier lugar en el que se pueda escribir código
-de Scheme: el lector de Scheme en efecto se modifica para que pueda
-incorporar bloques de código de LilyPond y pueda ocuparse de las
-expresiones de Scheme incrustadas que comienzan por @code{$} y@w{ }@code{#}.
-
-Extrae el bloque de código de LilyPond y genera una llamada al
-@code{parser} o analizador sintáctico de LilyPond, que corre en
-tiempo de ejecución para interpretar el bloque de código de
-LilyPond. Cualquier expresión de Scheme que se halle incrustada
-se ejecuta en el entorno léxico del bloque de código de LilyPond,
-de manera que tenemos acceso a las variables locales y a los
-parámetros de función en el punto en que se encuentra escrito el
-bloque de código de LilyPond. Si @code{location} se refiere a una
+
+He aquí un ejemplo trivial:
+
+@lilypond[verbatim,quote]
+ritpp = #(define-event-function (parser location) ()
+ #{ ^"rit." \pp #}
+)
+
+{ c'4 e'4\ritpp g'2 }
+@end lilypond
+
+Los bloques de código de LilyPond se pueden usar en cualquier
+lugar en el que se pueda escribir código de Scheme. El lector de
+Scheme en efecto se modifica para que pueda incorporar bloques de
+código de LilyPond y pueda ocuparse de las expresiones de Scheme
+incrustadas que comienzan por @code{$} y@w{ }@code{#}.
+
+@cindex parser (function argument)
+@cindex location
+
+El lector extrae el bloque de código de LilyPond y genera una
+llamada en tiempo de ejecución al analizador sintáctico para que
+interprete el código de LilyPond. Las expresiones de Scheme
+incrustadas en el código de LilyPond se evalúan dentro del entorno
+lóexico del bloque de código de LilyPond, de manera que puede
+accederse a todas las variables locales y los parámetros de
+función que están disponibles en el punto en que se escribe el
+bloque de código de LilyPond. Las variables definidas en otros
+módulos de Scheme, como los módulos que contienen bloques
+@code{\header} y @code{\layout}, no están accesibles como
+variables de Scheme, es decir, precedidas de@tie{}@code{#}, pero
+se puede acceder a ellas como variables de LilyPond, es decir,
+precedidas de@tie{}@code{\}.
+
+Si @code{location} (véase @ref{Funciones de Scheme}) se refiere a una
posición de entrada válida (como lo hace normalmente dentro de las
funciones musicales o de Scheme), toda la música generada dentro
del bloque de código tiene su @samp{origin} establecido a
de LilyPond (@code{#@{}@dots{}@code{#@}}) acceso al analizador
sintáctico.
+@item @code{location}
+@tab tiene que ser literalmente @code{location} para ofrecer acceso al
+objeto de situación de la entrada, que se usa para ofrecer
+menssajes de error con nombres de archivo y números de línea.
+
@item @code{@var{argN}}
@tab @var{n}-ésimo argumento
@item @code{@var{typeN?}}
@tab un @emph{predicado de tipo} de Scheme para el que @code{@var{argN}}
-debe devolver @code{#t}. Algunos de estos predicados se reconocen de
-forma especial por parte del analizador, véase más abajo. También
-existe una forma especial @code{(@emph{predicate?} @emph{default})}
-para especificar argumentos opcionales. Si el argumento actual no
-está presente cuando se ll ama a la función, el valor predeterminado se
-emplea en sustitución. Los valores predeterminados se evalúan en
-tiempo de definición (¡incluyendo los bloques de código de LilyPond!),
-de manera que se necesitamos un valor por omisión calculado en tiempo
-de ejecución, debemos escribir en su lugar un valor especial que
-podamos reconocer fácilmente. Si escribimos el predicado entre
-paréntesis pero no lo seguimos por el valor predeterminado, se usa
-@code{#f} como valor por omisión. Los valores por omisión no se
-verifican con @emph{predicate?} en tiempo de definición ni en tiempo
-de ejecución: es nuestra responsabilidad tratar con los valores que
-especifiquemos. Los valores por omisión que son expresiones musicales
-se copian mientras se establece @code{origin} al parámetro
-@code{location}.
+debe devolver @code{#t}. Algunos de estos predicados se reconocen
+de forma especial por parte del analizador, véase más abajo.
+También existe una forma especial @code{(@emph{predicate?}
+@emph{default})} para especificar argumentos opcionales. Si el
+argumento actual no está presente cuando se ll ama a la función,
+el valor predeterminado se emplea en sustitución. Los valores
+predeterminados se evalúan en tiempo de definición (¡incluyendo
+los bloques de código de LilyPond!), de manera que se necesitamos
+un valor por omisión calculado en tiempo de ejecución, debemos
+escribir en su lugar un valor especial que podamos reconocer
+fácilmente. Si escribimos el predicado entre paréntesis pero no
+lo seguimos por el valor predeterminado, se usa @code{#f} como
+valor por omisión. Los valores por omisión no se verifican con
+@emph{predicate?} en tiempo de definición ni en tiempo de
+ejecución: es nuestra responsabilidad tratar con los valores que
+especifiquemos. Los valores por omisión que son expresiones
+musicales se copian mientras se establece @code{origin} al
+parámetro @code{location}.
@item @code{@var{cuerpo}}
@tab una secuencia de formas de Scheme que se evalúan ordenadamente; la
(parser location)
()
(ly:set-option 'point-and-click #f))
-...
+@dots{}
\noApuntarYPulsar % desactivar la función de apuntar y pulsar
@end example
}
@end lilypond
+@funindex \temporary
+@cindex sobreescrituras temporales
+@cindex temporales, sobreescrituras
+@cindex propiedades, recuperar valor anterior
+
+Las propiedades se mantienen conceptualmente utilizando una pila
+por cada propiedad, por cada grob y por cada contexto. Las
+funciones musicales pueden requerir la sobreescritura de una o
+varias propiedades durante el tiempo de duración de la función,
+restaurándolas a sus valores previos antes de salir. Sin embargo,
+las sobreescrituras normales extraen y descartan la cima de la
+pila de propiedades actual antes de introducir un valor en ella,
+de manera que el valor anterior de la propiedad se pierde cuando
+se sobreescribe. Si se quiere preservar el valor anterior, hay
+que preceder la instrucción @code{\override} con la palabra clave
+@code{\temporary}, así:
+
+@example
+\temporary \override @dots{}
+@end example
+
+El uso de @code{\temporary} hace que se borre la propiedad
+(normalmente fijada a un cierto valor) @code{pop-first} de la
+sobreescritura, de forma que el valor anterior no se extrae de la
+pila de propiedades antes de poner en ella el valor nuevo. Cuando
+una instrucción @code{\revert} posterior extrae el avlor
+sobreescrito temporalmente, volverá a emerger el valor anterior.
+
+En otras palabras, una llamada a @code{\temporary \override} y a
+continuación otra a @code{\revert} sobre la misma propiedad, tiene
+un valor neto que es nulo. De forma similar, la combinación en
+secuencia de @code{\temporary} y @code{\undo} sobre la misma
+música que contiene las sobreescrituras, tiene un efecto neto
+nulo.
+
+He aquí un ejemplo de una función musical que utiliza lo expuesto
+anteriormente. El uso de @code{\temporary} asegura que los
+valores de las propiedades @code{cross-staff} y @code{style} se
+restauran a la salida a los valores que tenían cuando se llamó a
+la función @code{crossStaff}. Sin @code{\temporary}, a la salida
+se habrían fijado los valores predeterminados.
+
+@example
+crossStaff =
+#(define-music-function (parser location notes) (ly:music?)
+ (_i "Create cross-staff stems")
+ #@{
+ \temporary \override Stem.cross-staff = #cross-staff-connect
+ \temporary \override Flag.style = #'no-flag
+ #notes
+ \revert Stem.cross-staff
+ \revert Flag.style
+#@})
+@end example
+
@node Matemáticas dentro de las funciones
@subsection Matemáticas dentro de las funciones
@multitable @columnfractions .3 .3
@item @b{LilyPond} @tab @b{Scheme}
@item @code{\markup marcado1} @tab @code{(markup marcado1)}
-@item @code{\markup @{ marcado1 marcado2 ... @}} @tab
- @code{(markup marcado1 marcado2 ... )}
+@item @code{\markup @{ marcado1 marcado2 @dots{} @}} @tab
+ @code{(markup marcado1 marcado2 @dots{} )}
@item @code{\instruccion} @tab @code{#:instruccion}
@item @code{\variable} @tab @code{variable}
-@item @code{\center-column @{ ... @}} @tab @code{#:center-column ( ... )}
+@item @code{\center-column @{ @dots{} @}} @tab
+ @code{#:center-column ( @dots{} )}
@item @code{cadena} @tab @code{"cadena"}
@item @code{#argumento-de-scheme} @tab @code{argumento-de-scheme}
@end multitable
Scheme @code{define-markup-command}, en el nivel sintáctico superior.
@lisp
-(define-markup-command (@var{nombre-de-la-instruccion} @var{layout} @var{props} @var{arg1} @var{arg2} ...)
- (@var{tipo-de-arg1?} @var{tipo-de-arg2?} ...)
+(define-markup-command (@var{nombre-de-la-instruccion} @var{layout} @var{props} @var{arg1} @var{arg2} @dots{})
+ (@var{tipo-de-arg1?} @var{tipo-de-arg2?} @dots{})
[ #:properties ((@var{propiedad1} @var{valor-predeterminado1})
- ...) ]
- ..command body..)
+ @dots{}) ]
+ @dots{}command body@dots{})
@end lisp
Los argumentos son
(number-pair?)
#:category graphic
#:properties ((thickness 1))
- "...documentación..."
+ "@dots{}documentación@dots{}"
(let ((th (* (ly:output-def-lookup layout 'line-thickness)
thickness))
(x (car dest))
(define-markup-command (draw-double-line layout props dest)
(number-pair?)
#:properties ((thickness 1))
- "...documentación..."
+ "@dots{}documentación@dots{}"
(let ((th (* (ly:output-def-lookup layout 'line-thickness)
thickness))
(x (car dest))
(number-pair?)
#:properties ((thickness 1)
(line-gap 0.6))
- "...documentación..."
- ...
+ "@dots{}documentación@dots{}"
+ @dots{}
@end lisp
Finalmente, se añade el código para trazar las dos líneas. Se usan
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: cccd2bf82ebfb55b6423346037fa4d2793fc4c3b
+ Translation of GIT committish: fc43a05568a1be2fc78bd7a16a42e474d239aac8
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@lisp
guile> (define mipareja (cons 123 "Hola")
-... )
+@dots{} )
guile> (car mipareja)
123
guile> (cdr mipareja)
@lisp
guile> (let ((x 2) (y 3) (z 4)) (display (+ x y)) (display (- z 4))
-... (+ (* x y) (/ z x)))
+@dots{} (+ (* x y) (/ z x)))
508
@end lisp
@example
(cond (expresión-de-prueba-1 secuencia-de-expresiones-resultante-1)
(expresión-de-prueba-2 secuencia-de-expresiones-resultante-2)
- ...
+ @dots{}
(expresión-de-prueba-n secuencia-de-expresiones-resultante-n))
@end example
se convierte internamente en una definición de Scheme:
@example
-(define traLaLa @var{Valor Scheme de `@code{... }'})
+(define traLaLa @var{Valor Scheme de `@code{@dots{}}'})
@end example
Esto significa que las variables de LilyPond y las variables de Scheme
podría también haberse escrito como
@example
-...
+@dots{}
$(make-sequential-music newLa)
@end example
como
@example
-...
+@dots{}
@{ #@@newLa @}
@end example
#(define (nopc)
(ly:set-option 'point-and-click #f))
-...
+@dots{}
#(nopc)
@{ c'4 @}
@end example
'pitch (ly:make-pitch 0 0 0))))
@end example
-Una secuencia musical @code{@{ ... @}} tiene el nombre
+Una secuencia musical @code{@{ @dots{} @}} tiene el nombre
@code{SequentialMusic}, y sus expresiones internas se almacenan coma
una lista dentro de su propiedad @code{'elements}. Una nota se
representa como un objeto @code{NoteEvent} (que almacena las
dentro de un acorde, lo cual no es posible si nos limitamos a mezclar
fragmentos de música independientes.
-Una @code{$variable} dentro de la notación @code{#@{...#@}} es como
+Una @code{$variable} dentro de la notación @code{#@{@dots{}#@}} es como
una @code{\variable} normal en la notación clásica de LilyPond.
Sabemos que
práctica en otros lenguajes de programación!)
@example
-"Add an accent..."
+"Add an accent@dots{}"
@end example
@noindent
@c contributor/introduction.itely
@ignore
- Translation of GIT committish: 4c7bdf42ee240fdbb3c3dab2b1c201eae04253fa
+ Translation of GIT committish: f6443f01a56112f080b8d2e7e646007397bdf6ec
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
implementar funcionalidades nuevas, documentar el código fuente: es
mucho lo que hay que hacer, pero lo principal es: hay una oportunidad
para todos de aprender más sobre LilyPond, sobre el Software Libre,
-sobre programación... y pasarlo bien. Si siente curiosidad sobre
+sobre programación@dots{} y pasarlo bien. Si siente curiosidad sobre
cualquiera de ellos, el lema es: @emph{Join the Frogs!}
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: e674b7637b08e5d2638d232ba3d7c8420c9d1b6f
+ Translation of GIT committish: e6513c72e95fd6691998cb368a5172de3aad0525
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@end lilypond
Observe los
-ángulos dobles @w{@code{<< ... >>}} alrededor del fragmento entero
+ángulos dobles @w{@code{<<@dots{}>>}} alrededor del fragmento entero
para expresar que la música y la letra han de suceder al mismo tiempo.
@node Alineación de la letra a una melodía
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: fbe8b9bf789f4a9833e1581dbb6ba4fce71a6cd2
+ Translation of GIT committish: 94dc452301cc0d1e9983f5aeb784884f7fe8c964
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@c \version "2.17.18"
-
@node Conceptos fundamentales
@chapter Conceptos fundamentales
@translationof Fundamental concepts
\header @{ @}
\score @{
- @var{...expresión musical compuesta...} % toda la música viene aquí
+ @var{ @dots{} expresión musical compuesta @dots{} } % toda la música va aquí
\layout @{ @}
\midi @{ @}
@}
@example
@{
\new StaffGroup <<
- @var{...inserte aquí la partitura completa de una ópera de Wagner...}
+ @var{ @dots{} inserte aquí la partitura completa de una ópera de Wagner @dots{} }
>>
@}
@end example
@noindent
-Puesto que todo se encuentra dentro de @code{@{ ... @}}, cuenta como
+Puesto que todo se encuentra dentro de @code{@{ @dots{} @}}, cuenta como
una expresión musical.
Como vimos anteriormente, el bloque @code{\score} puede contener otras
que resulta útil cultivar de manera que podamos saber de un vistazo
para qué es cada pentagrama.
-Recuerde que utilizamos @code{<< ... >>} en lugar de @code{@{ ... @}}
+Recuerde que utilizamos @code{<< @dots{} >>} en lugar de @code{@{ @dots{} @}}
para presentar la música simultánea. Esto hace que las partes vocal y
del piano aparezcan una sobre la otra en la partitura. La
-construcción @code{<< ... >>} no sería necesaria para el pentagrama
+construcción @code{<< @dots{} >>} no sería necesaria para el pentagrama
del cantante en el ejemplo de arriba si contiene solamente una
expresión musical secuencial, pero se necesitarían los @code{<<
-... >>} en lugar de las llaves si la música de ese pentagrama fuese a
+@dots{} >>} en lugar de las llaves si la música de ese pentagrama fuese a
contener dos o más expresiones simultáneas, p.ej. dos voces
simultáneas, o una voz con letra. Vamos a tener una voz con letra,
por lo que se requieren los ángulos dobles. Después añadiremos algo
@multitable @columnfractions .3 .7
@headitem Tipo de paréntesis
@tab Función
-@item @code{@{ .. @}}
+@item @code{@{ @dots{} @}}
@tab Encierra un fragmento secuencial de música
-@item @code{< .. >}
+@item @code{< @dots{} >}
@tab Encierra las notas de un acorde
-@item @code{<< .. >>}
+@item @code{<< @dots{} >>}
@tab Encierra expresiones musicales simultáneas
-@item @code{( .. )}
+@item @code{( @dots{} )}
@tab Marca el comienzo y el final de una ligadura de expresión
-@item @code{\( .. \)}
+@item @code{\( @dots{} \)}
@tab Marca el comienzo y el final de una ligadura de fraseo
-@item @code{[ .. ]}
+@item @code{[ @dots{} ]}
@tab Marca el comienzo y el final de un barrado manual
@end multitable
A las anteriores, debemos añadir otras construcciones que generan
líneas entre o a través de las notas: las ligaduras de unión (marcadas
con una tilde curva, @code{~}), los grupos especiales que se escriben
-como @code{\times x/y @{..@}}, y las notas de adorno, que se escriben
-como @code{\grace@{..@}}.
+como @code{\tuplet x/y @{ @dots{} @}}, y las notas de adorno, que se escriben
+como @code{\grace @{ @dots{} @}}.
Fuera de LilyPond, el uso convencional de los paréntesis y otros
corchetes requiere que los distintos tipos se encuentren anidados
-correctamente, como en: @code{<< [ @{ ( .. ) @} ] >>}, de manera que
+correctamente, como en: @code{<< [ @{ ( @dots{} ) @} ] >>}, de manera que
los paréntesis que se cierran deben encontrarse en el orden
exactamente opuesto al de los paréntesis que se abren. Esto
@strong{es} un requisito para los tres tipos de paréntesis que se
@end lilypond
Esto se puede expresar utilizando sólo símbolos de acorde con ángulos
-simples, @code{< ... >}, y para este propósito tan sólo se necesita
+simples, @code{< @dots{} >}, y para este propósito tan sólo se necesita
una voz. Pero suponga que el Fa sostenido fuese realmente una corchea
seguida de un Sol corchea, una nota de paso que conduce al La. Ahora
tenemos dos notas que empiezan en el mismo momento pero tienen
La forma más fácil de introducir fragmentos con más de una voz en un
solo pentagrama es escribir cada voz como una secuencia (con
-@code{@{...@}}), y combinarlas simultáneamente con ángulos dobles,
-@code{<<...>>}. Los fragmentos también se deben separar mediante una
+@code{@{ @dots{} @}}), y combinarlas simultáneamente con ángulos dobles,
+@code{<< @dots{} >>}. Los fragmentos también se deben separar mediante una
doble barra invertida, @code{\\}, para situarlos en voces separadas.
Sin esto, las notas irían a una sola voz, lo que normalmente produce
errores. Esta técnica se adapta especialmente bien a piezas de música
@end lilypond
Todas estas voces están separadas de la voz principal que contiene las
-notas justo por fuera de la construcción @code{<< .. >>}. Le
+notas justo por fuera de la construcción @code{<< @dots{} >>}. Le
llamaremos a esto la @emph{construcción simultánea}. Las ligaduras
(de prolongación y de expresión) solamente pueden conectar notas que
estén dentro de la misma voz, luego las ligaduras no pueden entrar o
al principio de cada voz:
@example
-\relative c' @{ notaA ... @}
+\relative c' @{ notaA @dots{} @}
<<
- \relative c'' @{ < notaB notaC > ... @}
+ \relative c'' @{ < notaB notaC > @dots{} @}
\\
- \relative g' @{ notaD ... @}
+ \relative g' @{ notaD @dots{} @}
>>
-\relative c' @{ notaE ... @}
+\relative c' @{ notaE @dots{} @}
@end example
Finalmente, analicemos las voces en una pieza de música más compleja.
Como un ejemplo más, si se establece @code{clefTransposition} dentro del
contexto de @code{Score}, éste cambia inmediatamente el valor de la
-octavación en todos los pentagramas en curso y establece un nuevo
+transposición en todos los pentagramas en curso y establece un nuevo
valor predeterminado que se aplicará a todos los pentagramas.
La instrucción opuesta, @code{\unset}, tiene el efecto de suprimir la
de una propiedad es mucho más clara, si ha de quedar fijo durante todo
el tiempo que dure el contexto. Cuando se crea un contexto con una
instrucción @code{\new} puede ir inmediatamente seguido de un bloque
-@code{\with @{ .. @}} en el que se establecen los valores predeterminados de las
+@code{\with @{ @dots{} @}} en el que se establecen los valores predeterminados de las
propiedades. Por ejemplo, si queremos suprimir la impresión de
becuadros adicionales para toda la duración de un pentagrama, podemos
escribir:
>>
@end example
-No es necesario utilizar la construcción simultánea @code{<< >>} para
+No es necesario utilizar la construcción simultánea @code{<< @dots{} >>} para
el pentagrama del manual dos y el pentagrama del órgano de pedal, ya
que contienen una única expresión, pero no hace daño, y es una buena
costumbre utilizar siempre dobles ángulos después de @code{\new Staff}
cuando hay varias voces. Lo opuesto es cierto para las voces:
-normalmente deben ir seguidas de llaves @code{@{ .. @}} en caso de que
+normalmente deben ir seguidas de llaves @code{@{ @dots{} @}} en caso de que
tengamos música codificada como distintas variables que se deben
situar consecutivamente.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: b6f94447415dded7c6e146b41b6139fe76cb84c4
+ Translation of GIT committish: e6513c72e95fd6691998cb368a5172de3aad0525
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@end lilypond
Sin embargo, las instrucciones predefinidas de la forma
-@code{\...Neutral}, @code{\...Off} y @code{\un...} utilizan
+@code{\@dots{}Neutral},
+@code{\@dots{}Off} y @code{\un@dots{}} utilizan
internamente @code{\revert} en vez de @code{\override}, por lo que
añadir @code{\once} como prefijo aquí no tiene ningún efecto.
La mejor solución aquí es mover el silencio multi-compás hacia abajo,
pues el silencio está en la voz dos. El ajuste predeterminado para
@code{\voiceTwo} (es decir, en la segunda voz de una construcción
-@code{<<@{...@} \\ @{...@}>>}) es que @code{staff-position} tenga el
+@code{<<@{@dots{}@} \\ @{@dots{}@}>>}) es que @code{staff-position} tenga el
valor -4 para MultiMeasureRest, así que tenemos que bajarlo, digamos,
cuatro semi-espacios de pentagrama, al valor @w{@code{-8}}.
@node Uso de variables para los ajustes de disposición
@subsection Uso de variables para los ajustes de disposición
-@translationof Using variables for tweaks
+@translationof Using variables for layout adjustments
@cindex variables, usar para sobreescrituras
@cindex sobreescrituras, usar variablas para
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@c vim: foldmethod=marker
@ignore
- Translation of GIT committish: 08cf111c64bf608b4dc7622558b0cabef84f3c46
+ Translation of GIT committish: 4e7839892d676e4863e07e11ea4968cffe34f97f
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
La sintaxis todavía utiliza el obsoleto estilo infijo
@code{\[ expresión_musical \]}. Por motivos de consistencia, esto
-cambiará algún día al estilo postfijo @code{nota\[ ... nota\]}.
+cambiará algún día al estilo postfijo @code{nota\[ @dots{} nota\]}.
@node Custos
Una nota sin modificaciones produce un @emph{punctum}. Todos los
demás neumas, incluso los neumas de una nota con forma distinta como
la @emph{virga}, se consideran en principio como ligaduras y por ello
-se deben escribir dentro de @code{\[...\]}.
+se deben escribir dentro de @code{\[@dots{}\]}.
@noindent
Neumas de una nota:
@example
\layout @{
- ...
+ @dots{}
\context @{
\Voice
\remove "Stem_engraver"
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
-Translation of GIT committish: 91aeca2562af49ff24110e923d5196bebd95f372
+Translation of GIT committish: 4e7839892d676e4863e07e11ea4968cffe34f97f
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@example
\new Voice = "tenor" @var{música}
-...
+@dots{}
\new Lyrics \lyricsto "tenor" @var{letra}
@end example
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
@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
\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 "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"
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:
\type "Engraver_group"
\consists "Note_heads_engraver"
\consists "Text_engraver"
+ \consists "Rhythmic_column_engraver"
\consists "Pitch_squash_engraver"
squashedPosition = #0
\override NoteHead.style = #'slash
@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
+@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
@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" @} }
properties.
@code{fontSize} is a special property: it is equivalent to
-entering @code{\override ... #'font-size} for all pertinent
+entering @code{\override @dots{} #'font-size} for all pertinent
objects. Since this is a common change, the special
property (modified with @code{\set}) was created.
@c TODO Add example
-@subsubsubheading Claves octavadas
+@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{ClefModifier}. 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{ClefModifier} 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:
@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
+% The rehearsal mark will be aligned to right edge of the Clef
\override Score.RehearsalMark.break-align-symbols = #'(clef)
\key a \major
\clef treble
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
+% 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)
\key a \major
los pentagramas.
@lilypond[verbatim,quote,relative=1]
-% The RehearsalMark will be centered above the 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