@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 6da27f9b294c385ff8fc75876e152d67f0b4794e
+ Translation of GIT committish: 7fdce4f39834cc8c83f176480cc1d20900eb09f8
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.17.6"
+@c \version "2.19.2"
@node Trucar la salida
@chapter Trucar la salida
* Manual de referencia de funcionamiento interno::
* Apariencia de los objetos::
* Colocación de los objetos::
+* Espaciado vertical::
* Colisiones de objetos::
* Trucajes adicionales::
@end menu
@strong{La instrucción \override}
+@menu
+* La instrucción override::
+* La instrucción revert::
+* El prefijo once::
+* La instrucción overrideProperty::
+* La instrucción tweak::
+@end menu
+
+@node La instrucción override
+@unnumberedsubsubsec La instrucción @code{@bs{}override}
+@translationof The override command
+
@cindex override, instrucción
@cindex override (sobreescritura), sintaxis de
La sintaxis genérica de esta instrucción es:
@example
-\override @var{Contexto}.@var{ObjetoDePresentación} #'@var{propiedad-de-presentación} =
+\override @var{Contexto}.@var{ObjetoDePresentación}.@var{propiedad-de-presentación} =
#@var{valor}
@end example
sencillos que sean fáciles de entender, para ilustrar el formato
y la utilización de estas instrucciones.
-Por ahora no se preocupe por el @code{#'}, que debe anteponerse a la
-propiedad de presentación, y el@tie{}@code{#}, que debe preceder al valor.
-Deben estar presentes siempre y de esa forma exacta. Es la
+Las expresiones principales de LilyPond son elementos musicales
+como notas, duraciones y elementos de marcado. Las expresiones
+más básicas como números, cadenas de caracteres y listas se
+procesan en el @q{modo de Scheme}, que se invoca por medio del
+prefijo @samp{#} escrito antes del valor. Aunque los valores
+pueden tener a veces una representación válida en el modo de
+música de LilyPond, este manual utiliza siempre @samp{#} para la
+escritura, por coherencia. Para ver más información acerca del
+modo de Scheme, consulte @rextend{Sintaxis del Scheme de LilyPond}.
+
+@code{\override} 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
usa. A continuación hay un ejemplo sencillo para cambiar el color de
g4 a b c |
@end lilypond
-@strong{La instrucción \revert}
+
+@node La instrucción revert
+@unnumberedsubsubsec La instrucción @code{@bs{}revert}
+@translationof The revert command
@cindex revert, instrucción
se han utilizado varias instrucciones @code{\override}.
@example
-\revert @var{Contexto}.@var{ObjetoDePresentación} #'@var{propiedad-de-presentación}
+\revert @var{Contexto}.@var{ObjetoDePresentación}.@var{propiedad-de-presentación}
@end example
Una vez más, igual que @var{Contexto} dentro de la instrucción
b4 c |
@end lilypond
-@strong{El prefijo \once}
+
+@node El prefijo once
+@unnumberedsubsubsec El prefijo @code{@bs{}once}
+@translationof The once prefix
@funindex \once
@funindex once
@cindex color, propiedad, ejemplo
@cindex NoteHead, ejemplo de sobreescritura
-@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
+@lilypond[quote,verbatim,relative=1]
c4 d
\override NoteHead.color = #red
e4 f |
b c |
@end lilypond
-@strong{La instrucción \overrideProperty}
+El prefijo @code{\once} también se puede usar delante de muchas
+instrucciones predefinidas para limitar su efecto a un solo momento
+musical:
+
+@lilypond[quote,verbatim,relative=1]
+c4 d
+\once \stemDown
+e4 f |
+g4 a
+\once \hideNotes
+b c |
+@end lilypond
+
+Sin embargo, las instrucciones predefinidas de la forma
+@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.
+
+
+@node La instrucción overrideProperty
+@unnumberedsubsubsec La instrucción @code{@bs{}overrideProperty}
+@translationof The overrideProperty command
@cindex overrideProperty, instrucción
detalles consulte @rextend{Trucos difíciles}.
@c Maybe explain in a later iteration -td
-@strong{La instrucción \tweak}
+
+@node La instrucción tweak
+@unnumberedsubsubsec La instrucción @code{@bs{}tweak}
+@translationof The tweak command
@cindex tweak, instrucción
de la instrucción @code{\tweak} en su forma sencilla es:
@example
-\tweak #'@var{propiedad-de-presentación} #@var{valor}
+\tweak @var{propiedad-de-presentación} #@var{valor}
@end example
Una instrucción @code{\tweak} también se puede usar para modificar
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
<\tweak Accidental.color #red cis4
\tweak Accidental.color #green es
- g>
+ g>
@end lilypond
Esta forma extensa de la instrucción @code{\tweak} se puede describir
como
@example
-\tweak @var{layout-object} #'@var{layout-property} @var{value}
+\tweak @var{objeto-de-presentación}.@var{propiedad-de-presentación} @var{valor}
@end example
@cindex grupos especiales anidados
@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
\tweak direction #up
-\times 4/3 {
+\tuplet 3/4 {
\tweak color #red
- \times 2/3 { c8[ c c] }
- \times 2/3 { c8[ c c] }
- \times 2/3 { c8[ c c] }
+ \tuplet 3/2 { c8[ c c] }
+ \tuplet 3/2 { c8[ c c] }
+ \tuplet 3/2 { c8[ c c] }
}
@end lilypond
@cindex transparent, propiedad, ejemplo
@cindex TupletNumber, ejemplo de sobreescritura
-@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] }
+\tuplet 3/2 { c8[ c c] }
\once \override TupletNumber.text = #tuplet-number::calc-fraction-text
-\times 2/3 {
+\tuplet 3/2 {
c8[ c]
c8[ c]
\once \override TupletNumber.transparent = ##t
- \times 2/3 { c8[ c c] }
- \times 2/3 { c8[ c c] }
+ \tuplet 3/2 { c8[ c c] }
+ \tuplet 3/2 { c8[ c c] }
}
@end lilypond
@cindex Referencia de Funcionamiento Interno, ejemplo de utilización
@cindex @code{\addlyrics}, ejemplo
-
Utilicemos un ejemplo concreto con un sencillo fragmento de música
real:
práctica). La cual vendrá proporcionada por los ejemplos que vienen a
continuación.
-@subheading Búsqueda del contexto
+@subsubsubheading 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 Sobreescritura por una sola vez
+@subsubsubheading Sobreescritura por una sola vez
@cindex sobreescritura por una sola vez
@cindex once override
La instrucción o prefijo @code{\once} también se puede usar antes de
la instrucción @code{\set}.
-@subheading Recuperación del ajuste
+@subsubsubheading Recuperación del ajuste
@cindex revertir
@cindex predeterminadas, recuperar las propiedades
propiedad es @code{font-shape} y el valor es @code{italic}. Igual que
antes, omitiremos el contexto.
-Como nota aparte, aunque una nota importante, observe que a causa de
-que los valores de @code{font-shape} son símbolos, deben ir precedidos
-de un apóstrofo, @code{'}. Esa es la razón por la que se necesitan
-apóstrofos antes de @code{thickness} en el ejemplo anterior y en
-@code{font-shape}. Los dos son también símbolos. Los símbolos son
-nombres especiales que son conocidos por LilyPond internamente.
-Algunos de ellos son nombres de propiedades, como @code{thickness} o
-@code{font-shape}, otros se utilizan como valores que se les puede dar
-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
+Como nota aparte, aunque es importante, observe que ciertas
+propiedades toman valores que son símbolos, como @code{italic}, y
+deben ir precedidos de un apóstrofo, @code{'}. Los símbolos se
+leen a continuación internamente por parte de LilyPond. Tenga en
+cuenta la diferencia con las cadenas de texto arbitrarias, que
+aparecerían como @code{"una cadena de texto"}; para ver más
+detalles sobre los símbolos y las cadenas, consulte
@rextend{Tutorial de Scheme}.
Así pues, la instrucción @code{\override} necesaria para imprimir la
@noindent
y toda la letra se imprime en cursiva.
-@subheading Especificación del contexto en modo letra
-
-@cindex contexto, especificación en modo letra
-@cindex letra, modo, especificar el contexto en
-
-En el caso de la letra, si intenta especificar el contexto en el
-formato que acabamos de dar, la instrucción no funcionará. Una
-sílaba escrita en el modo letra, «lyricmode» termina en un espacio, un
-salto de línea o un dígito. Cualquier otro carácter se incluye como
-parte de la sílaba. Por esta razón, un espacio o salto de línea debe
-aparecer antes del último símbolo @code{@}} para evitar que se incluya
-como parte de la sílaba final. De forma similar, se deben insertar
-espacios antes y después del punto, @q{.}, separando el nombre del
-contexto del nombre del objeto, pues en caso contrario los dos nombres
-se juntarán y el intérprete no podrá reconocerlos. Así pues, la
-instrucción será:
-
-@example
-\override Lyrics.LyricText.font-shape = #'italic
-@end example
-
@warning{Dentro de la letra, deje siempre espacios entre la sílaba
final y la llave de cierre.}
-@warning{En las sobreescrituras con override dentro de la letra,
-escriba siempre espacios antes y después del punto que separa el
-nombre del contexto y el nombre del objeto.}
-
@seealso
Manual de Extensión:
los tipos que podrá necesitar, junto con las reglas de dicho tipo, y
algunos ejemplos. Debe escribir siempre un símbolo de almohadilla,
@code{#}, por supuesto, delante de estos valores cuando se introducen
-en la instrucción @code{\override}.
+en la instrucción @code{\override}, incluso si el propio valor ya
+comienza por@tie{}@code{#}. Solamente ofrecemos aquí ejemplos para
+constantes; si quiere calcular un valor usando Scheme, consulte
+@rextend{Cálculos en Scheme}.
@multitable @columnfractions .2 .45 .35
@headitem Tipo de propiedad
@tab Verdadero o Falso, representado por #t o #f
@tab @code{#t}, @code{#f}
@item Dimensión (en espacios de pentagrama)
- @tab Un número decimal positivo (en unidades de espacios de pentagrama)
+ @tab Un número decimal (en unidades de espacios de pentagrama)
@tab @code{2.5}, @code{0.34}
@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 Una constante válida de dirección o su equivalente numérico
+ (@code{0} o @code{CENTER} indican una dirección neutra)
@tab @code{LEFT}, @code{CENTER}, @code{UP},
@code{1}, @w{@code{-1}}
@item Entero
@tab Un número entero positivo
- @tab @code{3}, @code{1}
+ @tab @code{3}, @code{-1}
@item Lista
- @tab Un conjunto de valores separados por espacios, encerrado entre paréntesis y precedido de un apóstrofo
- @tab @code{'(left-edge staff-bar)}, @code{'(1)},
+ @tab Una secuencia de constantes o símbolos separados por espacios,
+ encerrado entre paréntesis
+ y precedido de un apóstrofo o comilla simple
+ @tab @code{'(left-edge staff-bar)}, @code{'(1)}, @code{'()},
@code{'(1.0 0.25 0.5)}
@item Marcado
@tab Cualquier elemento válido de marcado de texto
- @tab @code{\markup @{ \italic "cresc." @}}
+ @tab @code{\markup @{ \italic "cresc." @}}, @code{"gaita"}
@item Momento
@tab Una fracción de redonda construida con la función make-moment
- @tab @code{(ly:make-moment 1 4)},
- @code{(ly:make-moment 3 8)}
+ @tab @code{(ly:make-moment 1/4)},
+ @code{(ly:make-moment 3/8)}
@item Número
- @tab Cualquier valor decimal positivo o negativo
- @tab @code{3.5}, @w{@code{-2.45}}
+ @tab Cualquier valor positivo o negativo, posiblemente decimal
+ @tab @code{3}, @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)}
@tab @code{bend::print}, @code{ly:text-interface::print},
@code{#f}
@item Vector
- @tab Una lista de tres elementos encerrados entre paréntesis y precedida de apóstrofo-almohadilla, @code{'#}.
- @tab @code{'#(#t #t #f)}
+ @tab Constantes
+ encerradas entre @code{#(}@dots{}@code{)}.
+ @tab @code{#(#t #t #f)}
@end multitable
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)
+@menu
+* La propiedad stencil (sello)::
+* La propiedad break-visibility (visibilidad en el salto)::
+* La propiedad transparent (transparente)::
+* La propiedad color::
+@end menu
+
+@node La propiedad stencil (sello)
+@unnumberedsubsubsec La propiedad @code{stencil} (sello)
+@translationof The stencil property
@cindex stencil (sello), propiedad
}
@end lilypond
-Ahora las barras de compás han desaparecido.
+Ahora las barras de compás han desaparecido. La operación de
+fijar la propiedad @code{stencil} al valor @code{#f} es tan
+frecuente que existe una abreviatura para ella, llamada
+@code{\omit} (omitir):
+@funindex \omit
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+{
+ \time 12/16
+ \omit Staff.BarLine
+ c4 b8 c d16 c d8 |
+ g,8 a16 b8 c d4 e16 |
+ e8
+}
+@end lilypond
Sin embargo, observe que el establecimiento de la propiedad
@code{stencil} al valor @code{#f} produce errores cuando las se
}
@end lilypond
-@subheading break-visibility (visibilidad en el salto)
+@node La propiedad break-visibility (visibilidad en el salto)
+@unnumberedsubsubsec The @code{break-visibility} (visibilidad en el salto)
+@translationof The break-visibility property
@cindex break-visibility, propiedad
-Vemos en las propiedades de @code{BarLine} que aparecen en el RFI que
-la propiedad @code{break-visibility} requiere un vector de tres
-valores booleanos. Controlan respectivamente si las barras de compás
-se imprimen al final de una línea, en mitad de una línea, y al
-principio de las líneas. Para nuestro ejemplo, queremos que todas las
-barras de compás se supriman, por lo que el valor que necesitamos es
-@code{'#(#f #f #f)}. Vamos a probarlo, recordando incluir el contexto
-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@tie{}@code{#} se necesita, como siempre, para preceder el valor
-en sí dentro de la instrucción @code{\override}.
+Vemos en las propiedades de @code{BarLine} que aparecen en el RFI
+que la propiedad @code{break-visibility} requiere un vector de
+tres valores booleanos. Controlan respectivamente si las barras
+de compás se imprimen al final de una línea, en mitad de una
+línea, y al principio de las líneas. Para nuestro ejemplo,
+queremos que todas las barras de compás se supriman, por lo que el
+valor que necesitamos es @code{#(#f #f #f)} (disponible también
+bajo el nombre @code{all-invisible}, todas invisibles). Vamos a
+probarlo, recordando incluir el contexto de @code{Staff}. Observe
+también que al escribir este valor tenemos @code{##} antes del
+paréntesis de apertura. Se necesita un @code{#} como parte de la
+sintaxis de las contantes vectoriales, y el primer símbolo de
+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
@cindex break-visibility, propiedad, ejemplo
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
\time 12/16
- \override Staff.BarLine.break-visibility = #'#(#f #f #f)
+ \override Staff.BarLine.break-visibility = ##(#f #f #f)
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
Y podemos ver que esto también quita todas las líneas divisorias.
-@subheading transparent (transparente)
+@node La propiedad transparent (transparente)
+@unnumberedsubsubsec La propiedad @code{transparent} (transparente)
+@translationof The transparent property
@cindex transparent, propiedad
@cindex transparencia
@end lilypond
@noindent
-El compás ya no está, pero esta instrucción deja una separación en el
-lugar donde antes estaba la indicación de compás. Quizá esto es lo
-que queremos para un ejercicio en que el alumno deba escribirlo, pero
-en otras circunstancias esta separación podría no ser deseable. En
-vez de eso, para quitarla, el stencil o «sello» de la indicación de
+Una vez más, el establecimiento de la propiedad @code{transparent}
+es una operación bastante frecuente, de modo que tenemos una
+abreviatura llamada @code{\hide} (ocultar):
+@funindex \hide
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+{
+ \time 12/16
+ \hide Staff.TimeSignature
+ c4 b8 c d16 c d8 |
+ g,8 a16 b8 c d4 e16 |
+ e8
+}
+@end lilypond
+
+@noindent
+En ninguno de los dos casos aparece ya la indicación de compás,
+pero esta instrucción deja una separación en el lugar donde antes
+estaba la indicación de compás. Quizá esto es lo que queremos
+para un ejercicio en que el alumno deba escribirlo, pero en otras
+circunstancias esta separación podría no ser deseable. En vez de
+eso, para quitarla, el stencil o «sello» de la indicación de
compás se debe establecer al valor @code{#f}:
@cindex TimeSignature, ejemplo de sobreescritura
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
\time 12/16
- \override Staff.TimeSignature.stencil = ##f
+ \omit Staff.TimeSignature
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
@end lilypond
@noindent
-y la diferencia es obvia: al establecer el sello al valor @code{#f}
-quitamos el objeto por completo; al hacer el objeto @code{transparent}
-lo dejamos donde está, pero lo hacemos invisible.
+y la diferencia es obvia: al establecer el sello al valor
+@code{#f} (posiblemente por medio de @code{\omit}) quitamos el
+objeto por completo; al hacer el objeto @code{transparent} (lo que
+puede hacerse utilizando @code{\hide}) lo dejamos donde está, pero
+lo hacemos invisible.
-@subheading color
+@node La propiedad color
+@unnumberedsubsubsec La propiedad @code{color}
+@translationof The color property
@cindex color, propiedad
@noindent
y de nuevo podemos comprobar que las barras de compás no son visibles.
Observe que @emph{white} no viene precedido de un apóstrofo: no es un
-símbolo, sino una @emph{función}. Cuando se invoca, proporciona la
+símbolo, sino una @emph{variable}. Cuando se evalúa, proporciona la
lista de valores internos que se requieren para establecer el color a
-blanco. Los otros colores de la lista normal también son funciones.
+blanco. Los otros colores de la lista normal también son variables.
Para convencerse de que esto funciona, quizá quiera cambiar el color a
-una de las otras funciones de la lista.
+una de las otras variables de la lista.
@cindex colores de X11
@cindex X11, colores de
@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{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:
+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{Lista de colores}. De todas formas, se hacen corresponder
+a los valores reales por medio de la función @code{x11-color} que
+convierte los símbolos de color de X11 en la lista de valores
+internos como éstos:
@cindex BarLine, ejemplo de sobreescritura
@cindex color, propiedad, ejemplo
@end lilypond
@noindent
-Observe que en este caso la función @code{x11-color} toma un símbolo
-como argumento, así que el símbolo debe ir precedido de un apóstrofo y
-los dos deben ir entre paréntesis.
+Observe que en este caso la función @code{x11-color} toma un
+símbolo como argumento, así que el símbolo debe ir precedido de un
+apóstrofo para evitar que resulte evaluado como si fuera una
+variable, y toda la llamada a la función se debe encerrar entre
+paréntesis.
@cindex rgb, colores
@cindex color, rgb
@funindex rgb-color
-Aún hay una tercera función, que convierte valores RGB en colores
+Aún existe otra función, que convierte valores RGB en colores
internos: la función @code{rgb-color}. Toma tres argumentos que dan
las intensidades de rojo, verde y azul. Cada uno de ellos puede tomar
valores entre 0 y 1. Por lo tanto, para establecer el color a rojo el
@cindex alignAboveContext, propiedad, ejemplo
@cindex @code{\with}, ejemplo
-@cindex stencil, propiedad, ejemplo
+@funindex \omit
@cindex Clef, ejemplo de sobreescritura
@cindex TimeSignature, ejemplo de sobreescritura
alignAboveContext = #"main"
}
{
- \override Staff.Clef.stencil = ##f
- \override Staff.TimeSignature.stencil = ##f
+ \omit Staff.Clef
+ \omit Staff.TimeSignature
{ f8 f c }
}
>>
Pero ¿cuál es la diferencia entre modificar el contexto de pentagrama
usando @code{\with} y modificar los sellos de clave y de compás con
-\override? La diferencia principal es que los cambios que se realizan
+\override, o en este caso
+@code{\omit}? La diferencia principal es que los cambios que se realizan
en una cláusula @code{\with} se hacen en el momento en que se crea el
contexto, y permanecen activos como valores @strong{predeterminados}
durante toda la duración de dicho contexto, mientras que las
}
@end lilypond
+Resulta que también podemos emplear aquí las abreviaturas
+@code{\hide} y @code{\omit} para fijar la propiedad
+@code{transparent} y borrar el @code{stencil}, lo que conduce al
+resultado siguiente:
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+\new Staff ="main" {
+ \relative g' {
+ r4 g8 g c4 c8 d |
+ e4 r8
+ <<
+ { f8 c c }
+ \new Staff \with {
+ alignAboveContext = #"main"
+ % Don't print clefs in this staff
+ \omit Clef
+ % Don't print time signatures in this staff
+ \omit TimeSignature
+ }
+ { f8 f c }
+ >>
+ r4 |
+ }
+}
+@end lilypond
+
Finalmente llegamos a la forma de cambiar el tamaño de los objetos de
presentación.
{ f8 c c }
\new Staff \with {
alignAboveContext = #"main"
- \override Clef.stencil = ##f
- \override TimeSignature.stencil = ##f
+ \omit Clef
+ \omit TimeSignature
% Reduce all font sizes by ~24%
fontSize = #-2
}
{ f8 c c }
\new Staff \with {
alignAboveContext = #"main"
- \override Clef.stencil = ##f
- \override TimeSignature.stencil = ##f
+ \omit Clef
+ \omit TimeSignature
fontSize = #-2
% Reduce stem length and line spacing to match
\override StaffSymbol.staff-space = #(magstep -2)
hacia abajo. Esto se controla automáticamente cuando está establecida
la propiedad @code{direction}.
+@menu
+* La propiedad direction (dirección)::
+* Digitaciones::
+@end menu
+
+@node La propiedad direction (dirección)
+@unnumberedsubsubsec La propiedad @code{direction} (dirección)
+@translationof The direction property
+
@cindex abajo
@cindex arriba
@cindex centro
@tab Los grupos especiales están debajo o encima de las notas
@end multitable
-Observe que estas instrucciones predefinidas @strong{no} pueden ir
-precedidas de @code{\once}. Si quiere limitar el efecto a una sola
-nota, deberá elegir entre usar la instrucción @code{\once \override}
-equivalente, o usar la instrucción predefinida, seguida después de la
-nota afectada por la instrucción @code{\xxxNeutral} correspondiente.
+Las variantes neutras o normales de estas instrucciones están
+implementadas usando @code{\revert} y @strong{no} pueden ir
+precedidas de @code{\once}. Si quiere limitar el efecto de las
+otras instrucciones (que están implementadas usando
+@code{\override}) a un solo paso de tiempo, puede precederla de
+@code{\once} de la misma forma en que lo haría con las
+sobreescrituras explícitas.
+@node Digitaciones
@unnumberedsubsubsec Digitaciones
+@translationof Fingering
@cindex digitación, colocación
@cindex digitación de acordes
@subsection Objetos fuera del pentagrama
@translationof Outside-staff objects
+Los objetos fuera-del-pentagrama se sitúan automáticamente para evitar
+las colisiones. Existen varias formas de sobreescribir la colocación
+automática si el posicionado no resulta óptimo.
+
+@menu
+* La propiedad outside-staff-priority (prioridad fuera del pentagrama)::
+* La instrucción textLengthOn::
+* Posicionamiento de los matices dinámicos::
+* Escalado de un «Grob»::
+@end menu
+
+
+@node La propiedad outside-staff-priority (prioridad fuera del pentagrama)
+@unnumberedsubsubsec La propiedad @code{outside-staff-priority} (prioridad fuera del pentagrama)
+@translationof The outside-staff-priority property
+
Los objetos fuera-del-pentagrama se colocan automáticamente para
evitar las colisiones. Los objetos que tienen el valor más bajo de la
propiedad @code{outside-staff-priority} se sitúan más cerca del
@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
+objetos de extensión se crean 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
+lugar de eso, tenemos que cambiar 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.
hacer sitio para el texto. Esto se hace empleando la instrucción
@code{textLengthOn}.
-@subheading \textLengthOn
+@node La instrucción textLengthOn
+@unnumberedsubsubsec La instrucción @code{@bs{}textLengthOn}
+@translationof The textLengthOn command
@cindex notas, espaciar junto al texto
@end lilypond
La instrucción para volver al comportamiento predeterminado es
-@code{\textLengthOff}. Recuerde que @code{\once} funciona solamente
-con @code{\override}, @code{\set}, @code{\revert} o @code{\unset}, así
-que no se puede usar con @code{\textLengthOn}.
+@code{\textLengthOff}. De forma alternativa, se puede usar
+@code{\once} con @code{\textLengthOn} si el efecto se ha de limitar a
+un solo momento musical.
+The corresponding spacing behavior for rehearsal marks and tempo
+indications is independently controlled with the commands
+@code{\markLengthOn} and @code{\markLengthOff}.
@cindex marcado, texto de, permitir las colisiones en
c''2 |
@end lilypond
-
-@subheading Matices dinámicos
+@node Posicionamiento de los matices dinámicos
+@unnumberedsubsubsec Posicionamiento de los matices dinámicos
+@translationof Dynamics placement
@cindex trucar la colocación de los matices
@cindex dinámica, trucar la colocación de las indicaciones de
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\dynamicUp
-a4\f b\mf c\mp b\p
+a4\f b\mf a\mp b\p
@end lilypond
@noindent
Por tanto, tendremos que averiguar cómo hacerlo utilizando
instrucciones @code{\override}.
-@subheading Escalado de un «Grob»
+@node Escalado de un «Grob»
+@unnumberedsubsubsec Escalado de un «Grob»
+@translationof Grob sizing
@cindex grob, cambio de tamaño de un
@cindex escala de los grobs
@cindex @code{extra-spacing-width}
-De forma predeterminada, los objetos fuera-del-pentagrama reciben una
-anchura cero, de manera que pueden solaparse en la dirección
-horizontal. Esto se hace mediante el truco de añadir una cantidad
-infinita a la dimensión más a la izquierda y menos infinito a la
-dimensión más a la derecha estableciendo el valor de
-@code{extra-spacing-width} a @code{'(+inf.0 . -inf.0)}. Así, para
-asegurar que no se superponen en la dirección horizontal tendremos que
-sobreescribir este valor de @code{extra-spacing-width} a @code{'(0
-. 0)} de forma que el verdadero ancho se presente. Esta es la
-instrucción que lo hace para las indicaciones dinámicas:
+De forma predeterminada, los objetos fuera-del-pentagrama reciben
+una anchura cero, de manera que pueden solaparse en la dirección
+horizontal. Esto se hace mediante el truco de hacer que la
+dimensión más a la izquierda sea igual a infinito y que la
+dimensión más a la derecha sea igual a menos infinito,
+estableciendo el valor de @code{extra-spacing-width} a
+@code{'(+inf.0 . -inf.0)}. Así, para asegurar que no se
+superponen en la dirección horizontal tendremos que sobreescribir
+este valor de @code{extra-spacing-width} para darles un poco de
+espacio adicional. Las unidades son el espacio entre dos líneas
+del pentagrama, de forma que debería bastar mover el límite
+izquierdo media unidad a la izquierda y el límite derecho media
+unidad a la derecha:
@example
-\override DynamicText.extra-spacing-width = #'(0 . 0)
+\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
@end example
@noindent
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\dynamicUp
-\override DynamicText.extra-spacing-width = #'(0 . 0)
-a4\f b\mf c\mp b\p |
+% Extend width by 1 staff space
+\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
+a4\f b\mf a\mp b\p
@end lilypond
@noindent
-Bueno, ciertamente ha hecho que las marcas dinámicas ya no estén
-desplazadas, pero aún quedan dos problemas. Las marcas tendrían que
-separarse un poco más entre sí, y sería mejor si todas estuvieran a la
-misma distancia del pentagrama. Podemos resolver el primer problema
-fácilmente. En vez de hacer cero la anchura
-@code{extra-spacing-width}, podemos añadirle algo más. Las unidades
-son el espacio entre dos líneas de pentagrama, así que al mover el
-límite izquierdo media unidad a la izquierda y el límite derecho media
-unidad hacia la derecha, deberíamos conseguirlo:
+Esto tiene un mejor aspecto, pero quizá habríamos preferido que
+las indicaciones de dinámica estuvieran alineadas sobre la misma
+línea de base en lugar de ir hacia arriba y hacia abajo con las
+notas. La propiedad que lo hace es @code{staff-padding} (relleno
+de pentagrama) que se estudia en la sección dedicada a las
+colisiones (véase @ref{Colisiones de objetos}).
+
+@node Espaciado vertical
+@section Espaciado vertical
+@translationof Vertical spacing
+
+Por lo general, el espaciado vertical de los objetos musicales que
+LilyPond hace es bastante bueno. Veamos cómo se comporta con una
+canción sencilla, con dos voces y acompañamiento de piano:
+
+@lilypond[quote,fragment,ragged-right]
+<<
+ \new ChoirStaff
+ <<
+ \new Staff {
+ \new Voice = "music" {
+ b'2 c' c' c'
+ }
+ }
+ \new Lyrics
+ \lyricsto "music" {
+ Here are some lyrics
+ }
+ \new Staff {
+ \clef bass e'2 f e c
+ }
+ >>
+ \new PianoStaff
+ <<
+ \new Staff {
+ g''2 c'' c'' a''
+ }
+ \new Staff {
+ \clef bass e2 f c e
+ }
+ >>
+>>
+@end lilypond
-@cindex DynamicText, ejemplo de sobreescritura
-@cindex extra-spacing-width, propiedad, ejemplo
+No hay ningún problema con el espaciado vertical predeterminado.
+Sin embargo, supongamos que estamos trabajando con un editor que
+tiene ciertos requisitos específicos para el espaciado vertical de
+los pentagramas y la letra: quiere que la letra está más separada
+de las notas, que el acompañamiento de piano esté más separado de
+la línea vocal y que los dos pentagramas de piano estén más juntos
+entre sí. Comenzaremos con la letra.
+
+La letra se encuentra en el interior de un sistem, y por tanto las
+instrucciones para aplicarle el espaciado estarán en
+@ruser{Espaciado vertical flexible dentro de los sistemas}. Allí
+se dice que el texo son líneas del tipo @qq{no-pauta} y por tanto
+la instrucción para cambiar su espaciado hará referencia a la
+propiedad @code{nonstaff}. Para separarlas del pentagrama al que
+pertenecen (la pauta superior) usaremos la propiedad
+@code{relatedstaff}. Para separarlas de la línea inferior
+usaremos la propiedad @code{unrelatedstaff}. Las partes vocales
+pertenecen a un grupo vertical @code{VerticalAxisGroup}, por lo
+que tenemos que ajustar sus propiedades. Probémoslo y veamos si
+funciona.
+
+@lilypond[quote,fragment,ragged-right,verbatim]
+<<
+ \new ChoirStaff
+ <<
+ \new Staff {
+ \new Voice = "music" {
+ b'2 c' c' c'
+ }
+ }
+ \new Lyrics \with {
+ \override VerticalAxisGroup.
+ nonstaff-relatedstaff-spacing.padding = #5
+ \override VerticalAxisGroup.
+ nonstaff-unrelatedstaff-spacing.padding = #5
+ }
+ \lyricsto "music" {
+ Here are some lyrics
+ }
+ \new Staff {
+ \clef bass e'2 f e c
+ }
+ >>
+ \new PianoStaff
+ <<
+ \new Staff {
+ g''2 c'' c'' a''
+ }
+ \new Staff {
+ \clef bass e2 f c e
+ }
+ >>
+>>
+@end lilypond
-@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
-\dynamicUp
-% Extend width by 1 staff space
-\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
-a4\f b\mf c\mp b\p
+Bien: sí, funciona, pero quizá demasiado bien. Cuando
+establecemos el @code{padding} (relleno) a 5, LilyPond añade 5
+espacios de pentagrama a la distancia entre los objetos, lo que es
+excesivo para nosotros en este caso. Usaremos un valor de 2.
+
+A continuación, desplazaremos la música de piano para separarla de
+las partes vocales. La música vocal es una @code{ChoirStaff} (un
+contexto de sistema coral), y por tanto tenemos que aumentar el
+espaciado entre ese grupo de pentagramas y el sistema de piano que
+se encuentra debajo. Lo haremos cambiando la
+@code{basic-distance} (distancia básica) del @code{StaffGrouper}
+del @code{staffgroup-staff-spacing}.
+
+@lilypond[quote,fragment,ragged-right,verbatim]
+<<
+ \new ChoirStaff \with {
+ \override StaffGrouper.
+ staffgroup-staff-spacing.basic-distance = #15
+ }
+ <<
+ \new Staff {
+ \new Voice = "music" {
+ b'2 c' c' c'
+ }
+ }
+ \new Lyrics \with {
+ \override VerticalAxisGroup.
+ nonstaff-relatedstaff-spacing.padding = #2
+ \override VerticalAxisGroup.
+ nonstaff-unrelatedstaff-spacing.padding = #2
+ }
+ \lyricsto "music" {
+ Here are some lyrics
+ }
+ \new Staff {
+ \clef bass e'2 f e c
+ }
+ >>
+ \new PianoStaff
+ <<
+ \new Staff {
+ g''2 c'' c'' a''
+ }
+ \new Staff {
+ \clef bass e2 f c e
+ }
+ >>
+>>
@end lilypond
-@noindent
-Esto tiene un mejor aspecto, pero quizá habríamos preferido que las
-indicaciones de dinámica estuvieran alineadas sobre la misma línea de
-base en lugar de ir hacia arriba y hacia abajo con las notas. La
-propiedad que lo hace es @code{staff-padding} (relleno de pentagrama)
-que se estudia en la sección siguiente.
+Muy bien. Ahora, sólo nos queda el último requisito de hacer que
+los pentagramas de piano estén más juntos. Para conseguirlo, de
+nuevo alteramos las propiedades del @code{StaffGrouper}, pero esta
+vez vamos a reducir tanto la @code{basic-distance} (distancia
+básica) como el @code{padding} (relleno). Podemos hacerlo como se
+muestra a continuación.
+
+@lilypond[quote,fragment,ragged-right,verbatim]
+<<
+ \new ChoirStaff \with {
+ \override StaffGrouper.
+ staffgroup-staff-spacing.basic-distance = #15
+ }
+ <<
+ \new Staff {
+ \new Voice = "music" {
+ b'2 c' c' c'
+ }
+ }
+ \new Lyrics \with {
+ \override VerticalAxisGroup.
+ nonstaff-relatedstaff-spacing.padding = #2
+ \override VerticalAxisGroup.
+ nonstaff-unrelatedstaff-spacing.padding = #2
+ }
+ \lyricsto "music" {
+ Here are some lyrics
+ }
+ \new Staff {
+ \clef bass e'2 f e c
+ }
+ >>
+ \new PianoStaff \with {
+ \override StaffGrouper.staff-staff-spacing = #'(
+ (basic-distance . 0)
+ (padding . 0))
+ }
+ <<
+ \new Staff {
+ g''2 c'' c'' a''
+ }
+ \new Staff {
+ \clef bass e2 f c e
+ }
+ >>
+>>
+@end lilypond
+
+Con esto los hemos colocado muy juntos entre sí (pero es lo que el
+editor quería). Se podrían haber separado más alterando el
+relleno, @code{padding}, o la distancia básica,
+@code{basic-distance}, si quisiéramos.
+
+Hay muchas formas de alterar el espaciado vertical. Un punto
+clave que debemos recordar es que el espaciado entre objetos
+dentro de un @code{StaffGroup} (como los grupos @code{GrandStaff}
+o @code{PianoStaff}) se controla con las variables de espaciado
+del @code{StaffGrouper}. El espaciado de los pentagramas no
+agrupados (como @code{Lyrics} y @code{Staff}) se controla con las
+variables del @code{VerticalAxisGroup}. Para ver más detalles,
+consulte
+@ruser{Variables de espaciado de paper verticales flexibles} y
+@ruser{Espaciado vertical flexible dentro de los sistemas}.
@node Colisiones de objetos
resolución de colisiones entre objetos de presentación como silencios
multi-compás, ligaduras de unión y notas en distintas voces.
+@item
+@code{horizontal-shift}
+
+@cindex horizontal-shift, propiedad
+@cindex nota, columna de
+@cindex nota, colisiones
+@cindex colisiones de notas
+@cindex desplazamiento, instrucciones de
+@funindex \shiftOff
+@funindex shiftOff
+@funindex \shiftOn
+@funindex shiftOn
+@funindex \shiftOnn
+@funindex shiftOnn
+@funindex \shiftOnnn
+@funindex shiftOnnn
+
+Dentro de una vozm todas las notas que se producen en el mismo
+moemtno se agrupan en una columna de notas, y se crea un objeto
+@code{NoteColumn} para controlar el posicionamiento horizonal de
+dicho grupo de notas (véase @qq{Columnas de nota} en @ref{Voces
+explícitas}). Si @emph{y sólo si} dos o más columnas de nota
+dentro de un solo contexto de pauta, las dos con las plicas en la
+misma dirección, aparecen en el mismo momento musical, los valores
+de sus propiedades @code{horizontal-shift} se usan para asignarles
+una puntuación y las columnas con puntuaciones más altas se
+desplazan progresivamente para evitar las colisiones entre las
+cabezas de las notas. Esta propiedad se establece con las
+instrucciones @code{\voiceXXX} y se pueden sobreescribir
+directamente con una instrucción @code{\override} o, de forma más
+común con las instrucciones @code{\shiftOn}. Observe que esta
+propiedad se usa para @emph{calificar} las columnas de nota o para
+aplicar desplazamientos: no especifica la magnitud del
+desplazamiento, que se va incrementando progresivamente en pasos
+basándolse en la anchura de las cabezas de nota para cada
+puntuación. Los pasos son normalmente de la mitad de la anchura
+de una cabeza de nota, pero puede ser el ancho completo de la
+cabeza de una nota cuando está implicado un grupo de notas muy
+apretadas entre sí.
+
@item
@code{force-hshift} (forzar desplazamiento horizontal)
@cindex force-hshift, propiedad
-Las notas muy juntas de un acorde, o aquellas que ocurren al mismo
-tiempo en voces distintas, se disponen en dos (y ocasionalmente más)
-columnas para evitar la superposición de las cabezas. Éstas reciben
-el nombre de columnas de notas, y se crea un objeto llamado
-@code{NoteColumn} para disponer las notas en dicha columna.
-
La propiedad @code{force-hshift} es una propiedad de una
@code{NoteColumn} (realmente lo es del interface
-@code{note-column-interface}). Modificarlo permite mover una columna
-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{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
-dentro o fuera de una @code{NoteColumn} afecta a otras acciones como a
-la fusión entre cabezas de nota.
+@code{note-column-interface}). Modificarlo permite mover una
+columna de notas en situaciones donde las columnas de notas se
+superponen. Observe que no tiene efecto sobre las columnas de
+nota que no se superponen. Se especifica 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{Voces
+explícitas}) no resuelven el conflicto entre las notas de forma
+satisfactoria. 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 dentro o
+fuera de una @code{NoteColumn} afecta a otras acciones como a la
+fusión entre cabezas de nota.
@end itemize
en la sección anterior, para resolver problemas de notación que se
superpone.
-@subheading la propiedad padding (relleno)
+@menu
+* La propiedad padding (relleno)::
+* La propiedad right-padding (relleno por la derecha)::
+* La propiedad staff-padding (relleno de pentagrama)::
+* La propiedad self-alignment-X (auto-alineación en X)::
+* La propiedad staff-position (posición en el pentagrama)::
+* La propiedad extra-offset (desplazamiento adicional)::
+* La propiedad positions (posiciones)::
+* La propiedad force-hshift (forzar desplazamiento horizontal)::
+@end menu
+
+@node La propiedad padding (relleno)
+@unnumberedsubsubsec La propiedad @code{padding} (relleno)
+@translationof The padding property
@cindex relleno
@cindex arreglar notación que se superpone
de él.
-@subheading right-padding (relleno por la derecha)
+@node La propiedad right-padding (relleno por la derecha)
+@unnumberedsubsubsec La propiedad @code{right-padding} (relleno por la derecha)
+@translationof The right-padding property
@cindex right-padding, propiedad
@noindent
-@subheading la propiedad staff-padding (relleno de pentagrama)
+@node La propiedad staff-padding (relleno de pentagrama)
+@unnumberedsubsubsec La propiedad @code{staff-padding} (relleno de pentagrama)
+@translationof The staff-padding property
@cindex alineación de objetos sobre la línea base
@cindex objetos, alineación sobre la línea base
@code{staff-padding} se puede usar para alinear objetos como matices
-dinámicos a lo largo de una línea de base a una altura fija sobre el
-pentagrama, en lugar de hacerlo a una altura que dependa de la
-posición de la nota a la que están adosados. No es una propiedad de
+dinámicos a lo largo de una línea de base a una distancia fija del
+pentagrama, siempre que no exista ningún otro elemento de notación
+que fuerce una distancia mayor al pentagrama. No es una propiedad de
@code{DynamicText} sino de @code{DynamicLineSpanner}. Esto es así
porque la línea de base debe aplicarse por igual a @strong{todas} las
dinámicas, entre ellas las que se han creado como objetos de
@cindex staff-padding, propiedad, ejemplo
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
-\dynamicUp
-% Extend width by 1 unit
-\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
-% Align dynamics to a base line 2 units above staff
-\override DynamicLineSpanner.staff-padding = #2
-a4\f b\mf c\mp b\p
+\override DynamicLineSpanner.staff-padding = #3
+a4\f b\mf a\p b\mp
@end lilypond
-@subheading la propiedad self-alignment-X (auto-alineación en X)
+@node La propiedad self-alignment-X (auto-alineación en X)
+@unnumberedsubsubsec La propiedad @code{self-alignment-X} (auto-alineación en X)
+@translationof The self-alignment-X property
-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
+El ejemplo siguiente muestra cómo ajustar la posición
+de un objeto de digitación de cuerda en relación a la plica de una nota
mediante el alineamiento del límite derecho con el punto de referencia
de la nota «padre»:
<a\2>
@end lilypond
-@subheading la propiedad staff-position (posición en el pentagrama)
+@node La propiedad staff-position (posición en el pentagrama)
+@unnumberedsubsubsec La propiedad @code{staff-position} (posición en el pentagrama)
+@translationof The staff-position property
@cindex objeto, colisión dentro del pentagrama
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}}.
Esto es mejor que utilizar, por ejemplo, @code{extra-offset}, porque
la línea adicional por encima del silencio se inserta automáticamente.
-@subheading la propiedad extra-offset (desplazamiento adicional)
+@node La propiedad extra-offset (desplazamiento adicional)
+@unnumberedsubsubsec La propiedad @code{extra-offset} (desplazamiento adicional)
+@translationof The extra-offset property
@cindex posicionar objetos
@cindex posicionar grobs
En el ejemplo siguiente, la segunda digitación se desplaza ligeramente
a la izquierda, y 1.8 espacios de pentagrama hacia abajo:
-@cindex Fingering, ejemplo de sobreescritura
+@cindex fingering (digitación), ejemplo de sobreescritura
@cindex extra-offset, propiedad, ejemplo
@lilypond[quote,fragment,relative=1,verbatim]
@end lilypond
-@subheading la propiedad positions (posiciones)
+@node La propiedad positions (posiciones)
+@unnumberedsubsubsec La propiedad @code{positions} (posiciones)
+@translationof The positions property
@cindex controlar manualmente grupos especiales, ligaduras y barras
@cindex manual, control, de grupos especiales, ligaduras y barras
@cindex barras de corchea, control manual
La propiedad @code{positions} permite controlar manualmente la
-posición e inclinación de los tresillos, ligaduras de expresión y de
-fraseo, y barras de corchea. He aquí un ejemplo que tiene una fea
-ligadura de fraseo debido a que intenta evitar la ligadura de
-expresión que está sobre la acciaccatura.
+posición vertical y de ahí también la inclinación de los tresillos,
+ligaduras de expresión y de fraseo, y barras de corchea.
-@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
-r4 \acciaccatura e8\( d8 c~ c d c d\)
-@end lilypond
+He aquí un ejemplo en el que las ligaduras de fraseo y de expresión
+chocan entre sí:
-@noindent
-Simplemente podemos mover la ligadura de fraseo por encima de las
-notas, y de hecho ésta será la solución preferida:
+@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+a8 \( ( a'16 ) a \)
+@end lilypond
@cindex PhrasingSlur, ejemplo de sobreescritura
@cindex positions, propiedad, ejemplo
-@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
-r4
-\phrasingSlurUp
-\acciaccatura e8\( d8 c~ c d c d\)
-@end lilypond
-
@noindent
-Pero si por algún motivo no pudiéramos hacerlo, la otra alternativa
-sería mover el extremo izquierdo de la ligadura de fraseo un poco
-hacia abajo usando la propiedad @code{positions}. Esto también
-resuelve la forma algo indecente de la ligadura.
-
-@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
-r4
-\once \override PhrasingSlur.positions = #'(-4 . -3)
-\acciaccatura e8\( d8 c~ c d c d\)
+Una posibilidad sería mover los dos extremos de la ligadura de fraseo
+hacia arriba. Podemos tratar de establecer el extremo izquierdo a 2.5
+espacios de pentagrama por encima de la tercera línea y el extremo
+derecho a 4.5 también hacia arriba, y LilyPond seleccionaría la
+ligadura de fraseo de entre las candidatas que ha encontrado con sus
+extremos más cercanos a éstos:
+
+@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+\once \override PhrasingSlur.positions = #'(2.5 . 4.5)
+a8 \( ( a'16 ) a \)
@end lilypond
+Esto supone una mejora, pero ¿por qué no bajar un poco el extremo
+derecho de la ligadura de expresión? Si lo probamos, veremos que no
+se puede hacer así. Ello es a causa de que no existen ligaduras de
+expresión candidatas que estén más bajas que la que ya se ha
+seleccionado, y en este caso la propiedad @code{positions} no tiene
+ningún efecto. Sin embargo, las ligaduras de unión, expresión y
+fraseo @emph{se pueden} colocar y conformar de manera muy exacta
+cuando se necesita. Para aprender la manera de hacerlo, consulte
+@ruser{Modificación de ligaduras de unión y de expresión}.
+
Presentamos otro ejemplo. Vemos que la barra
choca con las ligaduras:
{
\time 4/2
<<
- { c'1 ~ c'2. e'8 f' }
+ { c'1 ~ 2. e'8 f' }
\\
{ e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
>>
<<
- { c'1 ~ c'2. e'8 f' }
+ { c'1 ~ 2. e'8 f' }
\\
{ e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
>>
{
\time 4/2
<<
- { c'1 ~ c'2. e'8 f' }
+ { c'1 ~ 2. e'8 f' }
\\
{
\override Beam.positions = #'(-1 . -1)
}
>>
<<
- { c'1 ~ c'2. e'8 f' }
+ { c'1 ~ 2. e'8 f' }
\\
{ e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
>>
segundo compás de corcheas, pero no a ninguna de las barras de la
segunda voz.
-@subheading la propiedad force-hshift (forzar desplazamiento horizontal)
+@node La propiedad force-hshift (forzar desplazamiento horizontal)
+@unnumberedsubsubsec La propiedad @code{force-hshift} (forzar desplazamiento horizontal)
+@translationof The force-hshift property
Ahora podremos ver cómo aplicar las correcciones finales al ejemplo de
Chopin que presentamos al final de @ref{Oigo voces}, que
@end lilypond
@noindent
-Es necesario que la nota interior del primer acorde (el La bemol de la
-cuarta voz) no se aparte de la columna vertical de la nota aguda.
-Para corregirlo, ajustamos a cero el valor para esta nota de
-@code{force-hshift}, que es una propiedad de @code{NoteColumn}.
-
-En el segundo acorde preferimos que el Fa esté alineado con el La bemol
-y que la nota grave se coloque ligeramente a la derecha para evitar una
-colisión de las plicas. Lo conseguimos ajustando el valor de
-@code{force-hshift} en la @code{NoteColumn} del Re bemol grave para
-moverlo a la derecha medio espacio de pentagrama.
+Es necesario que la nota interior del primer acorde (el La bemol
+de la cuarta voz) no se aparte de la columna vertical de la nota
+aguda. Podríamos esperar corregirlo mediante el uso de
+@code{\shiftOff}, pero esto produce advertencias sobre columnas de
+notas que colisionan. En lugar de ello, ajustamos a cero el valor
+para esta nota de @code{force-hshift}, que es una propiedad de
+@code{NoteColumn}.
+
+En el segundo acorde preferimos que el Fa esté alineado con el La
+bemol y que la nota grave se coloque ligeramente a la derecha para
+evitar una colisión de las plicas. Lo conseguimos ajustando el
+valor de @code{force-hshift} en la @code{NoteColumn} del Re bemol
+grave para moverlo a la derecha medio espacio de pentagrama, y
+fijando @code{force-hshift} para el Fa al vaor cero. Observe que
+usamos @code{\once} para evitar que los ajustes se propaguen más
+allá del momento musical inmediato, aunque en este pequeño ejemplo
+podrían omitirse el @code{\once} y el segundo @code{\override} de
+la cuarta voz. Ello no supondría una buena práctica.
Presentamos a continuación el resultado final:
<<
{ c2 aes4. bes8 }
\\
- {
- <ees, c>2
- \once \override NoteColumn.force-hshift = #0.5
- des2
- }
+ { <ees, c>2 \once \override NoteColumn.force-hshift = 0.5 des }
\\
\\
- {
- \override NoteColumn.force-hshift = #0
- aes'2 f4 fes
- }
+ { \once \override NoteColumn.force-hshift = 0 aes'2
+ \once \override NoteColumn.force-hshift = 0 f4 fes }
>> |
<c ees aes c>1 |
}
\stemDown
% Stem on the d2 should be invisible
\tweak Stem.transparent ##t
- \tweak Flag.transparent ##t
d2
}
\new Voice {
{ c,8 d fis bes a } % continuation of main voice
\new Voice {
\voiceTwo
- c,8~ c2
+ c,8~ 2
}
\new Voice {
\voiceThree
{ c,8 d fis bes a } % continuation of main voice
\new Voice {
\voiceTwo
- c,8~ c2
+ c,8~ 2
}
\new Voice {
\voiceThree
{ c,8 d fis bes a } % continuation of main voice
\new Voice {
\voiceTwo
- c,8~ c2
+ c,8~ 2
}
\new Voice {
\voiceThree
{ c,8 d fis bes a } % continuation of main voice
\new Voice {
\voiceTwo
- c,8~ c2
+ c,8~ 2
}
\new Voice {
\voiceThree
\stemDown
% Stem on the d2 should be invisible
\tweak Stem.transparent ##t
- \tweak Flag.transparent ##t
d2
}
\new Voice {
@menu
* Otras aplicaciones de los trucos::
-* Uso de variables para los trucos::
+* Uso de variables para los ajustes de disposición::
* Hojas de estilo::
* Otras fuentes de información::
* Trucos avanzados con Scheme::
@subsection Otras aplicaciones de los trucos
@translationof Other uses for tweaks
+@menu
+* Unir notas entre voces distintas::
+* Simulación de un calderón en el MIDI::
+@end menu
+
@cindex transparent, uso de la propiedad
@cindex objetos, hace invisibles
@cindex eliminar objetos
@cindex ocultar objetos
@cindex invisibles, objetos
@cindex objetos invisibles
-@cindex ligar notas entre voces distintas
-@subheading Ligar notas entre voces distintas
+@node Unir notas entre voces distintas
+@unnumberedsubsubsec Unir notas entre voces distintas
+@translationof Tying notes across voices
+
+@cindex 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~ b\noBeam } \\ { b8[ g] } >>
+<< { b8~ 8\noBeam } \\ { b8[ g] } >>
@end lilypond
@noindent
<<
{
\tweak Stem.transparent ##t
- \tweak Flag.transparent ##t
- b8~ b\noBeam
+ b8~ 8\noBeam
}
\\
{ b8[ g] }
<<
{
\tweak Stem.transparent ##t
- \tweak Flag.transparent ##t
\tweak Stem.length #8
- b8~ b\noBeam
+ b8~ 8\noBeam
+ }
+\\
+ { b8[ g] }
+>>
+@end lilypond
+
+@funindex \single
+@cindex tweak, generado a partir de una sobreescritura
+Ahora bien, para la @emph{sobreescritura} de la transparencia de
+un objeto gráfico, podríamos haber usado la abreviatura
+@code{\hide} como se explicó anteriormente. El trucaje mediante
+@qq{tweak} es una operación diferente que afecta solamente a las
+propiedades generadas a partir de una sola expresión musical.
+Resulta que podemos convertir los overrides o sobreescrituras en
+tweaks o trucajes utilizando @code{\single}, haciendo posible
+volver a escribir el ejemplo anterior como
+
+@lilypond[quote,fragment,relative=2,verbatim]
+<<
+ {
+ \single \hide Stem
+ \single \hide Flag
+ \tweak Stem.length #8
+ b8~ 8\noBeam
}
\\
{ b8[ g] }
>>
@end lilypond
-@subheading Simulación de un calderón en el MIDI
+En este caso particular, la diferencia con @code{\once \hide} no
+es muy apreciable. Es importante cuando existen varios objetos en
+el mismo punto del tiempo musical (como las notas de un acorde).
+En tal caso, @code{\once} afecta a todos los objetos, mientras que
+@code{\single} solo afecta a uno, aquél que se genera por parte de
+la expresión musical que le sigue inmediatamente.
+
+@node Simulación de un calderón en el MIDI
+@unnumberedsubsubsec Simulación de un calderón en el MIDI
+@translationof Simulating a fermata in MIDI
@cindex sello, uso de la propiedad
@cindex fermata, realización en MIDI
% Visible tempo marking
\tempo 4=120
a4 a a
- \once \override Score.MetronomeMark.transparent = ##t
+ \once \hide Score.MetronomeMark
% Invisible tempo marking to lengthen fermata in MIDI
\tempo 4=80
a4\fermata |
Glosario musical:
@rglos{system}.
+@node Uso de variables para los ajustes de disposición
+@subsection Uso de variables para los ajustes de disposición
+@translationof Using variables for layout adjustments
-@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
-@cindex trucos, usar variables para hacer
+@cindex variables, usar para sobreescrituras
+@cindex sobreescrituras, usar variablas para
+@cindex ajustes, usar variables para
+@cindex ajustes de disposición, usar variables para hacer
Las instrucciones de sobreescritura son con frecuencia largas y
tediosas de escribir, y se tienen que escribir de forma absolutamente
@lilypond[quote,verbatim,ragged-right]
mpdolce =
-#(make-dynamic-script
- #{ \markup { \hspace #0
- \translate #'(5 . 0)
- \line { \dynamic "mp"
- \text \italic "dolce" } }
- #})
+ \tweak self-alignment-X #-0.6
+ #(make-dynamic-script
+ #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
inst =
#(define-music-function
(parser location string)
(string?)
- #{ ^\markup \bold \box #string #})
+ #{ <>^\markup \bold \box #string #})
\relative c'' {
\tempo 4=50
otro archivo:
@example
-%%% guardar esto en un archivo de nombre "definiciones.ily"
+%%% guardar esto en un archivo con el nombre "definiciones.ily"
mpdolce =
-#(make-dynamic-script
- #@{ \markup @{ \hspace #0
- \translate #'(5 . 0)
- \line @{ \dynamic "mp"
- \text \italic "dolce" @} @}
- #@})
+ \tweak self-alignment-X #-0.6
+ #(make-dynamic-script
+ #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
inst =
#(define-music-function
(parser location string)
(string?)
- #@{ ^\markup \bold \box #string #@})
+ #@{ <>^\markup \bold \box #string #@})
@end example
Haremos referencia a este archivo utilizando la instrucción
@lilypond[quote,ragged-right]
mpdolce =
-#(make-dynamic-script
- #{ \markup { \hspace #0
- \translate #'(5 . 0)
- \line { \dynamic "mp"
- \text \italic "dolce" } }
- #})
+ \tweak self-alignment-X #-0.6
+ #(make-dynamic-script
+ #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
inst =
#(define-music-function
(parser location string)
(string?)
- #{ ^\markup \bold \box #string #})
+ #{ <>^\markup \bold \box #string #})
\relative c'' {
\tempo 4=50
@example
%%% definiciones.ily
mpdolce =
-#(make-dynamic-script
- #@{ \markup @{ \hspace #0
- \translate #'(5 . 0)
- \line @{ \dynamic "mp"
- \text \italic "dolce" @} @}
- #@})
+ \tweak self-alignment-X #-0.6
+ #(make-dynamic-script
+ #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
inst =
#(define-music-function
(parser location string)
(string?)
- #@{ ^\markup \bold \box #string #@})
+ #@{ <>^\markup \bold \box #string #@})
\layout@{
\context @{
\Score
- \override MetronomeMark.extra-offset = #'(-9 . 0)
+ \override MetronomeMark.extra-offset = #'(-5 . 0)
\override MetronomeMark.padding = #'3
@}
\context @{
@lilypond[quote,ragged-right]
mpdolce =
-#(make-dynamic-script
- #{ \markup { \hspace #0
- \translate #'(5 . 0)
- \line { \dynamic "mp"
- \text \italic "dolce" } }
- #})
+ \tweak self-alignment-X #-0.6
+ #(make-dynamic-script
+ #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
inst =
#(define-music-function
(parser location string)
(string?)
- #{ ^\markup \bold \box #string #})
+ #{ <>^\markup \bold \box #string #})
\layout{
\context {
\Score
- \override MetronomeMark.extra-offset = #'(-9 . 0)
+ \override MetronomeMark.extra-offset = #'(-5 . 0)
\override MetronomeMark.padding = #'3
}
\context {
@example
%%% publicar-web.ily
mpdolce =
-#(make-dynamic-script
- #@{ \markup @{ \hspace #0
- \translate #'(5 . 0)
- \line @{ \dynamic "mp"
- \text \italic "dolce" @} @}
- #@})
+ \tweak self-alignment-X #-0.6
+ #(make-dynamic-script
+ #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
inst =
#(define-music-function
(parser location string)
(string?)
- #@{ ^\markup \bold \box #string #@})
+ #@{ <>^\markup \bold \box #string #@})
#(set-global-staff-size 23)
\layout@{
\context @{
\Score
- \override MetronomeMark.extra-offset = #'(-9 . 0)
+ \override MetronomeMark.extra-offset = #'(-5 . 0)
\override MetronomeMark.padding = #'3
@}
\context @{
@lilypond[quote,ragged-right]
mpdolce =
-#(make-dynamic-script
- #{ \markup { \hspace #0
- \translate #'(5 . 0)
- \line { \dynamic "mp"
- \text \italic "dolce" } }
- #})
+ \tweak self-alignment-X #-0.6
+ #(make-dynamic-script
+ #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
inst =
#(define-music-function
(parser location string)
(string?)
- #{ ^\markup \bold \box #string #})
+ #{ <>^\markup \bold \box #string #})
#(set-global-staff-size 23)
\layout{
\context { \Score
- \override MetronomeMark.extra-offset = #'(-9 . 0)
+ \override MetronomeMark.extra-offset = #'(-5 . 0)
\override MetronomeMark.padding = #'3
}
\context { \Voice
bajo fink o cygwin) o fue compilado a partir de la fuente, y (b) de
qué sistema operativo está utilizando:
-
-@strong{Descargado de lilypond.org}
+@subsubsubheading Descargado de lilypond.org
@itemize @bullet
@item GNU/Linux
@end itemize
-@strong{Instalado mediante un gestor de paquetes o compilado a partir de la fuente}
+@subsubsubheading Instalado mediante un gestor de paquetes o compilado a partir de la fuente
Diríjase a
@file{@var{PREFIJO}/share/lilypond/@var{X.Y.Z}/}, donde @var{PREFIJO}