@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 5f51567fbc5d7a811e147ebd01f103e066f36b3a
+ Translation of GIT committish: f0978ed121192fee9bdf2453a325d98693148acf
When revising a translation, copy the HEAD committish of the
- version that you are working on. See TRANSLATION for details.
+ 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.15.10"
-@node Tweaking output
-@chapter Tweaking output
+@node Trucar la salida
+@chapter Trucar la salida
+@translationof Tweaking output
Este capítulo trata de cómo modificar la salida. LilyPond es extremadamente
configurable; prácticamente todos los fragmentos de la salida se pueden cambiar.
@menu
-* Tweaking basics::
-* The Internals Reference manual::
-* Appearance of objects::
-* Placement of objects::
-* Collisions of objects::
-* Further tweaking::
+* Elementos de trucaje::
+* Manual de referencia de funcionamiento interno::
+* Apariencia de los objetos::
+* Colocación de los objetos::
+* Colisiones de objetos::
+* Trucajes adicionales::
@end menu
-@node Tweaking basics
-@section Tweaking basics
+@node Elementos de trucaje
+@section Elementos de trucaje
+@translationof Tweaking basics
@menu
-* Introduction to tweaks::
-* Objects and interfaces::
-* Naming conventions of objects and properties::
-* Tweaking methods::
+* Introducción al trucaje::
+* Objetos e interfaces::
+* Convenciones de nombres de objetos y propiedades::
+* Métodos de trucaje::
@end menu
-@node Introduction to tweaks
-@subsection Introduction to tweaks
+@node Introducción al trucaje
+@subsection Introducción al trucaje
+@translationof Introduction to tweaks
El @q{Trucaje} es un término de LilyPond que denota los diversos
métodos que el usuario tiene a su disposición para modificar el
pueda aprender cómo desarrollar sus propios trucos.
Antes de comenzar con este capítulo, quizá quiera echar un vistazo a
-la sección @ref{Contexts and engravers}, pues los Contextos, los
+la sección @ref{Contextos y grabadores}, pues los Contextos, los
Grabadores y las Propiedades que se contienen en ellos son
fundamentales para comprender y construir los trucos.
-@node Objects and interfaces
-@subsection Objects and interfaces
+@node Objetos e interfaces
+@subsection Objetos e interfaces
+@translationof Objects and interfaces
@cindex objeto
@cindex grob
Estos son, en fin, los términos principales relativos a los objetos
que vamos a utilizar en este capítulo.
-@node Naming conventions of objects and properties
-@subsection Naming conventions of objects and properties
+@node Convenciones de nombres de objetos y propiedades
+@subsection Convenciones de nombres de objetos y propiedades
+@translationof Naming conventions of objects and properties
@cindex nomenclatura, convenciones de, para objetos
@cindex nomenclatura, convenciones de, para propiedades
@cindex propiedades, convenciones de nomenclatura
Ya hemos visto ciertas convenciones de nomenclatura de objetos, en la
-sección @ref{Contexts and engravers}. En este lugar, para más fácil
+sección @ref{Contextos y grabadores}. En este lugar, para más fácil
referencia, presentamos una lista de los tipos de objetos y
propiedades más comunes, junto con las convenciones según las cuales
reciben su nombre, y un par de ejemplos de nombres reales. Hemos
es útil poder reconocer el tipo de objeto a partir de sus nombres de
propiedad.
-@node Tweaking methods
-@subsection Tweaking methods
+@node Métodos de trucaje
+@subsection Métodos de trucaje
+@translationof Tweaking methods
@cindex trucaje, métodos de
Ya hemos visto las instrucciones @code{\set} y @code{\with}, que se
usan para cambiar las propiedades de los @strong{contextos} y para
-quitar y poner @strong{grabadores}, en @ref{Modifying context
-properties} y @ref{Adding and removing engravers}. Ahora debemos
+quitar y poner @strong{grabadores}, en @ref{Modificar las propiedades de los contextos}
+y @ref{Añadir y eliminar grabadores}. Ahora debemos
examinar algunas otras instrucciones importantes.
La instrucción que cambia las propiedades de los @strong{objetos de
sencillos que sean fáciles de entender.
Por ahora no se preocupe por el @code{#'}, que debe anteponerse a la
-propiedad de presentación, y el @code{#}, que debe preceder al valor.
+propiedad de presentación, y el@tie{}@code{#}, que debe preceder al valor.
Deben estar presentes siempre y de esa forma exacta. Es la
instrucción de uso más común dentro del trucaje, y durante la mayor
parte del resto de este capítulo presentaremos ejemplos de cómo se
@cindex NoteHead, ejemplo de sobreescritura
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
-c d
+c4 d
\override NoteHead #'color = #red
-e f g
+e4 f |
\override NoteHead #'color = #green
-a b c
+g4 a b c |
@end lilypond
@strong{La instrucción \revert}
@cindex NoteHead, ejemplo de sobreescritura
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
-c d
+c4 d
\override NoteHead #'color = #red
-e f g
+e4 f |
\override NoteHead #'color = #green
-a
+g4 a
\revert NoteHead #'color
-b c
+b4 c |
@end lilypond
@strong{El prefijo \once}
@cindex NoteHead, ejemplo de sobreescritura
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
-c d
+c4 d
\once \override NoteHead #'color = #red
-e f g
+e4 f |
\once \override NoteHead #'color = #green
-a b c
+g4 a b c |
@end lilypond
@strong{La instrucción \overrideProperty}
Hay otra forma para la instrucción de sobreescritura,
@code{\overrideProperty}, que ocasionalmente es necesaria. La
mencionamos aquí con un propósito de exhaustividad, pero para ver más
-detalles consulte @ruser{Difficult tweaks}.
+detalles consulte @rextend{Trucos difíciles}.
@c Maybe explain in a later iteration -td
@strong{La instrucción \tweak}
@cindex NoteHead, ejemplo de sobreescritura
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
- <c e g>4
- \once \override NoteHead #'font-size = #-3
- <c e g>
- <c e g>
+<c e g>4
+\once \override NoteHead #'font-size = #-3
+<c e g>4
+<c e g>4
@end lilypond
Vemos que la sobreescritura con override afecta a @emph{todas} las
@cindex @code{\tweak}, ejemplo
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
- <c e g>4
- <c \tweak #'font-size #-3 e g>4
+<c e g>4
+<c \tweak #'font-size #-3 e g>4
@end lilypond
Observe que la sintaxis de @code{\tweak} no es igual que la de
@cindex @code{\tweak}, ejemplo
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
-a ^Black
- -\tweak #'color #red ^Red
- -\tweak #'color #green _Green
+a4^"Black"
+ -\tweak #'color #red ^"Red"
+ -\tweak #'color #green _"Green"
@end lilypond
@noindent
\tweak #'direction #up
\times 4/3 {
\tweak #'color #red
- \times 2/3 { c8[ c8 c8] }
- \times 2/3 { c8[ c8 c8] }
- \times 2/3 { c8[ c8 c8] }
+ \times 2/3 { c8[ c c] }
+ \times 2/3 { c8[ c c] }
+ \times 2/3 { c8[ c c] }
}
@end lilypond
@c NOTE Tuplet brackets collide if notes are high on staff
@c See issue 509
@lilypond[quote,ragged-right,verbatim,fragment,relative=1]
-\times 2/3 { c8[ c c]}
+\times 2/3 { c8[ c c] }
\once \override TupletNumber
#'text = #tuplet-number::calc-fraction-text
\times 2/3 {
- c[ c]
- c[ c]
+ c8[ c]
+ c8[ c]
\once \override TupletNumber #'transparent = ##t
\times 2/3 { c8[ c c] }
-\times 2/3 { c8[ c c]}
+ \times 2/3 { c8[ c c] }
}
@end lilypond
@seealso
Referencia de la notación:
-@ruser{The tweak command}.
+@ruser{La instrucción tweak}.
-@node The Internals Reference manual
-@section The Internals Reference manual
+@node Manual de referencia de funcionamiento interno
+@section Manual de referencia de funcionamiento interno
+@translationof The Internals Reference manual
@cindex Internals Reference
@menu
-* Properties of layout objects::
-* Properties found in interfaces::
-* Types of properties::
+* Propiedades de los objetos de presentación::
+* Propiedades de los interfaces::
+* Tipos de propiedades::
@end menu
-@node Properties of layout objects
-@subsection Properties of layout objects
+@node Propiedades de los objetos de presentación
+@subsection Propiedades de los objetos de presentación
+@translationof Properties of layout objects
@cindex propiedades de los objetos de presentación
@cindex propiedades de los grobs
Utilicemos un ejemplo concreto con un sencillo fragmento de música
real:
+@c Mozart, dúo, núm. 7 de La Flauta Mágica
+
@lilypond[quote,verbatim,relative=2]
{
+ \key es \major
\time 6/8
{
- r4 b8 b[( g]) g |
- g[( e]) e d[( f]) a |
- a g
+ r4 bes8 bes[( g]) g |
+ g8[( es]) es d[( f]) as |
+ as8 g
}
\addlyrics {
- The man who feels love's sweet e -- mo -- tion
+ The man who | feels love's sweet e -- | mo -- tion
}
}
@end lilypond
\override Slur #'thickness = #5.0
@end example
-¡No olvide el @code{#'} antes del nombre de la propiedad y @code{#}
+¡No olvide el @code{#'} antes del nombre de la propiedad y@tie{}@code{#}
antes del valor nuevo!
La pregunta final es @q{¿Dónde se debe colocar esta instrucción?}
@lilypond[quote,verbatim,relative=2]
{
+ \key es \major
\time 6/8
{
% Increase thickness of all following slurs from 1.2 to 5.0
\override Slur #'thickness = #5.0
- r4 b8 b[( g]) g |
- g[( e]) e d[( f]) a |
- a g
+ r4 bes8 bes[( g]) g |
+ g8[( es]) es d[( f]) as |
+ as8 g
}
\addlyrics {
- The man who feels love's sweet e -- mo -- tion
+ The man who | feels love's sweet e -- | mo -- tion
}
}
@end lilypond
práctica). La cual vendrá proporcionada por los ejemplos que vienen a
continuación.
-@subheading Finding the context
+@subheading Búsqueda del contexto
@cindex contexto, encontrar
@cindex contexto, buscar el, correcto
por el hecho de que estamos escribiendo notas, podemos omitirlo en
este lugar concreto.
-@subheading Overriding once only
+@subheading Sobreescritura por una sola vez
@cindex sobreescritura por una sola vez
@cindex once override
@lilypond[quote,verbatim,relative=2]
{
+ \key es \major
\time 6/8
{
- r4 b8
+ r4 bes8
% Increase thickness of immediately following slur only
\once \override Slur #'thickness = #5.0
- b[( g]) g |
- g[( e]) e d[( f]) a |
- a g
+ bes8[( g]) g |
+ g8[( es]) es d[( f]) as |
+ as8 g
}
\addlyrics {
- The man who feels love's sweet e -- mo -- tion
+ The man who | feels love's sweet e -- | mo -- tion
}
}
@end lilypond
La instrucción o prefijo @code{\once} también se puede usar antes de
la instrucción @code{\set}.
-@subheading Reverting
+@subheading Recuperación del ajuste
@cindex revertir
@cindex predeterminadas, recuperar las propiedades
@lilypond[quote,verbatim,relative=2]
{
+ \key es \major
\time 6/8
{
- r4 b8
+ r4 bes8
% Increase thickness of immediately following slur only
\once \override Slur #'thickness = #5.0
- b[( g]) g |
+ bes[( g]) g |
% Increase thickness of immediately following slur only
\once \override Slur #'thickness = #5.0
- g[( e]) e d[( f]) a |
- a g
+ g8[( es]) es d[( f]) as |
+ as8 g
}
\addlyrics {
- The man who feels love's sweet e -- mo -- tion
+ The man who | feels love's sweet e -- | mo -- tion
}
}
@end lilypond
@lilypond[quote,verbatim,relative=2]
{
+ \key es \major
\time 6/8
{
- r4 b8
+ r4 bes8
% Increase thickness of all following slurs from 1.2 to 5.0
\override Slur #'thickness = #5.0
- b[( g]) g |
- g[( e])
+ bes[( g]) g |
+ g8[( es]) es
% Revert thickness of all following slurs to default of 1.2
\revert Slur #'thickness
- e d[( f]) a |
- a g
+ d8[( f]) as |
+ as8 g
}
\addlyrics {
- The man who feels love's sweet e -- mo -- tion
+ The man who | feels love's sweet e -- | mo -- tion
}
}
@end lilypond
ejemplos irán conteniendo cada vez menos palabras de guía y
explicación.
-@node Properties found in interfaces
-@subsection Properties found in interfaces
+@node Propiedades de los interfaces
+@subsection Propiedades de los interfaces
+@translationof Properties found in interfaces
@cindex interface
@cindex propiedades de los interfaces
a las propiedades, como @code{italic}. Observe la distinción entre
esto y las cadenas de texto arbitrarias, que aparecerían
entrecomilladas como @code{"a text string"}. Para ver más detalles
-relacionados con los símbolos y las cadenas, consulte @ref{Scheme
-tutorial}.
+relacionados con los símbolos y las cadenas, consulte
+@rextend{Tutorial de Scheme}.
Así pues, la instrucción @code{\override} necesaria para imprimir la
letra en cursiva, es:
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
+ \key es \major
\time 6/8
{
- r4 b8 b[( g]) g |
- g[( e]) e d[( f]) a |
- a g
+ r4 bes8 bes[( g]) g |
+ g8[( es]) es d[( f]) as |
+ as8 g
}
\addlyrics {
\override LyricText #'font-shape = #'italic
- The man who feels love's sweet e -- mo -- tion
+ The man who | feels love's sweet e -- | mo -- tion
}
}
@end lilypond
@noindent
y toda la letra se imprime en cursiva.
-@subheading Specifying the context in lyric mode
+@subheading Especificación del contexto en modo letra
@cindex contexto, especificación en modo letra
@cindex letra, modo, especificar el contexto en
@seealso
-Manual de aprendizaje:
-@ref{Scheme tutorial}.
+Manual de Extensión:
+@rextend{Tutorial de Scheme}.
-@node Types of properties
-@subsection Types of properties
+@node Tipos de propiedades
+@subsection Tipos de propiedades
+@translationof Types of properties
@cindex propiedades, tipos de
@item Dirección
@tab Una constante válida de dirección o su equivalente numérico (se permiten valores decimales entre -1 y 1)
@tab @code{LEFT}, @code{CENTER}, @code{UP},
- @code{1}, @code{-1}
+ @code{1}, @w{@code{-1}}
@item Entero
@tab Un número entero positivo
@tab @code{3}, @code{1}
@code{(ly:make-moment 3 8)}
@item Número
@tab Cualquier valor decimal positivo o negativo
- @tab @code{3.5}, @code{-2.45}
+ @tab @code{3.5}, @w{@code{-2.45}}
@item Pareja (de números)
@tab Dos números separados por un @q{espacio . espacio}, encerrado entre paréntesis y precedido de un apóstrofo
@tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
@seealso
-Manual de aprendizaje:
-@ref{Scheme tutorial}.
+Manual de Extensión:
+@rextend{Tutorial de Scheme}.
-@node Appearance of objects
-@section Appearance of objects
+@node Apariencia de los objetos
+@section Apariencia de los objetos
+@translationof Appearance of objects
Ahora vamos a poner en práctica lo que hemos aprendido con unos
cuantos ejemplos que muestran cómo se pueden usar los trucos para
cambiar el aspecto de la música impresa.
@menu
-* Visibility and color of objects::
-* Size of objects::
-* Length and thickness of objects::
+* Visibilidad y color de los objetos::
+* Tamaño de los objetos::
+* Longitud y grosor de los objetos::
@end menu
-@node Visibility and color of objects
-@subsection Visibility and color of objects
+@node Visibilidad y color de los objetos
+@subsection Visibilidad y color de los objetos
+@translationof Visibility and color of objects
Dentro de un uso educativo de la música, podríamos desear imprimir una
partitura con ciertos elementos omitidos como ejercicio para el
Antes de enredarnos con esto, recordemos que las propiedades de los
objetos se agrupan en lo que hemos llamado @emph{interfaces} (véase
-@ref{Properties found in interfaces}). Esto es simplemente agrupar
+@ref{Propiedades de los interfaces}). Esto es simplemente agrupar
las propiedades que se pueden usar juntas para trucar un objeto
gráfico: si una de ellas se necesita para un objeto, también las
otras. Así, ciertos objetos usan las propiedades de algunos
interfaces.
Hemos explicado cómo encontrar información sobre los grobs en
-@ref{Properties of layout objects}. Usando el mismo enfoque, vamos al
-RFI para buscar el objeto de presentación que imprime las líneas
-divisorias. A través del enlace @emph{Backend} y @emph{All layout
-objects} encontramos que hay un objeto de presentación llamado
-@code{BarLine}. Entre sus propiedades se encuentran dos que controlan
-la visibilidad: @code{break-visibility} y @code{stencil}. Las líneas
-divisorias también contemplan un número de interfaces, entre ellos el
-@code{grob-interface}, donde podemos encontrar las propiedades
-@code{transparent} y @code{color}. Todas ellas pueden afectar la
-visibilidad de las barras de compás (y, por supuesto, por extensión,
-también la de muchos otros objetos de presentación). Vamos a
-considerar cada uno de ellos por orden.
-
-@subheading stencil
+@ref{Propiedades de los objetos de presentación}. Usando el mismo
+enfoque, vamos al RFI para buscar el objeto de presentación que
+imprime las líneas divisorias. A través del enlace @emph{Backend} y
+@emph{All layout objects} encontramos que hay un objeto de
+presentación llamado @code{BarLine}. Entre sus propiedades se
+encuentran dos que controlan la visibilidad: @code{break-visibility} y
+@code{stencil}. Las líneas divisorias también contemplan un número de
+interfaces, entre ellos el @code{grob-interface}, donde podemos
+encontrar las propiedades @code{transparent} y @code{color}. Todas
+ellas pueden afectar la visibilidad de las barras de compás (y, por
+supuesto, por extensión, también la de muchos otros objetos de
+presentación). Vamos a considerar cada uno de ellos por orden.
+
+@subheading stencil (sello)
@cindex stencil (sello), propiedad
\time 12/16
\override BarLine #'stencil = ##f
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
\time 12/16
\override Staff.BarLine #'stencil = ##f
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
@lilypond[quote,verbatim,relative=2]
{
- c c
+ c4 c
\once \override NoteHead #'stencil = #point-stencil
- c c
+ c4 c
}
@end lilypond
-@subheading break-visibility
+@subheading break-visibility (visibilidad en el salto)
@cindex break-visibility, propiedad
de @code{Staff}. Observe también que al escribir este valor tenemos
@code{#'#} antes del paréntesis de apertura. Se necesita @code{'#}
como parte del valor para introducir un vector, y el primer símbolo de
-almohadilla @code{#} se necesita, como siempre, para preceder el valor
+almohadilla@tie{}@code{#} se necesita, como siempre, para preceder el valor
en sí dentro de la instrucción @code{\override}.
@cindex BarLine, ejemplo de sobreescritura
\time 12/16
\override Staff.BarLine #'break-visibility = #'#(#f #f #f)
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
Y podemos ver que esto también quita todas las líneas divisorias.
-@subheading transparent
+@subheading transparent (transparente)
@cindex transparent, propiedad
@cindex transparencia
\time 12/16
\override Staff.TimeSignature #'transparent = ##t
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
\time 12/16
\override Staff.TimeSignature #'stencil = ##f
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
pentagrama a las que cruza. Podrá observar en algunos de los ejemplos
que aparecen a continuación, que esto sucede de forma impredecible.
Los detalles sobre por qué esto ocurre así, y cómo controlarlo, se
-estudian en @ruser{Painting objects white}; de momento estamos
+estudian en @ruser{Pintar los objetos de blanco}; de momento estamos
estudiando el color, por lo que le rogamos que acepte esta limitación
por ahora).
valores en unidades internas, pero para evitar tener que saber cuáles
son, se ofrecen varias vías para la especificación de los colores. La
primera forma es utilizar uno de los colores @q{normales} que están
-relacionados en la primera tabla de la @ruser{List of colors}. Para
+relacionados en la primera tabla de la @ruser{Lista de colores}. Para
poner las líneas divisorias de color blanco, escribimos:
@cindex BarLine, ejemplo de sobreescritura
\time 12/16
\override Staff.BarLine #'color = #white
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
@funindex x11-color
La segunda forma de cambiar el color es utilizar la lista de nombres
-de colores de X11 que aparecen en la segunda lista de @ruser{List of
-colors}. Sin embargo, éstos deben ir precedidos de otra función, que
+de colores de X11 que aparecen en la segunda lista de @ruser{Lista de
+colores}. Sin embargo, éstos deben ir precedidos de otra función, que
convierte los nombres de colores de X11 en la lista de valores
internos, @code{x11-color}, de la siguiente manera:
\time 12/16
\override Staff.BarLine #'color = #(x11-color 'white)
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
\time 12/16
\override Staff.BarLine #'color = #(rgb-color 1 1 1)
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
\override Voice.Stem #'color = #(x11-color 'grey85)
\override Staff.BarLine #'color = #(x11-color 'grey10)
c4 b8 c d16 c d8 |
- g, a16 b8 c d4 e16 |
+ g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
normalmente el grabador.
-@node Size of objects
-@subsection Size of objects
+@node Tamaño de los objetos
+@subsection Tamaño de los objetos
+@translationof Size of objects
@cindex cambiar el tamaño de los objetos
@cindex tamaño de los objetos
@cindex objetos, cambiar el tamaño de
Empezaremos examinando de nuevo un ejemplo anterior (véase
-@ref{Nesting music expressions}) que nos mostraba cómo introducir un
+@ref{Anidado de expresiones musicales}) que nos mostraba cómo introducir un
pentagrama temporal, como en un @rglos{ossia}.
@cindex alignAboveContext, propiedad, ejemplo
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\new Staff ="main" {
- \relative g' {
- r4 g8 g c4 c8 d |
- e4 r8
- <<
- { f c c }
- \new Staff \with {
- alignAboveContext = #"main" }
- { f8 f c }
- >>
- r4 |
- }
- }
+ \relative g' {
+ r4 g8 g c4 c8 d |
+ e4 r8
+ <<
+ { f8 c c }
+ \new Staff \with {
+ alignAboveContext = #"main" }
+ { f8 f c }
+ >>
+ r4 |
+ }
+}
@end lilypond
Los fragmentos de Ossia se escriben normalmente sin clave ni compás, y
r4 g8 g c4 c8 d |
e4 r8
<<
- { f c c }
+ { f8 c c }
\new Staff \with {
alignAboveContext = #"main"
}
r4 g8 g c4 c8 d |
e4 r8
<<
- { f c c }
+ { f8 c c }
\new Staff \with {
alignAboveContext = #"main"
% Don't print clefs in this staff
% Don't print time signatures in this staff
\override TimeSignature #'stencil = ##f
}
- { f8 f c }
+ { f8 f c }
>>
r4 |
}
r4 g8 g c4 c8 d |
e4 r8
<<
- { f c c }
+ { f8 c c }
\new Staff \with {
alignAboveContext = #"main"
\override Clef #'stencil = ##f
% Reduce all font sizes by ~24%
fontSize = #-2
}
- { f8 f c }
+ { f8 f c }
>>
r4 |
}
debe reducir su escala en proporción a la reducción de la tipografía.
El siguiente apartado trata sobre cómo se hace esto.
-@node Length and thickness of objects
-@subsection Length and thickness of objects
+@node Longitud y grosor de los objetos
+@subsection Longitud y grosor de los objetos
+@translationof Length and thickness of objects
@cindex distancias
@cindex grosor
grosor de 1 unidad de @code{line-thickness}, mientras que el
@code{thickness} de una plica es 1.3. Observe sin embargo que ciertas
propiedades de grosor son diferentes; por ejemplo, el grosor de las
-barras de corchea se mide en espacios de pentagrama.
+barras de corchea se controla por medio del valor de
+@code{beam-thickness}, que se mide en espacios de pentagrama.
Entonces ¿cómo se tienen que escalar las longitudes en proporción al
tamaño de la tipografía? Se puede hacer con la ayuda de una función
r4 g8 g c4 c8 d |
e4 r8
<<
- { f c c }
+ { f8 c c }
\new Staff \with {
alignAboveContext = #"main"
\override Clef #'stencil = ##f
% Reduce stem length and line spacing to match
\override StaffSymbol #'staff-space = #(magstep -2)
}
- { f8 f c }
+ { f8 f c }
>>
r4 |
}
particular necesita ajustarse, se puede hacer mejor mediante la
sobreescritura de su propiedad @code{thickness}. Anteriormente
mostramos un ejemplo de cambio de grosor en las ligaduras, en
-@ref{Properties of layout objects}. El grosor de todos los objetos
+@ref{Propiedades de los objetos de presentación}. El grosor de todos los objetos
trazados (es decir, aquellos que no se producen a partir de una
tipografía) se pueden cambiar de la misma forma.
-@node Placement of objects
-@section Placement of objects
+@node Colocación de los objetos
+@section Colocación de los objetos
+@translationof Placement of objects
@menu
-* Automatic behaviour::
-* Within-staff objects::
-* Outside-staff objects::
+* Comportamiento automático::
+* Objetos interiores al pentagrama::
+* Objetos fuera del pentagrama::
@end menu
-@node Automatic behaviour
-@subsection Automatic behaviour
+@node Comportamiento automático
+@subsection Comportamiento automático
+@translationof Automatic behaviour
@cindex dentro del pentagrama, objetos
@cindex fuera del pentagrama, objetos
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
c2^"Text1"
-c^"Text2"
-c^"Text3"
-c^"Text4"
+c2^"Text2" |
+c2^"Text3"
+c2^"Text4" |
@end lilypond
Los pentagramas también se posicionan, de forma predeterminada, tan
@lilypond[quote,ragged-right,verbatim]
<<
\new Staff {
- \relative c' { c a, }
+ \relative c' { c4 a, }
}
\new Staff {
- \relative c'''' { c a, }
+ \relative c'''' { c4 a, }
}
>>
@end lilypond
-@node Within-staff objects
-@subsection Within-staff objects
+@node Objetos interiores al pentagrama
+@subsection Objetos interiores al pentagrama
+@translationof Within-staff objects
Ya hemos visto cómo las instrucciones @code{\voiceXXX} afectan a la
dirección de las ligaduras de expresión y de unión, digitaciones y
@cindex direction, propiedad, ejemplo
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
-a4 g c a
+a4 g c a |
\override Stem #'direction = #DOWN
-a g c a
+a4 g c a |
\override Stem #'direction = #UP
-a g c a
+a4 g c a |
\revert Stem #'direction
-a g c a
+a4 g c a |
@end lilypond
Aquí utilizamos las constantes @code{DOWN} (abajo) y @code{UP}
-(arriba). Éstos tienen los valores @code{-1} y @code{+1}
+(arriba). Éstos tienen los valores @w{@code{-1}} y @code{+1}
respectivamente, y dichos valores numéricos también se pueden usar
directamente. El valor @code{0} también se puede usar en algunos
casos. Se trata simplemente con el significado de @code{UP} para las
equivalente, o usar la instrucción predefinida, seguida después de la
nota afectada por la instrucción @code{\xxxNeutral} correspondiente.
-@subheading Fingering
+@unnumberedsubsubsec Digitaciones
@cindex digitación, colocación
@cindex digitación de acordes
@cindex direction, propiedad, ejemplo
@lilypond[quote,verbatim,relative=2]
-c-5 a-3 f-1 c'-5
+c4-5 a-3 f-1 c'-5 |
\override Fingering #'direction = #DOWN
-c-5 a-3 f-1 c'-5
+c4-5 a-3 f-1 c'-5 |
\override Fingering #'direction = #UP
-c-5 a-3 f-1 c'-5
+c4-5 a-3 f-1 c'-5 |
@end lilypond
Sin embargo, la sobreescritura de la propiedad @code{direction} no es
@cindex digitación, ejemplo
@lilypond[quote,verbatim,relative=2]
-c-5 a-3 f-1 c'-5
-c_5 a_3 f_1 c'_5
-c^5 a^3 f^1 c'^5
+c4-5 a-3 f-1 c'-5 |
+c4_5 a_3 f_1 c'_5 |
+c4^5 a^3 f^1 c'^5 |
@end lilypond
La propiedad @code{direction} se ignora para los acordes, pero los
@cindex digitación, ejemplo
@lilypond[quote,verbatim,relative=2]
-<c-5 g-3>
-<c-5 g-3 e-2>
-<c-5 g-3 e-2 c-1>
+<c-5 g-3>4
+<c-5 g-3 e-2>4
+<c-5 g-3 e-2 c-1>4
@end lilypond
@noindent
@cindex digitación, ejemplo
@lilypond[quote,verbatim,relative=2]
-<c-5 g-3 e-2 c-1>
-<c^5 g_3 e_2 c_1>
-<c^5 g^3 e^2 c_1>
+<c-5 g-3 e-2 c-1>4
+<c^5 g_3 e_2 c_1>4
+<c^5 g^3 e^2 c_1>4
@end lilypond
Es posible ejercer un control aún mayor sobre la colocación de las
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
\set fingeringOrientations = #'(left)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(left)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4 |
\set fingeringOrientations = #'(up left down)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(up left)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4 |
\set fingeringOrientations = #'(right)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4
@end lilypond
@noindent
Si la digitación parece un poco superpoblada, se puede reducir el
tamaño @code{font-size}. El valor predeterminado puede verse en el
-objeto @code{Fingering} del RFI que es @code{-5}, así que probaremos
-@code{-7}:
+objeto @code{Fingering} del RFI que es @w{@code{-5}}, así que probaremos
+@w{@code{-7}}:
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
\override Fingering #'font-size = #-7
\set fingeringOrientations = #'(left)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(left)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4 |
\set fingeringOrientations = #'(up left down)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4
\set fingeringOrientations = #'(up left)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4 |
\set fingeringOrientations = #'(right)
-<f-2>
-< c-1 e-2 g-3 b-5 > 4
+<f-2>4
+<c-1 e-2 g-3 b-5>4
@end lilypond
-@node Outside-staff objects
-@subsection Outside-staff objects
+@node Objetos fuera del pentagrama
+@subsection Objetos fuera del pentagrama
+@translationof Outside-staff objects
Los objetos fuera-del-pentagrama se colocan automáticamente para
evitar las colisiones. Los objetos que tienen el valor más bajo de la
dentro-del-pentagrama, y a un valor numérico adecuado a cada objeto
fuera-del-pentagrama cuando se crea el objeto. La tabla siguiente
presenta los valores numéricos predeterminados para algunos de los
-objetos fuera-del-pentagrama que están inicialmente dentro de los
-contextos @code{Staff} o @code{Voice}.
+objetos fuera-del-pentagrama más comunes.
+
+@cindex objetos de extensión
+
+Observe los nombres algo inusuales de algunos de los objetos: los
+objetos de extensión se cearn automáticamente para controlar el
+posicionamiento vertical de los grobs que (quizá) comienzan y terminan
+en distintos momentos musicales, de manera que cualquier modificación
+a la prioridad @code{outside-staff-priority} del grob subyacente no
+tiene ningún efecto. Por ejemplo, cambiar la
+@code{outside-staff-priority} del objeto de regulador @code{Hairpin}
+no tiene efecto sobre la posición vertical de los reguladores: en
+lugar de eso, tenemos que cambar la @code{outside-staff-priority} del
+objeto asociado @code{DynamicLineSpanner}. Esta sobreescritura se
+debe escribir al comienzo del objeto de extensión, que podría incluir
+varios reguladores o matices dinámicos encadenados.
@multitable @columnfractions .3 .3 .3
@headitem Objeto de presentación
@tab Prioridad
@tab Controla la posición de:
+@item @code{RehearsalMark}
+ @tab @code{1500}
+ @tab Letras de ensayo
+@item @code{MetronomeMark}
+ @tab @code{1000}
+ @tab Indicaciones metronómicas
+@item @code{VoltaBracketSpanner}
+ @tab @code{600}
+ @tab Cajetines de primera y segunda vez
+@item @code{TextScript}
+ @tab @code{450}
+ @tab Texto en elementos de marcado
@item @code{MultiMeasureRestText}
@tab @code{450}
@tab Texto sobre silencios de compás completo
-@item @code{TextScript}
- @tab @code{450}
- @tab Elementos de marcado de texto
@item @code{OttavaBracket}
@tab @code{400}
@tab Corchetes de octava alta y baja
@tab Todas las indicaciones dinámicas
@item @code{VoltaBracketSpanner}
@tab @code{100}
- @tab Corchetes de primera y segunda vez
+ @tab Números de compás
@item @code{TrillSpanner}
@tab @code{50}
@tab Trinos mantenidos
\dynamicUp
% Start Ottava Bracket
\ottava #1
-c' \startTextSpan
-% Add Dynamic Text
-c\pp
-% Add Dynamic Line Spanner
-c\<
+c'4 \startTextSpan
+% Add Dynamic Text and hairpin
+c4\pp\<
+c4
% Add Text Script
-c^Text
-c c
-% Add Dynamic Text
-c\ff c \stopTextSpan
+c4^Text |
+c4 c
+% Add Dynamic Text and terminate hairpin
+c4\ff c \stopTextSpan |
% Stop Ottava Bracket
\ottava #0
-c, c c c
+c,4 c c c |
@end lilypond
Este ejemplo también muestra cómo crear textos con extensión (Text
música. El extensor abarca desde la instrucción @code{\startTextSpan}
hasta la instrucción @code{\stopTextSpan}, y el formado del texto se
define por medio de la instrucción @code{\override TextSpanner}. Para
-ver más detalles, consulte @ruser{Text spanners}.
+ver más detalles, consulte @ruser{Extensiones de texto}.
También muestra la manera de crear corchetes de octava alta y baja.
@cindex trucar la situación de las letras de ensayo
@cindex ensayo, letras, trucar la colocación
-Observe que los números de compás, las indicaciones metronómicas y las
-mercas de ensayo no se muestran. De forma predeterminada, se crean
-dentro del contexto @code{Score} y su prioridad
-@code{outside-staff-priority} se ignora con relación a los objetos de
-presentación que se crean dentro del contexto @code{Staff}. Si quiere
-colocar los números de compás, indicaciones metronómicas o llamadas de
-ensayo en concordancia con el valor de su
-@code{outside-staff-priority}, los grabadores
-@code{Bar_number_engraver}, @code{Metronome_mark_engraver} o
-@code{Mark_engraver} respectivamente se deben eliminar del contexto
-@code{Score} y colocarlos en el contexto @code{Staff} del nivel
-superior. Si se hace así, estas marcas obtendrán los siguientes
-valores predeterminados de @code{outside-staff-priority}:
-
-@multitable @columnfractions .3 .3
-@headitem Objeto de presentación @tab Prioridad
-@item @code{RehearsalMark} @tab @code{1500}
-@item @code{MetronomeMark} @tab @code{1000}
-@item @code{BarNumber} @tab @code{ 100}
-@end multitable
-
Si los valores predeterminados de @code{outside-staff-priority} no le
ofrecen las colocaciones deseadas se puede sobreescribir la prioridad
de cualquiera de los objetos. Suponga que quisiéramos que el corchete
= \markup { \small \bold Slower }
% Place dynamics above staff
\dynamicUp
-%Place following Ottava Bracket below Text Spanners
+% Place following Ottava Bracket below Text Spanners
\once \override Staff.OttavaBracket #'outside-staff-priority = #340
% Start Ottava Bracket
\ottava #1
-c' \startTextSpan
+c'4 \startTextSpan
% Add Dynamic Text
-c\pp
+c4\pp
% Add Dynamic Line Spanner
-c\<
+c4\<
% Add Text Script
-c^Text
-c c
+c4^Text |
+c4 c
% Add Dynamic Text
-c\ff c \stopTextSpan
+c4\ff c \stopTextSpan |
% Stop Ottava Bracket
\ottava #0
-c, c c c
+c,4 c c c |
@end lilypond
+Observe que algunos de estos objetos, concretamente los números de
+compás, las indicaciones metronómicas y las letras de ensayo, se
+alojan de forma predeterminada dentro del contexto @code{Score}; así
+pues, debe asegurarse de que utiliza el contexto adecuado cuando se
+sobreescriben sus propiedades.
+
@cindex ligaduras y outside-staff-priority
@cindex ligaduras y articulaciones
@cindex articulaciones y ligaduras
que muestra el efecto de los dos métodos:
@lilypond[quote,verbatim,relative=2]
-c4( c^\markup\tiny\sharp d4.) c8
+c4( c^\markup { \tiny \sharp } d4.) c8 |
c4(
\once \override TextScript #'avoid-slur = #'inside
\once \override TextScript #'outside-staff-priority = ##f
-c^\markup\tiny\sharp d4.) c8
+c4^\markup { \tiny \sharp } d4.) c8 |
\once \override Slur #'outside-staff-priority = #500
-c4( c^\markup\tiny\sharp d4.) c8
+c4( c^\markup { \tiny \sharp } d4.) c8 |
@end lilypond
Los cambios en @code{outside-staff-priority} también se pueden emplear
aunque los resultados pueden no siempre ser deseables. Suponga que
quiere que @qq{Text3} se sitúe por encima de @qq{Text4} en el ejemplo
bajo el epígrafe Comportamiento Automático de más arriba (véase
-@ref{Automatic behaviour}). Todo lo que debemos hacer es localizar la
+@ref{Comportamiento automático}). Todo lo que debemos hacer es localizar la
prioridad de @code{TextScript} en el RFI o en las tablas de arriba, y
aumentar la prioridad de @qq{Text3} hasta un valor superior:
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
c2^"Text1"
-c^"Text2"
+c2^"Text2" |
\once \override TextScript #'outside-staff-priority = #500
-c^"Text3"
-c^"Text4"
+c2^"Text3"
+c2^"Text4" |
@end lilypond
Esto, ciertamente, eleva a @qq{Text3} por encima de @qq{Text4} pero
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\textLengthOn % Cause notes to space out to accommodate text
c2^"Text1"
-c^"Text2"
-c^"Text3"
-c^"Text4"
+c2^"Text2" |
+c2^"Text3"
+c2^"Text4" |
@end lilypond
La instrucción para volver al comportamiento predeterminado es
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
% This markup is short enough to fit without collision
-c2^"Tex"
-c''2
-R1
+c2^"Tex" c'' |
+R1 |
+
% This is too long to fit, so it is displaced upwards
-c,,2^"Text"
-c''2
-R1
+c,,2^"Text" c'' |
+R1 |
+
% Turn off collision avoidance
\once \override TextScript #'outside-staff-priority = ##f
-c,,2^"Long Text "
-c''2
-R1
+c,,2^"Long Text " c'' |
+R1 |
+
% Turn off collision avoidance
\once \override TextScript #'outside-staff-priority = ##f
-\textLengthOn % and turn on textLengthOn
+\textLengthOn % and turn on textLengthOn
c,,2^"Long Text " % Spaces at end are honored
-c''2
+c''2 |
@end lilypond
-@subheading Dynamics
+@subheading Matices dinámicos
@cindex trucar la colocación de los matices
@cindex dinámica, trucar la colocación de las indicaciones de
Por tanto, tendremos que averiguar cómo hacerlo utilizando
instrucciones @code{\override}.
-@subheading Grob sizing
+@subheading Escalado de un «Grob»
@cindex grob, cambio de tamaño de un
@cindex escala de los grobs
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\dynamicUp
\override DynamicText #'extra-spacing-width = #'(0 . 0)
-a4\f b\mf c\mp b\p
+a4\f b\mf c\mp b\p |
@end lilypond
@noindent
que se estudia en la sección siguiente.
-@node Collisions of objects
-@section Collisions of objects
+@node Colisiones de objetos
+@section Colisiones de objetos
+@translationof Collisions of objects
@menu
-* Moving objects::
-* Fixing overlapping notation::
-* Real music example::
+* Mover objetos::
+* Arreglar notación con superposiciones::
+* Ejemplos reales de música::
@end menu
-@node Moving objects
-@subsection Moving objects
+@node Mover objetos
+@subsection Mover objetos
+@translationof Moving objects
@cindex mover objetos superpuestos
@cindex mover objetos que colisionan
@item
La @strong{dirección} de uno de los objetos que se superponen se puede
cambiar usando las instrucciones predefinidas que están relacionadas
-arriba para los objetos dentro-del-pentagrama (véase @ref{Within-staff
-objects}). Se pueden recolocar fácilmente las plicas, ligaduras de
-expresión y de unión, barras de corchea, indicaciones dinámicas, texto
-y grupos de valoración especial de esta forma. La limitación es que
-sólo tiene la posibilidad de elegir entre dos posiciones, y podría ser
-que ninguna de ellas sea la adecuada.
+arriba para los objetos dentro-del-pentagrama (véase @ref{Objetos interiores al pentagrama}).
+Se pueden recolocar fácilmente las
+plicas, ligaduras de expresión y de unión, barras de corchea,
+indicaciones dinámicas, texto y grupos de valoración especial de esta
+forma. La limitación es que sólo tiene la posibilidad de elegir entre
+dos posiciones, y podría ser que ninguna de ellas sea la adecuada.
@item
Las @strong{propiedades del objeto}, que LilyPond usa cuando está
@item
@code{direction} (dirección)
-Ya se ha estudiado con cierto detalle: véase @ref{Within-staff
-objects}.
+Ya se ha estudiado con cierto detalle: véase @ref{Objetos interiores al pentagrama}.
@item
-@code{padding} (relleno), @code{left-padding} (relleno por la
-izquierda), @code{right-padding} (relleno por la derecha),
+@code{padding} (relleno),
+@code{right-padding} (relleno por la derecha),
@code{staff-padding} (relleno de pentagrama)
@cindex relleno
-@cindex left-padding, propiedad
@cindex padding, propiedad
@cindex right-padding, propiedad
@cindex staff-padding, propiedad
@code{side-position-interface}.
En lugar de con @code{padding}, la colocación de los grupos de
-alteraciones se controla con @code{left-padding} y
-@code{right-padding}. Estas propiedades se encontrarán en el objeto
+alteraciones se controla con
+@code{right-padding}. Esta propiedad se encuentra en el objeto
@code{AccidentalPlacement} que, observe, vive dentro del contexto de
-@strong{staff}. Durante el proceso tipográfico, las cabezas de las
+@strong{Staff}. Durante el proceso tipográfico, las cabezas de las
notas se componen tipográficamente en primer lugar, y después las
alteraciones, si existen, se añaden a la izquierda de las cabezas
utilizando la propiedad de relleno por la derecha @code{right-padding}
-para determinar la separación entre la alteración y la cabeza. así
+para determinar la separación entre la alteración y la cabeza, y
+de las alteraciones entre sí. Así
pues, sólo la propiedad de relleno por la derecha @code{right-padding}
del objeto @code{AccidentalPlacement} tiene efecto sobre la colocación
de las alteraciones.
@code{self-alignment-interface}. En general son objetos que contienen
texto. Los valores son @code{LEFT}, @code{RIGHT} o @code{CENTER}. De
forma alternativa se puede especificar un valor numérico entre
-@code{-1} y @code{+1}, donde @code{-1} es alineado por la izquierda,
+@w{@code{-1}} y @code{+1}, donde @w{@code{-1}} es alineado por la izquierda,
@code{+1} es alineado por la derecha, y los números intermedios mueven
el texto progresivamente desde alineado por la izquierda hasta alineado
por la derecha. Se pueden especificar valores numéricos mayores de
@code{1} para mover el texto incluso más lejos hacia la izquierda, o
-menos de @code{-1} para alejarlo más hacia la derecha. Un cambio en
+menos de @w{@code{-1}} para alejarlo más hacia la derecha. Un cambio en
@code{1} en el valor corresponde a un movimiento de la mitad de la
longitud total del propio texto.
de notas en unidades adecuadas a una columna de notas, por ejemplo la
anchura de la cabeza de la nota de la primera voz. Se debe usar en
situaciones complejas donde las instrucciones @code{\shiftOn} normales
-(véase @ref{Explicitly instantiating voices}) no resuelven el
+(véase @ref{Voces explícitas}) no resuelven el
conflicto entre las notas. Es preferible a la propiedad
@code{extra-offset} para este propósito porque no hay necesidad de
averiguar la distancia en espacios de pentagrama, y mover las notas
@end multitable
-@node Fixing overlapping notation
-@subsection Fixing overlapping notation
+@node Arreglar notación con superposiciones
+@subsection Arreglar notación con superposiciones
+@translationof Fixing overlapping notation
Veamos ahora cómo pueden ser de ayuda las propiedades que hemos visto
en la sección anterior, para resolver problemas de notación que se
superpone.
-@subheading padding property
+@subheading la propiedad padding (relleno)
@cindex relleno
@cindex arreglar notación que se superpone
@cindex padding, propiedad, ejemplo
@lilypond[quote,fragment,relative=1,verbatim]
-% This will not work, see below:
+% This will not work, see below
\override MetronomeMark #'padding = #3
-\tempo 4=120
-c1
-% This works:
+\tempo 4 = 120
+c1 |
+% This works
\override Score.MetronomeMark #'padding = #3
-\tempo 4=80
-d1
+\tempo 4 = 80
+d1 |
@end lilypond
Observe en el segundo ejemplo la gran importancia que tiene saber qué
contexto maneja un determinado objeto. Puesto que el objeto
@code{MetronomeMark} se maneja dentro del contexto @code{Score}, los
cambios de propiedades en el contexto @code{Voice} pasarán
-inadvertidos. Para ver más detalles, consulte @ruser{Modifying
-properties}.
+inadvertidos. Para ver más detalles, consulte @ruser{Modificar las propiedades}.
Si la propiedad de relleno @code{padding} de un objeto se incrementa
cuando dicho objeto se encuentra en una pila de objetos que se están
de él.
-@subheading left-padding and right-padding
+@subheading right-padding (relleno por la derecha)
-@cindex left-padding, propiedad
@cindex right-padding, propiedad
La propiedad @code{right-padding} afecta al espaciado entre la
alteración y la nota a que se aplica. Normalmente no es necesaria,
-pero el ejemplo siguiente muestra una situación en la que sí se
-necesita. Suponga que queremos presentar un acorde que contiene un Si
-natural y un Si bemol. Para evitar la ambigüedad querríamos preceder
-las notas con un becuadro y un bemol. Aquí vienen varios intentos de
-hacerlo así:
+pero el espaciado predeterminado puede estar mal para ciertos glifos
+de alteraciones o combinaciones de glifos que se usan en música
+microtonal. Éstos tienen que introducirse sobreescribiendo el sello
+de la alteración con un elemento de marcado que contenga los símbolos
+deseados, así:
@cindex Accidental, ejemplo de sobreescritura
@cindex text, propiedad, ejemplo
@cindex AccidentalPlacement, ejemplo de sobreescritura
@cindex right-padding, propiedad, ejemplo
-@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
-<b bes>
-<b! bes>
-<b? bes>
-@end lilypond
-
-Ninguno de ellos funciona y el segundo además presenta una fea
-colisión entre las dos alteraciones.
-
-Una forma de conseguirlo es sobreescribir el sello de la alteración
-con un elemento de marcado que contenga los símbolos de becuadro y
-bemol en el orden que nos gustaría que estuvieran, así:
@lilypond[quote,ragged-right,verbatim]
-naturalplusflat = \markup { \natural \flat }
+sesquisharp = \markup { \sesquisharp }
\relative c'' {
+ c4
+ % This prints a sesquisharp but the spacing is too small
\once \override Accidental
#'stencil = #ly:text-interface::print
- \once \override Accidental #'text = #naturalplusflat
- \once \override Score.AccidentalPlacement #'right-padding = #1.5
- <b bes>
+ \once \override Accidental #'text = #sesquisharp
+ cis4 c
+ % This improves the spacing
+ \once \override Score.AccidentalPlacement #'right-padding = #0.6
+ \once \override Accidental
+ #'stencil = #ly:text-interface::print
+ \once \override Accidental #'text = #sesquisharp
+ cis4 |
}
@end lilypond
alteración que no se estudiará hasta más adelante. El tipo de sello
debe ser un procedimiento, aquí modificado para que imprima el
contenido de la propiedad @code{text} del objeto @code{Accidental},
-que a su vez está establecido como un signo de becuadro seguido de un
-bemol. Entonces el conjunto se puede separar de la cabeza de la nota
+que a su vez está establecido como un signo de sesquisostenido.
+Entonces el signo se puede separar de la cabeza de la nota
sobreescribiendo @code{right-padding}.
@noindent
-@subheading staff-padding property
+@subheading la propiedad staff-padding (relleno de pentagrama)
@cindex alineación de objetos sobre la línea base
@cindex objetos, alineación sobre la línea base
@end lilypond
-@subheading self-alignment-X property
+@subheading la propiedad self-alignment-X (auto-alineación en X)
El ejemplo siguiente muestra cómo esto puede resolver la colisión
entre un objeto de digitación de cuerda y la plica de una nota
@lilypond[quote,fragment,ragged-right,verbatim,relative=3]
\voiceOne
-< a \2 >
+<a\2>
\once \override StringNumber #'self-alignment-X = #RIGHT
-< a \2 >
+<a\2>
@end lilypond
-@subheading staff-position property
+@subheading la propiedad staff-position (posición en el pentagrama)
@cindex objeto, colisión dentro del pentagrama
aquí un ejemplo de colisión de este tipo:
@lilypond[quote,verbatim,fragment,ragged-right, relative=1]
-<< {c c c c} \\ {R1} >>
+<< { c4 c c c } \\ { R1 } >>
@end lilypond
La mejor solución aquí es mover el silencio multi-compás hacia abajo,
@code{\voiceTwo} (es decir, en la segunda voz de una construcción
@code{<<@{...@} \\ @{...@}>>}) es que @code{staff-position} tenga el
valor -4 para MultiMeasureRest, así que tenemos que bajarlo, digamos,
-cuatro semi-espacios de pentagrama, al valor @code{-8}.
+cuatro semi-espacios de pentagrama, al valor @w{@code{-8}}.
@cindex MultiMeasureRest, ejemplo de sobreescritura
@cindex staff-position, propiedad, ejemplo
@lilypond[quote,verbatim,fragment,ragged-right, relative=1]
<<
- {c c c c}
-\\
+ { c4 c c c }
+ \\
\override MultiMeasureRest #'staff-position = #-8
- {R1}
+ { R1 }
>>
@end lilypond
Esto es mejor que utilizar, por ejemplo, @code{extra-offset}, porque
la línea adicional por encima del silencio se inserta automáticamente.
-@subheading extra-offset property
+@subheading la propiedad extra-offset (desplazamiento adicional)
@cindex posicionar objetos
@cindex posicionar grobs
@lilypond[quote,fragment,relative=1,verbatim]
\stemUp
-f-5
-\once \override Fingering
- #'extra-offset = #'(-0.3 . -1.8)
-f-5
+f4-5
+\once \override Fingering #'extra-offset = #'(-0.3 . -1.8)
+f4-5
@end lilypond
-@subheading positions property
+@subheading la propiedad positions (posiciones)
@cindex controlar manualmente grupos especiales, ligaduras y barras
@cindex manual, control, de grupos especiales, ligaduras y barras
expresión que está sobre la acciaccatura.
@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
-r4 \acciaccatura e8\( d8 c ~c d c d\)
+r4 \acciaccatura e8\( d8 c~ c d c d\)
@end lilypond
@noindent
@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
r4
\phrasingSlurUp
-\acciaccatura e8\( d8 c ~c d c d\)
+\acciaccatura e8\( d8 c~ c d c d\)
@end lilypond
@noindent
@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
r4
\once \override PhrasingSlur #'positions = #'(-4 . -3)
-\acciaccatura
-e8\( d8 c ~c d c d\)
+\acciaccatura e8\( d8 c~ c d c d\)
@end lilypond
-Presentamos un ejemplo más extraído del comienzo del pentagrama de la
-mano izquierda del preludio de Chopin Op 28 No. 2. vemos que la barra
-choca con las notas superiores:
+Presentamos otro ejemplo. Vemos que la barra
+choca con las ligaduras:
@lilypond[quote,verbatim,fragment,ragged-right]
{
-\clef "bass"
-<< {b,8 ais, b, g,} \\ {e, g e, g} >>
-<< {b,8 ais, b, g,} \\ {e, g e, g} >>
+ \time 4/2
+ <<
+ { c'1 ~ c'2. e'8 f' }
+ \\
+ { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
+ >>
+ <<
+ { c'1 ~ c'2. e'8 f' }
+ \\
+ { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
+ >>
}
@end lilypond
@noindent
Esto se puede resolver manualmente elevando los dos extremos de la
-barra desde su posición a dos espacios de pentagrama sobre la línea
-central hasta, digamos, 3 espacios:
+barra desde su posición a 1.81 espacios de pentagrama bajo la línea
+central hasta, digamos, 1 espacio:
@cindex Beam, ejemplo de sobreescritura
@cindex positions, propiedad, ejemplo
@lilypond[quote,verbatim,fragment,ragged-right]
{
- \clef "bass"
+ \time 4/2
<<
- \override Beam #'positions = #'(3 . 3)
- {b,8 ais, b, g,}
- \\
- {e, g e, g}
+ { c'1 ~ c'2. e'8 f' }
+ \\
+ {
+ \override Beam #'positions = #'(-1 . -1)
+ e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g''
+ }
+ >>
+ <<
+ { c'1 ~ c'2. e'8 f' }
+ \\
+ { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
>>
- << {b,8 ais, b, g,} \\ {e, g e, g} >>
}
@end lilypond
@noindent
Observe que la sobreescritura sigue aplicándose en la primera voz del
-segundo bloque de corcheas, pero no a ninguna de las barras de la
+segundo compás de corcheas, pero no a ninguna de las barras de la
segunda voz.
-@subheading force-hshift property
-
-@c FIXME: formatting stuff (ie not important right now IMO)
-@c @a nchor Chopin finally corrected TODOgp
+@subheading la propiedad force-hshift (forzar desplazamiento horizontal)
Ahora podremos ver cómo aplicar las correcciones finales al ejemplo de
-Chopin que presentamos al final de @ref{I'm hearing Voices}, que
+Chopin que presentamos al final de @ref{Oigo voces}, que
dejamos con este aspecto:
@lilypond[quote,verbatim,fragment,ragged-right]
\new Staff \relative c'' {
\key aes \major
<<
- { c2 aes4. bes8 } \\
- { aes2 f4 fes } \\
- { \voiceFour
- <ees c>2
- des2
+ { c2 aes4. bes8 }
+ \\
+ { aes2 f4 fes }
+ \\
+ {
+ \voiceFour
+ <ees c>2 des
}
>> |
<c ees aes c>1 |
\new Staff \relative c'' {
\key aes \major
<<
- { c2 aes4. bes8 } \\
- { aes2 f4 fes } \\
- { \voiceFour
- \once \override NoteColumn #'force-hshift = #0 <ees c>2
- \once \override NoteColumn #'force-hshift = #0.5 des2
+ { c2 aes4. bes8 }
+ \\
+ { aes2 f4 fes }
+ \\
+ {
+ \voiceFour
+ \once \override NoteColumn #'force-hshift = #0
+ <ees c>2
+ \once \override NoteColumn #'force-hshift = #0.5
+ des2
}
>> |
<c ees aes c>1 |
@end lilypond
-@node Real music example
-@subsection Real music example
+@node Ejemplos reales de música
+@subsection Ejemplos reales de música
+@translationof Real music example
Finalizaremos esta sección sobre los trucos mostrando los pasos que se
deben tomar para tratar con un ejemplo complicado que necesita varios
trucos para producir el resultado deseado. El ejemplo se ha escogido
deliberadamente para ilustrar el uso de la Referencia de la Notación
para resolver problemas de notación poco comunes. No es
-representativo de un proceso de grabado más usual, por lo que ¡le
+representativo del proceso de grabado más usual, por lo que ¡le
recomendamos que no deje que estas dificultades le desanimen!
¡Afortunadamente, las dificultades como éstas no son muy comunes!
quitado las indicaciones dinámicas, las digitaciones y el pedal.
@c The following should appear as music without code
-@lilypond[quote,ragged-right]
+@c This example should not be indexed
+@c line-width ensures no break
+@lilypond[quote,ragged-right,line-width=6\in]
rhMusic = \relative c'' {
- r2
- c4.\( g8 |
- \once \override Tie #'staff-position = #3.5
- bes1~ |
- \bar "||"
- \time 6/4
- \mergeDifferentlyHeadedOn
- \mergeDifferentlyDottedOn
- bes2.^\markup {\bold "Moderato"} r8
- <<
- {c,8[ d fis bes a] | }
- \\
- % Reposition the c2 to the right of the merged note
- {c,8~ \once \override NoteColumn #'force-hshift = #1.0
- % Move the c2 out of the main note column so the merge will work
- \shiftOnn c2}
- \\
- % Stem on the d2 must be down to permit merging
- {s8 \stemDown \once \override Stem #'transparent = ##t d2}
- \\
- {s4 fis4.}
- >>
- \mergeDifferentlyHeadedOff
- \mergeDifferentlyDottedOff
- g2.\)
+ \new Voice {
+ r2 c4.\( g8 |
+ \once \override Tie #'staff-position = #3.5
+ bes1~ |
+ \bar "||"
+ \time 6/4
+ \mergeDifferentlyHeadedOn
+ \mergeDifferentlyDottedOn
+ bes2.^\markup { \bold "Moderato" } r8
+ <<
+ { c,8 d fis bes a }
+ \new Voice {
+ \voiceTwo
+ c,8~
+ % Reposition the c2 to the right of the merged note
+ \once \override NoteColumn #'force-hshift = #1.0
+ % Move the c2 out of the main note column so the merge will work
+ \shiftOnn
+ c2
+ }
+ \new Voice {
+ \voiceThree
+ s8
+ % Stem on the d2 must be down to permit merging
+ \stemDown
+ % Stem on the d2 should be invisible
+ \once \override Stem #'transparent = ##t
+ \once \override Flag #'transparent = ##t
+ d2
+ }
+ \new Voice {
+ \voiceFour
+ s4 fis4.
+ }
+ >> |
+ \mergeDifferentlyHeadedOff
+ \mergeDifferentlyDottedOff
+ g2.\)
+ }
}
lhMusic = \relative c' {
barra, la nota Do ligada, el Re blanca que se funde con el Re corchea,
y el Fa sostenido negra con puntillo, que también está fundida con la
corchea de su misma altura. Todo lo demás está en una sola voz, así
-que lo más fácil es introducir estas cuatro voces temporalmente en el
-momento en que se necesiten. Si ha olvidado cómo hacerlo, lea
-@ref{I'm hearing Voices}. Vamos a comenzar introduciendo las notas
-como dos variables y disponiendo la estructura de pentagramas en un
-bloque Score, y veremos qué produce LilyPond de forma predeterminada:
-
-@lilypond[quote,verbatim,ragged-right]
+que lo más fácil es introducir estas tres voces adicionales, en el
+momento en que se necesiten y de forma temporal. Si ha olvidado cómo
+hacerlo, lea las secciones @ref{Oigo voces} y @ref{Voces explícitas}.
+Aquí tomamos la decisión de utilizar voces instanciadas explícitamente
+para el pasaje polifónico, dado que LilyPond es más probable que pueda
+evitar las colisiones si todas las voces se instancian explícitamente
+de esta forma.
+
+Vamos a comenzar introduciendo las notas como dos variables y
+disponiendo la estructura de pentagramas en un bloque Score, y veremos
+qué produce LilyPond de forma predeterminada:
+
+@c line-width ensures no break
+@lilypond[quote,verbatim,ragged-right,line-width=6\in]
rhMusic = \relative c'' {
- r2 c4. g8 |
- bes1~ |
- \time 6/4
- bes2. r8
- % Start polyphonic section of four voices
- <<
- {c,8 d fis bes a | }
- \\
- {c,8~ c2 | }
- \\
- {s8 d2 | }
- \\
- {s4 fis4. | }
- >>
- g2.
+ \new Voice {
+ r2 c4. g8 |
+ bes1~ |
+ \time 6/4
+ bes2. r8
+ % Start polyphonic section of four voices
+ <<
+ { c,8 d fis bes a } % continuation of main voice
+ \new Voice {
+ \voiceTwo
+ c,8~ c2
+ }
+ \new Voice {
+ \voiceThree
+ s8 d2
+ }
+ \new Voice {
+ \voiceFour
+ s4 fis4.
+ }
+ >> |
+ g2. % continuation of main voice
+ }
}
lhMusic = \relative c' {
@end lilypond
Todas las notas son correctas, pero el aspecto está lejos de ser
-satisfactorio. La ligadura de unión choca con el cambio de compás, el
-barrado del tercer compás es incorrecto, las notas no se funden
-correctamente, y faltan algunos elementos de notación. En primer
-lugar trataremos con lo más fácil. Podemos corregir el barrado de las
-corcheas insertando una barra manualmente, y podemos añadir fácilmente
-la ligadura de expresión de la mano izquierda y la ligadura de fraseo
-de la mano derecha, pues todo ello se estudió en el Tutorial. Al
-hacerlo así obtenemos:
-
-@lilypond[quote,verbatim,ragged-right]
+satisfactorio. La ligadura de unión choca con el cambio de compás,
+ciertas notas no se funden correctamente, y faltan algunos elementos de
+notación. En primer lugar trataremos con lo más fácil. Podemos
+añadir fácilmente la ligadura de expresión de la mano izquierda y la
+ligadura de fraseo de la mano derecha, pues todo ello se estudió en el
+Tutorial. Al hacerlo así obtenemos:
+
+@c line-width ensures no break
+@lilypond[quote,verbatim,ragged-right,line-width=6\in]
rhMusic = \relative c'' {
- r2 c4.\( g8 |
- bes1~ |
- \time 6/4
- bes2. r8
- % Start polyphonic section of four voices
- <<
- {c,8[ d fis bes a] | }
- \\
- {c,8~ c2 | }
- \\
- {s8 d2 | }
- \\
- {s4 fis4. | }
- >>
- g2.\)
+ \new Voice {
+ r2 c4.\( g8 |
+ bes1~ |
+ \time 6/4
+ bes2. r8
+ % Start polyphonic section of four voices
+ <<
+ { c,8 d fis bes a } % continuation of main voice
+ \new Voice {
+ \voiceTwo
+ c,8~ c2
+ }
+ \new Voice {
+ \voiceThree
+ s8 d2
+ }
+ \new Voice {
+ \voiceFour
+ s4 fis4.
+ }
+ >> |
+ g2.\) % continuation of main voice
+ }
}
lhMusic = \relative c' {
Esto podemos hacerlo fácilmente. A continuación tenemos que corregir
la colisión entre la ligadura de unión y la indicación de compás.
Esto se hace mejor moviendo la ligadura hacia arriba. Estudiamos cómo
-mover objetos anteriormente en @ref{Moving objects}, donde dice que
+mover objetos anteriormente en @ref{Mover objetos}, donde dice que
los objetos que están situados de forma relativa al pentagrama se
-pueden mover sobreescribiendo su propiedad @code{staff-position}, que
+pueden mover verticalmente
+sobreescribiendo su propiedad @code{staff-position}, que
se especifica en unidades de medio espacio de pentagrama respecto de
la línea central del pentagrama. Así pues, la sobreescritura
siguiente colocada justo antes de la primera nota ligada subirá la
Con esto se completa el compás dos, dando como resultado:
-@lilypond[quote,verbatim,ragged-right]
+@c line-width ensures no break
+@lilypond[quote,verbatim,ragged-right,line-width=6\in]
rhMusic = \relative c'' {
- r2 c4.\( g8 |
- \once \override Tie #'staff-position = #3.5
- bes1~ |
- \bar "||"
- \time 6/4
- bes2. r8
- % Start polyphonic section of four voices
- <<
- {c,8[ d fis bes a] | }
- \\
- {c,8~ c2 | }
- \\
- {s8 d2 | }
- \\
- {s4 fis4. | }
- >>
- g2.\)
+ \new Voice {
+ r2 c4.\( g8 |
+ \once \override Tie #'staff-position = #3.5
+ bes1~ |
+ \bar "||"
+ \time 6/4
+ bes2. r8
+ % Start polyphonic section of four voices
+ <<
+ { c,8 d fis bes a } % continuation of main voice
+ \new Voice {
+ \voiceTwo
+ c,8~ c2
+ }
+ \new Voice {
+ \voiceThree
+ s8 d2
+ }
+ \new Voice {
+ \voiceFour
+ s4 fis4.
+ }
+ >> |
+ g2.\) % continuation of main voice
+ }
}
lhMusic = \relative c' {
Vayamos ahora al tercer compás y comienzo de la sección Moderato. El
tutorial nos enseñó cómo escribir texto en negrita mediante la
-instrucción @code{\markup}, por lo que añadir @q{Moderato} en negrita
+instrucción @code{\markup}, por lo que añadir @qq{Moderato} en negrita
es fácil. Pero ahora ¿cómo fundimos notas que están en distintas
voces? Aquí es donde debemos volver a buscar ayuda en el manual de
Referencia de la notación. Al buscar la palabra @qq{merge} (mezcla) en
el índice de la Referencia de la notación llegamos rápidamente a las
instrucciones para mezclar notas con distinta cabeza y con o sin
-puntillo, en @ruser{Collision resolution}. En nuestro ejemplo tenemos
+puntillo, en @ruser{Resolución de las colisiones}. En nuestro ejemplo tenemos
que fusionar ambos tipos de nota en el transcurso de la sección
polifónica del compás 3; por tanto, en virtud de la información que
aparece en la Referencia de la Notación, escribimos
@noindent
al final, dando como resultado:
-@lilypond[quote,verbatim,ragged-right]
+@c line-width ensures no break
+@lilypond[quote,ragged-right,line-width=6\in]
rhMusic = \relative c'' {
- r2 c4.\( g8 |
- \once \override Tie #'staff-position = #3.5
- bes1~ |
- \bar "||"
- \time 6/4
- bes2.^\markup {\bold "Moderato"} r8
- \mergeDifferentlyHeadedOn
- \mergeDifferentlyDottedOn
- % Start polyphonic section of four voices
- <<
- {c,8[ d fis bes a] | }
- \\
- {c,8~ c2 | }
- \\
- {s8 d2 | }
- \\
- {s4 fis4. | }
- >>
- \mergeDifferentlyHeadedOff
- \mergeDifferentlyDottedOff
- g2.\)
+ \new Voice {
+ r2 c4.\( g8 |
+ \once \override Tie #'staff-position = #3.5
+ bes1~ |
+ \bar "||"
+ \time 6/4
+ bes2.^\markup { \bold "Moderato" } r8
+ \mergeDifferentlyHeadedOn
+ \mergeDifferentlyDottedOn
+ % Start polyphonic section of four voices
+ <<
+ { c,8 d fis bes a } % continuation of main voice
+ \new Voice {
+ \voiceTwo
+ c,8~ c2
+ }
+ \new Voice {
+ \voiceThree
+ s8 d2
+ }
+ \new Voice {
+ \voiceFour
+ s4 fis4.
+ }
+ >> |
+ \mergeDifferentlyHeadedOff
+ \mergeDifferentlyDottedOff
+ g2.\) % continuation of main voice
+ }
}
lhMusic = \relative c' {
@cindex Tie, ejemplo de sobreescritura
@cindex staff-position, propiedad, ejemplo
-@lilypond[quote,verbatim,ragged-right]
+@c line-width ensures no break
+@lilypond[quote,verbatim,ragged-right,line-width=6\in]
rhMusic = \relative c'' {
- r2 c4.\( g8 |
- \once \override Tie #'staff-position = #3.5
- bes1~ |
- \bar "||"
- \time 6/4
- bes2.^\markup {\bold "Moderato"} r8
- \mergeDifferentlyHeadedOn
- \mergeDifferentlyDottedOn
- % Start polyphonic section of four voices
- <<
- {c,8[ d fis bes a] | }
- \\
- % Move the c2 out of the main note column so the merge will work
- {c,8~ \shiftOnn c2 | }
- \\
- % Stem on the d2 must be down to permit merging
- {s8 \stemDown d2 | }
- \\
- {s4 fis4. | }
- >>
- \mergeDifferentlyHeadedOff
- \mergeDifferentlyDottedOff
- g2.\)
+ \new Voice {
+ r2 c4.\( g8 |
+ \once \override Tie #'staff-position = #3.5
+ bes1~ |
+ \bar "||"
+ \time 6/4
+ bes2.^\markup { \bold "Moderato" } r8
+ \mergeDifferentlyHeadedOn
+ \mergeDifferentlyDottedOn
+ % Start polyphonic section of four voices
+ <<
+ { c,8 d fis bes a } % continuation of main voice
+ \new Voice {
+ \voiceTwo
+ % Move the c2 out of the main note column so the merge will work
+ c,8~ \shiftOnn c2
+ }
+ \new Voice {
+ \voiceThree
+ % Stem on the d2 must be down to permit merging
+ s8 \stemDown d2
+ }
+ \new Voice {
+ \voiceFour
+ s4 fis4.
+ }
+ >> |
+ \mergeDifferentlyHeadedOff
+ \mergeDifferentlyDottedOff
+ g2.\) % continuation of main voice
+ }
}
lhMusic = \relative c' {
@cindex Stem, ejemplo de sobreescritura
@cindex transparent, propiedad, ejemplo
-@lilypond[quote,verbatim,ragged-right]
+@c line-width ensures no break
+@lilypond[quote,verbatim,ragged-right,line-width=6\in]
rhMusic = \relative c'' {
- r2
- c4.\( g8 |
- \once \override Tie #'staff-position = #3.5
- bes1~ |
- \bar "||"
- \time 6/4
- bes2.^\markup {\bold "Moderato"} r8
- \mergeDifferentlyHeadedOn
- \mergeDifferentlyDottedOn
- <<
- {c,8[ d fis bes a] | }
- \\
- % Reposition the c2 to the right of the merged note
- {c,8~ \once \override NoteColumn #'force-hshift = #1.0
- % Move the c2 out of the main note column so the merge will work
- \shiftOnn c2}
- \\
- % Stem on the d2 must be down to permit merging
- {s8 \stemDown \once \override Stem #'transparent = ##t d2}
- \\
- {s4 fis4.}
- >>
- \mergeDifferentlyHeadedOff
- \mergeDifferentlyDottedOff
- g2.\)
+ \new Voice {
+ r2 c4.\( g8 |
+ \once \override Tie #'staff-position = #3.5
+ bes1~ |
+ \bar "||"
+ \time 6/4
+ bes2.^\markup { \bold "Moderato" } r8
+ \mergeDifferentlyHeadedOn
+ \mergeDifferentlyDottedOn
+ % Start polyphonic section of four voices
+ <<
+ { c,8 d fis bes a } % continuation of main voice
+ \new Voice {
+ \voiceTwo
+ c,8~
+ % Reposition the c2 to the right of the merged note
+ \once \override NoteColumn #'force-hshift = #1.0
+ % Move the c2 out of the main note column so the merge will work
+ \shiftOnn
+ c2
+ }
+ \new Voice {
+ \voiceThree
+ s8
+ % Stem on the d2 must be down to permit merging
+ \stemDown
+ % Stem on the d2 should be invisible
+ \once \override Stem #'transparent = ##t
+ \once \override Flag #'transparent = ##t
+ d2
+ }
+ \new Voice {
+ \voiceFour
+ s4 fis4.
+ }
+ >> |
+ \mergeDifferentlyHeadedOff
+ \mergeDifferentlyDottedOff
+ g2.\) % continuation of main voice
+ }
}
lhMusic = \relative c' {
@end lilypond
-@node Further tweaking
-@section Further tweaking
+@node Trucajes adicionales
+@section Trucajes adicionales
+@translationof Further tweaking
@menu
-* Other uses for tweaks::
-* Using variables for tweaks::
-* Other sources of information::
-* Avoiding tweaks with slower processing::
-* Advanced tweaks with Scheme::
+* Otras aplicaciones de los trucos::
+* Uso de variables para los trucos::
+* Hojas de estilo::
+* Otras fuentes de información::
+* Trucos avanzados con Scheme::
@end menu
-@node Other uses for tweaks
-@subsection Other uses for tweaks
+@node Otras aplicaciones de los trucos
+@subsection Otras aplicaciones de los trucos
+@translationof Other uses for tweaks
@cindex transparent, uso de la propiedad
@cindex objetos, hace invisibles
@cindex objetos invisibles
@cindex ligar notas entre voces distintas
-@subheading Tying notes across voices
+@subheading Ligar notas entre voces distintas
El ejemplo siguiente muestra cómo conectar notas que están en
distintas voces utilizando ligaduras de unión. Normalmente sólo se
misma voz. Usando dos voces, con las notas ligadas en una de ellas:
@lilypond[quote,fragment,relative=2]
-<< { b8~ b8\noBeam }
-\\ { b[ g8] }
->>
+<< { b8~ b\noBeam } \\ { b8[ g] } >>
@end lilypond
@noindent
<<
{
\once \override Stem #'transparent = ##t
- b8~ b8\noBeam
+ \once \override Flag #'transparent = ##t
+ b8~ b\noBeam
}
\\
- { b[ g8] }
+ { b8[ g] }
>>
@end lilypond
<<
{
\once \override Stem #'transparent = ##t
+ \once \override Flag #'transparent = ##t
\once \override Stem #'length = #8
- b8~ b8\noBeam
+ b8~ b\noBeam
}
\\
- { b[ g8] }
+ { b8[ g] }
>>
@end lilypond
-@subheading Simulating a fermata in MIDI
+@subheading Simulación de un calderón en el MIDI
@cindex sello, uso de la propiedad
@cindex fermata, realización en MIDI
\once \override Score.MetronomeMark #'transparent = ##t
% Invisible tempo marking to lengthen fermata in MIDI
\tempo 4=80
- a\fermata
+ a4\fermata |
% New tempo for next section
\tempo 4=100
- a a a a
+ a4 a a a |
}
\layout { }
\midi { }
\once \override Score.MetronomeMark #'stencil = ##f
% Invisible tempo marking to lengthen fermata in MIDI
\tempo 4=80
- a\fermata
+ a4\fermata |
% New tempo for next section
\tempo 4=100
- a a a a
+ a4 a a a |
}
\layout { }
\midi { }
línea fuerza una colocación muy alta de la indicación de tempo que
sigue, mientras que la segunda (con el sello suprimido) no lo hace.
-@node Using variables for tweaks
-@subsection Using variables for tweaks
+@seealso
+Glosario musical:
+@rglos{system}.
+
+
+@node Uso de variables para los trucos
+@subsection Uso de variables para los trucos
+@translationof Using variables for tweaks
@cindex variables, uso de, para trucos
@cindex usar variables para hacer trucos
\override Lyrics.LyricText #'font-shape = #'italic
\override Lyrics.LyricText #'font-series = #'bold
}
+
normal = {
\revert Lyrics.LyricText #'font-shape
\revert Lyrics.LyricText #'font-series
}
-global = { \time 4/4 \partial 4 \key c \major}
-SopranoMusic = \relative c' { c4 | e4. e8 g4 g | a a g }
-AltoMusic = \relative c' { c4 | c4. c8 e4 e | f f e }
-TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
-BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
-VerseOne = \lyrics { E -- | ter -- nal \emphasize Fa -- ther, \normal | strong to save, }
-VerseTwo = \lyricmode { O | \emphasize Christ, \normal whose voice the | wa -- ters heard, }
-VerseThree = \lyricmode { O | \emphasize Ho -- ly Spi -- rit, \normal | who didst brood }
-VerseFour = \lyricmode { O | \emphasize Tri -- ni -- ty \normal of | love and pow'r }
+global = { \key c \major \time 4/4 \partial 4 }
+
+SopranoMusic = \relative c' { c4 | e4. e8 g4 g | a4 a g }
+AltoMusic = \relative c' { c4 | c4. c8 e4 e | f4 f e }
+TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
+BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
+
+VerseOne = \lyrics {
+ E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save,
+}
+
+VerseTwo = \lyricmode {
+ O | \emphasize Christ, \normal whose voice the | wa -- ters heard,
+}
+
+VerseThree = \lyricmode {
+ O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood
+}
+
+VerseFour = \lyricmode {
+ O | \emphasize Tri -- ni -- ty \normal of | love and pow'r
+}
\score {
\new ChoirStaff <<
\clef "treble"
\new Voice = "Soprano" { \voiceOne \global \SopranoMusic }
\new Voice = "Alto" { \voiceTwo \AltoMusic }
- \new Lyrics \lyricsto "Soprano" { \VerseOne }
- \new Lyrics \lyricsto "Soprano" { \VerseTwo }
+ \new Lyrics \lyricsto "Soprano" { \VerseOne }
+ \new Lyrics \lyricsto "Soprano" { \VerseTwo }
\new Lyrics \lyricsto "Soprano" { \VerseThree }
- \new Lyrics \lyricsto "Soprano" { \VerseFour }
+ \new Lyrics \lyricsto "Soprano" { \VerseFour }
>>
\new Staff <<
\clef "bass"
\new Voice = "Tenor" { \voiceOne \TenorMusic }
- \new Voice = "Bass" { \voiceTwo \BassMusic }
+ \new Voice = "Bass" { \voiceTwo \BassMusic }
>>
>>
}
@end lilypond
-@node Other sources of information
-@subsection Other sources of information
+@node Hojas de estilo
+@subsection Hojas de estilo
+@translationof Style sheets
+
+La salida que produce LilyPond se puede modificar profundamente;
+consulte @ref{Trucar la salida} para leer detalles sobre este asunto.
+Pero ¿qué ocurre si tiene muchos archivos a los que les quiere aplicar
+sus propios trucos? O ¿qué ocurre si, sencillamente, quiere separar
+los trucos de la propia música? Todo esto es bastante fácil de
+conseguir.
+
+Veamos un ejemplo. No se preocupe si no entiende
+las partes que tienen todos los @code{#()}. Esto se explicará en
+@ref{Trucos avanzados con Scheme}.
+
+@lilypond[quote,verbatim,ragged-right]
+mpdolce =
+#(make-dynamic-script
+ (markup #:hspace 0
+ #:translate '(5 . 0)
+ #:line (#:dynamic "mp"
+ #:text #:italic "dolce")))
+
+inst =
+#(define-music-function
+ (parser location string)
+ (string?)
+ (make-music
+ 'TextScriptEvent
+ 'direction UP
+ 'text (markup #:bold (#:box string))))
+
+\relative c'' {
+ \tempo 4=50
+ a4.\mpdolce d8 cis4--\glissando a |
+ b4 bes a2 |
+ \inst "Clarinet"
+ cis4.\< d8 e4 fis |
+ g8(\! fis)-. e( d)-. cis2 |
+}
+@end lilypond
+
+Existen varios problemas con la salida que se superpone; los
+arreglaremos utilizando las técnicas descritas en @ref{Mover objetos}.
+Pero también haremos algo respecto a las definiciones @code{mpdolce} e
+@code{inst}. Éstas producen la salida que deseamos, pero quizá las
+querríamos utilizar en otra pieza. Podríamos simplemente copiarlas y
+pegarlas al principio de cada archivo, pero sería bastante molesto.
+También hace que se queden las definiciones a la vista dentro de
+nuestros archivos de música, y yo personalmente encuentro todos los
+@code{#()} bastante poco estéticos. Los vamos a esconder dentro de
+otro archivo:
+
+@example
+%%% guardar esto en un archivo de nombre "definiciones.ily"
+mpdolce =
+#(make-dynamic-script
+ (markup #:hspace 0
+ #:translate '(5 . 0)
+ #:line (#:dynamic "mp"
+ #:text #:italic "dolce")))
+
+inst =
+#(define-music-function
+ (parser location string)
+ (string?)
+ (make-music
+ 'TextScriptEvent
+ 'direction UP
+ 'text (markup #:bold (#:box string))))
+@end example
+
+Haremos referencia a este archivo utilizando la instrucción
+@code{\include} al principio del archivo de música (la extensión
+@code{.ily} se utiliza para distinguir este archivo de inclusión --que
+se supone que no debe ser procesado de forma independiente-- del
+archivo principal). Ahora modificaremos la música (guardemos este
+archivo como @file{musica.ly}).
+
+@c We have to do this awkward example/lilypond-non-verbatim
+@c because we can't do the \include stuff in the manual.
+
+@example
+\include "definiciones.ily"
+
+\relative c'' @{
+ \tempo 4=50
+ a4.\mpdolce d8 cis4--\glissando a |
+ b4 bes a2 |
+ \inst "Clarinete"
+ cis4.\< d8 e4 fis |
+ g8(\! fis)-. e( d)-. cis2 |
+@}
+@end example
+
+@lilypond[quote,ragged-right]
+mpdolce =
+#(make-dynamic-script
+ (markup #:hspace 0
+ #:translate '(5 . 0)
+ #:line (#:dynamic "mp"
+ #:text #:italic "dolce")))
+
+inst =
+#(define-music-function
+ (parser location string)
+ (string?)
+ (make-music
+ 'TextScriptEvent
+ 'direction UP
+ 'text (markup #:bold (#:box string))))
+
+\relative c'' {
+ \tempo 4=50
+ a4.\mpdolce d8 cis4--\glissando a |
+ b4 bes a2 |
+ \inst "Clarinet"
+ cis4.\< d8 e4 fis |
+ g8(\! fis)-. e( d)-. cis2 |
+}
+@end lilypond
+
+Eso tiene mejor aspecto, pero haremos algunos cambios más. El
+glissando es difícil de ver, así que lo haremos más grueso y lo
+acercaremos a las cabezas de las notas. Pondremos la indicación
+metronómica encima de la clave, en lugar de ir encima de la primera
+nota. Y por último, mi profesor de composición odia las indicaciones
+de compás @q{C}, así que la convertiremos en @q{4/4}.
+
+Sin embargo, no debemos cambiar el archivo @file{musica.ly}.
+Sustituyamos nuestro archivo @file{definiciones.ily} con éste:
+
+@example
+%%% definiciones.ily
+mpdolce =
+#(make-dynamic-script
+ (markup #:hspace 0
+ #:translate '(5 . 0)
+ #:line (#:dynamic "mp"
+ #:text #:italic "dolce")))
+
+inst =
+#(define-music-function
+ (parser location string)
+ (string?)
+ (make-music
+ 'TextScriptEvent
+ 'direction UP
+ 'text (markup #:bold (#:box string))))
+
+\layout@{
+ \context @{
+ \Score
+ \override MetronomeMark #'extra-offset = #'(-9 . 0)
+ \override MetronomeMark #'padding = #'3
+ @}
+ \context @{
+ \Staff
+ \override TimeSignature #'style = #'numbered
+ @}
+ \context @{
+ \Voice
+ \override Glissando #'thickness = #3
+ \override Glissando #'gap = #0.1
+ @}
+@}
+@end example
+
+@lilypond[quote,ragged-right]
+mpdolce =
+#(make-dynamic-script
+ (markup #:hspace 0
+ #:translate '(5 . 0)
+ #:line (#:dynamic "mp"
+ #:text #:italic "dolce")))
+
+inst =
+#(define-music-function
+ (parser location string)
+ (string?)
+ (make-music
+ 'TextScriptEvent
+ 'direction UP
+ 'text (markup #:bold (#:box string))))
+
+\layout{
+ \context {
+ \Score
+ \override MetronomeMark #'extra-offset = #'(-9 . 0)
+ \override MetronomeMark #'padding = #'3
+ }
+ \context {
+ \Staff
+ \override TimeSignature #'style = #'numbered
+ }
+ \context {
+ \Voice
+ \override Glissando #'thickness = #3
+ \override Glissando #'gap = #0.1
+ }
+}
+
+\relative c'' {
+ \tempo 4=50
+ a4.\mpdolce d8 cis4--\glissando a |
+ b4 bes a2 |
+ \inst "Clarinet"
+ cis4.\< d8 e4 fis |
+ g8(\! fis)-. e( d)-. cis2 |
+}
+@end lilypond
+
+¡Eso tiene un aspecto mucho mejor! Ahora suponga que quiere publicar
+esta pieza. A mi profesor de composición no le gustan las
+indicaciones de compás @q{C}, pero yo les tengo cierto cariño.
+Copiaremos el archivo actual @file{definiciones.ily} a
+@file{publicar-web.ily} y modificaremos éste. Como el propósito de
+esta música es producir un PDF que va a mostrarse en la pantalla,
+también vamos a aumentar el tamaño general de la salida.
+
+@example
+%%% definiciones.ily
+mpdolce =
+#(make-dynamic-script
+ (markup #:hspace 0
+ #:translate '(5 . 0)
+ #:line (#:dynamic "mp"
+ #:text #:italic "dolce")))
+
+inst =
+#(define-music-function
+ (parser location string)
+ (string?)
+ (make-music
+ 'TextScriptEvent
+ 'direction UP
+ 'text (markup #:bold (#:box string))))
+
+#(set-global-staff-size 23)
+
+\layout@{
+ \context @{
+ \Score
+ \override MetronomeMark #'extra-offset = #'(-9 . 0)
+ \override MetronomeMark #'padding = #'3
+ @}
+ \context @{
+ \Staff
+ @}
+ \context @{
+ \Voice
+ \override Glissando #'thickness = #3
+ \override Glissando #'gap = #0.1
+ @}
+@}
+@end example
+
+@lilypond[quote,ragged-right]
+mpdolce =
+#(make-dynamic-script
+ (markup #:hspace 0
+ #:translate '(5 . 0)
+ #:line (#:dynamic "mp"
+ #:text #:italic "dolce")))
+
+inst =
+#(define-music-function
+ (parser location string)
+ (string?)
+ (make-music
+ 'TextScriptEvent
+ 'direction UP
+ 'text (markup #:bold (#:box string))))
+
+#(set-global-staff-size 23)
+
+\layout{
+ \context { \Score
+ \override MetronomeMark #'extra-offset = #'(-9 . 0)
+ \override MetronomeMark #'padding = #'3
+ }
+ \context { \Voice
+ \override Glissando #'thickness = #3
+ \override Glissando #'gap = #0.1
+ }
+}
+
+\relative c'' {
+ \tempo 4=50
+ a4.\mpdolce d8 cis4--\glissando a |
+ b4 bes a2 |
+ \inst "Clarinet"
+ cis4.\< d8 e4 fis |
+ g8(\! fis)-. e( d)-. cis2 |
+}
+@end lilypond
+
+Ahora, en la música, simplemente sustituyo @code{\include
+"definiciones.ily"} por @code{\include "publicar-web.ily"}. Por
+supuesto, podríamos hacer esto aún más práctico. Podríamos hacer un
+archivo @file{definiciones.ily} que contuviera solamente las
+definiciones de @code{mpdolce} y de @code{inst}, un archivo
+@file{publicar-web.ily} que contuviera solamente la sección
+@code{\layout} que se mostró en el ejemplo, y un archivo
+@file{universidad.ily} que contendría solamente los trucos para
+producir la salida que le gusta a mi profesor. El comienzo de
+@file{musica.ly} tendría entonces este aspecto:
+
+@example
+\include "definiciones.ily"
+
+%%% ¡Quitar el comentario de una sola de estas líneas!
+\include "publicar-web.ily"
+%\include "universidad.ily"
+@end example
+
+Este enfoque puede ser útil incluso si va a producir sólo un conjunto
+de particellas. Yo utilizo media docena de archivos de @q{hojas de
+estilo} para mis proyectos. Comienzo todos los archivos de música con
+@code{\include "../global.ily"}, que contiene
+
+@example
+%%% global.ily
+\version @w{"@version{}"}
+
+#(ly:set-option 'point-and-click #f)
+
+\include "../iniciar/iniciar-definiciones.ily"
+\include "../iniciar/iniciar-disposicion.ily"
+\include "../iniciar/iniciar-cabeceras.ily"
+\include "../iniciar/iniciar-papel.ily"
+@end example
+
+
+@node Otras fuentes de información
+@subsection Otras fuentes de información
+@translationof Other sources of information
La documentación del manual de Referencia de Funcionamiento Interno
contiene montañas de información sobre LilyPond, pero se puede obtener
@item Linux
Diríjase a
-@file{@var{CARPETA_DE_INSTALACIÓN}/lilypond/usr/share/lilypond/current/}
+@file{@var{CARPETA_DE_INSTALACIÓN}/lilypond/usr/@/share/lilypond/current/}
@item MacOS X
Diríjase a
-@file{@var{CARPETA_DE_INSTALACIÓN}/LilyPond.app/Contents/Resources/share/lilypond/current/}
+@file{@var{CARPETA_DE_INSTALACIÓN}/LilyPond.app/Contents/@/Resources/share/lilypond/current/}
bien haciendo @code{cd} hacia este directorio desde el Terminal, o
bien manteniendo pulsada la tecla de Control y haciendo click sobre la
aplicación de LilyPond, y allí eligiendo @q{Mostrar el contenido del
@item Windows
Mediante el Explorador de Windows, diríjase a
-@file{@var{CARPETA_DE_INSTALACIÓN}/LilyPond/usr/share/lilypond/current/}
+@file{@var{CARPETA_DE_INSTALACIÓN}/LilyPond/usr/@/share/lilypond/current/}
@end itemize
Vamos a comenzar observando algunos archivos que están en @file{ly/}.
Abra @file{ly/property-init.ly} con un editor de textos. El mismo que
-usaría normalmente para los archivos @code{.ly} servirá perfectamente.
+usaría normalmente para los archivos @file{.ly} servirá perfectamente.
Este archivo contiene las definiciones de todas las instrucciones
estándar predefinidas de LilyPond, como por ejemplo @code{\stemUp} y
@code{\slurDotted}. Podrá ver que no son nada más que definiciones de
@end multitable
Otros ajustes (como las definiciones de las instrucciones de marcado)
-se almacenan como archivos @code{.scm} (de Scheme). El lenguaje de
+se almacenan como archivos @file{.scm} (de Scheme). El lenguaje de
programación Scheme se utiliza para proporcionar un interfaz
programable en el funcionamiento interno de LilyPond. Cualquier
explicación adicional sobre estos archivos se encuentra por el momento
fuera del ámbito de este manual, porque se requieren conocimientos del
lenguaje Scheme. Se advierte a los usuarios que se necesita una
importante cantidad de conocimientos técnicos o de tiempo para
-comprender el lenguaje Scheme y estos archivos (véase @ref{Scheme
-tutorial}).
+comprender el lenguaje Scheme y estos archivos (véase @rextend{Tutorial de Scheme}).
Si ya tiene estos conocimientos, los archivos de Scheme que pueden
interesarle son:
@end multitable
-
-@node Avoiding tweaks with slower processing
-@subsection Avoiding tweaks with slower processing
-
-LilyPond puede llevar a cabo comprobaciones adicionales al tiempo que
-procesa los archivos. Estas instrucciones consumen tiempo, pero el
-resultado puede necesitar menos trucos manuales para obtener un
-resultado aceptable. Si una inscripción de texto o parte de la letra
-se sale de los márgenes, estas comprobaciones comprimirán dicha línea
-en la medida justa como para que encaje dentro de los márgenes.
-
-Para que sean efectivos bajo cualquier circunstancia, estas
-comprobaciones deben habilitarse colocando las instrucciones de
-sobreescritura dentro del bloque @code{\with} dentro de un Score, y no
-en línea con la música, de la forma siguiente:
-
-
-@example
-\new Score \with @{
- % asegura que las marcas de texto y letras de las canciones se encuentran dentro de los márgenes de la página
- \override PaperColumn #'keep-inside-line = ##t
- \override NonMusicalPaperColumn #'keep-inside-line = ##t
-@} @{
- ..
-@}
-@end example
-
-@node Advanced tweaks with Scheme
-@subsection Advanced tweaks with Scheme
+@node Trucos avanzados con Scheme
+@subsection Trucos avanzados con Scheme
+@translationof Advanced tweaks with Scheme
Aunque es posible hacer muchas cosas con las instrucciones
@code{\override} y @code{\tweak} , tenemos una forma incluso más
directamente en el mecanismo de funcionamiento de LilyPond. Por
supuesto, para hacer esto se necesitan al menos unos conocimientos
básicos de programación en Scheme, y damos una introducción en el
-@ref{Scheme tutorial}.
+@rextend{Tutorial de Scheme}.
Como ejemplo que ilustra una de las muchas posibilidades, en lugar de
dar a una propiedad un valor constante, se puede establecer al
@lilypond[quote,verbatim,ragged-right]
#(define (color-notehead grob)
- "Color the notehead according to its position on the staff."
- (let ((mod-position (modulo (ly:grob-property grob 'staff-position) 7)))
- (case mod-position
- ;; Return rainbow colors
- ((1) (x11-color 'red )) ; for C
- ((2) (x11-color 'orange )) ; for D
- ((3) (x11-color 'yellow )) ; for E
- ((4) (x11-color 'green )) ; for F
- ((5) (x11-color 'blue )) ; for G
- ((6) (x11-color 'purple )) ; for A
- ((0) (x11-color 'violet )) ; for B
- )
- )
-)
+ "Color the notehead according to its position on the staff."
+ (let ((mod-position (modulo (ly:grob-property grob 'staff-position)
+ 7)))
+ (case mod-position
+ ;; Return rainbow colors
+ ((1) (x11-color 'red )) ; for C
+ ((2) (x11-color 'orange )) ; for D
+ ((3) (x11-color 'yellow )) ; for E
+ ((4) (x11-color 'green )) ; for F
+ ((5) (x11-color 'blue )) ; for G
+ ((6) (x11-color 'purple )) ; for A
+ ((0) (x11-color 'violet )) ; for B
+ )))
\relative c' {
% Arrange to obtain color from color-notehead procedure
\override NoteHead #'color = #color-notehead
- c2 c' |
- b4 g8 a b4 c |
- c,2 a' |
- g1 |
-}
-\addlyrics {
- Some -- where o -- ver the Rain -- bow, way up high,
+ a2 b | c2 d | e2 f | g2 a |
}
@end lilypond
Se pueden encontrar ejemplos adicionales que muestran la utilización
-de estos interfaces programables, en @ref{Tweaking with Scheme}.
+de estos interfaces programables, en
+@rextendnamed{Callback functions,Funciones de callback}.
+