X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fes%2Fnotation%2Fchanging-defaults.itely;h=9446dedd98fcaf35030da0e643fb0416bf9cb569;hb=94cc120b230eddda7a272b3883919456ba07e31e;hp=7993db1a5702f3ff38250dbfb499233557c40cea;hpb=7df3f88192dbfc331aba1e06e7114794a1e1209a;p=lilypond.git diff --git a/Documentation/es/notation/changing-defaults.itely b/Documentation/es/notation/changing-defaults.itely index 7993db1a57..9446dedd98 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: 44011e382e91f43fb6752b3fbbf8d8984131a565 +Translation of GIT committish: a43fe59b0205af99f84532935b103d0c064b4526 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.16.0" +@c \version "2.19.7" @node Cambiar los valores por omisión @chapter Cambiar los valores por omisión @@ -64,7 +64,7 @@ Esta sección explica qué son los contextos y cómo modificarlos. @menu * Explicación de los contextos:: -* Crear contextos:: +* Crear y referenciar contextos:: * Mantener vivos los contextos:: * Modificar los complementos (plug-ins) de contexto:: * Cambiar los valores por omisión de los contextos:: @@ -95,12 +95,64 @@ Referencia de funcionamiento interno: Los contextos se disponen de forma jerárquica: @menu +* Definiciones de salida - estructura de los contextos:: * Score. El contexto maestro:: * Contextos del nivel superior. Contenedores de pentagramas:: * Contextos de nivel intermedio. Pentagramas:: * Contextos del nivel más bajo. Voces:: @end menu +@node Definiciones de salida - estructura de los contextos +@unnumberedsubsubsec Definiciones de salida - estructura de los contextos +@translationof Output definitions - blueprints for contexts + +Esta sección explica la relevancia de las definiciones de salida +cuando se trabaja con los contextos. Más adelante ofrecemos +ejemplos de definiciones de salida reales (véase +@ref{Cambiar todos los contextos del mismo tipo}). + +@cindex salida, definiciones de +@funindex \layout +Aunque la música escrita en un archivo haga referencia a tipos y +nombres de contexto, los contextos se crean solamente cuando la +música se está realmente interpretando. LilyPond interpreta la +música bajo el control de una @q{definición de salida} y puede +hacerlo así para varias definiciones de salida distintas, dando +como resultado distintas salidas también. La definicion de salida +que corresponde a la impresión de la música se especifica mediante +@code{\layout}. + +@funindex \midi +Una definición de salida mucho más sencilla que se usa para la +producción de MIDI se especifica mediante @code{\midi}. +Internamente, LilyPond utiliza varias otras definiciones de +salida, como cuando se usa el combinador de particellas +(@ref{Combinación automática de las partes}) o se crean fragmentos +de notas guía citadas (@ref{Citar otras voces}). + +Las definiciones de salida establecen la relación entre los +contextos así como sus respectivos valores predeterminados. +Aunque la mayor parte de los cambios se suelen hacer dentro de un +bloque @code{\layout}, los ajustes de valores relacionados con el +MIDI solamente tienen efecto cuando se hacen dentro de un bloque +@code{\midi} block. + +@funindex autoBeaming +Algunos ajustes afectan a varias salidas: por ejemplo, si se +desactiva el barrado automático, @code{autoBeaming}, dentro de +algún contexto, las barras cuentan como melismas en lo que +respecta a la correspondencia entre la música y la letra, como se +describe en @ref{Duración automática de las sílabas}. Esta +correspondencia se hace tanto para la salida impresa como para el +MIDI. Si los cambios hechos sobre el @code{autoBeaming} dentro de +la definición de contexto de un bloque @code{\layout} no se +repiten dentro del correspondiente bloque @code{\midi}, la letra y +la música dejarán de estar sincronizadas dentro del MIDI. + +@seealso +Archivos instalados: +@file{ly/engraver-init.ly}. +@file{ly/performer-init.ly}. @node Score. El contexto maestro @unnumberedsubsubsec Score. El contexto maestro @@ -113,8 +165,7 @@ compás y se asegura de que ciertos elementos como claves, compases y 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{}@}}. +procesa un bloque @code{\score @{@dots{}@}}. @node Contextos del nivel superior. Contenedores de pentagramas @@ -157,8 +208,10 @@ accidentales. Puede contener contextos de @code{Voice}. @strong{@emph{RhythmicStaff}} -Como @code{Staff}, pero para imprimir ritmos. Se ignoran las alturas -de las notas; las notas se imprimen sobre una línea. +Como @code{Staff}, pero para imprimir ritmos. Al imprimir +se ignoran las alturas de las notas; las notas se imprimen +sobre una línea. La salida de MIDI conserva las alturas +sin modificación. @strong{@emph{TabStaff}} @@ -186,9 +239,12 @@ piezas en estilo mensural. @unnumberedsubsubsec Contextos del nivel más bajo. Voces @translationof Bottom-level contexts - voices -Los contextos del mismo nivel que Voice dan un valor inicial a ciertas -propiedades e inician los grabadores correspondientes. Siendo -contextos del nivel más bajo, no pueden contener a otros contextos. +Los contextos del mismo nivel que Voice dan un valor inicial a +ciertas propiedades e inician los grabadores correspondientes. Un +contexto del nivel más bajo es aquel que no tiene un contexto +descendiente predeterminado @code{defaultchild}. Aunque es +posible hacer que pueda aceptar o contener subcontextos, éstos +solo se pueden crear e introducir de forma explícita. @strong{@emph{Voice}} @@ -239,150 +295,221 @@ Normalmente se deja que se cree implícitamente. Tipografía nombres de acordes. -@node Crear contextos -@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. - -@itemize - -@item -La instrucción más fácil es @code{\new}, y es también la más rápida de -escribir. Se antepone a una expresión musical, por ejemplo +@node Crear y referenciar contextos +@subsection Crear y referenciar contextos +@translationof Creating and referencing contexts @funindex \new -@cindex nuevos, contextos -@cindex Contexto, creación de +@funindex \context +@cindex nuevos contextos +@cindex contextos, creación y referenciación de +@cindex referenciar contextos + +LilyPond crea automáticamente contextos de nifel inferior si se +encuentra una expresión musical antes de que exista un contexto +adecuado, pero normalmente esto sólo funciona bien para partituras +sencillas o fragmentos musicales como los que aparecen en la +documentación. Para partituras más complejas, se recomienda +especificar explícitamente todos los contextos con las +instrucciones @code{\new} o @code{\context}. La sintaxis de estas +dos instrucciones es muy similar: @example -\new @var{tipo} @var{expresión_musical} +[\new | \context] @var{Contexto} [ = @var{nombre}] [@var{expresión_musical}] @end example @noindent -donde @var{tipo} es el nombre de un contexto (como @code{Staff} o -@code{Voice}). Esta instrucción crea un contexto nuevo, y empieza a -interpretar la @var{expresión_musical} con él. +donde se puede especificar @code{\new} o @code{\context}. +@var{Contexto} es el tipo de contexto que se desea crear, +@var{nombre} es un nombre opcional que se da al contexto concreto +que se está creando, y @var{expresión_musical} es una sola +expresión musical que será interpretada por los complementos +grabadores y reproductores dentro de este contexto. -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}. +El prefijo @code{\new} sin ningún nombre se usa con frecuencia +para crear partituras con muchos pentagramas: -@lilypond[quote,verbatim,relative=2,ragged-right] +@lilypond[quote,verbatim,relative=2] << - \new Staff { c4 c } - \new Staff { d4 d } + \new Staff { + % leave the Voice context to be created implicitly + c4 c + } + \new Staff { + d4 d + } >> @end lilypond -La instrucción @code{\new} puede también dar nombre al contexto, +@noindent +y para introducir varias voces dentro de un solo pentagrama: -@example -\new @var{tipo} = @var{identificador} @var{música} -@end example -Sin embargo, este nombre especificado por el usuario sólo se utiliza -si no hay ya otro contexto anterior con el mismo nombre. +@lilypond[quote,verbatim,relative=2] +<< + \new Staff << + \new Voice { + \voiceOne + c8 c c4 c c + } + \new Voice { + \voiceTwo + g4 g g g + } + >> +>> +@end lilypond +@noindent +@code{\new} debería usarse siempre para especificar contextos sin +nombre. -@funindex \context +La diferencia entre @code{\new} y @code{\context} se encuentra en +la acción que se realiza: +@itemize @item -Como @code{\new}, la instrucción @code{\context} también dirige una -expresión musical a un objeto de contexto, pero da al contexto un -nombre explícito. La sintaxis es +@code{\new} con un nombre o sin él, siempre crea un contexto nuevo +y distinto, incluso si ya existe un contexto con el mismo nombre: -@example -\context @var{tipo} = @var{identificador} @var{música} -@end example +@lilypond[quote,verbatim,relative=2] +<< + \new Staff << + \new Voice = "A" { + \voiceOne + c8 c c4 c c + } + \new Voice = "A" { + \voiceTwo + g4 g g g + } + >> +>> +@end lilypond -En esta forma, la instrucción buscará un contexto existente del -@var{tipo} especificado que tenga el nombre @var{identificador}. Si -ese contexto aún no existe, se crea un contexto nuevo con el nombre -especificado. Esto es útil si nos vamos a referir más tarde al -contexto. Por ejemplo, cuando se escribe la letra, la melodía está -dentro de un contexto con nombre +@item +@code{\context} con un nombre especificado, crea un contexto nuevo +solamente si no existe ya un contexto del mismo tipo y con el +mismo nombre, dentro de la misma jerarquía de contextos. En caso +contrario, se toma como referencia a dicho contexto creado +previamente, y su expresión musical se pasa a este contexto para +su interpretación. -@example -\context Voice = "@b{tenor}" @var{música} -@end example +Una aplicación de los contextos con nombre es la separación entre +la disposición de la partitura y el contenido musical. Son +válidas culaquiera de las dos formas siguientes: -@noindent -de forma que los textos se puedan alinear correctamente con sus notas, +@lilypond[quote,verbatim] +\score { + << + % score layout + \new Staff << + \new Voice = "one" { + \voiceOne + } + \new Voice = "two" { + \voiceTwo + } + >> -@example -\new Lyrics \lyricsto "@b{tenor}" @var{letra} -@end example + % musical content + \context Voice = "one" { + \relative c'' { + c4 c c c + } + } + \context Voice = "two" { + \relative c'' { + g8 g g4 g g + } + } + >> +} +@end lilypond -@noindent +@lilypond[quote,verbatim] +\score { + << + % score layout + \new Staff << + \context Voice = "one" { + \voiceOne + } + \context Voice = "two" { + \voiceTwo + } + >> -Otro uso posible de los contextos con nombre es la fusión de dos -expresiones musicales distintas en un solo contexto. En el siguiente -ejemplo, se introducen por separado las articulaciones y las notas: + % musical content + \context Voice = "one" { + \relative c'' { + c4 c c c + } + } + \context Voice = "two" { + \relative c'' { + g8 g g4 g g + } + } + >> +} +@end lilypond -@example -musica = @{ c4 c4 @} -decoracion = @{ s4-. s4-> @} -@end example +@noindent +De manera alternativa, se pueden utilizar variables con un efecto +similar. Véase @rlearning{Organizar las piezas mediante variables}. -se combinan enviando los dos al mismo contexto @code{Voice}, +@item +@code{\context} sin ningún nombre corresponderá con el primer +contexto que se encuentre entre los creados previamente que sean +del mismo tipo dentro de la misma jerarquía de contextos, incluso +si tiene nombre, y su expresión musical se pasará a dicho contexto +para su interpretación. Esta forma rara vez es útil. Sin +embargo, @code{\context} sin nombre y sin expresión musical se usa +para establecer el contexto en que se ejecuta un procedimiento de +Scheme especificado con @code{\applyContext}: @example -<< - \new Staff \context Voice = "A" \musica - \context Voice = "A" \decoracion ->> +\new Staff \relative c' @{ + c1 + \context Timing + \applyContext #(lambda (ctx) + (newline) + (display (ly:context-current-moment ctx))) + c1 +@} @end example -@lilypond[quote,ragged-right] -music = { c4 c4 } -arts = { s4-. s4-> } -\relative c'' << - \new Staff \context Voice = "A" \music - \context Voice = "A" \arts ->> -@end lilypond -Con este mecanismo, es posible definir un @qq{urtext} (una edición -original), con la posibilidad de poner articulaciones distintas sobre -las mismas notas. +@end itemize -@cindex crear contextos +Un contexto debe tener un nombre si se va a hacer referencia a él +más tarde, por ejemplo cuando se asocia la letra con la música: -@item -La tercera instrucción para crear contextos es @example -\context @var{tipo} @var{música} +\new Voice = "tenor" @var{música} +@dots{} +\new Lyrics \lyricsto "tenor" @var{letra} @end example - @noindent -Esto es similar a @code{\context} con @code{= @var{identificador}}, -pero se corresponde con cualquier contexto del tipo @var{tipo}, sin -importar qué nombre se le ha dado. +Para ver más detalles sobre la asociación de letra y música, +consulte @ref{Duración automática de las sílabas}. -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} -explícita, normalmente se aplicaría a @code{Voice} - -@example -\applyOutput #'@var{contexto} #@var{función} % aplicar al contexto Voice -@end example +Las propiedades de todos los contextos de un tipo en particular se +pueden modificar dentro de un bloque @code{\layout} (con una +sintaxis diferente), véase @ref{Cambiar todos los contextos del mismo tipo}. -Para que se interprete dentro de los niveles de @code{Score} o -@code{Staff}, utilice las siguientes formas: +Esta construcción también ofrece una forma de mantener las +instrucciones de disposición separadas del contenido musical. Si +se va a modificar un solo contexto, debe usarse un bloque +@code{\with}, véase @ref{Cambiar solamente un contexto determinado}. -@example -\applyOutput #'Score #@var{función} -\applyOutput #'Staff #@var{función} -@end example +@seealso +Manual de aprendizaje: +@rlearning{Organizar las piezas mediante variables}. -@end itemize +Referencia de la notación: +@ref{Cambiar solamente un contexto determinado}, +@ref{Duración automática de las sílabas}. @node Mantener vivos los contextos @@ -405,13 +532,13 @@ eventos musicales adicionales a un contexto anterior. Existe una excepción a esta regla general: precisamente uno de los contextos de @code{Voice} que están dentro de un contexto de -@code{Staff} o de una construcción @code{<<...>>} persiste siempre +@code{Staff} o de una construcción @code{<<@dots{}>>} persiste siempre hasta el final de, contexto de @code{Staff} circundante o la -construcción @code{<<...>>}, incluso aunque puede haber períodos en +construcción @code{<<@dots{}>>}, incluso aunque puede haber períodos en que no tiene nada que hacer. El contexto que persiste de esta forma será el primero que se encuentre en la primera construcción encerrada -entre llaves @code{@{...@}}, ignorando cualquiera que se encuentre -dentro de construcciones encerradas por ángulos dobles @code{<<...>>}. +entre llaves @code{@{@dots{}@}}, ignorando cualquiera que se encuentre +dentro de construcciones encerradas por ángulos dobles @code{<<@dots{}>>}. Cualquier contexto se puede mantener vivo si nos aseguramos de que tiene algo que hacer en cualquier momento musical dado. Los @@ -589,7 +716,7 @@ modificándolo: @emph{etc.} @} @{ - @emph{..música..} + @emph{@dots{}música@dots{}} @} @end example @@ -639,14 +766,16 @@ compás independiente. \new Staff \with { \consists "Timing_translator" \consists "Default_bar_line_engraver" - } { + } + \relative c'' { \time 3/4 c4 c c c c c } \new Staff \with { \consists "Timing_translator" \consists "Default_bar_line_engraver" - } { + } + \relative c'' { \time 2/4 c4 c c c c c } @@ -727,10 +856,17 @@ una instancia concreta de un contexto. @funindex \context @funindex \layout -Los ajustes de contexto que se han de usar de forma predeterminada -dentro de @code{Score}, @code{Staff}, @code{Voice} y otros contextos +Los ajustes de contexto predeterminados que se han de usar para la composición +tipográfica dentro de @code{Score}, @code{Staff}, @code{Voice} y otros contextos se pueden especificar en un bloque @code{\context} dentro de cualquier -bloque @code{\layout}. El bloque @code{\layout} se debe colocar +bloque @code{\layout}. + +Los ajustes para la salida MIDI, al contrario que para la +composición tipográfica, se tendrán que especificar aparte en +bloques @code{\midi} (véase +@ref{Definiciones de salida - estructura de los contextos}). + +El bloque @code{\layout} se debe colocar dentro del bloque @code{\score} al que se aplica, después de la música. @@ -762,7 +898,7 @@ Una instrucción @code{\override}, pero omitiendo el nombre del contexto \layout { \context { \Staff - \override Stem #'thickness = #4.0 + \override Stem.thickness = #4.0 } } } @@ -788,7 +924,7 @@ Estableciendo una propiedad de contexto directamente @item Una instrucción predefinida tal como @code{\dynamicUp} o una expresión -musical como @code{\accidentalStyle "dodecaphonic"} +musical como @code{\accidentalStyle dodecaphonic} @lilypond[quote,verbatim] \score { @@ -803,7 +939,7 @@ musical como @code{\accidentalStyle "dodecaphonic"} } \context { \Staff - \accidentalStyle "dodecaphonic" + \accidentalStyle dodecaphonic } } } @@ -857,9 +993,9 @@ estuviera escrita en el propio flujo musical. } } \layout { - \accidentalStyle "dodecaphonic" + \accidentalStyle dodecaphonic \set fontSize = #-4 - \override Voice.Stem #'thickness = #4.0 + \override Voice.Stem.thickness = #4.0 } } @end lilypond @@ -881,14 +1017,17 @@ parte de cualquier bloque @code{\layout} que se encuentre dentro del de las instrucciones @code{\new} @var{context-type}: @example -\new Staff -\with @{ - [ajustes de contexto para esta única instancia de contexto] -@} @{ -... +\new Staff \with @{ [ajustes de contexto para esta instancia de contexto solamente] @} +@{ + @dots{} @} @end example +Dado que dicha @q{modificación de contexto} está especificada +dentro de la música, afectará a @emph{todas} las salidas +(tipografía @emph{y también} el MIDI), a diferencia de los cambios +que se hacen dentro de una definición de salida. + Se pueden especificar los siguientes tipos de ajustes: @itemize @@ -899,10 +1038,7 @@ contexto @lilypond[quote,verbatim] \score { \new Staff { - \new Voice - \with { - \override Stem #'thickness = #4.0 - } + \new Voice \with { \override Stem.thickness = #4.0 } { \relative c'' { a4^"Thick stems" a a a @@ -925,10 +1061,8 @@ Estableciendo una propiedad de contexto directamente a4 a a a } } - \new Staff - \with { - fontSize = #-4 - } { + \new Staff \with { fontSize = #-4 } + { \relative c'' { a4^"Smaller font" a a a a4 a a a @@ -952,11 +1086,9 @@ Una instrucción predefinida tal como @code{\dynamicUp} } } } - \new Staff - \with { \accidentalStyle "dodecaphonic" } + \new Staff \with { \accidentalStyle dodecaphonic } { - \new Voice - \with { \dynamicUp } + \new Voice \with { \dynamicUp } { \relative c'' { a4^"Dynamics above" a a a @@ -988,7 +1120,7 @@ de lo contrario, se usa el valor predeterminado tomado de un enunciado @item de lo contrario, se usa el valor tomado del bloque @code{\context} más -reciente que corresponda dentro de los bloques @code{\layout}, +reciente que corresponda dentro de los bloques @code{\layout} o @code{\midi}, @item de lo contrario se usa el valor predeterminado que LilyPond lleva @@ -1004,7 +1136,7 @@ Referencia de la notación: @ref{Contextos del nivel más bajo. Voces}, @ref{La instrucción set}, @ref{La instrucción override}, -@ref{El bloque \layout}. +@ref{El bloque layout,,El bloque @code{@bs{}layout}}. @node Definir contextos nuevos @@ -1028,7 +1160,7 @@ Referencia de la notación: @funindex denies Los contextos específicos, como @code{Staff} y @code{Voice}, están -construidos a base de bloques sencillos. Es posible crear nuevos +construidos a partir de bloques sencillos. Es posible crear nuevos tipos de contextos con combinaciones distintas de añadidos grabadores. El siguiente ejemplo muestra cómo construir un tipo diferente de @@ -1037,7 +1169,6 @@ contexto de @code{Voice} partiendo de cero. Será parecido a barra inclinada. Se puede usar para indicar improvisación en piezas de jazz, -@c KEEP LY @lilypond[quote,ragged-right] \layout { \context { \name ImproVoice @@ -1047,9 +1178,8 @@ de jazz, \consists "Text_engraver" \consists "Pitch_squash_engraver" squashedPosition = #0 - \override NoteHead #'style = #'slash - \override Stem #'transparent = ##t - \override Flag #'transparent = ##t + \override NoteHead.style = #'slash + \hide Stem \alias Voice } \context { \Staff @@ -1058,7 +1188,7 @@ de jazz, \relative c'' { a4 d8 bes8 \new ImproVoice { c4^"ad lib" c - c4 c^"desvístete" c_"mientras tocas :)" c } + c4 c^"undress" c_"while playing :)" c } a1 } @end lilypond @@ -1084,46 +1214,57 @@ En primer lugar es necesario definir un nombre para el nuevo contexto: \name ImproVoice @end example -Debido a que es parecido al contexto @code{Voice}, queremos órdenes -que funcionen sobre contextos de @code{Voice} (existentes) para que -siga funcionando. Esto se consigue dando al contexto nuevo un alias -@code{Voice}, +Debido a que es parecido al contexto @code{Voice}, queremos +órdenes que funcionen dentro de los contextos @code{Voice} +(existentes) para que siga funcionando. Esto se consigue dando al +contexto nuevo un alias de @code{Voice}, @example \alias Voice @end example -El contexto imprimirá notas y textos explicativos, por ello tenemos -que añadir los grabadores que aportan esta funcionalidad: +El contexto imprimirá notas y textos explicativos, por ello +tenemos que añadir los grabadores que aportan esta funcionalidad, +y además el grabador que agrupa las notas, plicas y silencios que +están en el mismo momento musical en forma de columnas, @example \consists "Note_heads_engraver" \consists "Text_engraver" +\consists "Rhythmic_column_engraver" @end example -pero sólo necesitamos esto en la línea central: +Las cabezas de todas las notas se deben situar sobre la línea +central, @example \consists "Pitch_squash_engraver" squashedPosition = #0 @end example -El grabador @rinternals{Pitch_squash_engraver} modifica las cabezas de -nota (creadas por el grabador @rinternals{Note_heads_engraver}) y +El grabador @code{Pitch_squash_engraver} modifica las cabezas de +nota (creadas por el grabador @code{Note_heads_engraver}) y establece sus posiciones verticales al valor de -@code{squashedPosition}, en este caso@tie{}@code{0}, la línea central. +@code{squashedPosition}, en este caso@tie{}@code{0}, la línea +central. Las notas parecen barras inclinadas y no tienen plica: @example -\override NoteHead #'style = #'slash -\override Stem #'transparent = ##t -\override Flag #'transparent = ##t +\override NoteHead.style = #'slash +\hide Stem @end example -Todos estos añadidos tienen que cooperar, y esto se consigue con un -añadido especial, que se debe marcar con la palabra clave -@code{\type}. Este será siempre @code{Engraver_group}, +Todos estos complementos o plug-ins tienen que comunicarse bajo el +control del contexto. Los mecanismos con el que se comunican los +contextos se establecen mediante la declaración del @code{\type} +(tipo) del contexto. Dentro de un bloque @code{\layout}, casi +todos los contextos serán del tipo @code{Engraver_group}. Algunos +contextos especiales y los contextos de los bloques @code{\midi} +usan otros tipos. La copia y la modificación de una definición de +contexto existente también cumplimentan el tipo. Como este +ejemplo crea una definición partiendo de cero, tiene que ser +especificada explícitamente. @example \type "Engraver_group" @@ -1137,19 +1278,19 @@ Al juntarlo todo, obtenemos \type "Engraver_group" \consists "Note_heads_engraver" \consists "Text_engraver" + \consists "Rhythmic_column_engraver" \consists "Pitch_squash_engraver" squashedPosition = #0 - \override NoteHead #'style = #'slash - \override Stem #'transparent = ##t - \override Flag #'transparent = ##t + \override NoteHead.style = #'slash + \hide Stem \alias Voice @} @end example @funindex \accepts -Los contextos dan lugar a jerarquías. Queremos colgar el contexto -@code{ImproVoice} bajo el contexto @code{Staff}, como simples -@code{Voice}s normales. Por tanto, modificamos la definición de +Los contextos dan lugar a jerarquías. Queremos poner el contexto +@code{ImproVoice} dentro del contexto @code{Staff}, igual que los contextos +de voz normales. Por tanto, modificamos la definición de @code{Staff} con la instrucción @code{\accepts} (acepta), @example @@ -1194,6 +1335,19 @@ puede escribir como @} @end example +Para completar el ejemplo, los cambios que afectan a la jerarquía +de contextos se deben repetir dentro de un bloque @code{\midi} de +manera que la salida MIDI dependa de las mismas relaciones de +contexto. + +@seealso + +Referencia de funcionamiento interno: +@rinternals{Note_heads_engraver}, +@rinternals{Text_engraver}, +@rinternals{Rhythmic_column_engraver}, +@rinternals{Pitch_squash_engraver}. + @node Orden de disposición de los contextos @subsection Orden de disposición de los contextos @@ -1214,34 +1368,44 @@ contexto externo se recolocan debajo del contexto externo en lugar de anidarse dentro de él. La lista @qq{accepts} de un contexto se puede cambiar con las -instrucciones @code{\accepts} (acepta) y @code{\denies} (niega). +instrucciones @code{\accepts} (acepta) o @code{\denies} (niega). @code{\accepts} añade un contexto a la lista @qq{accepts} y -@code{\denies} elimina un contexto de la lista. Por ejemplo, -normalmente no sería deseable que los acordes de cifrado americano -estuvieran anidados dentro de un contexto @code{Staff}, por lo que el -contexto @code{ChordNames} no se incluye de forma predeterminada -dentro de la lista @qq{accepts} del contexto @code{Staff}, pero podría -hacerse si fuera necesario: +@code{\denies} elimina un contexto de la lista. + +Por ejemplo, un grupo de pentagramas con un corchete cuadrado no +se encuentra normalmente en el interior de un pentagrama con llave +curva que tenga conectadas las líneas divisorias, y un +@code{GrandStaff} para piano no acepta un @code{StaffGroup} dentro +de él, de forma predeterminada. @lilypond[verbatim,quote] \score { - \new Staff { - c' d' e' f' - \chords { d1:m7 b1:min7.5- } - } + \new GrandStaff << + \new StaffGroup << + \new Staff { c'1 } + \new Staff { d'1 } + >> + \new Staff { \set Staff.instrumentName = bottom f'1 } + >> } @end lilypond +Sin embargo, usando la instrucción @code{\accepts}, se puede +añadir un @code{StaffGroup} al contexto @code{GrandStaff}: + @lilypond[verbatim,quote] \score { - \new Staff { - c' d' e' f' - \chords { d1:m7 b1:min7.5- } - } + \new GrandStaff << + \new StaffGroup << + \new Staff { c'1 } + \new Staff { d'1 } + >> + \new Staff { \set Staff.instrumentName = bottom f'1 } + >> \layout { \context { - \Staff - \accepts "ChordNames" + \GrandStaff + \accepts "StaffGroup" } } } @@ -1253,10 +1417,26 @@ ejemplo, el contexto @code{VaticanaStaff} está basado en el contexto @code{Staff}, pero con el contexto @code{VaticanaVoice} sustituido por el contexto @code{Voice} en la lista @qq{accepts}. -Observe que discretamente se crea un contexto de forma implícita si se -encuentra una instrucción donde no hay un contexto apropiado para -contenerlo. Esto puede dar lugar a pentagramas o partituras nuevos no -esperados. + +@cindex contextos implícitos +@cindex implícitos, contextos +@funindex \defaultchild + +Observe que discretamente se crea un contexto de forma implícita +si se encuentra una instrucción donde no hay un contexto apropiado +para contenerlo. + +Dentro de una definición de contexto, el tipo de un subcontexto +que se va a crear implícitamente se especifica usando +@code{\defaultchild} (hijo predeterminado). Algunos eventos +musicales requieren un contexto @samp{Bottom} (inferior): cuando +se encuentra este evento, se crean subcontextos de forma recursiva +hasta que se alcanza un contexto que no tiene establecido el +@samp{defaultchild}. + +La creación implícita de contextos puede dar lugar a pentagramas o +partituras nuevos no esperados. La utilización de @code{\new} +para crear contextos explícitamente evita esos problemas. @cindex alignAboveContext @cindex alignBelowContext @@ -1264,13 +1444,14 @@ esperados. @funindex alignBelowContext En ocasiones se necesita que un contexto exista durante un breve -intervalo de tiempo, siendo un buen ejemplo el contexto de pentagrama -de un ossia. Esto se consigue normalmente mediante la introducción de -la definición del contexto en el lugar apropiado en paralelo con la -sección correspondiente de la música principal. De forma -predeterminada, el contexto tempral se coloca debajo de todos los -contextos existentes. Para reposicionallo por encima del contexto que -tenga el nombre @qq{principal}, debería definirse de esta forma: +intervalo de tiempo, siendo un buen ejemplo el contexto de +pentagrama de un ossia. Esto se consigue normalmente mediante la +introducción de la definición del contexto en el lugar apropiado +en paralelo con la sección correspondiente de la música principal. +De forma predeterminada, el contexto tempral se coloca debajo de +todos los contextos existentes. Para reposicionarlo por encima +del contexto que tenga el nombre @qq{principal}, debería definirse +de esta forma: @example @code{\new Staff \with @{ alignAboveContext = #"principal" @} } @@ -1555,7 +1736,7 @@ digitación de la cabeza de la nota. La siguiente orden inserta un espacio en blanco de 3 espacios de pentagrama entre la nota y la digitación: @example -\once \override Voice.Fingering #'padding = #3 +\once \override Voice.Fingering.padding = #3 @end example Al insertar esta instrucción antes de que se haya creado el objeto @@ -1563,7 +1744,7 @@ Fingering, es decir, antes del @code{c2}, llegamos al siguiente resultado: @lilypond[quote,relative=2,verbatim] -\once \override Voice.Fingering #'padding = #3 +\once \override Voice.Fingering.padding = #3 c-2 \stemUp f @@ -1660,7 +1841,7 @@ funcionalidad des esta instrucción. La instrucción @verbatim -\override Staff.Stem #'thickness = #4.0 +\override Staff.Stem.thickness = #4.0 @end verbatim @noindent @@ -1672,7 +1853,7 @@ Aquí vemos la instrucción en pleno funcionamiento: @lilypond[quote,verbatim,relative=2] c4 -\override Staff.Stem #'thickness = #4.0 +\override Staff.Stem.thickness = #4.0 c4 c4 c4 @@ -1689,7 +1870,7 @@ solo paso de tiempo. @lilypond[quote,verbatim,relative=2] c4 -\once \override Stem #'thickness = #4.0 +\once \override Stem.thickness = #4.0 c4 c4 @end lilypond @@ -1700,9 +1881,9 @@ 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,verbatim,relative=2] -\override Slur #'thickness = #3.0 +\override Slur.thickness = #3.0 c8[( c -\override Beam #'beam-thickness = #0.6 +\override Beam.beam-thickness = #0.6 c8 c]) @end lilypond @@ -1718,8 +1899,8 @@ del mismo contexto. En otras palabras, el @code{\revert} del siguiente ejemplo no hace nada. @example -\override Voice.Stem #'thickness = #4.0 -\revert Staff.Stem #'thickness +\override Voice.Stem.thickness = #4.0 +\revert Staff.Stem.thickness @end example Algunas opciones «trucables» se llaman @q{subpropiedades} y residen @@ -1735,7 +1916,7 @@ instrucciones de la forma tales como @example -\override Stem #'(details beamed-lengths) = #'(4 4 3) +\override Stem.details.beamed-lengths = #'(4 4 3) @end example @end ignore @@ -1777,7 +1958,7 @@ carácter almohadilla,@tie{}@code{#}. El nombre de las propiedades de contexto suele ir en minúsculas con mayúscula en medio. Controlan sobre todo la traducción de la música a -la notación, p.ej. @code{localKeySignature} (para determinar si hay +la notación, p.ej. @code{localAlterations} (para determinar si hay que impriir alteraciones o no), o @code{measurePosition} (para determinar cuándo hay que imprimir una línea divisoria). El valor de las propiedades de contexto puede modifcarse con el tiempo durante la @@ -1898,15 +2079,14 @@ usuario. Referencia de funcionamiento interno: @rinternals{Tunable context properties}. -@cindex grob, propiedades de -@cindex propiedades de grob -@funindex \override - - @node La instrucción override @subsection La instrucción @code{\override} @translationof The override command +@cindex grob, propiedades de +@cindex propiedades de grob +@funindex \override + Existe un tipo especial de propiedad de contexto: la descripción de los grobs. Las decscripciones de los grobs reciben un nombre en @code{MayúsculasDeCamello} (empezando en mayúscula). Contienen los @@ -1915,37 +2095,19 @@ de lista asociativa. Consulte @file{scm/define-grobs.scm} para ver los ajustes de cada descripción de grob. Las descripciones de grob se modifican con @code{\override}. -@code{\override} es en realidad una forma abreviada; - -@example -\override @var{contexto}.@var{NombreDelGrob} #'@var{propiedad} = #@var{valor} -@end example - -@noindent -equivale más o menos a +La sintaxis de la instrucción @code{\override} es -@c leave this long line -gp @example -\set @var{contexto}.@var{NombreDelGrob} = - #(cons (cons '@var{propiedad} @var{valor}) - ) +\override [@var{contexto}.]@var{NombreDelGrob}.@var{propiedad} = #@var{valor} @end example -El valor de @code{contexto}.@code{NombreDelGrob} (la lista-A) se -utiliza para inicializar las propiedades de los grobs individuales. -Los grobs tienen propiedades, denominadas en el estilo de Scheme, con -@code{palabras-con-guiones}. Los valores de las propiedades de grob -cambian durante el proceso de formateo: éste se realiza básicamente -calculando las propiedades utilizando funciones de @q{callback} -(pasadas como parámetro). - 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] c4 c -\override Voice.Stem #'thickness = #3.0 +\override Voice.Stem.thickness = #3.0 c4 c @end lilypond @@ -1953,11 +2115,11 @@ 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] -{ \override Staff.Stem #'thickness = #3.0 +{ \override Staff.Stem.thickness = #3.0 << { e4 e - \override Stem #'thickness = #0.5 + \override Stem.thickness = #0.5 e4 e } \\ { c4 c c c @@ -1966,18 +2128,42 @@ Si no se ha especificado ningún contexto en la instrucción } @end lilypond +Algunas opciones susceptibles de trucaje, se llaman +@q{subpropiedades} y residen dentro de las propiedades. Para +efectura trujajes sobre ellas, utilice instrucciones de la forma + +@example +\override Stem.details.beamed-lengths = #'(4 4 3) +@end example + +o para modificar los extremos de los objetos extensos, utilice una +forma como las siguientes: + +@example +\override TextSpanner.bound-details.left.text = #"left text" +\override TextSpanner.bound-details.right.text = #"right text" +@end example + @funindex \revert @cindex reversión de sobreescrituras @cindex sobreescrituras, reversión de El efecto de una instrucción de sobreescritura @code{\override} se -puede deshacer con @code{\revert}: +puede deshacer con @code{\revert}. + +La sintaxis de la instrucción @code{\revert} es + +@example +\revert [@var{Contexto}.]@var{NombreDelGrob}.@var{propiedad} +@end example + +Por ejemplo, @lilypond[quote,verbatim,relative=2] c4 -\override Voice.Stem #'thickness = #3.0 +\override Voice.Stem.thickness = #3.0 c4 c -\revert Voice.Stem #'thickness +\revert Voice.Stem.thickness c4 @end lilypond @@ -1990,11 +2176,11 @@ adelante: << { e4 - \override Staff.Stem #'thickness = #3.0 + \override Staff.Stem.thickness = #3.0 e4 e e } \\ { c4 c c - \revert Staff.Stem #'thickness + \revert Staff.Stem.thickness c4 } >> @@ -2011,11 +2197,11 @@ al instante de tiempo actual: { << { - \override Stem #'thickness = #3.0 + \override Stem.thickness = #3.0 e4 e e e } \\ { c4 - \once \override Stem #'thickness = #3.0 + \once \override Stem.thickness = #3.0 c4 c c } >> @@ -2028,7 +2214,7 @@ Las instrucciones que modifican la salida tienen por lo general un aspecto como @example -\override Voice.Stem #'thickness = #3.0 +\override Voice.Stem.thickness = #3.0 @end example @noindent @@ -2041,14 +2227,6 @@ Para construir este truco debemos determinar los siguientes datos: @item un valor adecuado: aquí @code{3.0}. @end itemize -Ciertas opciones ajustables se denominan @q{subpropiedades} y residen -en el interior de las propiedades normales. Para modificarlas utilice -instrucciones de la forma - -@example -\override Stem #'(details beamed-lengths) = #'(4 4 3) -@end example - @cindex documentación interna @cindex buscar objetos gráficos @cindex gráficos, descripción de los objetos @@ -2087,7 +2265,7 @@ a todos los grobs del contexto afectado. Esto se consigue con la instrucción @code{\tweak}, que tiene la sintaxis siguiente: @example -\tweak @var{objeto-de-presentación} #'@var{propiedad-del-grob} @var{valor} +\tweak [@var{objeto-de-presentación}.]@var{propiedad-del-grob} @var{valor} @end example Es opcional especificar el @var{objeto-de-presentación}. La @@ -2102,19 +2280,19 @@ por ejemplo @lilypond[relative=2,verbatim,quote] < c - \tweak #'color #red + \tweak color #red d g - \tweak #'duration-log #1 + \tweak duration-log #1 a > 4 --\tweak #'padding #8 +-\tweak padding #8 -^ @end lilypond -Pero el uso principal de la instrucción @code{\tweak} es modificar +El uso principal de la instrucción @code{\tweak} es modificar solamente uno de varios elementos de notación que dan comienzo en el mismo momento musical, como las notas de un acorde, o corchetes de tresillo que empiezan al mismo tiempo. @@ -2137,14 +2315,14 @@ posibilidad de modificarla. Así, esto funciona: @lilypond[relative=2,verbatim,quote] -<\tweak #'color #red c>4 +<\tweak color #red c>4 @end lilypond @noindent pero esto no funciona: @lilypond[relative=2,verbatim,quote] -\tweak #'color #red c4 +\tweak color #red c4 @end lilypond @end ignore @@ -2175,10 +2353,10 @@ dentro del mismo acorde: @lilypond[relative=2,verbatim,quote] < c - \tweak #'color #red + \tweak color #red d g - \tweak #'duration-log #1 + \tweak duration-log #1 a > 4 @end lilypond @@ -2186,7 +2364,7 @@ dentro del mismo acorde: @code{\tweak} se puede usar para modificar ligaduras de expresión: @lilypond[verbatim,quote,relative=1] -c-\tweak #'thickness #5 ( d e f) +c-\tweak thickness #5 ( d e f) @end lilypond @@ -2198,9 +2376,9 @@ como un contenedor, y todos los objetos de presentación se crean a partir de eventos dentro del @code{EventChord}: @lilypond[relative=2,verbatim,quote] -\tweak #'color #red c4 -\tweak #'color #red 4 -<\tweak #'color #red c e>4 +\tweak color #red c4 +\tweak color #red 4 +<\tweak color #red c e>4 @end lilypond La instrucción @code{\tweak} sencilla no se puede usar para modificar @@ -2211,13 +2389,14 @@ parte de objetos de presentación @code{NoteHead} más que por elementos musicales del flujo de entrada. -Tales objetos de presencaión creados indirectamente se pueden trucar -usando la forma explícita de la instrucción @code{\tweak}: +Tales objetos de presentación creados indirectamente se pueden trucar +usando la forma de la instrucción @code{\tweak} en que el nombre +del grob se especifica de forma explícita: @lilypond[relative=2,verbatim,quote] -\tweak Stem #'color #red -\tweak Beam #'color #green c8 e -4 +\tweak Stem.color #red +\tweak Beam.color #green c8 e +4 @end lilypond No se puede usar @code{\tweak} para modificar las claves o las @@ -2231,10 +2410,10 @@ elemento de notación; todos le afectan: @lilypond[verbatim,quote,relative=1] c --\tweak #'style #'dashed-line --\tweak #'dash-fraction #0.2 --\tweak #'thickness #3 --\tweak #'color #red +-\tweak style #'dashed-line +-\tweak dash-fraction #0.2 +-\tweak thickness #3 +-\tweak color #red \glissando f' @end lilypond @@ -2267,20 +2446,66 @@ entrada. @subsection @code{\set} frente a @code{\override} @translationof set versus override -@c HACER: probablemente esta sección es innecesaria. - -@ignore -We have seen two methods of changing properties: @code{\set} and -@code{\override}. There are actually two different kinds of -properties. - -@code{fontSize} is a special property: it is equivalent to -entering @code{\override ... #'font-size} for all pertinent -objects. Since this is a common change, the special -property (modified with @code{\set}) was created. - -@end ignore +@c TODO Should't a bunch of that be explained earlier? +@funindex \set +@funindex \override +Tanto @code{\set} como @code{\override} manipulan propiedades +asociadas a contextos. En ambos casos las propiedades tienen en +cuenta la jerarquía de contextos: las propiedades no establecidas en +el propio contexto presentan los valores del contexto padre +respectivo. + +El valor y la duración en el tiempo de las propiedades de contexto son +dinámicos y están disponibles solamente cuando la música se está +interpretando o @q{iterando}. En el momento de la creación del +contexto, se inicializan las propiedades a partir de la definición de +contexto correspondiente y las posibles modificaciones de contexto. +Después de esto, cualquier cambio se obtiene a través de instrucciones +de establecimiento de propiedades dentro de la propia música. + +Ahora bien, las definiciones de grob (objetos gráficos) son una clase +especial de propiedades de contexto. Dado que su estructura, +mantenimiento y utilización es distinta de las propiedades de contexto +ordinarias, se accede a ellas con un conjunto de instrucciones +diferente, y se estudian por separado dentro de la documentación. + +A diferencia de las propiedades de contexto normales, las definiciones +de grob están subdivididas en propiedades de grob. Un @qq{grob} +(objeto gráfico) se crea normalmente por parte de un grabador en el +momento de la interpretación de una expresión musical y recibe sus +propiedades iniciales de la definición de grob en curso del contexto +del grabador. El grabador (u otras partes del @q{backend} de +LilyPond) pueden después añadir o modificar propiedades del grob, pero +ello no afecta a la definición de grob del contexto. + +Lo que conocemos como @q{propiedades de grob} en el contexto del +trucaje a nivel de usuario son en realidad las propiedades de la +definición de grob de un contexto. A diferencia de las propiedades de +contexto normales, las definiciones de grob mantienen la contabilidad +necesaria para seguir la pista de sus partes, las propiedades de grob +individuales (e incluso subpropiedades de éstos), de forma separada, +de forma que es posible definir dichas partes dentro de contextos +diferentes y hacer que la definición de grob en su conjunto, en el +momento de la creación del grob, se monte a partir de las piezas +proporcionadas en diferentes contextos entre el contexto actual y sus +contextos padre. + +Las definiciones de grob se manipulan usando @code{\override} y +@code{\revert} y tienen un nombre que empieza con una letra mayúscula +(como @samp{NoteHead}) mientras que las propiedades de contexto +ordinarias se manipulan utilizando @code{\set} y @code{\unset} y se +nombran empezando en letra minúscula. + +@cindex tweak, relación con @code{\override} +@funindex \tweak +@funindex \overrideProperty +Las instrucciones especiales @code{\tweak} y @code{\overrideProperty} +cambian las propiedades de grob pasando por encima de las propiedades +de contexto completamente. En su lugar, atrapan a los grobs tan +pronto se crean, y después establecen propiedades sobre ellos +directamente cuando se originan a partir de un evento musical trucado +o son de un tipo en particular, respectivamente. @node Modificación de las listas-A @subsection Modificación de las listas-A @@ -2336,7 +2561,7 @@ anidada}: % reduced space between staves \new PianoStaff \with { % this is the nested declaration - \override StaffGrouper #'staff-staff-spacing #'basic-distance = #7 + \override StaffGrouper.staff-staff-spacing.basic-distance = #7 } << \new Staff { \clef treble c''1 } \new Staff { \clef bass c1 } @@ -2358,7 +2583,7 @@ propiedad con una sola declaración, como una lista-A: @lilypond[quote,verbatim] \new PianoStaff \with { - \override StaffGrouper #'staff-staff-spacing = + \override StaffGrouper.staff-staff-spacing = #'((basic-distance . 0) (minimum-distance . 0) (padding . 0) @@ -2378,10 +2603,10 @@ de @code{basic-distance} si no se fija). Así, las dos declaraciones siguientes son equivalentes: @example -\override StaffGrouper #'staff-staff-spacing = +\override StaffGrouper.staff-staff-spacing = #'((basic-distance . 7)) -\override StaffGrouper #'staff-staff-spacing = +\override StaffGrouper.staff-staff-spacing = #'((basic-distance . 7) (minimum-distance . 0) (padding . 0) @@ -2403,7 +2628,7 @@ individualmente con una declaración anidada. @warning{Las declaraciones anidadas no funcionan para las listas-A de propiedades de contexto (como @code{beamExceptions}, -@code{keySignature}, @code{timeSignatureSettings}, etc.). Estas +@code{keyAlterations}, @code{timeSignatureSettings}, etc.). Estas propiedades sólo se pueden modificar redefiniéndolas completamente como listas-A.} @@ -2463,11 +2688,12 @@ Se activa con la instrucción @code{\figuremode} y hace que el código de entrada se interprete con la sintaxis del bajo cifrado, véase @ref{Introducir el bajo cifrado}. -El modo de cifrase también se activa con la instrucción -@code{\figures}. También crea un contexto de @code{FiguredBass} nuevo -y hace que el código que viene a continuación se interprete con la -sintaxis del bajo cifrado y se imprima como símbolos de bajo cifrado -dentro del contexto @code{FiguredBass}, véase @ref{Introducción al bajo cifrado}. +El modo de cifras también se activa con la instrucción +@code{\figures}. También crea un contexto de @code{FiguredBass} +nuevo y hace que el código que viene a continuación se interprete +con la sintaxis del bajo cifrado y se imprima como símbolos de +bajo cifrado dentro del contexto @code{FiguredBass}, véase +@ref{Introducción al bajo cifrado}. @strong{Modos de traste y tablatura} @@ -2542,7 +2768,14 @@ o centrado; etc. La mayoría de estas elecciones pueden dejarse que LilyPond las determine automáticamente, pero en ciertos casos puede ser deseable forzar una dirección o colocación concreta. -@strong{Acciones predeterminadas} +@menu +* Indicadores de dirección de las articulaciones:: +* La propiedad de dirección:: +@end menu + +@node Indicadores de dirección de las articulaciones +@unnumberedsubsubsec Indicadores de dirección de las articulaciones +@translationof Articulation direction indicators De forma predeterminada algunas direcciones siempre son hacia arriba o siempre hacia abajo (p. ej. los matices o el calderón), mientras que @@ -2578,7 +2811,9 @@ c2( c) c2^( c) @end lilypond -@strong{La propiedad de dirección} +@node La propiedad de dirección +@unnumberedsubsubsec La propiedad de dirección +@translationof The direction property La posición o dirección de muchos objetos de presentación está controlada por la propiedad @code{direction}. @@ -2718,7 +2953,7 @@ valores de @code{'line-positions}.} @lilypond[verbatim,quote,relative=1] \new Staff \with { - \override StaffSymbol #'line-positions = #'(7 3 0 -4 -6 -7) + \override StaffSymbol.line-positions = #'(7 3 0 -4 -6 -7) } { a4 e' f b | d1 } @end lilypond @@ -2729,7 +2964,7 @@ resulta afectado por este ajuste. @lilypond[verbatim,quote,relative=1] \new Staff \with { - \override StaffSymbol #'width = #23 + \override StaffSymbol.width = #23 } { a4 e' f b | d1 } @end lilypond @@ -2752,20 +2987,27 @@ Todos los objetos de extensión contemplan el interface una línea recta entre los dos objetos, contemplan también el interface @code{line-spanner-interface}. +@menu +* Uso del spanner-interface:: +* Uso del line-spanner-interface:: +@end menu + +@node Uso del spanner-interface @unnumberedsubsubsec Uso del @code{spanner-interface} +@translationof Using the spanner-interface Este interface proporciona dos propiedades que se aplican a varios extensores. -@strong{@i{La propiedad @code{minimum-length}}} +@subsubsubheading La propiedad @code{minimum-length} (longitud mínima) -La longitud mínima del objeto de extensión se especifica a través de -la propiedad @code{minimum-length}. Su aumento suele producir el -efecto necesario de aumentar el espaciado de las notas entre los dos -puntos extremos. Sin embargo, esta sobreescritura no tiene ningún -efecto sobre muchos extensores, pues su longitud está determinada por -otras consideraciones. Más abajo se muestran algunos ejemplos de -dónde es efectiva. +La longitud mínima del objeto de extensión se especifica a través +de la propiedad @code{minimum-length}. Su aumento suele producir +el efecto necesario de aumentar el espaciado de las notas entre +los dos puntos extremos. Sin embargo, esta sobreescritura no +tiene ningún efecto sobre muchos extensores, pues su longitud está +determinada por otras consideraciones. Más abajo se muestran +algunos ejemplos de dónde es efectiva. @ignore Works for: @@ -2789,11 +3031,11 @@ Works not at all for: @end ignore @lilypond[verbatim,quote,relative=2] -a~a +a~ a a % increase the length of the tie --\tweak #'minimum-length #5 -~a +-\tweak minimum-length #5 +~ a @end lilypond @lilypond[verbatim,quote,relative=2] @@ -2801,7 +3043,7 @@ a1 \compressFullBarRests R1*23 % increase the length of the rest bar -\once \override MultiMeasureRest #'minimum-length = #20 +\once \override MultiMeasureRest.minimum-length = #20 R1*23 a1 @end lilypond @@ -2809,7 +3051,7 @@ a1 @lilypond[verbatim,quote,relative=2] a \< a a a \! % increase the length of the hairpin -\override Hairpin #'minimum-length = #20 +\override Hairpin.minimum-length = #20 a \< a a a \! @end lilypond @@ -2817,15 +3059,15 @@ Esta sobreescritura se puede usar también para aumentar la longitud de las ligaduras de expresión y de fraseo: @lilypond[verbatim,quote,relative=2] -a( a) +a( g) a --\tweak #'minimum-length #5 -( a) +-\tweak minimum-length #5 +( g) -a\( a\) +a\( g\) a --\tweak #'minimum-length #5 -\( a\) +-\tweak minimum-length #5 +\( g\) @end lilypond Para algunos objetos de presentación, la propiedad @@ -2841,12 +3083,12 @@ propiedad @code{springs-and-rods}: e \glissando c' % not effective alone -\once \override Glissando #'minimum-length = #20 +\once \override Glissando.minimum-length = #20 e, \glissando c' % effective only when both overrides are present -\once \override Glissando #'minimum-length = #20 -\once \override Glissando #'springs-and-rods = #ly:spanner::set-spacing-rods +\once \override Glissando.minimum-length = #20 +\once \override Glissando.springs-and-rods = #ly:spanner::set-spacing-rods e, \glissando c' @end lilypond @@ -2854,16 +3096,16 @@ Lo mismo se puede decir del objeto @code{Beam}: @lilypond[verbatim,quote,relative=1] % not effective alone -\once \override Beam #'minimum-length = #20 +\once \override Beam.minimum-length = #20 e8 e e e % effective only when both overrides are present -\once \override Beam #'minimum-length = #20 -\once \override Beam #'springs-and-rods = #ly:spanner::set-spacing-rods +\once \override Beam.minimum-length = #20 +\once \override Beam.springs-and-rods = #ly:spanner::set-spacing-rods e8 e e e @end lilypond -@strong{@i{The @code{to-barline} property}} +@subsubsubheading La propiedad @code{to-barline} La segunda propiedad útil del @code{spanner-interface} es @code{to-barline}. De forma predeterminada tiene el valor cierto, @@ -2875,7 +3117,7 @@ exactamente sobre la nota: @lilypond[verbatim,quote,relative=2] a \< a a a a \! a a a \break -\override Hairpin #'to-barline = ##f +\override Hairpin.to-barline = ##f a \< a a a a \! a a a @end lilypond @@ -2884,7 +3126,9 @@ su establecimiento a @code{#t} no tienen ningún efecto sobre las ligaduras de expresión o de fraseo, o sobre otros extensores para los que terminar en la barra de compás no tendría ningún significado. +@node Uso del line-spanner-interface @unnumberedsubsubsec Uso del @code{line-spanner-interface} +@translationof Using the line-spanner-interface Entre los objetos que contemplan el interface @code{line-spanner-interface} se encuentran @@ -2909,8 +3153,8 @@ jerarquía de propiedades, pero la sintaxis de la instrucción @lilypond[relative=2,quote,verbatim] e2 \glissando b -\once \override Glissando #'(bound-details left Y) = #3 -\once \override Glissando #'(bound-details right Y) = #-2 +\once \override Glissando.bound-details.left.Y = #3 +\once \override Glissando.bound-details.right.Y = #-2 e2 \glissando b @end lilypond @@ -2928,8 +3172,8 @@ especifican por las sub-listas @code{left-broken} y @code{right-broken} de @code{bound-details}. Por ejemplo: @lilypond[relative=2,ragged-right,verbatim,quote] -\override Glissando #'breakable = ##t -\override Glissando #'(bound-details right-broken Y) = #-3 +\override Glissando.breakable = ##t +\override Glissando.bound-details.right-broken.Y = #-3 c1 \glissando \break f1 @end lilypond @@ -2969,7 +3213,7 @@ usa para escribir @i{cresc.}, @i{tr} y otros textos sobre los objetos de extensión horizontales. @lilypond[quote,ragged-right,relative=2,verbatim] -\override TextSpanner #'(bound-details left text) +\override TextSpanner.bound-details.left.text = \markup { \small \bold Slower } c2\startTextSpan b c a\stopTextSpan @end lilypond @@ -2983,15 +3227,11 @@ subpropiedades @code{X} e @code{Y}. Si se fijan símbolo del borde verticalmente con relación al extremo de la línea: @lilypond[relative=1,quote,verbatim] -\override TextSpanner - #'(bound-details left stencil-align-dir-y) = #-2 -\override TextSpanner - #'(bound-details right stencil-align-dir-y) = #UP - -\override TextSpanner - #'(bound-details left text) = #"ggg" -\override TextSpanner - #'(bound-details right text) = #"hhh" +\override TextSpanner.bound-details.left.stencil-align-dir-y = #-2 +\override TextSpanner.bound-details.right.stencil-align-dir-y = #UP + +\override TextSpanner.bound-details.left.text = #"ggg" +\override TextSpanner.bound-details.right.text = #"hhh" c4^\startTextSpan c c c \stopTextSpan @end lilypond @@ -3071,6 +3311,7 @@ objetos de presentación. Se estudian bajo Consideraciones especiales. @translationof Removing the stencil @cindex sello, eliminar +@funindex \omit Todo objeto de presentación tiene una propiedad stencil (sello). De forma predeterminada está establecida a la función específica que @@ -3080,9 +3321,20 @@ predeterminada se puede recuperar con @code{\revert}. @lilypond[quote,verbatim,relative=1] a1 a -\override Score.BarLine #'stencil = ##f +\override Score.BarLine.stencil = ##f +a a +\revert Score.BarLine.stencil +a a a +@end lilypond + +Esta operación, bastante común, tiene la forma abreviada @code{\omit} +como atajo: + +@lilypond[quote,verbatim,relative=1] +a1 a +\omit Score.BarLine a a -\revert Score.BarLine #'stencil +\undo \omit Score.BarLine a a a @end lilypond @@ -3092,6 +3344,7 @@ a a a @translationof Making objects transparent @cindex transparentes, hacer los objetos +@funindex \hide Todo objeto de presentación tiene una propiedad transparent (transparente) que de forma predeterminada está establecida a @@ -3100,7 +3353,16 @@ invisible. @lilypond[quote,verbatim,relative=2] a4 a -\once \override NoteHead #'transparent = ##t +\once \override NoteHead.transparent = ##t +a a +@end lilypond + +Esta operación, bastante común, tiene la forma abreviada @code{\hide} +como atajo: + +@lilypond[quote,verbatim,relative=2] +a4 a +\once \hide NoteHead a a @end lilypond @@ -3126,7 +3388,7 @@ dibujan estos objetos, lo que puede dejar una imagen fantasma del objeto blanco, como puede verse aquí: @lilypond[quote,verbatim,relative=2] -\override Staff.Clef #'color = #white +\override Staff.Clef.color = #white a1 @end lilypond @@ -3151,8 +3413,8 @@ sobreimpresionándolas. Para cambiarlo, se debe dar al objeto para que se dibuje antes: @lilypond[quote,verbatim,relative=2] -\override Staff.Clef #'color = #white -\override Staff.Clef #'layer = #-1 +\override Staff.Clef.color = #white +\override Staff.Clef.layer = #-1 a1 @end lilypond @@ -3232,12 +3494,11 @@ de presentación de interés que resultan afectados por @item @code{Clef} @tab @code{Staff} @tab @code{begin-of-line-visible} @item @code{Custos} @tab @code{Staff} @tab @code{end-of-line-visible} @item @code{DoublePercentRepeat} @tab @code{Voice} @tab @code{begin-of-line-invisible} -@c omit KeyCancellation until it can be explained -td -@c @item @code{KeyCancellation} @tab ?? @tab @code{begin-of-line-invisible} +@item @code{KeyCancellation} @tab @code{Staff} @tab @code{begin-of-line-invisible} @item @code{KeySignature} @tab @code{Staff} @tab @code{begin-of-line-visible} @c omit LeftEdge until it can be explained -td @c @item @code{LeftEdge} @tab @code{Score} @tab @code{center-invisible} -@item @code{OctavateEight} @tab @code{Staff} @tab @code{begin-of-line-visible} +@item @code{ClefModifier} @tab @code{Staff} @tab @code{begin-of-line-visible} @item @code{RehearsalMark} @tab @code{Score} @tab @code{end-of-line-invisible} @item @code{TimeSignature} @tab @code{Staff} @tab @code{all-visible} @@ -3250,7 +3511,7 @@ controlar la visibilidad de las líneas divisorias: f4 g a b f4 g a b % Remove bar line at the end of the current line -\once \override Score.BarLine #'break-visibility = #'#(#f #t #t) +\once \override Score.BarLine.break-visibility = ##(#f #t #t) \break f4 g a b f4 g a b @@ -3270,7 +3531,7 @@ línea a no ser que su valor establecido sea distinto de 1. se suprimen por completo. Utilice begin-of line-invisible para imprimirlas y all-invisible para suprimirlas. @item Armadura: véase más abajo -@item OctavateEight: véase más abajo +@item ClefModifier: véase más abajo @end itemize @@ -3278,7 +3539,7 @@ imprimirlas y all-invisible para suprimirlas. @unnumberedsubsubsec Consideraciones especiales @translationof Special considerations -@strong{@emph{Visibilidad después de un cambio explícito}} +@subsubsubheading Visibilidad después de un cambio explícito @cindex armadura, visibilidad después de un cambio explícito @cindex explicitKeySignatureVisibility @@ -3297,7 +3558,7 @@ bemol mayor es visible incluso con @code{all-invisible} establecido. \key g \major f4 g a b % Try to remove all key signatures -\override Staff.KeySignature #'break-visibility = #all-invisible +\override Staff.KeySignature.break-visibility = #all-invisible \key bes \major f4 g a b \break @@ -3325,16 +3586,16 @@ objeto correspondiente. \key g \major f4 g a b \set Staff.explicitKeySignatureVisibility = #all-invisible -\override Staff.KeySignature #'break-visibility = #all-invisible +\override Staff.KeySignature.break-visibility = #all-invisible \key bes \major f4 g a b \break f4 g a b f4 g a b @end lilypond -@strong{@emph{Visibilidad de las alteraciones de precaución}} +@subsubsubheading Visibilidad de las alteraciones de precaución -Para eliminar las alteraciones de precaución que se imprimen en un +Para eliminar las alteraciones de cancelación que se imprimen en un cambio de tonalidad explícito, establezca la propiedad @code{printKeyCancellation} del contexto Staff a @code{#f}: @@ -3343,7 +3604,7 @@ cambio de tonalidad explícito, establezca la propiedad f4 g a b \set Staff.explicitKeySignatureVisibility = #all-invisible \set Staff.printKeyCancellation = ##f -\override Staff.KeySignature #'break-visibility = #all-invisible +\override Staff.KeySignature.break-visibility = #all-invisible \key bes \major f4 g a b \break f4 g a b @@ -3353,9 +3614,41 @@ f4 g a b Con estas sobreescrituras solamente permanecen las alteraciones accidentales delante de las notas para indicar el cambio de tonalidad. +Observe que al modificar la tonalidad a Do@tie{}mayor o +La@tie{}menor, las alteraciones de cancelación serían @emph{la +única} indicación del cambio de armadura. En este caso, el +establecimiento de @code{printKeyCancellation} al valor @code{#f} +no tiene ningún efecto: + +@lilypond[quote,verbatim,relative=1,ragged-right] +\key g \major +f4 g a b +\set Staff.explicitKeySignatureVisibility = #all-invisible +\set Staff.printKeyCancellation = ##f +\key c \major +f4 g a b \break +f4 g a b +f4 g a b +@end lilypond + +En lugar de ello, para suprimir las alteraciones de cancelación +aún cuando la armadura cambia a Do@tie{}mayor o a La@tie{}menor, +sobreescriba la visibilidad del grob @code{KeyCancellation}: + +@lilypond[quote,verbatim,relative=1,ragged-right] +\key g \major +f4 g a b +\set Staff.explicitKeySignatureVisibility = #all-invisible +\override Staff.KeyCancellation.break-visibility = #all-invisible +\key c \major +f4 g a b \break +f4 g a b +f4 g a b +@end lilypond + @c TODO Add visibility of cautionary accidentals before notes -@strong{@emph{Automatic bars}} +@subsubsubheading Líneas divisorias automáticas @cindex automaticBars @cindex líneas divisorias, eliminación @@ -3373,23 +3666,23 @@ explícitas. @c TODO Add example -@strong{@emph{Octavated clefs}} +@subsubsubheading Claves transportadas -@cindex octavadas, visibilidad de las claves -@cindex visibilidad de las claves octavadas -@cindex claves, visibilidad de la octavación +@cindex transportadas, visibilidad de las claves +@cindex visibilidad de las claves transportadas +@cindex claves, visibilidad de la transposición -El pequeño símbolo de octava sobre las claves en octava alta o baja se -produce por parte del objeto @code{OctavateEight}. Su visibilidad se -hereda automáticamente de la del objeto @code{Clef}, así que no es +El pequeño símbolo de transposición sobre una clave se produce por +parte del objeto @code{ClefModifier}. Su visibilidad se hereda +automáticamente de la del objeto @code{Clef}, así que no es necesario aplicar las sobreescrituras correspondientes -@code{break-visibility} a los objetos -@code{OctavateEight} para suprimir los símbolos de octavación -para las claves invisibles. +@code{break-visibility} a los objetos @code{ClefModifier} para +suprimir los símbolos de transposición u octavación para las +claves invisibles. Para los cambios de clave explícitos, la propiedad -@code{explicitClefVisibility} controla tanto el símbolo de clave como -el símbolo de octava asociado. +@code{explicitClefVisibility} controla tanto el símbolo de clave +como el símbolo de transposición o de octava asociado. @seealso Manual de aprendizaje: @@ -3417,13 +3710,13 @@ cómo aplicarles ajustes finos. @lilypond[relative=2,ragged-right,verbatim,quote] d2 \glissando d'2 -\once \override Glissando #'style = #'dashed-line +\once \override Glissando.style = #'dashed-line d,2 \glissando d'2 -\override Glissando #'style = #'dotted-line +\override Glissando.style = #'dotted-line d,2 \glissando d'2 -\override Glissando #'style = #'zigzag +\override Glissando.style = #'zigzag d,2 \glissando d'2 -\override Glissando #'style = #'trill +\override Glissando.style = #'trill d,2 \glissando d'2 @end lilypond @@ -3434,7 +3727,7 @@ posible sobreescribirlos: @c TODO Complete @lilypond[relative=2,ragged-right,verbatim,quote] e2 \glissando f -\once \override Glissando #'(bound-details right Y) = #-2 +\once \override Glissando.bound-details.right.Y = #-2 e2 \glissando f @end lilypond @@ -3490,7 +3783,7 @@ serlo: @lilypond[quote,verbatim,relative=1] g4\< e' d' f\! -\override Hairpin #'rotation = #'(20 -1 0) +\override Hairpin.rotation = #'(20 -1 0) g,,4\< e' d' f\! @end lilypond @@ -3510,7 +3803,7 @@ propiedad @code{outside-staff-priority} del texto se establece a que empuja al texto a una posición muy alta. @lilypond[quote,verbatim,relative=1] -\override TextScript #'outside-staff-priority = ##f +\override TextScript.outside-staff-priority = ##f g4^\markup { \rotate #30 "a G" } b^\markup { \rotate #30 "a B" } des^\markup { \rotate #30 "a D-Flat" } @@ -3530,6 +3823,7 @@ ajustes finos a la apariencia de la partitura impresa. * Agrupación vertical de objetos gráficos:: * Modificación de los sellos:: * Modificación de las formas:: +* Modificación de objetos de extensión divididos:: * Contenedores unpure-pure:: @end menu @@ -3630,12 +3924,12 @@ valores @code{X-offset} y @code{Y-offset} modificados. @lilypond[verbatim,quote,relative=2] a-3 a --\tweak #'X-offset #0 --\tweak #'Y-offset #0 +-\tweak X-offset #0 +-\tweak Y-offset #0 -3 a --\tweak #'X-offset #-1 --\tweak #'Y-offset #1 +-\tweak X-offset #-1 +-\tweak Y-offset #1 -3 @end lilypond @@ -3689,7 +3983,7 @@ situar el objeto encima o debajo del padre de acuerdo con el valor de @unnumberedsubsubsec Uso del @code{self-alignment-interface} @translationof Using the self-alignment-interface -@emph{Auto-alineación horizontal de los objetos} +@subsubsubheading Auto-alineación horizontal de los objetos La alineación horizontal de un objeto que contempla el interface @code{self-alignment-interface} está controlada por el valor de la @@ -3714,17 +4008,17 @@ sola nota: @lilypond[quote,verbatim,relative=1] a' --\tweak #'self-alignment-X #-1 +-\tweak self-alignment-X #-1 ^"left-aligned" --\tweak #'self-alignment-X #0 +-\tweak self-alignment-X #0 ^"center-aligned" --\tweak #'self-alignment-X #RIGHT +-\tweak self-alignment-X #RIGHT ^"right-aligned" --\tweak #'self-alignment-X #-2.5 +-\tweak self-alignment-X #-2.5 ^"aligned further to the right" @end lilypond -@emph{Auto-alineación vertical de los objetos} +@subsubsubheading Auto-alineación vertical de los objetos Los objetos se pueden alinear verticalmente en una forma análoga a la alineación horizontal si la propiedad @code{Y-offset} está establecida @@ -3753,9 +4047,9 @@ se acerque a la cabeza de la nota. @lilypond[quote,verbatim,relative=2] a --\tweak #'self-alignment-X #0.5 % move horizontally left --\tweak #'Y-offset #ly:self-alignment-interface::y-aligned-on-self --\tweak #'self-alignment-Y #-1 % move vertically up +-\tweak self-alignment-X #0.5 % move horizontally left +-\tweak Y-offset #ly:self-alignment-interface::y-aligned-on-self +-\tweak self-alignment-Y #-1 % move vertically up -3 % third finger @end lilypond @@ -3802,25 +4096,25 @@ distintos a las barras de compás. Estos objetos son @code{ambitus}, @code{left-edge}, @code{key-cancellation}, @code{key-signature} y @code{time-signature}. -De forma predeterminada, las letras de ensayo y los números de compás -se centran horizontalmente sobre el objeto: +Cada tipo de objeto tiene su propio punto de referencia +predeterminado, con el que se alinean las marcas de ensayo: @lilypond[verbatim,quote,relative=1] -% The rehearsal mark will be centered above the Clef -\override Score.RehearsalMark #'break-align-symbols = #'(clef) +% The rehearsal mark will be aligned to the right edge of the Clef +\override Score.RehearsalMark.break-align-symbols = #'(clef) \key a \major \clef treble \mark "↓" e1 -% The rehearsal mark will be centered above the Time Signature -\override Score.RehearsalMark #'break-align-symbols = #'(time-signature) +% The rehearsal mark will be aligned to the left edge of 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) +\override Score.RehearsalMark.break-align-symbols = #'(breathing-sign) \key a \major \clef treble \time 4/4 @@ -3839,15 +4133,15 @@ 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] -% The rehearsal mark will be centered above the Key Signature -\override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef) +% The rehearsal mark will be aligned to the right edge of the Key Signature +\override Score.RehearsalMark.break-align-symbols = #'(key-signature clef) \key a \major \clef treble \mark "↓" e1 -% The rehearsal mark will be centered above the Clef +% The rehearsal mark will be aligned to the right edge of the Clef \set Staff.explicitKeySignatureVisibility = #all-invisible -\override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef) +\override Score.RehearsalMark.break-align-symbols = #'(key-signature clef) \key a \major \clef bass \mark "↓" @@ -3855,7 +4149,7 @@ 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) +\override Score.RehearsalMark.break-align-symbols = #'(key-signature clef) \key a \major \clef treble \mark "↓" @@ -3868,20 +4162,20 @@ 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 Key Signature -\override Score.RehearsalMark #'break-align-symbols = #'(key-signature) +% The RehearsalMark will be aligned with the right edge of the Key Signature +\override Score.RehearsalMark.break-align-symbols = #'(key-signature) \key a \major \clef treble \time 4/4 \mark "↓" e1 -% The RehearsalMark will be aligned with the left edge of the Key Signature -\once \override Score.KeySignature #'break-align-anchor-alignment = #LEFT +% The RehearsalMark will be centered above the Key Signature +\once \override Score.KeySignature.break-align-anchor-alignment = #CENTER \mark "↓" \key a \major e1 -% The RehearsalMark will be aligned with the right edge of the Key Signature -\once \override Score.KeySignature #'break-align-anchor-alignment = #RIGHT +% The RehearsalMark will be aligned with the left edge of the Key Signature +\once \override Score.KeySignature.break-align-anchor-alignment = #LEFT \key a \major \mark "↓" e1 @@ -3894,14 +4188,14 @@ pentagrama: @lilypond[verbatim,quote,relative=1] % 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 +\override Score.RehearsalMark.break-align-symbols = #'(key-signature) +\once \override Score.KeySignature.break-align-anchor = #3.5 \key a \major \mark "↓" 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 +\once \override Score.KeySignature.break-align-anchor = #-2 \key a \major \mark "↓" e1 @@ -3954,8 +4248,8 @@ la nota a unas aspas dentro de una circunferencia. @lilypond[verbatim,quote] XinO = { - \once \override NoteHead #'stencil = #ly:text-interface::print - \once \override NoteHead #'text = \markup { + \once \override NoteHead.stencil = #ly:text-interface::print + \once \override NoteHead.text = \markup { \combine \halign #-0.7 \draw-circle #0.85 #0.2 ##f \musicglyph #"noteheads.s2cross" @@ -3999,95 +4293,356 @@ Referencia de la notación: @cindex Bézier, curvas de, puntos de control @cindex puntos de control en curvas de Bézier -Las ligaduras de unión, de expresión y de fraseo se trazan como curvas -de Bézier de tercer orden. Si la forma de la ligadura calculada -automáticamente no resulta óptima, se puede modificar su forma -manualmente mediante la especificación explícita de los cuatro puntos -de control necesarios para definir una curva de Bézier de tercer -orden. - -Las curvas Bézier de tercer orden o cúbicas están definidas por cuatro -puntos de control. El primer y cuarto puntos de control son -exactamente los puntos extremos de comienzo y de final de la curva. -Los dos puntos de control intermedios definen la forma. Se pueden -encontrar en la web animaciones que muestran cómo se traza la curva, -pero la descripción siguiente puede ser de ayuda. La curva comienza a -partir del primer punto de control dirigiéndose directamente hacia el -segundo, curvándose progresivamente para dirigirse hacia el tercero y -continuando la curva hacia el cuarto, llegando a éste en viaje directo -desde el tercer punto de control. La curva está contenida enteramente +Las ligaduras de unión (@code{Tie}s), de expresión (@code{Slur}s), +de fraseo (@code{PhrasingSlur}s), de dejar vibrar +(@code{LaissezVibrerTie}s) y de repetición (@code{RepeatTie}s) se +trazan como curvas de Bézier de tercer orden. Si la forma de la +ligadura calculada automáticamente no resulta óptima, se puede +modificar su forma manualmente de dos formas: + +@enumerate a +@item +mediante la especificación de los desplazamientos que se quieren +realizar sobre los puntos de control de la curva de Bézier +calculada automáticamente, o bien + +@item +mediante la especificación explícita de las posiciones de los +cuatro puntos de control que se requieren para definir la curva +deseada. +@end enumerate + +A continuación se explican ambos métodos. El primer método es más +adecuado cuando solo se requieren ligeros ajustes de la curva; el +segundo puede ser mejor para crear curvas que tienen relación con +una única nota. + +@subsubsubheading Curvas de Bézier cúbicas + +Las curvas Bézier de tercer orden o cúbicas están definidas por +cuatro puntos de control. El primer y cuarto puntos de control +son exactamente los puntos extremos de comienzo y de final de la +curva. Los dos puntos de control intermedios definen la forma. +Se pueden encontrar en la web animaciones que muestran cómo se +traza la curva, pero la descripción siguiente puede ser de ayuda. +La curva comienza a partir del primer punto de control +dirigiéndose directamente hacia el segundo, curvándose +progresivamente para dirigirse hacia el tercero y continuando la +curva hacia el cuarto, llegando a éste en viaje directo desde el +tercer punto de control. La curva está contenida enteramente dentro del cuadrilátero definido por los cuatro puntos de control. +Todas las traslaciones, rotaciones y escalado de los puntos de +control producen exactamente las mismas operaciones sobre la +curva. + +@subsubsubheading Especificar desplazamientos a partir de los puntos de control actuales -He aquí un ejemplo de un caso en que la ligadura no es óptima, y donde -@code{\tieDown} no sirve de ayuda. +@cindex conformar ligaduras +@funindex \shape + +En este ejemplo, la colocación automática de la ligadura no +resulta óptima, y @code{\tieDown} no es la solución. @lilypond[verbatim,quote,relative=1] << - { e1~ e } + { e1~ 1 } \\ { r4 } >> @end lilypond -Una forma de mejorar esta ligadura es modificar manualmente sus puntos -de control como sigue. - -Las coordenadas de los puntos de control de Bézier se especifican en -unidades de espacios de pentagrama. La coordenada@tie{}X está en -relación con el punto de referencia de la nota a la que está unida la -ligadura, y la coordenada@tie{}Y está en relación con la línea central -del pentagrama. Las coordenadas se introducen como una lista de -cuatro parejas de números decimales (reales). Un enfoque es estimar -las coordenadas de los dos puntos extremos, y luego tratar de adivinar -los dos puntos intermedios. Los valores óptimos se encuentran por -ensayo y error. - -Es útil recordar que una curva simétrica necesita puntos de control -simétricos, y que las curvas de Bézier tienen la útil propiedad de que -las transformaciones de la curva tales como la traslación, rotación y -escalado se pueden obtener aplicando la misma transformación a los -puntos de control de la curva. - -Para el ejemplo anterior, la sobreescritura siguiente da una ligadura -satisfactoria. Observe la colocación: debe ir inmediatamente antes de -la nota a la que se asigna el comienzo de la ligadura de expresión o -de unión. +El ajuste de los puntos de control de la ligadura mediante la +instrucción @code{\shape} permite evitar las colisiones. + +La sintaxis de @code{\shape} es: + +@example +[-]@code{\shape} @var{desplazamientos} @var{elemento} +@end example + +Esta instrucción recoloca los puntos de control de @var{elemento} +en las cantidades dadas por @var{desplazamientos}. El argumento +@var{desplazamientos} es una lista de parejas de números o una +lista de tales listas. Cada elemento de una pareja representa el +desplazamiento de una de las coordenadas de un punto de control. +Si el @var{elemento} es una cadena de caracteres, el resultado es +@code{\once\override} para el tipo de grob especificado. Si +@var{elemento} es una expresión musical, el resultado es la misma +expresión musical con la consiguiente modificación aplicada. + +En otras palabras, la función @code{\shape} puede actuar como una +instrucción @code{\once\override} o como una instrucción +@code{\tweak} dependiendo de si el argumento @var{elemento} es el +nombre de un grob, como @qq{Slur}, o una expresión musical, como +@qq{(}. El argumento @var{desplazamientos} especifica los +desplazamientos de los cuatro puntos de control como una lista de +cuatro parejas de valores (dx . dy) en unidades de espacios de +pentagrama (o una lista de tales listas si la curva tiene más de +un segmento). + +El guión precedente se exige si, y sólo si, se usa la forma +@code{\tweak}. + +Así, usando el mismo ejemplo de arriba y la forma +@code{\once\override} de la instrucción @code{\shape}, lo +siguiente tiene el efecto de elevar la ligadura de unión en la +mitad de un espacio de pentagrama: @lilypond[verbatim,quote,relative=1] << { - \once \override Tie - #'control-points = #'((1 . -1) (3 . 0.6) (12.5 . 0.6) (14.5 . -1)) - e1 ~ e + \shape #'((0 . 0.5) (0 . 0.5) (0 . 0.5) (0 . 0.5)) Tie + e1~ 1 } \\ { r4 } >> @end lilypond +Este posicionamiento de la ligadura de unión es mejor, pero quizá +debería elevarse más en la parte central. El ejemplo siguiente +hace esto, esta vez usando la forma alternativa @code{\tweak}: + +@lilypond[verbatim,quote,relative=1] +<< + { + e1-\shape #'((0 . 0.5) (0 . 1) (0 . 1) (0 . 0.5)) ~ e + } +\\ + { r4 } +>> +@end lilypond + +Los cambios en las posiciones horizontales de los puntos de +control se pueden hacer de la misma forma, y dos curvas distintas +que dan comienzo en el mismo momento musical se pueden conformar +también: + +@lilypond[verbatim,quote,ragged-right,relative=2] +c8(\( a) a'4 e c\) +\shape #'((0.7 . -0.4) (0.5 . -0.4) (0.3 . -0.3) (0 . -0.2)) Slur +\shape #'((0 . 0) (0 . 0.5) (0 . 0.5) (0 . 0)) PhrasingSlur +c8(\( a) a'4 e c\) +@end lilypond + +La función @code{\shape} también puede desplazar los puntos de +control de las curvas que se extienden atravesando saltos de +línea. Cada pieza de la curva dividida puede recibir su propia +lista de desplazamientos. Si no se necesita hacer cambios a uno +de los segmentos en particular, se puede usar una lista vacía como +contenedor. En este ejemplo, el salto de línea hace que la única +ligadura de expresión aparezca como si fueran dos: + +@lilypond[verbatim,quote,ragged-right,relative=1] +c4( f g c +\break +d,4 c' f, c) +@end lilypond + +Los cambios en la forma de las dos mitades de la ligadura de +expresión deja más claro que la ligadura continúa más allá del +salto de línea: + +@lilypond[verbatim,quote,ragged-right,relative=1] +% () may be used as a shorthand for ((0 . 0) (0 . 0) (0 . 0) (0 . 0)) +% if any of the segments does not need to be changed +\shape #'( + (( 0 . 0) (0 . 0) (0 . 0) (0 . 1)) + ((0.5 . 1.5) (1 . 0) (0 . 0) (0 . -1.5)) + ) Slur +c4( f g c +\break +d,4 c' f, c) +@end lilypond + +En una curva en forma de «S» siempre es necesario ajustar +manualmente los puntos de control: LilyPond nunca escoge tales +formas automáticamente. + +@lilypond[verbatim,quote,relative=2] +c8( e b-> f d' a e-> g) +\shape #'((0 . -1) (5.5 . -0.5) (-5.5 . -10.5) (0 . -5.5)) PhrasingSlur +c8\( e b-> f d' a e-> g\) +@end lilypond + +@subsubsubheading Especificar los puntos de control explícitamente + +Las coordenadas de los puntos de contro de Bézier se especifican +en unidades de espacios de pentagrama. La coordenada@tie{}X es +relativa al punto de referencia al que se adjunta la ligadura, y +la coordenada@tie{}Y es relativa a la línea central del +pentagrama. Las coordenadas se especifican como una lista de +cuatro parejas de números decimales (reales). Un enfoque consiste +en estimar las coordenadas de los dos extremos, y después adivinar +los dos puntos intermedios. Los valores óptimos se encuentran +después por ensayo y error. Tenga en cuenta que estos valores +podrían requerir un ajuste manual si se hace posteriormente +cualquier cambio manual a la música o a la disposición. + +Una situación en la que es preferible especificar los puntos de +control explícitamente a especificar los desplazamientos es cuando +se necesita especificarlos de forma relativa a una nota única. A +continuación presentamos un ejemplo de esto. Muestra una forma de +indicar una ligadura que se extiende hacia el interior de las +casillas de primera y segunda vez de una repetición. + +@lilypond[verbatim,quote,relative=2] +c1 +\repeat volta 3 { c4 d( e f } +\alternative { + { g2) d } + { + g2 + % create a slur and move it to a new position + % the <> is just an empty chord to carry the slur termination + -\tweak control-points #'((-2 . 3.8) (-1 . 3.9) (0 . 4) (1 . 3.4)) ( <> ) + f, + } + { + e'2 + % create a slur and move it to a new position + -\tweak control-points #'((-2 . 3) (-1 . 3.1) (0 . 3.2) (1 . 2.4)) ( <> ) + f, + } +} +@end lilypond + @knownissues No es posible modificar la forma de las ligaduras de unión o de -expresión cambiando la propiedad @code{control-points} si hay más de -una en el mismo momento musical, ni siquiera usando la instrucción -@code{\tweak}. Sin embargo, se puede sobreescribir la propiedad -@code{tie-configuration} de @code{TieColumn} para fijar la línea de -inicio y la dirección según se requiera. +expresión cambiando la propiedad @code{control-points} si hay más +de una en el mismo momento musical, ni siquiera usando la +instrucción @code{\tweak}. Sin embargo, se puede sobreescribir la +propiedad @code{tie-configuration} de @code{TieColumn} para fijar +la línea de inicio y la dirección según se requiera. @seealso Referencia de funcionamiento interno: @rinternals{TieColumn}. -@cindex Scheme, contenedores puros -@cindex Scheme, contenedores no-puros -@cindex puros, contenedores de Scheme -@cindex no-puros: contenedores de Scheme -@cindex horizontal, sobreescribir el espaciado + +@node Modificación de objetos de extensión divididos +@subsection Modificación de objetos de extensión divididos +@translationof Modifying broken spanners + +@menu +* Uso de alterBroken:: +@end menu + +@node Uso de alterBroken +@unnumberedsubsubsec Uso de @code{\alterBroken} +@translationof Using alterBroken + +@cindex extensión, modificación de objetos de +@cindex divididos, modificación de objetos de extensión +@funindex \alterBroken + +Cuando un @qq{spanner} u objeto extenso atraviesa uno o varios saltos +de línea, cada fragmento hereda los atributos del objeto de extensión +original. Así, el trucado ordinario de un objeto dividido aplica las +mismas modificaciones a todos y cada uno de sus segmentos. En el +ejemplo que aparece a continuación, la sobreescritura de +@code{thickness} (grosor) afecta a la ligadura a ambos lados del salto +de línea. + +@lilypond[verbatim,quote,ragged-right,relative=2] +r2 +\once\override Slur.thickness = 10 +c8( d e f +\break +g8 f e d) r2 +@end lilypond + +Es posible modificar de forma independiente el aspecto de los +fragmentos individuales de un objeto de extensión dividido, con la +instrucción @code{\alterBroken}. Esta instrucción puede producir un +@code{\override} o bien un @code{\tweak} de una propiedad del objeto +de extensión. + +La sintaxis de @code{\alterBroken} es + +@example +[-]@code{\alterBroken} @var{propiedad} @var{valores} @var{elemento} +@end example + +El argumento @var{valores} es una lista de valores, uno por cada +fragmento. Si @var{elemento} el el nombre de un grob como @code{Slur} +o @code{Staff.PianoPedalBracket}, el resultado es una instrucción de +sobreescritura @code{\override} del tipo de grob especificado. Si +@var{elemento} es una expresión musical como @qq{(} o @qq{[} el +resultado es la misma expresión musical con el correspondiente truco +aplicado. + +El guión inicial se debe utilizar con la forma de trucaje, +@code{\tweak}. No lo escriba cuando utilice @code{\alterBroken} como +una operación de sobreescritura, @code{\override}. + +En su uso como @code{\override}, @code{\alterBroken} puede ir +precedido de @code{\once} o @code{\temporary} y ser revertido con +@code{\revert} con el argumento @var{propiedad}. + +EL código siguiente aplica un @code{\override} independiente a cada +uno de los fragmentos de la ligadura del ejemplo anterior: + +@lilypond[verbatim,quote,ragged-right,relative=2] +r2 +\alterBroken thickness #'(10 1) Slur +c8( d e f +\break +g8 f e d) r2 +@end lilypond + +La instrucción @code{\alterBroken} se puede usar con cualquier objeto +de extensión, incluidos @code{Tie}, @code{PhrasingSlur}, @code{Beam} y +@code{TextSpanner}. Por ejemplo, un editor que está preparando una +edición académica podría desear indicar la ausencia de parte de una +ligadura de fraseo en una fuente haciendo discontinuo solamente el +segmento que se ha añadido. El siguiente ejemplo ilustra de qué +manera se puede hacer esto, en este caso usando la forma @code{\tweak} +de la instrucción: + +@lilypond[verbatim,quote,ragged-right,relative=2] +% The empty list is conveniently used below, because it is the +% default setting of dash-definition, resulting in a solid curve. +c2-\alterBroken dash-definition #'(() ((0 1.0 0.4 0.75))) \(e +\break +g2 e\) +@end lilypond + +Es importante comprender que @code{\alterBroken} fija cada pieza del +objeto fragmentado al valor correspondiente dentro del argumento +@var{valores}. Cuando hay menos valores que piezas, cualquier +fragmento adicional recibe la asignación de la lista vacía. Esto +puede conllevar resultados no deseados si la propiedad de disposición +no está establecida a la lista vacía de forma predeterminada. En +estos casos, se debe asignar a cada segmento un valor adecuado. + +@knownissues +Los saltos de línea pueden ocurrir en distintos lugares según cambia +la disposición de la música. Los ajustes elegidos para +@code{\alterBroken} podrían no ser adecuados para un objeto de +extensión que ya no está dividido o que se fragmenta en más piezas que +antes. El uso explícito (manual) de saltos de línea mediante +@code{\break} puede prevenir situaciones como ésta. + +La instrucción @code{\alterBroken} no es efectiva para propiedades de +los objetos extensos accedidas antes del salto de línea, como +@code{direction}. + +@seealso +Extender LilyPond: +@rextend{Trucos difíciles}. @node Contenedores unpure-pure @subsection Contenedores unpure-pure @translationof Unpure-pure containers +@cindex Scheme, contenedores puros +@cindex Scheme, contenedores no-puros +@cindex puros, contenedores de Scheme +@cindex no-puros: contenedores de Scheme +@cindex horizontal, sobreescribir el espaciado + Los contenedores @q{unpure-pure} (pura y no pura) son útiles para la sobreescritura de los cálculos del espaciado en el @emph{eje Y} (concretamente @code{Y-offset} e @code{Y-extent}) con una función de @@ -4153,12 +4708,12 @@ precisión mucho más tardío durante el proceso de espaciado. '(-0.5 . 0.5))))) squareLineCircleSpace = { - \override NoteHead #'stencil = #square-line-circle-space + \override NoteHead.stencil = #square-line-circle-space } smartSquareLineCircleSpace = { \squareLineCircleSpace - \override NoteHead #'Y-extent = + \override NoteHead.Y-extent = #(ly:make-unpure-pure-container ly:grob::stencil-height (lambda (grob start end) (ly:grob::stencil-height grob))) @@ -4167,9 +4722,9 @@ smartSquareLineCircleSpace = { \new Voice \with { \remove "Stem_engraver" } \relative c'' { \squareLineCircleSpace - cis4 ces cisis c + cis4 ces disis d \smartSquareLineCircleSpace - cis4 ces cisis c + cis4 ces disis d } @end lilypond @@ -4302,15 +4857,15 @@ padText = (parser location padding) (number?) #{ - \once \override TextScript #'padding = #padding + \once \override TextScript.padding = #padding #}) -\relative c''' { +\relative c'' { c4^"piu mosso" b a b \padText #1.8 - c4^"piu mosso" d e f + c4^"piu mosso" b a b \padText #2.6 - c4^"piu mosso" fis a g + c4^"piu mosso" b a b } @end lilypond @@ -4323,10 +4878,10 @@ custosNote = (parser location note) (ly:music?) #{ - \tweak NoteHead #'stencil #ly:text-interface::print - \tweak NoteHead #'text + \tweak NoteHead.stencil #ly:text-interface::print + \tweak NoteHead.text \markup \musicglyph #"custodes.mensural.u0" - \tweak Stem #'stencil ##f + \tweak Stem.stencil ##f #note #}) @@ -4341,7 +4896,7 @@ tempoPadded = (parser location padding tempotext) (number? markup?) #{ - \once \override Score.MetronomeMark #'padding = #padding + \once \override Score.MetronomeMark.padding = #padding \tempo \markup { \bold #tempotext } #})