X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fes%2Fnotation%2Fchanging-defaults.itely;h=ca0db5cbca29bca6096e85f5c9133ece80127a30;hb=9721a3048fc4fe1385f84e909c2aa067f51b942f;hp=67a536cec698e34bc87f02781c7915d8b6dc4d2e;hpb=a7210078ea5ed650743536c8fcd8b7291322d0e7;p=lilypond.git diff --git a/Documentation/es/notation/changing-defaults.itely b/Documentation/es/notation/changing-defaults.itely index 67a536cec6..ca0db5cbca 100644 --- a/Documentation/es/notation/changing-defaults.itely +++ b/Documentation/es/notation/changing-defaults.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore -Translation of GIT committish: 0767b19c9139922e6d4f7fc569e1f5ffa016b7ac +Translation of GIT committish: 44099a932d98a8757b27ee92f9b0533170b516e3 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' Guide, node Updating translation committishes.. @end ignore -@c \version "2.12.0" +@c \version "2.13.39" @node Cambiar los valores por omisión @chapter Cambiar los valores por omisión @@ -42,8 +42,8 @@ LISP) para aportar la infraestructura. La sobreescritura de las decisiones de disposición da acceso efectivo a las interioridades del programa, lo que requiere código de Scheme como entrada. Los elementos de Scheme se inauguran dentro de un archivo @code{.ly} con -el símbolo de cuadradillo @code{#}.@footnote{@rextend{Tutorial de -Scheme} contiene un breve tutorial sobre la introducción de números, +el símbolo de cuadradillo @code{#}.@footnote{@rextend{Tutorial de Scheme} +contiene un breve tutorial sobre la introducción de números, listas, cadenas y símbolos en Scheme.} @menu @@ -97,7 +97,7 @@ Los contextos se disponen de forma jerárquica: @menu * Score. El contexto maestro:: -* Contextos del nivel superior. Contenedores de pentagramas:: +* Contextos del nivel superior. Contenedores de pentagramas:: * Contextos de nivel intermedio. Pentagramas:: * Contextos del nivel más bajo. Voces:: @end menu @@ -114,8 +114,7 @@ armaduras están siempre alineados entre los distintos pentagramas. Se crea implícitamente una instancia del contexto Score cuando se procesa un bloque @code{\score @{@dots{}@}} o @code{\layout -@{@dots{}@}}, o explícitamente cuando se ejecuta una instrucción -@code{\new Score}. +@{@dots{}@}}. @node Contextos del nivel superior. Contenedores de pentagramas @unnumberedsubsubsec Contextos del nivel superior: contenedores de pentagramas @@ -242,6 +241,8 @@ Tipografía nombres de acordes. @subsection Crear contextos @translationof Creating contexts +@c TODO more complete descriptions rather than learning style + Para partituras que sólo tienen una voz y un pentagrama, los contextos se crean automáticamente. Para partituras más complejas, es necesario crearlos a mano. Existen tres instrucciones que hacen esto. @@ -269,7 +270,7 @@ Una aplicación práctica de @code{\new} es una partitura con muchos pentagramas. Cada parte que debe ir en su propio pentagrama, va precedida de @code{\new Staff}. -@lilypond[quote,verbatim,relative=2,ragged-right,fragment] +@lilypond[quote,verbatim,relative=2,ragged-right] << \new Staff { c4 c } \new Staff { d4 d } @@ -362,8 +363,9 @@ importar qué nombre se le ha dado. Esta variante se usa con expresiones musicales que se pueden interpretar en varios niveles. Por ejemplo, la instrucción -@code{\applyOutput} (véase @rextend{Ejecutar una función sobre todos -los objetos de la presentación}). Sin una instrucción @code{\context} +@code{\applyOutput} (véase +@rextend{Ejecutar una función sobre todos los objetos de la presentación}). +Sin una instrucción @code{\context} explícita, normalmente se aplicaría a @code{Voice} @example @@ -594,7 +596,7 @@ ejemplo sencillo que suprime los grabadores @code{Time_signature_engraver} y @code{Clef_engraver} de un contexto @code{Staff}: -@lilypond[quote,relative=1,verbatim,fragment] +@lilypond[quote,relative=1,verbatim] << \new Staff { f2 g @@ -628,26 +630,32 @@ compás independiente. @cindex polimétricas, partituras @cindex compases distintos al mismo tiempo -@lilypond[quote,relative=1,ragged-right,verbatim,fragment] -\new Score \with { - \remove "Timing_translator" - \remove "Default_bar_line_engraver" -} << +@lilypond[quote,verbatim] +\score { + << + \new Staff \with { + \consists "Timing_translator" + \consists "Default_bar_line_engraver" + } { + \time 3/4 + c4 c c c c c + } \new Staff \with { \consists "Timing_translator" \consists "Default_bar_line_engraver" } { - \time 3/4 + \time 2/4 c4 c c c c c } - \new Staff \with { - \consists "Timing_translator" - \consists "Default_bar_line_engraver" - } { - \time 2/4 - c4 c c c c c - } >> +\layout { + \context { + \Score + \remove "Timing_translator" + \remove "Default_bar_line_engraver" + } + } +} @end lilypond @knownissues @@ -710,16 +718,16 @@ No es posible recolectar cambios de contexto dentro de una variable y aplicarlos a una definición de @code{\context} por referencia a dicha variable. -La instrucción @code{\RemoveEmptyStaffContext} sobreescribe nuestros -ajustes en curso para @code{\Staff}. Si queremos cambiar los valores -predeterminados para un pentagrama que utilice -@code{\RemoveEmptyStaffContext}, debe hacerlo después de llamar a -@code{\RemoveEmptyStaffContext}, o sea +La instrucción @code{\RemoveEmptyStaves} sobreescribe nuestros ajustes +en curso para el contexto @code{\Staff}. Si queremos cambiar los +valores predeterminados para un pentagrama que utilice +@code{\RemoveEmptyStaves}, debemos hacerlo después de llamar a +@code{\RemoveEmptyStaves}, o sea @example \layout @{ \context @{ - \RemoveEmptyStaffContext + \Staff \RemoveEmptyStaves \override Stem #'thickness = #4.0 @} @@ -1010,7 +1018,7 @@ esto suprime un contexto de la lista @qq{accepts}. Supongamos que queremos mover la indicación de digitación del fragmento siguiente: -@lilypond[quote,fragment,relative=2,verbatim] +@lilypond[quote,relative=2,verbatim] c-2 \stemUp f @@ -1172,7 +1180,7 @@ realmente esto no significa mucho. El archivo de inicialización (script-priority . 100) (stencil . ,ly:text-interface::print) (direction . ,ly:script-interface::calc-direction) - (font-encoding . fetaNumber) + (font-encoding . fetaText) (font-size . -5) ; don't overlap when next to heads. (meta . ((class . Item) (interfaces . (finger-interface @@ -1197,7 +1205,7 @@ definición. Recordemos que queríamos cambiar la posición del @b{2} en -@lilypond[quote,fragment,relative=2,verbatim] +@lilypond[quote,relative=2,verbatim] c-2 \stemUp f @@ -1245,7 +1253,7 @@ Al insertar esta instrucción antes de que se haya creado el objeto Fingering, es decir, antes del @code{c2}, llegamos al siguiente resultado: -@lilypond[quote,relative=2,fragment,verbatim] +@lilypond[quote,relative=2,verbatim] \once \override Voice.Fingering #'padding = #3 c-2 \stemUp @@ -1298,6 +1306,7 @@ Preguntas aún sin respuesta * La instrucción override:: * La instrucción tweak:: * set frente a override:: +* Modificación de las listas-A:: @end menu @@ -1351,7 +1360,7 @@ instrucción especifica como contexto a @code{Staff}, sólo se aplica al pentagrama actual. Otros pentagramas mantienen su aspecto normal. Aquí vemos la instrucción en pleno funcionamiento: -@lilypond[quote,verbatim,relative=2,fragment] +@lilypond[quote,verbatim,relative=2] c4 \override Staff.Stem #'thickness = #4.0 c4 @@ -1368,7 +1377,7 @@ omitir, ocasionando que se utilice el contexto predeterminado @code{Voice}. Al añadir @code{\once} se aplica el cambio durante un solo paso de tiempo. -@lilypond[quote,fragment,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] c4 \once \override Stem #'thickness = #4.0 c4 @@ -1380,10 +1389,10 @@ Por tanto, al alterar objetos @emph{Spanner} «de extensión» como ligaduras o barras, la instrucción @code{\override} se debe ejecutar en el momento en que se crea el objeto. En este ejemplo: -@lilypond[quote,fragment,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] \override Slur #'thickness = #3.0 c8[( c -\override Beam #'thickness = #0.6 +\override Beam #'beam-thickness = #0.6 c8 c]) @end lilypond @@ -1472,7 +1481,7 @@ Por ejemplo, los silencios multicompás se combinan en un solo compás si el valor de la propiedad de contexto @code{skipBars} se establece a @code{#t} (verdadero): -@lilypond[quote,verbatim,relative=2,fragment] +@lilypond[quote,verbatim,relative=2] R1*2 \set Score.skipBars = ##t R1*2 @@ -1482,7 +1491,7 @@ Si se omite el argumento @var{context}, entonces se utiliza el contexto actual de nivel más bajo (normalmente @code{ChordNames}, @code{Voice} o @code{Lyrics}). En este ejemplo: -@lilypond[quote,verbatim,relative=2,fragment] +@lilypond[quote,verbatim,relative=2] \set Score.autoBeaming = ##f << { @@ -1504,7 +1513,7 @@ valor de la propiedad @code{skipBars} del contexto predeterminado del nivel más bajo, que en este caso es @code{Voice}, no tendrá ningún efecto, porque skipBars es una propiedad del contexto @code{Score}. -@lilypond[quote,verbatim,relative=2,fragment] +@lilypond[quote,verbatim,relative=2] R1*2 \set skipBars = ##t R1*2 @@ -1528,7 +1537,7 @@ elimina la definición solamente si está establecida dentro de @var{contexto}. Properties that have been set in enclosing contexts will not be altered by an unset in an enclosed context: -@lilypond[quote,verbatim,relative=2,fragment] +@lilypond[quote,verbatim,relative=2] \set Score.autoBeaming = ##t << { @@ -1559,7 +1568,7 @@ son equivalentes si el contexto inferior en curso es @code{Voice}. Los ajustes que se aplican solamente a un único paso de tiempo se pueden escribir con @code{\once}, por ejemplo en -@lilypond[quote,verbatim,relative=2,fragment] +@lilypond[quote,verbatim,relative=2] c4 \once \set fontSize = #4.7 c4 @@ -1627,7 +1636,7 @@ Por ejemplo, podemos aumentar el grosor de la plica de una figura sobreescribiendo la propiedad @code{thickness} (grosor) del objeto @code{Stem} (plica): -@lilypond[quote, verbatim, relative=2, fragment] +@lilypond[quote,verbatim,relative=2] c4 c \override Voice.Stem #'thickness = #3.0 c4 c @@ -1636,7 +1645,7 @@ c4 c Si no se ha especificado ningún contexto en la instrucción @code{\override}, se utiliza el contexto del nivel inferior: -@lilypond[quote, verbatim, relative=2, fragment] +@lilypond[quote,verbatim,relative=2] { \override Staff.Stem #'thickness = #3.0 << { @@ -1657,7 +1666,7 @@ Si no se ha especificado ningún contexto en la instrucción El efecto de una instrucción de sobreescritura @code{\override} se puede deshacer con @code{\revert}: -@lilypond[quote, verbatim, relative=2, fragment] +@lilypond[quote,verbatim,relative=2] c4 \override Voice.Stem #'thickness = #3.0 c4 c @@ -1669,7 +1678,7 @@ Los efectos de @code{\override} y @code{\revert} se aplican a todos los grobs del contexto afectado partiendo del momento actual y hacia adelante: -@lilypond[quote, verbatim, relative=2, fragment] +@lilypond[quote,verbatim,relative=2] { << { @@ -1691,7 +1700,7 @@ adelante: Se puede usar @code{\once} con @code{\override} para afectar solamente al instante de tiempo actual: -@lilypond[quote, verbatim, relative=2, fragment] +@lilypond[quote,verbatim,relative=2] { << { @@ -1783,7 +1792,7 @@ los objetos gráficos. Para objetos que resultan directamente de un elemento de código de la entrada, puede usar la función @code{\tweak}, por ejemplo -@lilypond[relative=2,verbatim] +@lilypond[relative=2,verbatim,quote] < c \tweak #'color #red d @@ -1914,8 +1923,8 @@ f' El flujo musical que se genera a partir de una sección de un archivo de entrada (incluido cualquier elemento insertado automáticamente) -puede examinarse, véase @rextend{Presentación de las expresiones -musicales}. Esto puede ser de utilidad en la determinación de lo que +puede examinarse, véase @rextend{Presentación de las expresiones musicales}. +Esto puede ser de utilidad en la determinación de lo que puede modificarse por medio de una instrucción @code{\tweak}. @@ -1960,6 +1969,129 @@ property (modified with @code{\set}) was created. @end ignore + +@node Modificación de las listas-A +@subsection Modificación de las listas-A +@translationof Modifying alists + +Ciertas propiedades configurables por parte del usuario se representan +internamente como @emph{listas-A} (listas asociativas), que almacenan +duplas de @emph{claves} y @emph{valores}. La estructura de una +lista-A es la siguiente: + +@example +#((@var{clave1} . @var{valor1}) + (@var{clave2} . @var{valor2}) + (@var{clave3} . @var{valor3}) + @dots{}) +@end example + +Si una lista-A es una propiedad de un grob o una variable de +@code{\paper}, sus claves se pueden modificar individualmente sin que +afecte a las otras claves. + +Por ejemplo, para reducir el espacio entre pentagramas adyacentes +dentro de un sistema, use la propiedad @code{staff-staff-spacing} +del grob @code{StaffGrouper}. La propiedad es una lista-A con cuatro +claves: @code{padding} (relleno), @code{space} (espacio), +@code{minimum-distance} (distancia mínima) y @code{stretchability} +(ampliabilidad). Tres de las cuatro claves tienen valores +predeterminados en el inicio, que están definidos (junto con todo el +resto de las propiedades de grobs) en el archivo +@file{scm/define-grobs.scm}: + +@example +(staff-staff-spacing . ((padding . 1) + (space . 9) + (minimum-distance . 7))) +@end example + +Una forma de acercar los pentagramas entre sí es reducir el valor de +la clave @code{space} (@code{9}) para que se corresponda con el valor +de @code{minimum-distance} (@code{7}). Para modificar una única clave +de forma individual, utilice una declaración anidada: + +@lilypond[quote,verbatim] +% default space between staves +\new PianoStaff << + \new Staff { \clef treble c''1 } + \new Staff { \clef bass c1 } +>> + +% reduced space between staves +\new PianoStaff \with { + \override StaffGrouper #'staff-staff-spacing #'space = #7 +} << + \new Staff { \clef treble c''1 } + \new Staff { \clef bass c1 } +>> +@end lilypond + +La utilización de una declaración anidada actualiza la clave +especificada (@code{space} en el ejemplo anterior) sin alterar ninguna +de las otras claves que ya se habían establecido para la misma +propiedad. + +Ahora, supongamos que deseamos que los pentagramas estén tan próximos +como sea posible sin que se superpongan. La manera más sencilla de +hacerlo es establecer las cuatro claves de la lista-A a cero. En tal +caso, no es necesario fijar el valor de cada clave individualmente con +declaraciones anidadas. En lugar de eso, se puede redefinir +completamente la propiedad con una sola declaración, como una lista-A: + +@lilypond[quote,verbatim] +\new PianoStaff \with { + \override StaffGrouper #'staff-staff-spacing = + #'((padding . 0) + (space . 0) + (minimum-distance . 0) + (stretchability . 0)) +} << + \new Staff { \clef treble c''1 } + \new Staff { \clef bass c1 } +>> +@end lilypond + +Observe que cualquier clave que no haya sido relacionada +explícitamente en la definición de la lista-A, será reiniciada a sus +valores @emph{predeterminados si no se han fijado}. En el caso de +@code{staff-staff-spacing}, el valor de cualquier clave no fijada se +reiniciaría a cero (excepto @code{stretchability}, que toma el valor +de @code{space} si no se fija). Así, las dos declaraciones siguientes +son equivalentes: + +@example +\override StaffGrouper #'staff-staff-spacing = + #'((space . 7)) + +\override StaffGrouper #'staff-staff-spacing = + #'((padding . 0) + (space . 7) + (minimum-distance . 0) + (stretchability . 7)) +@end example + +Una consecuencia de esto (posiblemente no intencionada) es la +eliminación de cualquier valor predeterminado @emph{inicializado} que +se establezca en un archivo de inicio y que se carga cada vez que se +compila un archivo de entrada. En el ejemplo anterior, los valores +predeterminados inicializados para @code{padding} y +@code{minimum-distance} (definidos en @file{scm/define-grobs.scm}) se +reinician a sus valores predeterminados si no se han fijado (cero para +las dos claves). La definición de una propiedad o variable como una +lista-A (de cualquier tamaño) siempre reinicia todos los valores de +clave no establecidos a sus valores predeterminados si no se han +fijado. Ano ser que este sea el resultado deseado, es más seguro +actualizar los valores de clave inddividualmente con una declaración +anidada. + +@warning{Las declaraciones anidadas no funcionan para las listas-A de +propiedades de contexto (como @code{beamExceptions}, +@code{keySignature}, @code{timeSignatureSettings}, etc.). Estas +propiedades sólo se pueden modificar redefiniéndolas completamente +como listas-A.} + + @node Conceptos y propiedades útiles @section Conceptos y propiedades útiles @translationof Useful concepts and properties @@ -2211,7 +2343,7 @@ contextos}. @seealso Manual de utilización del programa: -@rprogram{An extra staff appears}. +@rprogram{Aparece un pentagrama de más}. @node Distancias y medidas @subsection Distancias y medidas @@ -2510,7 +2642,7 @@ En caso de salto de línea, los valores para los puntos extremos se especifican por las sub-listas @code{left-broken} y @code{right-broken} de @code{bound-details}. Por ejemplo: -@lilypond[relative=2,ragged-right,verbatim,fragment] +@lilypond[relative=2,ragged-right,verbatim,quote] \override Glissando #'breakable = ##t \override Glissando #'(bound-details right-broken Y) = #-3 c1 \glissando \break @@ -2551,7 +2683,7 @@ Es un elemento de marcado que se evalúa para dar lugar al sello. Se usa para escribir @i{cresc.}, @i{tr} y otros textos sobre los objetos de extensión horizontales. -@lilypond[quote,ragged-right,fragment,relative=2,verbatim] +@lilypond[quote,ragged-right,relative=2,verbatim] \override TextSpanner #'(bound-details left text) = \markup { \small \bold Slower } c2\startTextSpan b c a\stopTextSpan @@ -2565,7 +2697,7 @@ subpropiedades @code{X} e @code{Y}. Si se fijan @code{stencil-align-dir-y} o @code{stencil-offset} se moverá el símbolo del borde verticalmente con relación al extremo de la línea: -@lilypond[relative=1,fragment,verbatim] +@lilypond[relative=1,quote,verbatim] \override TextSpanner #'(bound-details left stencil-align-dir-y) = #-2 \override TextSpanner @@ -2601,7 +2733,7 @@ continuación. Se termina después de una nota exactamente, o en la siguiente barra de compás si @code{to-barline} es verdadero y se produce una divisoria antes de la siguiente nota. -@lilypond[verbatim,quote,ragged-right,relative=2,fragment] +@lilypond[verbatim,quote,ragged-right,relative=2] \endSpanners c2 \startTextSpan c2 c2 \endSpanners @@ -2995,7 +3127,7 @@ dibuja una línea entre ellos, en el estilo solicitado. He aquí un ejemplo de los distintos estilos de línea disponibles, y cómo aplicarles ajustes finos. -@lilypond[relative=2,ragged-right,verbatim,fragment] +@lilypond[relative=2,ragged-right,verbatim,quote] d2 \glissando d'2 \once \override Glissando #'style = #'dashed-line d,2 \glissando d'2 @@ -3011,7 +3143,8 @@ Las posiciones de los puntos extremos del objeto de extensión se computan al vuelo para cada uno de los objetos gráficos, pero es posible sobreescribirlos: -@lilypond[relative=2,ragged-right,verbatim,fragment] +@c TODO Complete +@lilypond[relative=2,ragged-right,verbatim,quote] e2 \glissando f \once \override Glissando #'(bound-details right Y) = #-2 e2 \glissando f @@ -3127,7 +3260,7 @@ Fragmentos de código: @rlsr{Tweaks and overrides}. Extender: -@rextend{Interfaces for programmers}. +@rextend{Interfaces para programadores}. Referencia de funcionamiento interno: @rinternals{All layout objects}. @@ -3155,18 +3288,21 @@ negativos los desplazamientos hacia abajo. La posición de un objeto sobre el pentagrama viene dada por los valores de las propiedades @code{X-offset} e @code{Y-offset}. El -valor de @code{X-offset} da el desplazamiento desde la coordenada x +valor de @code{X-offset} da el desplazamiento desde la coordenada X del punto de referencia del objeto padre, y el valor de @code{Y-offset} da el desplazamiento a partir de la línea central del pentagrama. Los valores de @code{X-offset} y @code{Y-offset} se pueden establecer directamente o se puede dejar que se calculen por parte de procedimientos para conseguir una alineación con el objeto -padre de distintas maneras. +padre. @warning{Muchos objetos tienen consideraciones de posicionamiento especiales que hacen que se ignore o se modifique cualquier ajuste realizado a @code{X-offset} o a @code{Y-offset}, a pesar de que el -objeto contemple el interface @code{self-alignment-interface}.} +objeto contemple el interface @code{self-alignment-interface}. La +sobreescritura de las propiedades @code{X-offset} ó @code{Y-offset} a +un valor fijo hace que se descarte la respectiva propiedad +@code{self-alignment}.} Por ejemplo, una alteración accidental se puede reposicionar verticalmente estableciendo @code{Y-offset} pero los cambios a @@ -3178,16 +3314,20 @@ propiedades especiales que se encuentran en @code{break-aligned-interface} para el posicionamiento de las letras de ensayo sobre dichos objetos. +@seealso +@ref{Uso del break-alignable-interface}, +@rextend{Funciones de callback}. + @menu -* Establecer directamente @code{X-offset} y @code{Y-offset}:: -* Uso del @code{side-position-interface}:: -* Uso del @code{self-alignment-interface}:: -* Uso del @code{break-alignable-interface}:: +* Establecer directamente X-offset e Y-offset:: +* Uso del side-position-interface:: +* Uso del self-alignment-interface:: +* Uso del break-alignable-interface:: @end menu -@node Establecer directamente @code{X-offset} y @code{Y-offset} +@node Establecer directamente X-offset e Y-offset @unnumberedsubsubsec Establecer directamente @code{X-offset} y @code{Y-offset} -@translationof Setting @code{X-offset} and @code{Y-offset} directly +@translationof Setting X-offset and Y-offset directly Se pueden dar valores numéricos a las propiedades @code{X-offset} y @code{Y-offset} de muchos objetos. El ejemplo siguiente muestra tres @@ -3208,9 +3348,9 @@ a @c TODO write more -@node Uso del @code{side-position-interface} +@node Uso del side-position-interface @unnumberedsubsubsec Uso del @code{side-position-interface} -@translationof Using the @code{side-position-interface} +@translationof Using the side-position-interface Un objeto que contempla el @code{side-position-interface} se puede colocar junto a su objeto padre de forma que los bordes especificados @@ -3250,9 +3390,9 @@ situar el objeto encima o debajo del padre de acuerdo con el valor de @c TODO Add examples -@node Uso del @code{self-alignment-interface} +@node Uso del self-alignment-interface @unnumberedsubsubsec Uso del @code{self-alignment-interface} -@translationof Using the @code{self-alignment-interface} +@translationof Using the self-alignment-interface @emph{Auto-alineación horizontal de los objetos} @@ -3353,9 +3493,9 @@ example shows the difference: @c TODO The align-interface, BassFigureAlignment and VerticalAlignment -@node Uso del @code{break-alignable-interface} +@node Uso del break-alignable-interface @unnumberedsubsubsec Uso del @code{break-alignable-interface} -@translationof Using the @code{break-alignable-interface} +@translationof Using the break-alignable-interface @cindex alineación a objetos @cindex break-align-symbols @@ -3370,20 +3510,27 @@ De forma predeterminada, las letras de ensayo y los números de compás se centran horizontalmente sobre el objeto: @lilypond[verbatim,quote,relative=1] -e1 -% the RehearsalMark will be centered above the Clef +% The rehearsal mark will be centered above the Clef \override Score.RehearsalMark #'break-align-symbols = #'(clef) \key a \major \clef treble \mark "↓" -e -% the RehearsalMark will be centered above the TimeSignature +e1 +% The rehearsal mark will be centered above the Time Signature \override Score.RehearsalMark #'break-align-symbols = #'(time-signature) \key a \major \clef treble \time 3/4 \mark "↓" e2. +% The rehearsal mark will be centered above the Breath Mark +\override Score.RehearsalMark #'break-align-symbols = #'(breathing-sign) +\key a \major +\clef treble +\time 4/4 +e1 +\breathe +\mark "↓" @end lilypond Se puede especificar una lista de posibles objetos para la alineación. @@ -3396,20 +3543,27 @@ divisoria. Si la línea divisoria es invisible, el objeto se alinea con el punto en el que se encontraría la línea divisoria. @lilypond[verbatim,quote,relative=1] -e1 -% the RehearsalMark will be centered above the Key Signature +% The rehearsal mark will be centered above the Key Signature \override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef) \key a \major \clef treble \mark "↓" -e -% the RehearsalMark will be centered above the Clef +e1 +% The rehearsal mark will be centered above the Clef \set Staff.explicitKeySignatureVisibility = #all-invisible \override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef) -\key a \minor +\key a \major \clef bass \mark "↓" -e, +gis,,1 +% The rehearsal mark will be centered above the Bar Line +\set Staff.explicitKeySignatureVisibility = #all-invisible +\set Staff.explicitClefVisibility = #all-invisible +\override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef) +\key a \major +\clef treble +\mark "↓" +e''1 @end lilypond La alineación de la letra de ensayo con relación al objeto de notación @@ -3418,23 +3572,23 @@ partitura con varios pentagramas, este ajuste se debe hacer para todos los pentagramas. @lilypond[verbatim,quote,relative=1] -% The RehearsalMark will be centered above the KeySignature +% The RehearsalMark will be centered above the Key Signature \override Score.RehearsalMark #'break-align-symbols = #'(key-signature) \key a \major \clef treble \time 4/4 \mark "↓" e1 -% The RehearsalMark will be aligned with the left edge of the KeySignature +% The RehearsalMark will be aligned with the left edge of the Key Signature \once \override Score.KeySignature #'break-align-anchor-alignment = #LEFT \mark "↓" \key a \major -e -% The RehearsalMark will be aligned with the right edge of the KeySignature +e1 +% The RehearsalMark will be aligned with the right edge of the Key Signature \once \override Score.KeySignature #'break-align-anchor-alignment = #RIGHT \key a \major \mark "↓" -e +e1 @end lilypond La letra de ensayo también se puede desplazar al borde derecho o @@ -3442,19 +3596,19 @@ izquierdo en una medida arbitraria. Las unidades son espacios de pentagrama: @lilypond[verbatim,quote,relative=1] -% The RehearsalMark will be aligned with the left edge of the KeySignature +% The RehearsalMark will be aligned with the left edge of the Key Signature % and then shifted right by 3.5 staff-spaces \override Score.RehearsalMark #'break-align-symbols = #'(key-signature) \once \override Score.KeySignature #'break-align-anchor = #3.5 \key a \major \mark "↓" -e -% The RehearsalMark will be aligned with the left edge of the KeySignature +e1 +% The RehearsalMark will be aligned with the left edge of the Key Signature % and then shifted left by 2 staff-spaces \once \override Score.KeySignature #'break-align-anchor = #-2 \key a \major \mark "↓" -e +e1 @end lilypond @@ -3630,15 +3784,14 @@ una en el mismo momento musical, ni siquiera usando la instrucción Dondequiera que se necesite reutilizar trucos con distintas expresiones musicales, con frecuencia conviene hacer que el truco -forme parte de una función musical. En esta sección estudiaremos -solamente las funciones de @emph{sustitución}, en las que el objeto es -sustituir una variable dentro de un fragmento de código de entrada de -LilyPond. Se describen otras funciones más complejas en -@rextend{Music functions}. +forme parte de una @emph{función musical}. En esta sección +estudiaremos solamente las funciones de @emph{sustitución}, en las que +el objeto es sustituir una variable dentro de un fragmento de código +de entrada de LilyPond. Se describen otras funciones más complejas en +@rextend{Funciones musicales}. @menu * Sintaxis de las funciones de sustitución:: -* Tipos de argumento comunes:: * Ejemplos de funciones de sustitución:: @end menu @@ -3651,72 +3804,69 @@ de LilyPond. La forma general de estas funciones es @example funcion = -#(define-music-function (parser location @var{var1} @var{var2}...@var{vari}... ) - (@var{tipo-de-var1?} @var{tipo-de-var2?}...@var{tipo-de-vari?}...) - #@{ - @emph{...música...} - #@}) +#(define-music-function + (parser location @var{arg1} @var{arg2} @dots{}) + (@var{type1?} @var{type2?} @dots{}) + #@{ + @var{@dots{}música@dots{}} + #@}) @end example @noindent donde @multitable @columnfractions .33 .66 -@item @var{vari} @tab @var{i}-ésima variable -@item @var{tipo-de-vari?} @tab tipo de la variable @var{i}-ésima -@item @var{...música...} @tab entrada de LilyPond normal, que utiliza variables como @code{#$var1}, etc. +@item @code{@var{argN}} +@tab @var{n}-ésimo argumento + +@item @code{@var{typeN?}} +@tab @emph{predicado de tipo} de Scheme para el que @code{@var{argN}} +debe devolver @code{#t}. + +@item @code{@var{@dots{}música@dots{}}} +@tab entrada de LilyPond normal, que utiliza @code{$} para +referenciar argumentos (p.ej. @samp{$arg1}). @end multitable -Los tipos de variable comunes se describen en @ref{Tipos de argumento -comunes}. Hay una descripción más completa de los tipos de variable -en @rextend{Music function syntax}. Los argumentos @code{parser} y @code{location} son necesarios, y se utilizan en algunas situaciones avanzadas como se encuentra descrito -en @rextend{Music function syntax}. Para las funciones de -sustitución, tan sólo hemos de asegurarnos de incluirlos. - -@seealso - -Referencia de la notación: -@ref{Tipos de argumento comunes}. +en @rextend{Sintaxis de las funciones musicales}. Para las funciones +de sustitución, tan sólo hemos de asegurarnos de incluirlos. -Expansión de LilyPond: -@rextend{Music function syntax}. - -@node Tipos de argumento comunes -@subsection Tipos de argumento comunes -@translationof Common argument types +También es necesaria la lista de predicados de tipo. Algunos de los +predicados de tipo más comunes que se utilizan en las funciones +musicales son: -Para hacer posible la comprobación de errores, se debe definir el tipo -de cada argumento que se pasa a una función musical. Algunos de los -tipos de variable comunes están relacionados en la tabla que aparece -más abajo. +@example +boolean? +cheap-list? @emph{(utilizar en lugar de }@q{list?}@emph{ para un procesado más rápido)} +ly:music? +markup? +number? +pair? +string? +symbol? +@end example -Los siguientes tipos de entrada se pueden utilizar como variables -dentro de una función musical. La lista no es exhaustiva; hay más -información sobre los posibles tipos de variable en -@rextendnamed{Music function syntax,Sintaxis de las funciones -musicales}. +@noindent +Para ver una lista de los predicados de tipo disponibles, consulte +@ref{Predicados de tipo predefinidos}. También se permiten los +predicados de tipo definidos por el usuario. -@multitable @columnfractions .33 .66 -@headitem Tipo de entrada @tab notación de @var{tipo-de-vari?} -@item Entero @tab @code{integer?} -@item Flotante (número decimal) @tab @code{number?} -@item Cadena de caracteres @tab @code{string?} -@item Marcado @tab @code{markup?} -@item Expresión musical @tab @code{ly:music?} -@item Dupla de Scheme @tab @code{pair?} -@end multitable @seealso +Referencia de la notación: +@ref{Predicados de tipo predefinidos}. + Expansión de LilyPond: -@rextend {Music function syntax}. +@rextend{Sintaxis de las funciones musicales}. Archivos instalados: @file{lily/music-scheme.cc}, -@file{scm/c++.scm}. +@file{scm/c++.scm}, +@file{scm/lily.scm}. @node Ejemplos de funciones de sustitución @@ -3731,10 +3881,13 @@ En el primer ejemplo se define una función que simplifica el ajuste del relleno de un elemento de inscripción de texto TextScript: @lilypond[quote,verbatim,ragged-right] -padText = #(define-music-function (parser location padding) (number?) - #{ - \once \override TextScript #'padding = #$padding - #}) +padText = +#(define-music-function + (parser location padding) + (number?) + #{ + \once \override TextScript #'padding = $padding + #}) \relative c''' { c4^"piu mosso" b a b @@ -3749,29 +3902,33 @@ Además de números, podemos usar expresiones musicales, como notas, para los argumentos de las funciones musicales: @lilypond[quote,verbatim,ragged-right] -custosNote = #(define-music-function (parser location note) - (ly:music?) - #{ - \once \override Voice.NoteHead #'stencil = - #ly:text-interface::print - \once \override Voice.NoteHead #'text = - \markup \musicglyph #"custodes.mensural.u0" - \once \override Voice.Stem #'stencil = ##f - $note - #}) +custosNote = +#(define-music-function + (parser location note) + (ly:music?) + #{ + \once \override Voice.NoteHead #'stencil = + #ly:text-interface::print + \once \override Voice.NoteHead #'text = + \markup \musicglyph #"custodes.mensural.u0" + \once \override Voice.Stem #'stencil = ##f + $note + #}) -{ c' d' e' f' \custosNote g' } +\relative c' { c4 d e f \custosNote g } @end lilypond -Se pueden definir funciones de sustitución con varios argumentos: +Se pueden definir funciones de sustitución con más de un argumento: @lilypond[quote,verbatim,ragged-right] -tempoPadded = #(define-music-function (parser location padding tempotext) - (number? string?) -#{ - \once \override Score.MetronomeMark #'padding = $padding - \tempo \markup { \bold $tempotext } -#}) +tempoPadded = +#(define-music-function + (parser location padding tempotext) + (number? string?) + #{ + \once \override Score.MetronomeMark #'padding = $padding + \tempo \markup { \bold $tempotext } + #}) \relative c'' { \tempo \markup { "Low tempo" }