1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
4 Translation of GIT committish: 5ae5c88bdb1a478263ed874cb823ec58dafc93f9
6 When revising a translation, copy the HEAD committish of the
7 version that you are working on. For details, see the Contributors'
8 Guide, node Updating translation committishes..
13 @node Trucar la salida
14 @chapter Trucar la salida
15 @translationof Tweaking output
17 Este capítulo trata de cómo modificar la salida. LilyPond es
18 extremadamente configurable; prácticamente todos los fragmentos de
19 la salida se pueden cambiar.
23 * Elementos de trucaje::
24 * Manual de referencia de funcionamiento interno::
25 * Apariencia de los objetos::
26 * Colocación de los objetos::
27 * Espaciado vertical::
28 * Colisiones de objetos::
29 * Trucajes adicionales::
32 @node Elementos de trucaje
33 @section Elementos de trucaje
34 @translationof Tweaking basics
37 * Introducción al trucaje::
38 * Objetos e interfaces::
39 * Convenciones de nombres de objetos y propiedades::
40 * Métodos de trucaje::
43 @node Introducción al trucaje
44 @subsection Introducción al trucaje
45 @translationof Introduction to tweaks
47 El @q{Trucaje} es un término de LilyPond que denota los diversos
48 métodos que el usuario tiene a su disposición para modificar el
49 proceso de interpretación del archivo de entrada y cambiar la
50 apariencia de la salida impresa. Algunos trucos son muy fáciles
51 de usar; otros son más complejos. Pero en su conjunto, los
52 métodos de trucaje disponibles posibilitan conseguir casi
53 cualquier apariencia que deseemos en la música impresa.
55 En esta sección vamos a estudiar los conceptos básicos que se
56 necesitan para comprender el trucaje. Más tarde daremos un amplio
57 abanico de instrucciones listas para usar, que podrá simplemente
58 copiar para obtener el mismo efecto en sus partituras, y al mismo
59 tiempo mostraremos la forma de construir dichas instrucciones para
60 que pueda aprender cómo desarrollar sus propios trucos.
62 Antes de comenzar con este capítulo, quizá quiera echar un vistazo
63 a la sección @ref{Contextos y grabadores}, pues los Contextos, los
64 Grabadores y las Propiedades que se contienen en ellos son
65 fundamentales para comprender y construir los trucos.
67 @node Objetos e interfaces
68 @subsection Objetos e interfaces
69 @translationof Objects and interfaces
73 @cindex objeto de extensión
75 @cindex propiedades de objetos
76 @cindex objeto, propiedades de
77 @cindex layout (disposición), objeto de
78 @cindex objeto de disposición (layout)
80 El trucaje consiste en modificar el funcionamiento y estructura
81 interna del programa LilyPond, por lo que en primer lugar
82 introduciremos algunos términos que se usan para describir dichas
83 operaciones y estructuras internas.
85 El término @q{Objeto} es un término genérico que se usa para
86 referirse a la multitud de estructuras internas que LilyPond
87 construye durante el procesado de un archivo de entrada. Así,
88 cuando se encuentra una instrucción como @code{\new Staff}, se
89 construye un objeto nuevo del tipo @code{Staff}. Entonces, este
90 objeto @code{Staff} contiene todas las propiedades asociadas con
91 ese pentagrama en particular, por ejemplo, su nombre y su
92 armadura, además de otros detalles de los grabadores que se han
93 asignado para que operen dentro del contexto del pentagrama. De
94 forma similar, hay objetos que guardan las propiedades de todos
95 los demás contextos, como objetos de @code{Voice}, objetos de
96 @code{Score}, objetos de @code{Lyrics}, así como objetos que
97 representan todos los elementos notacionales como líneas
98 divisorias, cabezas de las notas, ligaduras, indicaciones
99 dinámicas, etc. Cada objeto tiene su propio conjunto de valores
102 Ciertos tipos de objetos reciben nombres especiales. Los objetos
103 que representan elementos de notación sobre la salida impresa como
104 cabezas de notas, plicas, ligaduras de expresión y de unión,
105 digitaciones, claves, etc. reciben el nombre de @q{Objetos de
106 presentación}, a menudo conocidos como @q{Objetos gráficos}, o
107 abreviadamente @q{Grobs}. Aún son objetos en el sentido genérico
108 que hemos mencionado, y también todos ellos tienen propiedades
109 asociadas, como su posición, tamaño, color,etc.
111 Ciertos objetos de presentación son aún más especializados. Las
112 ligaduras de fraseo, los reguladores, las indicaciones de octava
113 alta y baja, y muchos otros objetos gráficos no están situados en
114 un solo lugar: tienen un punto de inicio, un punto de final, y
115 quizá otras propiedades relacionadas con su forma. Los objetos
116 con una forma extendida como estos, reciben el nombre de «Objetos
117 de extensión» o @q{Spanners}.
119 Los «spanners» no se pueden trucar después de haberse creado.
120 Ello incluye tanto a @code{StaffSymbol} como a
121 @code{LedgerLineSpanner}, que continúan a lo largo de toda la
122 partitura (excepto si se les da fin con la instrucción
123 @code{\stopStaff} y se vuelven a crear con la instrucción
126 Es más, existen objetos gráficos @q{abstractos} que no impriman
127 nada por sí mismos, sino que más bien recopilan, posicionan y
128 gestionan a otros objetos gráficos. Los ejemplos usuales son
129 @code{DynamicLineSpanner}, @code{BreakAlignment},
130 @code{NoteColumn}, @code{VerticalAxisGroup},
131 @code{NonMusicalPaperColumn} y similares. Más tarde veremos cómo
132 se usan algunos de ellos.
134 Aún falta por explicar qué son los @q{Interfaces}. Muchos
135 objetos, incluso aunque son bastante diferentes, comparten
136 funcionalidades que se deben procesar de la misma manera. Por
137 ejemplo, todos los objetos gráficos tienen un color, un tamaño,
138 una posición, etc., y todas estas propiedades se procesan de la
139 misma forma durante la interpretación del archivo de entrada por
140 parte de LilyPond. Para simplificar estas operaciones internas,
141 estas acciones y propiedades comunes se agrupan en un objeto
142 llamado @code{grob-interface}, interface de grob. Hay muchas
143 otras agrupaciones de propiedades comunes como ésta, y cada una
144 recibe un nombre que acaba en @code{interface}. En total hay más
145 de 100 interfaces de éstos. Veremos más adelante porqué esto es
146 del interés y de utilidad para el usuario.
148 Estos son, en fin, los términos principales relativos a los
149 objetos que vamos a utilizar en este capítulo.
151 @node Convenciones de nombres de objetos y propiedades
152 @subsection Convenciones de nombres de objetos y propiedades
153 @translationof Naming conventions of objects and properties
155 @cindex nomenclatura, convenciones de, para objetos
156 @cindex nomenclatura, convenciones de, para propiedades
157 @cindex objetos, convenciones de nomenclatura
158 @cindex propiedades, convenciones de nomenclatura
160 Ya hemos visto ciertas convenciones de nomenclatura de objetos, en la
161 sección @ref{Contextos y grabadores}. En este lugar, para más fácil
162 referencia, presentamos una lista de los tipos de objetos y
163 propiedades más comunes, junto con las convenciones según las cuales
164 reciben su nombre, y un par de ejemplos de nombres reales. Hemos
165 utilizado una @q{A} mayúscula para denotar cualquier carácter
166 alfabético en mayúsculas, y @q{aaa} para cualquier número de
167 caracteres alfabéticos en minúscula. Otros caracteres se utilizan
168 literalmente como están.
170 @multitable @columnfractions .33 .33 .33
171 @headitem Objeto o tipo de propiedad
172 @tab Convención de nomenclatura
175 @tab Aaaa o AaaaAaaaAaaa
176 @tab Staff, GrandStaff
177 @item Objetos de presentación
178 @tab Aaaa o AaaaAaaaAaaa
181 @tab Aaaa_aaa_engraver
182 @tab Clef_engraver, Note_heads_engraver
184 @tab aaa-aaa-interface
185 @tab grob-interface, break-aligned-interface
186 @item Propiedades de contextos
187 @tab aaa o aaaAaaaAaaa
188 @tab alignAboveContext, skipBars
189 @item Propiedades de objetos de presentación
190 @tab aaa o aaa-aaa-aaa
191 @tab direction, beam-thickness
194 Como podremos ver en breve, las propiedades de distintos tipos de
195 objeto se modifican por parte de diferentes instrucciones; así pues,
196 es útil poder reconocer los tipos de objetos y propiedades
197 a partir de sus nombres.
200 Referencia de la notación:
201 @ruser{Modificar las propiedades}.
204 @node Métodos de trucaje
205 @subsection Métodos de trucaje
206 @translationof Tweaking methods
208 @cindex trucaje, métodos de
210 @strong{La instrucción \override}
213 * La instrucción override::
214 * La instrucción revert::
216 * La instrucción overrideProperty::
217 * La instrucción tweak::
220 @node La instrucción override
221 @unnumberedsubsubsec La instrucción @code{@bs{}override}
222 @translationof The override command
224 @cindex override, instrucción
225 @cindex override (sobreescritura), sintaxis de
229 Ya hemos visto las instrucciones @code{\set} y @code{\with}, que
230 se usan para cambiar las propiedades de los @strong{contextos} y
231 para quitar y poner @strong{grabadores}, en
232 @ref{Modificar las propiedades de los contextos} y
233 @ref{Añadir y eliminar grabadores}. Ahora debemos examinar
234 algunas otras instrucciones importantes.
236 La instrucción que cambia las propiedades de los @strong{objetos
237 de presentación} es @code{\override}. Puesto que esta instrucción
238 debe modificar propiedades internas que se encuentran en un lugar
239 profundo dentro de LilyPond, su sintaxis no es tan simple como la
240 del resto de las instrucciones que hemos usado hasta ahora. Tiene
241 que saber exactamente qué propiedad de qué objeto y en qué
242 contexto se debe modificar, y cuál debe ser su nuevo valor.
245 La sintaxis genérica de esta instrucción es:
248 \override @var{Contexto}.@var{ObjetoDePresentación}.@var{propiedad-de-presentación} =
253 Esto establecerá la propiedad de nombre
254 @var{propiedad-de-presentación} del objeto de presentación con el
255 nombre @var{ObjetoDePresentación}, que es miembro del contexto
256 @var{Contexto}, al valor @var{valor}.
258 El @var{contexto} se puede omitir (y normalmente así es) cuando el
259 contexto requerido se encuentra implicado sin ambigüedad y es uno
260 de los contextos del nivel más bajo, es decir: @code{Voice},
261 @code{ChordNames} o @code{Lyrics}, y lo omitiremos en muchos de
262 los ejemplos siguientes. Veremos más tarde cuándo se debe
265 Las últimas secciones tratan de forma exhaustiva las propiedades y
266 sus valores, véase @ref{Tipos de propiedades}. Pero en esta
267 sección usaremos sólo unas cuantas propiedades y valores sencillos
268 que sean fáciles de entender, para ilustrar el formato y la
269 utilización de estas instrucciones.
271 Las expresiones principales de LilyPond son elementos musicales
272 como notas, duraciones y elementos de marcado. Las expresiones
273 más básicas como números, cadenas de caracteres y listas se
274 procesan en el @q{modo de Scheme}, que se invoca por medio del
275 prefijo @samp{#} escrito antes del valor. Aunque los valores
276 pueden tener a veces una representación válida en el modo de
277 música de LilyPond, este manual utiliza siempre @samp{#} para la
278 escritura, por coherencia. Para ver más información acerca del
279 modo de Scheme, consulte @rextend{Sintaxis del Scheme de LilyPond}.
281 @code{\override} es la instrucción de uso más común dentro del
282 trucaje, y durante la mayor parte del resto de este capítulo
283 presentaremos ejemplos de cómo se usa. A continuación hay un
284 ejemplo sencillo para cambiar el color de una cabeza:
286 @cindex color, propiedad, ejemplo
287 @cindex NoteHead, ejemplo de sobreescritura
289 @lilypond[quote,ragged-right,verbatim]
292 \override NoteHead.color = #red
294 \override NoteHead.color = #green
300 @node La instrucción revert
301 @unnumberedsubsubsec La instrucción @code{@bs{}revert}
302 @translationof The revert command
304 @cindex revert, instrucción
308 Una vez sobreescrita, la propiedad retiene su nuevo valor hasta
309 que se sobreescribe de nuevo o se encuentra una instrucción
310 @code{\revert}. La instrucción @code{\revert} tiene la siguiente
311 sintaxis y ocasiona que el valor de la propiedad se devuelva a su
312 valor predeterminado original; observe que no es a su valor previo
313 si se han utilizado varias instrucciones @code{\override}.
316 \revert @var{Contexto}.@var{ObjetoDePresentación}.@var{propiedad-de-presentación}
319 Una vez más, igual que @var{Contexto} dentro de la instrucción
320 @code{\override}, con frecuencia no es necesario especificar el
321 @var{Contexto}. Se omitirá en muchos de los ejemplos siguientes.
322 Aquí devolvemos el color de la cabeza al valor predeterminado para
323 las dos últimas notas:
325 @cindex color, propiedad, ejemplo
326 @cindex NoteHead, ejemplo de sobreescritura
328 @lilypond[quote,ragged-right,verbatim]
331 \override NoteHead.color = #red
333 \override NoteHead.color = #green
335 \revert NoteHead.color
341 @node El prefijo once
342 @unnumberedsubsubsec El prefijo @code{@bs{}once}
343 @translationof The once prefix
347 @code{\override}, @code{\revert}, @code{\set} y @code{\unset} se
348 pueden hacer preceder por @code{\once}. Esto hace que la
349 instrucción sea efectiva solamente durante el tiempo musical en
350 curso y antes de que la propiedad vuelva a tener otra vez su valor
351 anterior (que puede ser distinto de su valor predeterminado si aún
352 se está aplicando otra instrucción @code{\override} de
353 sobreescritura). Utilizando el mismo ejemplo, podemos cambiar el
354 color de una sola nota de la siguiente manera:
356 @cindex color, propiedad, ejemplo
357 @cindex NoteHead, ejemplo de sobreescritura
359 @lilypond[quote,verbatim]
362 \override NoteHead.color = #red
364 \once \override NoteHead.color = #green
366 \once \revert NoteHead.color
368 \revert NoteHead.color
373 El prefijo @code{\once} también se puede usar delante de muchas
374 instrucciones predefinidas para limitar su efecto a un solo
377 @lilypond[quote,verbatim]
388 @node La instrucción overrideProperty
389 @unnumberedsubsubsec La instrucción @code{@bs{}overrideProperty}
390 @translationof The overrideProperty command
392 @cindex overrideProperty, instrucción
394 @funindex \overrideProperty
396 Hay otra forma para la instrucción de sobreescritura,
397 @code{\overrideProperty}, que ocasionalmente es necesaria. La
398 mencionamos aquí con un propósito de exhaustividad, pero para ver
399 más detalles consulte @rextend{Trucos difíciles}.
400 @c Maybe explain in a later iteration -td
403 @node La instrucción tweak
404 @unnumberedsubsubsec La instrucción @code{@bs{}tweak}
405 @translationof The tweak command
407 @cindex tweak, instrucción
411 La última instrucción de trucaje que está disponible es
412 @code{\tweak}. Se debe utilizar cuando varios objetos tienen
413 lugar en el mismo momento musical pero solo queremos cambiar las
414 propiedades de algunos de ellos, como una sola nota dentro de un
415 acorde. El uso de @code{\override} para la sobreescritura
416 afectaría a todas las notas del acorde, mientras que @code{\tweak}
417 afecta solamente al siguiente elemento del flujo de entrada.
419 He aquí un ejemplo. Suponga que queremos cambiar el tamaño de la
420 cabeza de la nota intermedia (el Mi) en un acorde de Do mayor. En
421 primer lugar, veamos lo que haría @code{\once \override}:
423 @cindex font-size, propiedad, ejemplo
424 @cindex NoteHead, ejemplo de sobreescritura
426 @lilypond[quote,ragged-right,verbatim]
429 \once \override NoteHead.font-size = #-3
435 Vemos que la sobreescritura con override afecta a @emph{todas} las
436 cabezas de las notas del acorde. Esto es así porque todas las
437 notas de un acorde ocurren en el mismo @emph{momento musical}, y
438 la acción de @code{\once} es aplicar la sobreescritura a todos los
439 objetos de presentación del tipo especificado que ocurren en el
440 mismo momento musical que la propia instrucción de sobreescritura
443 La instrucción @code{\tweak} opera de una forma distinta. Actúa
444 sobre el elemento inmediatamente siguiente dentro del flujo de
445 entrada. En su forma más sencilla es efectivo solamente sobre
446 objetos que se crean directamente a partir del elemento siguiente,
447 en esencia las cabezas y las articulaciones.
449 Así pues, volviendo a nuestro ejemplo, el tamaño de la nota
450 intermedia se cambiaría de la siguiente forma:
452 @cindex font-size, propiedad, ejemplo
453 @cindex @code{\tweak}, ejemplo
455 @lilypond[quote,ragged-right,verbatim]
458 <c \tweak font-size #-3 e g>4
462 Observe que la sintaxis de @code{\tweak} no es igual que la de
463 @code{\override}. El contexto no se debe especificar; de hecho,
464 generaría un error hacerlo. Tanto el contexto como el objeto de
465 presentación están implícitos por el siguiente elemento del flujo
466 de entrada. Observe también que no debe haber un signo igual. Así
467 que la sintaxis de la instrucción @code{\tweak} en su forma
471 \tweak @var{propiedad-de-presentación} #@var{valor}
474 Una instrucción @code{\tweak} también se puede usar para modificar
475 sólo una de una serie de articulaciones, como se muestra aquí:
477 @cindex color, propiedad, ejemplo
478 @cindex @code{\tweak}, ejemplo
480 @lilypond[quote,fragment,ragged-right,verbatim]
482 -\tweak color #red ^"Red"
483 -\tweak color #green _"Green"
487 Observe que la instrucción @code{\tweak} debe venir precedida de
488 una marca de articulación porque la propia expresión trucada debe
489 aplicarse como una articulación. En el caso de más de una
490 sobreescritura de dirección (@code{^} o @code{_}), gana la
491 sobreescritura situada más a la izquierda porque se aplica en
494 @cindex @code{\tweak}, Accidental
495 @cindex @code{\tweak}, specific layout object
497 Los objetos tales como plicas y alteraciones accidentales se crean
498 más tarde, y no directamente a partir del evento que viene a
499 continuación. Aún es posible utilizar @code{\tweak} sobre tales
500 objetos creados indirectamente mediante el nombrado explícito del
501 objeto de presentación, siempre y cuando LilyPond pueda rastrear
502 su origen hasta el evento original:
504 @lilypond[quote,fragment,ragged-right,verbatim]
505 <\tweak Accidental.color #red cis''4
506 \tweak Accidental.color #green es''
510 Esta forma extensa de la instrucción @code{\tweak} se puede describir
513 \tweak @var{LayoutObject}.@var{layout-property} #@var{value}
514 "ANTES" \tweak @var{objeto-de-presentación}.@var{propiedad-de-presentación} @var{valor}
517 @cindex grupos especiales anidados
518 @cindex tresillos anidados
519 @cindex corchete del grupo especial
520 @cindex corchete de tresillo
521 @cindex grupo especial, corchete de
522 @cindex tresillo, corchete de
524 @funindex TupletBracket
526 La instrucción @code{\tweak} también se debe usar para cambiar la
527 apariencia de uno solo de un conjunto de grupos especiales
528 anidados que comiencen en el mismo instante musical. En el
529 siguiente ejemplo, el corchete del tresillo largo y el primero de
530 los tres corchetes cortos empiezan en el mismo momento musical, y
531 por ello cualquier instrucción @code{\override} se aplicaría a los
532 dos. En el ejemplo se usa @code{\tweak} para distinguir entre
533 ellos. La primera instrucción @code{\tweak} especifica que el
534 corchete del tresillo largo se debe colocar por encima de las
535 notas y el segundo especifica que el número del tresillo se debe
536 imprimir en rojo sobre el corchete del primer tresillo corto.
538 @cindex @code{\tweak}, ejemplo
539 @cindex direction, propiedad, ejemplo
540 @cindex color, propiedad, ejemplo
542 @lilypond[quote,ragged-right,verbatim]
547 \tuplet 3/2 { c8[ c c] }
548 \tuplet 3/2 { c8[ c c] }
549 \tuplet 3/2 { c8[ c c] }
554 Si los grupos anidados no comienzan en el mismo momento, su
555 apariencia se puede modificar de la forma usual mediante
556 instrucciones @code{\override}:
558 @cindex text, propiedad, ejemplo
559 @cindex tuplet-number, función, ejemplo
560 @cindex transparent, propiedad, ejemplo
561 @cindex TupletNumber, ejemplo de sobreescritura
563 @lilypond[quote,ragged-right,verbatim]
565 \tuplet 3/2 { c'8[ c c] }
566 \once \override TupletNumber.text = #tuplet-number::calc-fraction-text
570 \once \override TupletNumber.transparent = ##t
571 \tuplet 3/2 { c8[ c c] }
572 \tuplet 3/2 { c8[ c c] }
579 Referencia de la notación:
580 @ruser{La instrucción tweak}.
582 @node El prefijo single
583 @unnumberedsubsubsec El prefijo @code{@bs{}single}
584 @translationof The single prefix
587 @cindex truco, generado a partir de una sobreescritura
589 Supongamos que queremos enfatizar la cabeza de algunas notas
590 trazándolas de color e incrementando su tamaño, y supongamos
591 también hemos programado una función para hacer la tarea más
594 @lilypond[quote,verbatim]
596 \override NoteHead.color = #red
597 \override NoteHead.font-size = 2
600 c''4 a \once \emphNoteHead f d |
604 El prefijo @code{\once} funciona perfectamente para enfatizar
605 notas únicas o acordes completos, pero no se puede usar para
606 enfatizar una sola nota @emph{dentro} de un acorde. Anteriormente
607 vimos cómo se puede usar la instrucción @code{\tweak} para
608 hacerlo, véase @ref{La instrucción tweak,,La instrucción
609 @code{@bs{}tweak}}. Pero @code{\tweak} no se puede usar con una
610 función; ahí es donde entra la instrucción @code{\single}:
612 @lilypond[quote,verbatim]
614 \override NoteHead.color = #red
615 \override NoteHead.font-size = 2
618 <c'' a \single \emphNoteHead f d>4
622 En resumen, @code{\single} convierte las sobreescrituras hechas
623 con@code{\override} en trucos hechos con @code{\tweak} de tal
624 manera que cuando hay varios objetos en el mismo instante de
625 tiempo musical (como las notas de un acorde), @code{\single}
626 afecta a una única nota, la que se genera por la expresión que
627 sigue inmediatamente, a diferencia de @code{\once} que afecta a
630 El uso de @code{\single} de esta forma con una función cualquiera
631 que contenga solamente sobreescrituras, puede aplicarse a las
632 notas individuales de un acorde. Sin embargo, @code{\single} no
633 convierte @code{\revert}, @code{\set} ni @code{\unset} en trucos
637 Manual de aprendizaje:
638 @ref{La instrucción tweak,,La instrucción @code{@bs{}tweak}},
639 @ref{Uso de variables para los ajustes de disposición}.
642 @node Manual de referencia de funcionamiento interno
643 @section Manual de referencia de funcionamiento interno
644 @translationof The Internals Reference manual
646 @cindex Referencia de funcionamiento interno
649 * Propiedades de los objetos de presentación::
650 * Propiedades de los interfaces::
651 * Tipos de propiedades::
654 @node Propiedades de los objetos de presentación
655 @subsection Propiedades de los objetos de presentación
656 @translationof Properties of layout objects
658 @cindex propiedades de los objetos de presentación
659 @cindex propiedades de los grobs
660 @cindex grobs, propiedades de
661 @cindex presentación, propiedades de los objetos de
662 @cindex Referencia de funcionamiento interno
664 Suponga que tiene una partitura con una ligadura de expresión que
665 para su gusto es demasiado fina y quiere trazarla un poco más
666 gruesa. ¿Cómo debe proceder? Ya sabe, por las afirmaciones
667 anteriores acerca de la flexibilidad de LilyPond, que tal
668 posibilidad existe, y seguramente piensa que una cierta
669 instrucción de sobreescritura @code{\override} será necesaria.
670 Pero ¿existe una propiedad de grosor para las ligaduras? y, si la
671 hay, ¿cómo se puede modificar? Aquí es donde interviene el Manual
672 de Funcionamiento Interno. Contiene toda la información que puede
673 necesitar para construir ésta y todas las demás instrucciones
674 @code{\override}, de sobreescritura.
676 Una advertencia antes de dirigir nuestra mirada a la referencia de
677 funcionamiento interno. Éste es un documento de
678 @strong{referencia}, lo que significa que hay pocas o ninguna
679 explicación en él: su propósito es presentar la información de
680 forma precisa y concisa. Por tanto, podrá parecerle desalentador
681 a primera vista. ¡No se preocupe! La guía y las explicaciones
682 que presentamos aquí le permitirán extraer la información de la
683 referencia de funcionamiento interno por sí mismo con tan sólo
686 @cindex sobreescritura, ejemplo de
687 @cindex Referencia de Funcionamiento Interno, ejemplo de utilización
688 @cindex @code{\addlyrics}, ejemplo
690 Utilicemos un ejemplo concreto con un sencillo fragmento de música
693 @c Mozart, dúo, núm. 7 de La Flauta Mágica
695 @lilypond[quote,verbatim]
700 r4 bes'8 bes[( g]) g |
701 g8[( es]) es d[( f]) as |
705 The man who | feels love's sweet e -- | mo -- tion
710 Suponga ahora que decidimos que nos gustan las ligaduras algo más
711 gruesas. ¿Es posible? La ligadura es, ciertamente, un objeto de
712 presentación, así que la cuestión es @q{¿Hay una propiedad
713 perteneciente a las ligaduras de expresión que controle su
714 grosor?} Para responder a esta pregunta debemos mirar el manual
715 de Referencia de Funcionamiento Interno, abreviadamente
716 RFI@footnote{@strong{IR} (Internals Reference) en inglés}.
718 El RFI de la versión de LilyPond que está usando se puede
719 encontrar en la página web de LilyPond en
720 @uref{http://lilypond.org}. Vaya a la página de la documentación
721 y siga el enlace Manual de Referencia de Funcionamiento Interno
722 (RFI). Para nuestros propósitos pedagógicos sería mejor que
723 utilizase la versión en HTML, no la @q{en una sola página} ni el
724 PDF. Para que los siguientes párrafos tengan algún sentido deberá
725 consultarlo realmente al tiempo que lee.
727 @c Link names in English as those pages are not yet translated. FV
728 Bajo el encabezamiento @strong{Top} podrá ver cinco enlaces.
729 Seleccione el enlace @emph{Backend}, que es donde se encuentra la
730 información sobre los objetos de presentación. Una vez allí, bajo
731 el encabezamiento @strong{Backend}, siga el enlace @emph{All
732 layout objects}. La página que aparece relaciona todos los
733 objetos de presentación que se usan en su versión de LilyPond, en
734 orden alfabético. Siga el enlace Slur (ligadura de expresión), y
735 aparecerán relacionadas las propiedades de las ligaduras de
738 Una forma alternativa de encontrar esta página es a partir de la
739 Referencia de la Notación. En una de las páginas que tratan de
740 las ligaduras de expresión podrá encontrar un enlace al manual de
741 referencia del funcionamiento interno. Este enlace le llevará
742 directamente a esta página, aunque si tiene una idea del nombre
743 del objeto de presentación que pretende trucar, le resultará más
744 fácil ir directamente al RFI y buscar allí.
746 Esta página sobre las ligaduras de expresión dentro del manual RFI
747 nos dice en primer lugar que los objetos Slur se crean por el
748 grabador Slur_engraver. A continuación relaciona los ajustes
749 estándar. Navegue por ellos buscando una propiedad que pudiera
750 controlar el grosor de las ligaduras, y encontrará
753 @code{thickness} (number)
755 Line thickness, generally measured in @code{line-thickness}
758 Esto promete ser una buena opción para cambiar el grosor. Nos
759 dice que el valor de @code{thickness} es un simple @emph{número},
760 que el valor predeterminado es 1.2, y que las unidades están
761 dentro de otra propiedad llamada @code{line-thickness}.
763 Como dijimos con anterioridad, existen entre pocas y ninguna
764 explicación en el RFI, pero ya tenemos información suficiente para
765 probar a cambiar el grosor de la ligadura. Vemos que el nombre
766 del objeto de presentación es @code{Slur}, que el nombre de la
767 propiedad que debemos cambiar es @code{thickness} y que el nuevo
768 valor debe ser un número algo más grande que 1.2 si queremos hacer
769 las ligaduras más gruesas.
771 Ahora podemos construir la instrucción de sobreescritura
772 @code{\override} simplemente mediante la sustitución de los
773 valores que hemos encontrado para los nombres, omitiendo el
774 contexto. Usaremos un valor muy grande para el grosor al
775 principio, para estar seguros de que la instrucción está
776 funcionando. Obtenemos lo siguiente:
779 \override Slur.thickness = #5.0
782 ¡No olvide el @code{#'} antes del nombre de la propiedad
783 y@tie{}@code{#} antes del valor nuevo!
785 La pregunta final es @q{¿Dónde se debe colocar esta instrucción?}
786 Aunque nos falta seguridad y estamos todavía aprendiendo, la mejor
787 respuesta es: @q{Dentro de la música, antes de la primera ligadura
788 y cerca de ella.} Hagámoslo así:
790 @cindex Slur, ejemplo de sobreescritura
791 @cindex thickness, propiedad, ejemplo
793 @lilypond[quote,verbatim]
798 % Increase thickness of all following slurs from 1.2 to 5.0
799 \override Slur.thickness = #5.0
800 r4 bes'8 bes[( g]) g |
801 g8[( es]) es d[( f]) as |
805 The man who | feels love's sweet e -- | mo -- tion
811 y podemos ver que la ligadura, es sin duda, más pesada.
813 Así pues, ésta es la forma básica de construir instrucciones
814 @code{\override} o de sobreescritura. Existen unas cuantas
815 complicaciones más con las que nos encontraremos en secciones
816 posteriores, pero ahora conoce todos los principios esenciales que
817 necesita para hacerlo por sí mismo (aunque aún necesita algo de
818 práctica). La cual vendrá proporcionada por los ejemplos que
819 vienen a continuación.
821 @subsubsubheading Búsqueda del contexto
823 @cindex contexto, encontrar
824 @cindex contexto, buscar el, correcto
826 Pero en primer lugar ¿qué habría pasado si hubiésemos tenido que
827 especificar el contexto? ¿Cuál sería? Podemos suponer que las
828 ligaduras están en el contexto de Voz, por estar claramente
829 asociados de manera estrecha con las líneas individuales de
830 música, pero ¿podemos estar seguros? Para averiguarlo, vayamos de
831 nuevo al inicio de la página del RFI que describe las ligaduras
832 (Slur), donde dice @q{Slur objects are created by: Slur engraver}
833 («Los objetos de ligadura de expresión se crean por: el grabador
834 Slur»). Así pues, las ligaduras de expresión se crean en
835 cualquier contexto en el que se encuentre el grabador
836 @code{Slur_engraver}. Siga el enlace a la página del grabador
837 @code{Slur_engraver}. Al final del todo, dice que el grabador
838 @code{Slur_engraver} es parte de siete contextos de voz, incluido
839 el contexto de voz estándar, @code{Voice}, por lo que nuestra
840 suposición era acertada. Y a causa de que @code{Voice} es uno de
841 los contextos de más bajo nivel que se encuentra implícito sin
842 ambigüedad por el hecho de que estamos escribiendo notas, podemos
843 omitirlo en este lugar concreto.
845 @subsubsubheading Sobreescritura por una sola vez
847 @cindex sobreescritura por una sola vez
848 @cindex once override
852 Como puede ver, @emph{todas} las ligaduras son más gruesas en el
853 último ejemplo. Pero ¿y si quisiéramos que solamente la primera
854 ligadura fuese más gruesa? Esto se consigue con la instrucción o
855 prefijo @code{\once}. Colocado inmediatamente antes de la
856 instrucción @code{\override} ocasiona que solamente cambie la
857 ligadura que comienza en la nota @strong{inmediata siguiente}. Si
858 la nota inmediata siguiente no da inicio a una ligadura, la
859 instrucción no tiene ningún efecto en absoluto: no se recuerda
860 hasta que se encuentre alguna ligadura, sino que simplemente se
861 ignora. Así pues, la instrucción que lleva @code{\once} se debe
862 reposicionar de la forma siguiente:
864 @cindex Slur, ejemplo de sobreescritura
865 @cindex thickness, propiedad, ejemplo
867 @lilypond[quote,verbatim]
873 % Increase thickness of immediately following slur only
874 \once \override Slur.thickness = #5.0
876 g8[( es]) es d[( f]) as |
880 The man who | feels love's sweet e -- | mo -- tion
886 Hemos hecho que ahora solamente la primera ligadura sea más
889 La instrucción o prefijo @code{\once} también se puede usar antes
890 de la instrucción @code{\set}.
892 @subsubsubheading Recuperación del ajuste
895 @cindex predeterminadas, recuperar las propiedades
899 Finalmente ¿y si quisiéramos que solamente las dos primeras
900 ligaduras fuesen más gruesas? En fin; podríamos usar dos
901 instrucciones, cada una de ellas precedida por el prefijo
902 @code{\once}, situadas inmediatamente antes de cada una de las
903 notas en que comienzan las ligaduras:
905 @cindex Slur, ejemplo de sobreescritura
906 @cindex thickness, propiedad, ejemplo
908 @lilypond[quote,verbatim]
914 % Increase thickness of immediately following slur only
915 \once \override Slur.thickness = #5.0
917 % Increase thickness of immediately following slur only
918 \once \override Slur.thickness = #5.0
919 g8[( es]) es d[( f]) as |
923 The man who | feels love's sweet e -- | mo -- tion
929 o podríamos omitir la instrucción prefija @code{\once} y utilizar
930 la instrucción @code{\revert} (restablecer) para devolver la
931 propiedad del grosor, @code{thickness}, a su valor predeterminado
932 después de la segunda ligadura:
934 @cindex Slur, ejemplo de sobreescritura
935 @cindex thickness, propiedad, ejemplo
937 @lilypond[quote,verbatim]
943 % Increase thickness of all following slurs from 1.2 to 5.0
944 \override Slur.thickness = #5.0
947 % Revert thickness of all following slurs to default of 1.2
948 \revert Slur.thickness
953 The man who | feels love's sweet e -- | mo -- tion
959 la instrucción @code{\revert} se puede utilizar para devolver
960 cualquier propiedad que se haya cambiado con @code{\override} a su
961 valor predeterminado. Puede utilizar el método que mejor se
962 adapte a aquello que quiere hacer.
964 Así finaliza nuestra introducción al manual de RFI, y el método
965 básico de trucaje. A continuación, en las últimas secciones de
966 este capítulo encontrará varios ejemplos, en parte para
967 introducirle en algunas de las posibilidades adicionales del
968 manual RFI, y en parte para proporcionarle más práctica en cómo
969 extraer información de él. Estos ejemplos irán conteniendo cada
970 vez menos palabras de guía y explicación.
972 @node Propiedades de los interfaces
973 @subsection Propiedades de los interfaces
974 @translationof Properties found in interfaces
977 @cindex propiedades de los interfaces
978 @cindex interfaces, propiedades
980 Suponga ahora que queremos imprimir la letra de la canción en
981 cursiva. ¿Qué forma de instrucción @code{\override} necesitamos
982 para hacerlo? En primer lugar miramos en la página del RFI que
983 relaciona todos los objetos, @q{All layout objects}, como antes, y
984 buscamos un objeto que pueda controlar la letra de la canción.
985 Encontramos @code{LyricText}, que parece adecuado. Al seguir este
986 enlace se presentan las propiedades ajustables para el texto de la
987 letra. Estos incluyen @code{font-series} y @code{font-size}, pero
988 nada que pudiera aplicar una forma cursiva. Esto es porque la
989 propiedad de la forma es común a todos los objetos de fuente
990 tipográfica, y por tanto, en vez de incluirlo en cada uno de los
991 objetos de presentación, se agrupa junto con otras propiedades
992 comunes similares y se deposita en un @strong{Interface}, el
993 interface de las fuentes tipográficas @code{font-interface}.
995 Por tanto, ahora necesitamos aprender cómo encontrar las
996 propiedades de los interfaces, y descubrir qué objetos usan estas
997 propiedades de interface.
999 Mire de nuevo la página del RFI que describe a LyricText. Al
1000 final de la página hay una lista de enlaces a los interfaces que
1001 LyricText contempla. La lista tiene siete elementos, entre ellos
1002 @code{font-interface}. Al seguir este enlace llegamos a las
1003 propiedades asociadas con este interface, que también son
1004 propiedades de todos los objetos que lo llevan, entre ellos
1007 Ahora vemos todas las propiedades ajustables por el usuario que
1008 controlan las tipografías, entre ellas @code{font-shape(symbol)},
1009 donde @code{symbol} se puede establecer a @code{upright} (recta),
1010 @code{italics} (cursiva)o @code{caps} (mayúsculas pequeñas).
1012 Observará que @code{font-series} y @code{font-size} también se
1013 encuentran aquí relacionadas. Esto inmediatamente hace que surja
1014 la pregunta: ¿Por qué están las propiedades comunes de tipografía
1015 @code{font-series} y @code{font-size} relacionadas bajo
1016 @code{LyricText} así como bajo el interface @code{font-interface}
1017 pero @code{font-shape} no lo está? La respuesta es que
1018 @code{font-series} y @code{font-size} se cambian a partir de sus
1019 valores predeterminados globales cuando se crea un objeto
1020 @code{LyricText}, pero @code{font-shape} no lo hace. Entonces los
1021 elementos de la lista @code{LyricText} le dicen los valores para
1022 esas dos propiedades que son de aplicación para @code{LyricText}.
1023 Otros objetos que contemplan @code{font-interface} establecerán
1024 dichas propiedades de forma diferente cuando se crean.
1026 Veamos si ahora podemos construir la instrucción @code{\override}
1027 para cambiar la letra a cursiva. El objeto es @code{LyricText},
1028 la propiedad es @code{font-shape} y el valor es @code{italic}.
1029 Igual que antes, omitiremos el contexto.
1031 Como nota aparte, aunque es importante, observe que ciertas
1032 propiedades toman valores que son símbolos, como @code{italic}, y
1033 deben ir precedidos de un apóstrofo, @code{'}. Los símbolos se
1034 leen a continuación internamente por parte de LilyPond. Tenga en
1035 cuenta la diferencia con las cadenas de texto arbitrarias, que
1036 aparecerían como @code{"una cadena de texto"}; para ver más
1037 detalles sobre los símbolos y las cadenas, consulte
1038 @rextend{Tutorial de Scheme}.
1040 Así pues, la instrucción @code{\override} necesaria para imprimir
1041 la letra en cursiva, es:
1044 \override LyricText.font-shape = #'italic
1048 Esto debe escribirse justo delante de la letra a la que debe
1049 afectar, de esta forma:
1051 @cindex font-shape, propiedad, ejemplo
1052 @cindex italic, ejemplo
1053 @cindex LyricText, ejemplo de sobreescritura
1054 @cindex @code{\addlyrics}, ejemplo
1056 @lilypond[quote,ragged-right,verbatim]
1061 r4 bes'8 bes[( g]) g |
1062 g8[( es]) es d[( f]) as |
1066 \override LyricText.font-shape = #'italic
1067 The man who | feels love's sweet e -- | mo -- tion
1073 y toda la letra se imprime en cursiva.
1075 @warning{Dentro de la letra, deje siempre espacios entre la sílaba
1076 final y la llave de cierre.}
1080 Manual de Extensión:
1081 @rextend{Tutorial de Scheme}.
1084 @node Tipos de propiedades
1085 @subsection Tipos de propiedades
1086 @translationof Types of properties
1088 @cindex propiedades, tipos de
1090 Hasta ahora hemos visto dos tipos de propiedad:: @code{número} y
1091 @code{símbolo}. Para que sea válido, el valor que se da a una
1092 propiedad debe ser del tipo correcto y obedecer las reglas de
1093 dicho tipo. El tipo de la propiedad se muestra siempre entre
1094 paréntesis después del nombre de la propiedad en el RFI. He aquí
1095 una lista de los tipos que podrá necesitar, junto con las reglas
1096 de dicho tipo, y algunos ejemplos. Debe escribir siempre un
1097 símbolo de almohadilla, @code{#}, por supuesto, delante de estos
1098 valores cuando se introducen en la instrucción @code{\override},
1099 incluso si el propio valor ya comienza por@tie{}@code{#}.
1100 Solamente ofrecemos aquí ejemplos para constantes; si quiere
1101 calcular un valor usando Scheme, consulte @rextend{Cálculos en
1104 @multitable @columnfractions .2 .45 .35
1105 @headitem Tipo de propiedad
1109 @tab Verdadero o Falso, representado por #t o #f
1110 @tab @code{#t}, @code{#f}
1111 @item Dimensión (en espacios de pentagrama)
1112 @tab Un número decimal (en unidades de espacios de pentagrama)
1113 @tab @code{2.5}, @code{0.34}
1115 @tab Una constante válida de dirección o su equivalente numérico
1116 (@code{0} o @code{CENTER} indican una dirección neutra)
1117 @tab @code{LEFT}, @code{CENTER}, @code{UP},
1118 @code{1}, @w{@code{-1}}
1120 @tab Un número entero positivo
1121 @tab @code{3}, @code{-1}
1123 @tab Una secuencia de constantes o símbolos separados por espacios,
1124 encerrado entre paréntesis
1125 y precedido de un apóstrofo o comilla simple
1126 @tab @code{'(left-edge staff-bar)}, @code{'(1)}, @code{'()},
1127 @code{'(1.0 0.25 0.5)}
1129 @tab Cualquier elemento válido de marcado de texto
1130 @tab @code{\markup @{ \italic "cresc." @}}, @code{"gaita"}
1132 @tab Una fracción de redonda construida con la función make-moment
1133 @tab @code{(ly:make-moment 1/4)},
1134 @code{(ly:make-moment 3/8)}
1136 @tab Cualquier valor positivo o negativo, posiblemente decimal
1137 @tab @code{3}, @w{@code{-2.45}}
1138 @item Pareja (de números)
1139 @tab Dos números separados por un @q{espacio . espacio}, encerrado entre paréntesis y precedido de un apóstrofo
1140 @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
1142 @tab Cualquiera del conjunto de símbolos permitidos para esa propiedad, precedido de un apóstrofo
1143 @tab @code{'italic}, @code{'inside}
1145 @tab Un procedimiento o @code{#f} para no producir ninguna acción
1146 @tab @code{bend::print}, @code{ly:text-interface::print},
1150 encerradas entre @code{#(}@dots{}@code{)}.
1151 @tab @code{#(#t #t #f)}
1156 Manual de Extensión:
1157 @rextend{Tutorial de Scheme}.
1160 @node Apariencia de los objetos
1161 @section Apariencia de los objetos
1162 @translationof Appearance of objects
1164 Ahora vamos a poner en práctica lo que hemos aprendido con unos
1165 cuantos ejemplos que muestran cómo se pueden usar los trucos para
1166 cambiar el aspecto de la música impresa.
1169 * Visibilidad y color de los objetos::
1170 * Tamaño de los objetos::
1171 * Longitud y grosor de los objetos::
1174 @node Visibilidad y color de los objetos
1175 @subsection Visibilidad y color de los objetos
1176 @translationof Visibility and color of objects
1178 Dentro de un uso educativo de la música, podríamos desear imprimir
1179 una partitura con ciertos elementos omitidos como ejercicio para
1180 el alumno, a quien se le pide que los complete. A la manera de
1181 ejemplo sencillo, supongamos que el ejercicio es escribir las
1182 líneas divisorias que faltan en un fragmento musical. Pero las
1183 líneas divisorias normalmente se insertan automáticamente. ¿Cómo
1184 hacemos para que no se impriman?
1186 Antes de enredarnos con esto, recordemos que las propiedades de
1187 los objetos se agrupan en lo que hemos llamado @emph{interfaces}
1188 (véase @ref{Propiedades de los interfaces}). Esto es simplemente
1189 agrupar las propiedades que se pueden usar juntas para trucar un
1190 objeto gráfico: si una de ellas se necesita para un objeto,
1191 también las otras. Así, ciertos objetos usan las propiedades de
1192 algunos interfaces, otros usan las de otros interfaces. Los
1193 interfaces que contienen las propiedades que un determinado grob
1194 necesita se encuentran relacionadas en el manual RFI al final de
1195 la página que describe dicho grob, y esas propiedades se pueden
1196 ver mirando dichos interfaces.
1198 Hemos explicado cómo encontrar información sobre los grobs en
1199 @ref{Propiedades de los objetos de presentación}. Usando el mismo
1200 enfoque, vamos al RFI para buscar el objeto de presentación que
1201 imprime las líneas divisorias. A través del enlace @emph{Backend}
1202 y @emph{All layout objects} encontramos que hay un objeto de
1203 presentación llamado @code{BarLine}. Entre sus propiedades se
1204 encuentran dos que controlan la visibilidad:
1205 @code{break-visibility} y @code{stencil}. Las líneas divisorias
1206 también contemplan un número de interfaces, entre ellos el
1207 @code{grob-interface}, donde podemos encontrar las propiedades
1208 @code{transparent} y @code{color}. Todas ellas pueden afectar la
1209 visibilidad de las barras de compás (y, por supuesto, por
1210 extensión, también la de muchos otros objetos de presentación).
1211 Vamos a considerar cada uno de ellos por orden.
1214 * La propiedad stencil (sello)::
1215 * La propiedad break-visibility (visibilidad en el salto)::
1216 * La propiedad transparent (transparente)::
1217 * La propiedad color::
1220 @node La propiedad stencil (sello)
1221 @unnumberedsubsubsec La propiedad @code{stencil} (sello)
1222 @translationof The stencil property
1224 @cindex stencil (sello), propiedad
1226 Esta propiedad controla la apariencia de las barras de compás
1227 mediante la especificación del símbolo (o «glifo») que se debe
1228 imprimir. Igual que como otras muchas propiedades, se puede
1229 establecer de forma que no imprima nada ajustando su valor a
1230 @code{#f}. Vamos a probarlo, como antes, omitiendo el Contexto
1231 implícito, @code{Voice}:
1233 @cindex BarLine, ejemplo de sobreescritura
1234 @cindex stencil, propiedad, ejemplo
1236 @lilypond[quote,ragged-right,verbatim]
1239 \override BarLine.stencil = ##f
1240 c''4 b8 c d16 c d8 |
1241 g,8 a16 b8 c d4 e16 |
1246 Las barras de compás todavía se imprimen. ¿Qué es lo que está
1247 mal? Vuelva al RFI y mire de nuevo la página que ofrece las
1248 propiedades del objeto BarLine. Al principio de la página dice
1249 @qq{Barline objects are created by: Bar_engraver} (los objetos
1250 Barline se crean por el grabador Bar_engraver). Vaya a la página
1251 del grabador @code{Bar_engraver} siguiendo el enlace. Al final da
1252 una lista de contextos en los que el grabador de líneas divisorias
1253 opera. Todos ellos son del tipo @code{Staff}, y así la razón de
1254 que la instrucción @code{\override} no funcionara como
1255 esperábamos, es porque @code{Barline} no se encuentra en el
1256 contexto predeterminado @code{Voice}. Si el contexto no se
1257 especifica correctamente, la instrucción simplemente no funciona.
1258 No se produce ningún mensaje de error, y no se registra nada en el
1259 archivo log de registro. Vamos a intentar corregirlo escribiendo
1260 el contexto correcto:
1262 @cindex BarLine, ejemplo de sobreescritura
1263 @cindex stencil, propiedad, ejemplo
1265 @lilypond[quote,ragged-right,verbatim]
1268 \override Staff.BarLine.stencil = ##f
1269 c''4 b8 c d16 c d8 |
1270 g,8 a16 b8 c d4 e16 |
1275 Ahora las barras de compás han desaparecido. La operación de
1276 fijar la propiedad @code{stencil} al valor @code{#f} es tan
1277 frecuente que existe una abreviatura para ella, llamada
1278 @code{\omit} (omitir):
1281 @lilypond[quote,ragged-right,verbatim]
1285 c''4 b8 c d16 c d8 |
1286 g,8 a16 b8 c d4 e16 |
1291 Sin embargo, observe que el establecimiento de la propiedad
1292 @code{stencil} al valor @code{#f} produce errores cuando las se
1293 requieren las dimensiones del objeto para un procesamiento
1294 correcto. Por ejemplo, se generan errores si la propiedad
1295 @code{stencil} del objeto @code{NoteHead} se establece al valor
1296 @code{#f}. Si es el caso, podemos en vez de ello utilizar la
1297 función @code{point-stencil}, que establece el sello a un objeto
1300 @lilypond[quote,verbatim]
1303 \once \override NoteHead.stencil = #point-stencil
1308 @node La propiedad break-visibility (visibilidad en el salto)
1309 @unnumberedsubsubsec The @code{break-visibility} (visibilidad en el salto)
1310 @translationof The break-visibility property
1312 @cindex break-visibility, propiedad
1314 Vemos en las propiedades de @code{BarLine} que aparecen en el RFI
1315 que la propiedad @code{break-visibility} requiere un vector de
1316 tres valores booleanos. Controlan respectivamente si las barras
1317 de compás se imprimen al final de una línea, en mitad de una
1318 línea, y al principio de las líneas. Para nuestro ejemplo,
1319 queremos que todas las barras de compás se supriman, por lo que el
1320 valor que necesitamos es @code{#(#f #f #f)} (disponible también
1321 bajo el nombre @code{all-invisible}, todas invisibles). Vamos a
1322 probarlo, recordando incluir el contexto de @code{Staff}. Observe
1323 también que al escribir este valor tenemos @code{##} antes del
1324 paréntesis de apertura. Se necesita un @code{#} como parte de la
1325 sintaxis de las contantes vectoriales, y el primer símbolo de
1326 almohadilla@tie{}@code{#} se necesita, como siempre, para preceder
1327 el valor en sí dentro de la instrucción @code{\override}.
1329 @cindex BarLine, ejemplo de sobreescritura
1330 @cindex break-visibility, propiedad, ejemplo
1332 @lilypond[quote,ragged-right,verbatim]
1335 \override Staff.BarLine.break-visibility = ##(#f #f #f)
1336 c''4 b8 c d16 c d8 |
1337 g,8 a16 b8 c d4 e16 |
1342 Y podemos ver que esto también quita todas las líneas divisorias.
1344 @node La propiedad transparent (transparente)
1345 @unnumberedsubsubsec La propiedad @code{transparent} (transparente)
1346 @translationof The transparent property
1348 @cindex transparent, propiedad
1349 @cindex transparencia
1351 En la relación de propiedades que se especifican en la página del
1352 @code{grob-interface} del RFI podemos ver que la propiedad
1353 @code{transparent} es un valor booleano. Esto se debe establecer
1354 a @code{#t} para hacer que el grob sea transparente. En el
1355 ejemplo siguiente vamos a hacer que la indicación de compás, y no
1356 las líneas divisorias, sea transparente. Para hacerlo tenemos que
1357 buscar el nombre del grob de la indicación de compás. Volviendo a
1358 la página @q{All layout objects} del RFI, buscamos las propiedades
1359 del objeto de presentación @code{TimeSignature}. Se produce por
1360 parte del grabador @code{Time_signature_engraver} que como puede
1361 comprobar vive dentro del contexto de @code{Staff} y también
1362 contempla el interface @code{grob-interface}. Así pues, la
1363 instrucción que hace transparente a la indicación de compás es:
1365 @cindex TimeSignature, ejemplo de sobreescritura
1366 @cindex transparent, propiedad, ejemplo
1368 @lilypond[quote,ragged-right,verbatim]
1371 \override Staff.TimeSignature.transparent = ##t
1372 c''4 b8 c d16 c d8 |
1373 g,8 a16 b8 c d4 e16 |
1379 Una vez más, el establecimiento de la propiedad @code{transparent}
1380 es una operación bastante frecuente, de modo que tenemos una
1381 abreviatura llamada @code{\hide} (ocultar):
1384 @lilypond[quote,ragged-right,verbatim]
1387 \hide Staff.TimeSignature
1388 c''4 b8 c d16 c d8 |
1389 g,8 a16 b8 c d4 e16 |
1395 En ninguno de los dos casos aparece ya la indicación de compás,
1396 pero esta instrucción deja una separación en el lugar donde antes
1397 estaba la indicación de compás. Quizá esto es lo que queremos
1398 para un ejercicio en que el alumno deba escribirlo, pero en otras
1399 circunstancias esta separación podría no ser deseable. En vez de
1400 eso, para quitarla, el stencil o «sello» de la indicación de
1401 compás se debe establecer al valor @code{#f}:
1403 @cindex TimeSignature, ejemplo de sobreescritura
1404 @cindex stencil, propiedad, ejemplo
1406 @lilypond[quote,ragged-right,verbatim]
1409 \omit Staff.TimeSignature
1410 c''4 b8 c d16 c d8 |
1411 g,8 a16 b8 c d4 e16 |
1417 y la diferencia es obvia: al establecer el sello al valor
1418 @code{#f} (posiblemente por medio de @code{\omit}) quitamos el
1419 objeto por completo; al hacer el objeto @code{transparent} (lo que
1420 puede hacerse utilizando @code{\hide}) lo dejamos donde está, pero
1421 lo hacemos invisible.
1423 @node La propiedad color
1424 @unnumberedsubsubsec La propiedad @code{color}
1425 @translationof The color property
1427 @cindex color, propiedad
1429 Para finalizar, intentemos hacer invisibles las barras de compás
1430 pintándolas de color blanco (hay un problema relacionado, que
1431 consiste en que la línea divisoria blanca puede tapar o no tapar
1432 las líneas del pentagrama a las que cruza. Podrá observar en
1433 algunos de los ejemplos que aparecen a continuación, que esto
1434 sucede de forma impredecible. Los detalles sobre por qué esto
1435 ocurre así, y cómo controlarlo, se estudian en @ruser{Pintar los
1436 objetos de blanco}; de momento estamos estudiando el color, por lo
1437 que le rogamos que acepte esta limitación por ahora).
1439 El interface @code{grob-interface} especifica que la propiedad del
1440 color es una lista, pero no hay ninguna explicación sobre lo que
1441 debe ir en esa lista. La lista que requiere es realmente una
1442 lista de valores en unidades internas, pero para evitar tener que
1443 saber cuáles son, se ofrecen varias vías para la especificación de
1444 los colores. La primera forma es utilizar uno de los colores
1445 @q{normales} que están relacionados en la primera tabla de la
1446 @ruser{Lista de colores}. Para poner las líneas divisorias de
1447 color blanco, escribimos:
1449 @cindex BarLine, ejemplo de sobreescritura
1450 @cindex color, propiedad, ejemplo
1452 @lilypond[quote,ragged-right,verbatim]
1455 \override Staff.BarLine.color = #white
1456 c''4 b8 c d16 c d8 |
1457 g,8 a16 b8 c d4 e16 |
1463 y de nuevo podemos comprobar que las barras de compás no son
1464 visibles. Observe que @emph{white} no viene precedido de un
1465 apóstrofo: no es un símbolo, sino una @emph{variable}. Cuando se
1466 evalúa, proporciona la lista de valores internos que se requieren
1467 para establecer el color a blanco. Los otros colores de la lista
1468 normal también son variables. Para convencerse de que esto
1469 funciona, quizá quiera cambiar el color a una de las otras
1470 variables de la lista.
1472 @cindex colores de X11
1473 @cindex X11, colores de
1477 La segunda forma de cambiar el color es utilizar la lista de
1478 nombres de colores de X11 que aparecen en la segunda lista de
1479 @ruser{Lista de colores}. De todas formas, se hacen corresponder
1480 a los valores reales por medio de la función @code{x11-color} que
1481 convierte los símbolos de color de X11 en la lista de valores
1482 internos como éstos:
1484 @cindex BarLine, ejemplo de sobreescritura
1485 @cindex color, propiedad, ejemplo
1487 @lilypond[quote,ragged-right,verbatim]
1490 \override Staff.BarLine.color = #(x11-color 'white)
1491 c''4 b8 c d16 c d8 |
1492 g,8 a16 b8 c d4 e16 |
1498 Observe que en este caso la función @code{x11-color} toma un
1499 símbolo como argumento, así que el símbolo debe ir precedido de un
1500 apóstrofo para evitar que resulte evaluado como si fuera una
1501 variable, y toda la llamada a la función se debe encerrar entre
1504 @cindex rgb, colores
1509 Aún existe otra función, que convierte valores RGB en colores
1510 internos: la función @code{rgb-color}. Toma tres argumentos que
1511 dan las intensidades de rojo, verde y azul. Cada uno de ellos
1512 puede tomar valores entre 0 y 1. Por lo tanto, para establecer el
1513 color a rojo el valor debe ser @code{(rgb-color 1 0 0)} y para
1514 blanco debe ser @code{(rgb-color 1 1 1)}:
1516 @cindex BarLine, ejemplo de sobreescritura
1517 @cindex color, propiedad, ejemplo
1519 @lilypond[quote,ragged-right,verbatim]
1522 \override Staff.BarLine.color = #(rgb-color 1 1 1)
1523 c''4 b8 c d16 c d8 |
1524 g,8 a16 b8 c d4 e16 |
1529 Finalmente, existe también una escala de grises como parte del
1530 conjunto de colores de X11. Varían desde el negro, @code{'grey0},
1531 hasta el blanco, @code{'grey100}, en pasos de 1. Vamos a ilustrar
1532 esto estableciendo todos los objetos de presentación de nuestro
1533 ejemplo a varias gradaciones de gris:
1535 @cindex StaffSymbol, ejemplo de sobreescritura
1536 @cindex TimeSignature, ejemplo de sobreescritura
1537 @cindex Clef, ejemplo de sobreescritura
1538 @cindex NoteHead, ejemplo de sobreescritura
1539 @cindex Stem, ejemplo de sobreescritura
1540 @cindex BarLine, ejemplo de sobreescritura
1541 @cindex color property, ejemplo
1542 @cindex x11-color, ejemplo de utilización
1544 @lilypond[quote,ragged-right,verbatim]
1547 \override Staff.StaffSymbol.color = #(x11-color 'grey30)
1548 \override Staff.TimeSignature.color = #(x11-color 'grey60)
1549 \override Staff.Clef.color = #(x11-color 'grey60)
1550 \override Voice.NoteHead.color = #(x11-color 'grey85)
1551 \override Voice.Stem.color = #(x11-color 'grey85)
1552 \override Staff.BarLine.color = #(x11-color 'grey10)
1553 c''4 b8 c d16 c d8 |
1554 g,8 a16 b8 c d4 e16 |
1560 Observe los contextos asociados con cada uno de los objetos de
1561 presentación. Es importante que estén correctamente escritos, o
1562 las instrucciones ¡no funcionarán! Recuerde que el contexto es
1563 aquel en que se encuentra el grabador correspondiente. El
1564 contesto predeterminado para los grabadores puede encontrarse
1565 empezando por el objeto de presentación, de ahí al grabador que lo
1566 produce, y en la página del grabador del RFI aparece en qué
1567 contexto se puede encontrar normalmente el grabador.
1570 @node Tamaño de los objetos
1571 @subsection Tamaño de los objetos
1572 @translationof Size of objects
1574 @cindex cambiar el tamaño de los objetos
1575 @cindex tamaño de los objetos
1576 @cindex objetos, tamaño de
1577 @cindex objetos, cambiar el tamaño de
1579 Empezaremos examinando de nuevo un ejemplo anterior (véase
1580 @ref{Anidado de expresiones musicales}) que nos mostraba cómo
1581 introducir un pentagrama temporal, como en un @rglos{ossia}.
1583 @cindex alignAboveContext, propiedad, ejemplo
1584 @cindex @code{\with}, ejemplo
1586 @lilypond[quote,ragged-right,verbatim]
1587 \new Staff ="main" {
1594 alignAboveContext = #"main" }
1602 Los fragmentos de Ossia se escriben normalmente sin clave ni
1603 compás, y por lo normal se imprimen más pequeños que el pentagrama
1604 principal. Ya sabemos cómo quitar la clave y el compás:
1605 simplemente establecemos el sello de cada uno de ellos a
1606 @code{#f}, como sigue:
1608 @cindex alignAboveContext, propiedad, ejemplo
1609 @cindex @code{\with}, ejemplo
1611 @cindex Clef, ejemplo de sobreescritura
1612 @cindex TimeSignature, ejemplo de sobreescritura
1614 @lilypond[quote,ragged-right,verbatim]
1615 \new Staff ="main" {
1622 alignAboveContext = #"main"
1626 \omit Staff.TimeSignature
1636 donde el par de llaves adicional después de la cláusula
1637 @code{\with} es necesario para asegurar que la sobreescritura
1638 encerrada y la música se aplican al pentagrama de ossia.
1640 Pero ¿cuál es la diferencia entre modificar el contexto de
1641 pentagrama usando @code{\with} y modificar los sellos de clave y
1642 de compás con \override, o en este caso @code{\omit}? La
1643 diferencia principal es que los cambios que se realizan en una
1644 cláusula @code{\with} se hacen en el momento en que se crea el
1645 contexto, y permanecen activos como valores
1646 @strong{predeterminados} durante toda la duración de dicho
1647 contexto, mientras que las instrucciones @code{\set} o
1648 @code{\override} incluidas dentro de la música son dinámicas:
1649 hacen cambios sincronizados con un punto concreto de la música.
1650 Si los cambios se deshacen o se devuelven mediante @code{\unset} o
1651 @code{\revert} volverán a su valor predeterminado que será el
1652 establecido en la cláusula @code{\with}, o si no se ha establecido
1653 ninguno en este lugar, los valores predeterminados normales.
1655 Ciertas propiedades de contexto se pueden modificar solamente
1656 dentro de cláusulas @code{\with}. Son aquellas propiedades que no
1657 se pueden cambiar después de que el contexto se ha creado.
1658 @code{alignAboveContext} y su compañero, @code{alignBelowContext},
1659 son dos de tales propiedades: una vez que el pentagrama se ha
1660 creado, su alineación está decidida y no tendría sentido intentar
1661 cambiarla más tarde.
1663 Los valores predeterminados de las propiedades de los objetos de
1664 presentación también se pueden establecer dentro de cláusulas
1665 @code{\with}. Simplemente utilice la instrucción @code{\override}
1666 normal dejando aparte el nombre del contexto, ya que está definido
1667 sin ambigüedad como el contexto que la cláusula @code{\with} está
1668 modificando. De hecho, se producirá un error si se especifica un
1669 contexto en este lugar.
1671 Así pues, podemos reemplazar el ejemplo anterior con
1673 @cindex alignAboveContext, propiedad, ejemplo
1674 @cindex @code{\with}, example
1675 @cindex Clef, ejemplo de sobreescritura
1676 @cindex TimeSignature, ejemplo de sobreescritura
1678 @lilypond[quote,ragged-right,verbatim]
1679 \new Staff ="main" {
1686 alignAboveContext = #"main"
1687 % Don't print clefs in this staff
1688 \override Clef.stencil = ##f
1689 % Don't print time signatures in this staff
1690 \override TimeSignature.stencil = ##f
1699 Resulta que también podemos emplear aquí las abreviaturas
1700 @code{\hide} y @code{\omit} para fijar la propiedad
1701 @code{transparent} y borrar el @code{stencil}, lo que conduce al
1702 resultado siguiente:
1704 @lilypond[quote,ragged-right,verbatim]
1705 \new Staff ="main" {
1712 alignAboveContext = #"main"
1713 % Don't print clefs in this staff
1715 % Don't print time signatures in this staff
1725 Finalmente llegamos a la forma de cambiar el tamaño de los objetos
1728 Ciertos objetos de presentación se crean como glifos sacados de
1729 una fuente tipográfica. Entre ellos se encuentran las cabezas,
1730 alteraciones, elementos de marcado, claves, indicaciones de
1731 compás, indicaciones dinámicas y la letra de las canciones. Su
1732 tamaño se cambia mediante la modificación de la propiedad
1733 @code{font-size}, como veremos en breve. Otros objetos de
1734 presentación como ligaduras de unión y de expresión (en general,
1735 objetos de extensión) se trazan individualmente, por lo que no hay
1736 un tamaño de tipografía @code{font-size} asociado a ellos. Estos
1737 objetos generalmente derivan su tamaño de los objetos a los que
1738 están adosados, y por ello normalmente no hay necesidad de
1739 cambiarles el tamaño manualmente. Aún otras propiedades como la
1740 longitud de las plicas y las barras de compás, el grosor de las
1741 barras de corchea y otras líneas, y la separación de las líneas
1742 del pentagrama se deben modificar de otras formas especiales.
1744 Volviendo al ejemplo del ossia, vamos a cambiar en primer lugar el
1745 tamaño de la tipografía. Podemos hacerlo de dos formas. Podemos
1746 cambiar el tamaño de las tipografías de cada uno de los tipos de
1747 objeto como las cabezas (@code{NoteHead}s) con instrucciones como
1750 \override NoteHead.font-size = #-2
1753 o podemos cambiar el tamaño de todas las tipografías estableciendo
1754 una propiedad especial, @code{fontSize}, utilizando @code{\set}, o
1755 mediante su inclusión dentro de una cláusula @code{\with} (pero
1756 sin el @code{\set}).
1762 Los dos enunciados producirían una reducción del tamaño de la
1763 tipografía en dos pasos a partir de su valor previo, donde cada
1764 paso reduce o aumenta el tamaño aproximadamente en un 12%.
1766 Vamos a probarlo en nuestro ejemplo del ossia:
1768 @cindex alignAboveContext, propiedad, ejemplo
1769 @cindex @code{\with}, ejemplo
1770 @cindex Clef, ejemplo de sobreescritura
1771 @cindex TimeSignature, ejemplo de sobreescritura
1772 @cindex fontSize, propiedad, ejemplo
1774 @lilypond[quote,ragged-right,verbatim]
1775 \new Staff ="main" {
1782 alignAboveContext = #"main"
1785 % Reduce all font sizes by ~24%
1795 Aún no está demasiado bien. Las cabezas y los corchetes de las
1796 notas son más pequeños, pero las plicas son demasiado largas en
1797 proporción, y las líneas del pentagrama están demasiado separadas
1798 entre sí. Se debe reducir su escala en proporción a la reducción
1799 de la tipografía. El siguiente apartado trata sobre cómo se hace
1802 @node Longitud y grosor de los objetos
1803 @subsection Longitud y grosor de los objetos
1804 @translationof Length and thickness of objects
1810 @cindex tamaño, cambiar
1811 @cindex plica, cambiar la longitud
1812 @cindex pentagrama, cambiar la separación de las líneas
1814 Las distancias y longitudes en LilyPond se miden generalmente en
1815 espacios de pentagrama, la distancia entre líneas adyacentes de la
1816 pauta (o de manera ocasional medios espacios), mientras que la
1817 mayoría de las propiedades de @code{thickness} (grosor) se miden
1818 en unidades de una propiedad interna llamada
1819 @code{line-thickness.} Por ejemplo, de forma predeterminada, a
1820 las líneas de los reguladores se les da un grosor de 1 unidad de
1821 @code{line-thickness}, mientras que el @code{thickness} de una
1822 plica es 1.3. Observe sin embargo que ciertas propiedades de
1823 grosor son diferentes; por ejemplo, el grosor de las barras de
1824 corchea se controla por medio del valor de @code{beam-thickness},
1825 que se mide en espacios de pentagrama.
1827 Entonces ¿cómo se tienen que escalar las longitudes en proporción
1828 al tamaño de la tipografía? Se puede hacer con la ayuda de una
1829 función especial que se llama @code{magstep}, pensada
1830 especialmente para este propósito. Toma un argumento, el cambio
1831 de tamaño de la tipografía (#-2 en nuestro ejemplo) y devuelve un
1832 factor de escalado adecuado para reducir otros objetos en la misma
1833 proporción. Se usa de la siguiente forma:
1835 @cindex alignAboveContext, propiedad, ejemplo
1836 @cindex @code{\with}, ejemplo
1837 @cindex Clef, ejemplo de sobreescritura
1838 @cindex TimeSignature, ejemplo de sobreescritura
1839 @cindex fontSize, propiedad, ejemplo
1840 @cindex StaffSymbol, ejemplo de sobreescritura
1841 @cindex magstep, función, ejemplo de utilización
1842 @cindex staff-space, propiedad, ejemplo
1843 @cindex stencil, propiedad, ejemplo
1845 @lilypond[quote,ragged-right,verbatim]
1846 \new Staff ="main" {
1853 alignAboveContext = #"main"
1857 % Reduce stem length and line spacing to match
1858 \override StaffSymbol.staff-space = #(magstep -2)
1868 Puesto que la longitud de las plicas y muchas otras propiedades
1869 relacionadas con la longitudes calculan siempre con relación al
1870 valor de la propiedad @code{staff-space}, su longitud también ve
1871 reducida su escala automáticamente. Observe que esto afecta
1872 solamente a la escala vertical del ossia: la escala horizontal se
1873 determina por medio de la disposición de la música principal con
1874 el objeto de mantenerse en sincronía con ella, de forma que no
1875 resulte afectada por ninguno de estos cambios de tamaño. Por
1876 supuesto, si la escala de toda la música principal se cambiase de
1877 esta forma, entonces el espaciado horizontal se vería afectado.
1878 Trataremos de esto más tarde en la sección sobre la disposición.
1880 Esto, en fin, completa la creación de un ossia. Los tamaños y
1881 longitudes del resto de los objetos se pueden modificar de manera
1884 Para cambios de escala pequeños, como en el ejemplo de arriba, el
1885 grosor de las diversas líneas dibujadas como divisorias, barras de
1886 corchea, reguladores, ligaduras, etc, no requieren normalmente
1887 ningún ajuste global. Si el grosor de cualquier objeto de
1888 presentación en particular necesita ajustarse, se puede hacer
1889 mejor mediante la sobreescritura de su propiedad @code{thickness}.
1890 Anteriormente mostramos un ejemplo de cambio de grosor en las
1891 ligaduras, en @ref{Propiedades de los objetos de presentación}.
1892 El grosor de todos los objetos trazados (es decir, aquellos que no
1893 se producen a partir de una tipografía) se pueden cambiar de la
1897 @node Colocación de los objetos
1898 @section Colocación de los objetos
1899 @translationof Placement of objects
1902 * Comportamiento automático::
1903 * Objetos interiores al pentagrama::
1904 * Objetos fuera del pentagrama::
1908 @node Comportamiento automático
1909 @subsection Comportamiento automático
1910 @translationof Automatic behavior
1912 @cindex dentro del pentagrama, objetos
1913 @cindex fuera del pentagrama, objetos
1914 @cindex objetos dentro del pentagrama
1915 @cindex objetos fuera del pentagrama
1917 Hay ciertos objetos en notación musical que pertenecen al
1918 pentagrama y otros cuyo lugar se sitúa fuera del pentagrama.
1919 Reciben el nombre de objetos dentro-del-pentagrama y objetos
1920 fuera-del-pentagrama, respectivamente.
1922 Los objetos dentro-del-pentagrama son los que se sitúan sobre la
1923 pauta: cabezas, plicas, alteraciones, etc. Sus posiciones
1924 normalmente se fijan por la propia música; se posicionan
1925 verticalmente sobre líneas específicas del pentagrama o están
1926 unidos a otros objetos posicionados de esta forma. Las colisiones
1927 entre cabezas, plicas y alteraciones en acordes de notas muy
1928 juntas, normalmente se evitan automáticamente. Hay instrucciones
1929 y sobreescrituras que pueden modificar este comportamiento
1930 automático, como veremos en breve.
1932 Entre los objetos que pertenecen al exterior de la pauta se
1933 encuentran cosas como las marcas de ensayo, las marcas de texto y
1934 las de dinámica. La regla de LilyPond para la colocación vertical
1935 de los objetos fuera-de-pentagrama es colocarlos tan cerca del
1936 pentagrama como sea posible, pero no tan cerca como para que
1937 puedan chocar con algún otro objeto. LilyPond utiliza la
1938 propiedad @code{outside-staff-priority} para determinar el orden
1939 en que se deben situar los objetos, como veremos ahora.
1941 En primer lugar, LilyPond sitúa todos los objetos
1942 dentro-del-pentagrama. Después ordena los objetos
1943 fuera-del-pentagrama de acuerdo con su prioridad
1944 @code{outside-staff-priority}. Los objetos fuera-del-pentagrama
1945 se toman de uno en uno, comenzando por el que tiene la prioridad
1946 @code{outside-staff-priority} más baja, y se sitúan de forma que
1947 no colisionen con ningún objeto que se haya colocado ya. Esto es,
1948 si dos grobs fuera-del-pentagrama compiten por el mismo espacio,
1949 el que tiene la prioridad @code{outside-staff-priority} más baja
1950 se colocará más cerca del pentagrama. Si dos objetos tienen la
1951 misma @code{outside-staff-priority}, el que se ha encontrado
1952 primero se situará más cerca de la pauta.
1954 En el siguiente ejemplo, todos los textos de marcado tienen la
1955 misma prioridad (pues no se ha establecido explícitamente).
1956 Observe que @q{Text3} se posiciona de nuevo automáticamente cerca
1957 del pentagrama, acomodado por debajo de @q{Text2}.
1959 @cindex markup, ejemplo
1961 @lilypond[quote,fragment,ragged-right,verbatim]
1968 Los pentagramas también se posicionan, de forma predeterminada,
1969 tan cerca unos de otros como sea posible (sujeto a una separación
1970 mínima). Si las notas se proyectan muy lejos en dirección a un
1971 pentagrama adyacente, forzarán a alejarse a los pentagramas sólo
1972 si en caso contrario fuese a ocurrir un solapamiento de la
1973 notación. El ejemplo siguiente muestra esta acomodación
1974 @q{nestling} de las notas sobre pentagramas adyacentes:
1976 @lilypond[quote,ragged-right,verbatim]
1979 \relative { c'4 a, }
1982 \relative { c''''4 a, }
1988 @node Objetos interiores al pentagrama
1989 @subsection Objetos interiores al pentagrama
1990 @translationof Within-staff objects
1992 Ya hemos visto cómo las instrucciones @code{\voiceXXX} afectan a
1993 la dirección de las ligaduras de expresión y de unión,
1994 digitaciones y todo lo demás que dependa de la dirección de las
1995 plicas (véase @ref{Voces explícitas}). Cuando se escribe música
1996 polifónica, estas instrucciones son esenciales para que puedan
1997 distinguirse varias líneas melódicas entrelazadas. Pero
1998 ocasionalmente puede ser necesario sobreescribir este
1999 comportamiento automático. Se puede hacer por secciones de música
2000 completas o incluso para una nota individual. La propiedad que
2001 controla este comportamiento es la propiedad de @code{direction}
2002 (dirección) de cada objeto de presentación. En primer lugar
2003 explicaremos qué hace esto, y luego introduciremos algunas
2004 instrucciones listas para usar que le evitarán tener que codificar
2005 sobreescrituras explícitas para las modificaciones más comunes.
2007 Algunos objetos de presentación como las ligaduras se curvan hacia
2008 arriba o hacia abajo; otros como las plicas y los corchetes
2009 también se mueven a la derecha o a la izquierda cuando apuntan
2010 hacia arriba o hacia abajo. Esto se controla automáticamente
2011 cuando está establecida la propiedad @code{direction}.
2014 * La propiedad direction (dirección)::
2018 @node La propiedad direction (dirección)
2019 @unnumberedsubsubsec La propiedad @code{direction} (dirección)
2020 @translationof The direction property
2031 El ejemplo siguiente muestra en el primer compás la colocación
2032 predeterminada de las ligaduras de expresión, estando por encima
2033 las que comienzan en notas agudas y por debajo las que comienzan
2034 en notas graves, seguido de un compás con ambas ligaduras forzadas
2035 hacia abajo, otro compás con las dos forzadas hacia arriba y por
2036 último un compás con las ligaduras devueltas a su comportamiento
2039 @cindex Slur, ejemplo de sobreescritura
2040 @cindex direction, propiedad, ejemplo
2042 @lilypond[quote,fragment,verbatim]
2044 \override Slur.direction = #DOWN
2046 \override Slur.direction = #UP
2048 \revert Slur.direction
2052 Aquí hemos usado las constantes @code{DOWN} (abajo) y @code{UP}
2053 (arriba). Éstos tienen los valores @w{@code{-1}} y @code{+1}
2054 respectivamente, y dichos valores numéricos también se pueden usar
2055 directamente. El valor @code{0} también se puede usar en algunos
2056 casos. Se trata simplemente con el significado de @code{UP} para
2057 las ligaduras de expresión, pero para algunos objetos tiene el
2058 significado de @q{centrado}. Existe una constante @code{CENTER}
2059 que tiene el valor @code{0}.
2061 Sin embargo, estas sobreescrituras no se usan muy a menudo porque
2062 están disponibles instrucciones predefinidas equivalentes más
2063 sencillas. Aquí podemos ver una tabla de las más comunes. Se
2064 menciona el significado de cada una allí donde no es obvio.
2066 @multitable @columnfractions .2 .2 .25 .35
2067 @headitem Abajo o Izquierda
2068 @tab Arriba o Derecha
2071 @item @code{\arpeggioArrowDown}
2072 @tab @code{\arpeggioArrowUp}
2073 @tab @code{\arpeggioNormal}
2074 @tab La flecha está abajo, arriba o no hay flecha
2075 @item @code{\dotsDown}
2077 @tab @code{\dotsNeutral}
2078 @tab Dirección del desplazamiento para evitar las líneas del pentagrama
2079 @item @code{\dynamicDown}
2080 @tab @code{\dynamicUp}
2081 @tab @code{\dynamicNeutral}
2083 @item @code{\phrasingSlurDown}
2084 @tab @code{\phrasingSlurUp}
2085 @tab @code{\phrasingSlurNeutral}
2086 @tab Nota: diferente de las instrucciones de ligaduras de expresión
2087 @item @code{\slurDown}
2089 @tab @code{\slurNeutral}
2091 @item @code{\stemDown}
2093 @tab @code{\stemNeutral}
2095 @item @code{\textSpannerDown}
2096 @tab @code{\textSpannerUp}
2097 @tab @code{\textSpannerNeutral}
2098 @tab El texto introducido como objeto de extensión está debajo o encima del pentagrama
2099 @item @code{\tieDown}
2101 @tab @code{\tieNeutral}
2103 @item @code{\tupletDown}
2104 @tab @code{\tupletUp}
2105 @tab @code{\tupletNeutral}
2106 @tab Los grupos especiales están debajo o encima de las notas
2109 Las variantes neutras o normales de estas instrucciones están
2110 implementadas usando @code{\revert} y éstas @strong{no} pueden ir
2111 precedidas de @code{\once}. Si quiere limitar el efecto de las
2112 otras instrucciones (que están implementadas usando
2113 @code{\override}) a un solo paso de tiempo, puede precederla de
2114 @code{\once} de la misma forma en que lo haría con las
2115 sobreescrituras explícitas.
2117 O bien, si un único objeto de presentación necesita forzarse hacia
2118 arriba o hacia abajo, pueden usarse los indicadores de dirección,
2119 @code{^} o @code{_}:
2121 @lilypond[quote,fragment,verbatim]
2123 a'4^( g') c''_( a') |
2127 @unnumberedsubsubsec Digitaciones
2128 @translationof Fingering
2130 @cindex digitación, colocación
2131 @cindex digitación de acordes
2133 La colocación de las digitaciones sobre notas sueltas también se
2134 puede controlar mediante la propiedad @code{direction}, pero los
2135 cambios sobre @code{direction} no tienen ningún efecto sobre las
2136 notas de los acordes. Como veremos, existen instrucciones
2137 especiales que permiten controlar las digitaciones de notas
2138 individuales, situando la digitación encima, debajo, a la
2139 izquierda o a la derecha de cada nota.
2141 En primer lugar, he aquí el efecto de @code{direction} sobre las
2142 digitaciones aplicadas a notas sueltas. Se muestra en el primer
2143 compás el comportamiento predeterminado, y en los dos compases
2144 siguiente el efecto de especificar @code{DOWN} y @code{UP}:
2146 @cindex Fingering, ejemplo de sobreescritura
2147 @cindex direction, propiedad, ejemplo
2149 @lilypond[quote,verbatim]
2151 c''4-5 a-3 f-1 c'-5 |
2152 \override Fingering.direction = #DOWN
2154 \override Fingering.direction = #UP
2159 Sin embargo, la sobreescritura de la propiedad @code{direction} no
2160 es la forma más sencilla de especificar manualmente la digitación
2161 por encima o por debajo de las notas; suele ser preferible usar
2162 @code{_} o @code{^} en lugar de @code{-}, antes del número de la
2163 digitación. Este es el ejemplo anterior utilizando este método:
2165 @cindex fingering, ejemplo
2166 @cindex digitación, ejemplo
2168 @lilypond[quote,verbatim]
2170 c''4-5 a-3 f-1 c'-5 |
2176 La propiedad @code{direction} se ignora para los acordes, pero los
2177 prefijos direccionales @code{_} y @code{^} sí funcionan. De forma
2178 predeterminada, las digitaciones se colocan automáticamente encima
2179 y debajo de las notas de un acorde, como se muestra aquí:
2181 @cindex fingering, ejemplo
2182 @cindex digitación, ejemplo
2184 @lilypond[quote,verbatim]
2193 pero se puede forzar de manera que todos o algunos de los números
2194 de digitación estén por encima o por debajo:
2196 @cindex fingering, ejemplo
2197 @cindex digitación, ejemplo
2199 @lilypond[quote,verbatim]
2201 <c''-5 g-3 e-2 c-1>4
2207 Es posible ejercer un control aún mayor sobre la colocación de las
2208 digitaciones mediante la utilización de la instrucción @code{\set
2209 fingeringOrientations}. El formato de esta instrucción es:
2212 @code{\set fingeringOrientations = #'([up] [left/right] [down])}
2216 se utiliza @code{\set} porque @code{fingeringOrientations} es una
2217 propiedad del contexto @code{Voice}, creado y usado por el
2218 grabador @code{New_fingering_engraver}.
2220 La propiedad se puede establecer al valor de una lista de entre
2221 uno y tres valores. Controla si las digitaciones se pueden
2222 colocar por encima (si @code{up} aparece en la lista), por debajo
2223 (si aparece @code{down}), a la izquierda (si aparece @code{left})
2224 o a la derecha (si aparece @code{right}). A la inversa, si una
2225 colocación no está en la lista, no se sitúa ninguna digitación en
2226 dicho lugar. LilyPond coma estas restricciones y se trabaja la
2227 mejor colocación para la digitación de las notas de los acordes
2228 que siguen. Observe que @code{left} y @code{right} son mutuamente
2229 excluyentes: las digitaciones pueden situarse en un lado o en el
2230 otro, no en los dos.
2232 @warning{Para controlar la colocación de la digitación de una sola
2233 nota usando esta instrucción es necesario escribirla como un
2234 acorde de una sola nota encerrándola entre ángulos simples.}
2236 Aquí podemos ver algunos ejemplos:
2238 @cindex fingering, ejemplo
2239 @cindex digitación, ejemplo
2240 @cindex @code{\set}, ejemplo de utilización
2241 @cindex fingeringOrientations, propiedad, ejemplo
2243 @lilypond[quote,ragged-right,verbatim]
2245 \set fingeringOrientations = #'(left)
2248 \set fingeringOrientations = #'(left)
2250 <c-1 e-2 g-3 b-5>4 |
2251 \set fingeringOrientations = #'(up left down)
2254 \set fingeringOrientations = #'(up left)
2256 <c-1 e-2 g-3 b-5>4 |
2257 \set fingeringOrientations = #'(right)
2264 Si la digitación parece un poco superpoblada, se puede reducir el
2265 tamaño @code{font-size}. El valor predeterminado puede verse en
2266 el objeto @code{Fingering} del RFI que es @w{@code{-5}}, así que
2267 probaremos @w{@code{-7}}:
2269 @lilypond[quote,ragged-right,verbatim]
2271 \override Fingering.font-size = #-7
2272 \set fingeringOrientations = #'(left)
2275 \set fingeringOrientations = #'(left)
2277 <c-1 e-2 g-3 b-5>4 |
2278 \set fingeringOrientations = #'(up left down)
2281 \set fingeringOrientations = #'(up left)
2283 <c-1 e-2 g-3 b-5>4 |
2284 \set fingeringOrientations = #'(right)
2291 @node Objetos fuera del pentagrama
2292 @subsection Objetos fuera del pentagrama
2293 @translationof Outside-staff objects
2295 Los objetos fuera-del-pentagrama se sitúan automáticamente para
2296 evitar las colisiones. Existen varias formas de sobreescribir la
2297 colocación automática si el posicionado no resulta óptimo.
2300 * La propiedad outside-staff-priority (prioridad fuera del pentagrama)::
2301 * La instrucción textLengthOn::
2302 * Posicionamiento de los matices dinámicos::
2303 * Escalado de un «Grob»::
2307 @node La propiedad outside-staff-priority (prioridad fuera del pentagrama)
2308 @unnumberedsubsubsec La propiedad @code{outside-staff-priority} (prioridad fuera del pentagrama)
2309 @translationof The outside-staff-priority property
2311 Los objetos fuera-del-pentagrama se colocan automáticamente para
2312 evitar las colisiones. Los objetos que tienen el valor más bajo
2313 de la propiedad @code{outside-staff-priority} se sitúan más cerca
2314 del pentagrama, y entonces otros objetos fuera-del-pentagrama se
2315 elevan tanto como sea necesario para evitar la colisión. La
2316 prioridad @code{outside-staff-priority} se defina en el
2317 @code{grob-interface} y así es una propiedad de todos los objetos
2318 de presentación. De forma predeterminada se establece a @code{#f}
2319 para todos los objetos dentro-del-pentagrama, y a un valor
2320 numérico adecuado a cada objeto fuera-del-pentagrama cuando se
2321 crea el objeto. La tabla siguiente presenta los valores numéricos
2322 predeterminados para algunos de los objetos fuera-del-pentagrama
2325 @cindex objetos de extensión
2327 Observe los nombres algo inusuales de algunos de los objetos: los
2328 objetos de extensión se crean automáticamente para controlar el
2329 posicionamiento vertical de los grobs que (quizá) comienzan y
2330 terminan en distintos momentos musicales, de manera que cualquier
2331 modificación a la prioridad @code{outside-staff-priority} del grob
2332 subyacente no tiene ningún efecto. Por ejemplo, cambiar la
2333 @code{outside-staff-priority} del objeto de regulador
2334 @code{Hairpin} no tiene efecto sobre la posición vertical de los
2335 reguladores: en lugar de eso, tenemos que cambiar la
2336 @code{outside-staff-priority} del objeto asociado
2337 @code{DynamicLineSpanner}. Esta sobreescritura se debe escribir
2338 al comienzo del objeto de extensión, que podría incluir varios
2339 reguladores o matices dinámicos encadenados.
2341 @multitable @columnfractions .3 .3 .3
2342 @headitem Objeto de presentación
2344 @tab Controla la posición de:
2345 @item @code{RehearsalMark}
2347 @tab Letras de ensayo
2348 @item @code{MetronomeMark}
2350 @tab Indicaciones metronómicas
2351 @item @code{VoltaBracketSpanner}
2353 @tab Cajetines de primera y segunda vez
2354 @item @code{TextScript}
2356 @tab Texto en elementos de marcado
2357 @item @code{MultiMeasureRestText}
2359 @tab Texto sobre silencios de compás completo
2360 @item @code{OttavaBracket}
2362 @tab Corchetes de octava alta y baja
2363 @item @code{TextSpanner}
2365 @tab Objetos de extensión de texto
2366 @item @code{DynamicLineSpanner}
2368 @tab Todas las indicaciones dinámicas
2369 @item @code{VoltaBracketSpanner}
2371 @tab Números de compás
2372 @item @code{TrillSpanner}
2374 @tab Trinos mantenidos
2377 He aquí un ejemplo que muestra la situación predeterminada de
2380 @cindex texto, extensiones de
2381 @cindex octava alta y baja, corchete de
2383 @funindex \startTextSpan
2384 @funindex \stopTextSpan
2386 @cindex TextSpanner, ejemplo de sobreescritura
2387 @cindex bound-details, propiedad, ejemplo
2389 @lilypond[quote,fragment,ragged-right,verbatim]
2390 % Set details for later Text Spanner
2391 \override TextSpanner.bound-details.left.text
2392 = \markup { \small \bold Slower }
2393 % Place dynamics above staff
2395 % Start Ottava Bracket
2398 % Add Dynamic Text and hairpin
2404 % Add Dynamic Text and terminate hairpin
2405 c''4\ff c'' \stopTextSpan |
2406 % Stop Ottava Bracket
2411 Este ejemplo también muestra cómo crear textos con extensión (Text
2412 Spanners): textos con líneas extensoras por encima de una sección
2413 de música. El extensor abarca desde la instrucción
2414 @code{\startTextSpan} hasta la instrucción @code{\stopTextSpan}, y
2415 el formado del texto se define por medio de la instrucción
2416 @code{\override TextSpanner}. Para ver más detalles, consulte
2417 @ruser{Extensiones de texto}.
2419 También muestra la manera de crear corchetes de octava alta y
2422 @cindex trucar la situación de los números de compás
2423 @cindex números de compás, ajustar posición
2424 @cindex trucar la situación de marcas metronómicas
2425 @cindex metrónomo, situación de las indicaciones de
2426 @cindex trucar la situación de las letras de ensayo
2427 @cindex ensayo, letras, trucar la colocación
2429 Si los valores predeterminados de @code{outside-staff-priority} no
2430 le ofrecen las colocaciones deseadas se puede sobreescribir la
2431 prioridad de cualquiera de los objetos. Suponga que quisiéramos
2432 que el corchete de octava estuviera situado por debajo del
2433 elemento extensor de texto en el ejemplo de arriba. Todo lo que
2434 debemos hacer es localizar la prioridad de @code{OttavaBracket} en
2435 el RFI o en las tablas anteriores, y reducirlo a un valor inferior
2436 al de @code{TextSpanner}, recordando que @code{OttavaBracket} se
2437 crea dentro del contexto de @code{Staff}:
2439 @cindex TextSpanner, ejemplo de sobreescritura
2440 @cindex bound-details, propiedad, ejemplo
2442 @lilypond[quote,fragment,ragged-right,verbatim]
2443 % Set details for later Text Spanner
2444 \override TextSpanner.bound-details.left.text
2445 = \markup { \small \bold Slower }
2446 % Place dynamics above staff
2448 % Place following Ottava Bracket below Text Spanners
2449 \once \override Staff.OttavaBracket.outside-staff-priority = #340
2450 % Start Ottava Bracket
2455 % Add Dynamic Line Spanner
2461 c''4\ff c'' \stopTextSpan |
2462 % Stop Ottava Bracket
2467 Observe que algunos de estos objetos, concretamente los números de
2468 compás, las indicaciones metronómicas y las letras de ensayo, se
2469 alojan de forma predeterminada dentro del contexto @code{Score};
2470 así pues, debe asegurarse de que utiliza el contexto adecuado
2471 cuando se sobreescriben sus propiedades.
2473 @cindex ligaduras y outside-staff-priority
2474 @cindex ligaduras y articulaciones
2475 @cindex articulaciones y ligaduras
2477 De forma predeterminada, las ligaduras de expresión están
2478 clasificadas como objetos dentro-del-pentagrama, pero con
2479 frecuencia aparecen encima del pentagrama si las notas que une son
2480 muy agudas. Ello puede empujar a una posición muy elevada a los
2481 objetos fuera-del-pentagrama como las articulaciones, pues la
2482 ligadura se colocará en primer lugar. La propiedad
2483 @code{avoid-slur} de la articulación se puede establecer al valor
2484 @code{'inside} (por dentro) para llevarla al interior de la
2485 ligadura, pero la propiedad @code{avoid-slur} es efectiva
2486 solamente si la prioridad @code{outside-staff-priority} está
2487 también ajustada al valor @code{#f}. De forma alternativa, la
2488 prioridad @code{outside-staff-priority} de la ligadura se puede
2489 fijar en un valor numérico para hacer que se sitúe en línea con
2490 otros objetos fuera del pentagrama de acuerdo con este valor. He
2491 aquí un ejemplo que muestra el efecto de los dos métodos:
2493 @lilypond[quote,verbatim]
2495 c4( c^\markup { \tiny \sharp } d4.) c8 |
2497 \once \override TextScript.avoid-slur = #'inside
2498 \once \override TextScript.outside-staff-priority = ##f
2499 c4^\markup { \tiny \sharp } d4.) c8 |
2500 \once \override Slur.outside-staff-priority = #500
2501 c4( c^\markup { \tiny \sharp } d4.) c8 |
2505 Los cambios en @code{outside-staff-priority} también se pueden
2506 emplear para controlar la situación vertical de los objetos
2507 individuales, aunque los resultados pueden no siempre ser
2508 deseables. Suponga que quiere que @qq{Text3} se sitúe por encima
2509 de @qq{Text4} en el ejemplo bajo el epígrafe Comportamiento
2510 Automático de más arriba (véase @ref{Comportamiento automático}).
2511 Todo lo que debemos hacer es localizar la prioridad de
2512 @code{TextScript} en el RFI o en las tablas de arriba, y aumentar
2513 la prioridad de @qq{Text3} hasta un valor superior:
2515 @cindex TextScript, ejemplo de sobreescritura
2516 @cindex outside-staff-priority, propiedad, ejemplo
2518 @lilypond[quote,fragment,ragged-right,verbatim]
2521 \once \override TextScript.outside-staff-priority = #500
2526 Esto, ciertamente, eleva a @qq{Text3} por encima de @qq{Text4}
2527 pero también lo eleva por encima de @qq{Text2}, y @qq{Text4} ahora
2528 se desploma hacia abajo. Quizá no sea tan buena idea. ¿Y si lo
2529 que realmente queremos hacer es posicionar todas las anotaciones a
2530 la misma distancia por encima del pentagrama? Para hacerlo, vamos
2531 a necesitar claramente espaciar las notas en sentido horizontal
2532 para hacer sitio para el texto. Esto se hace empleando la
2533 instrucción @code{textLengthOn}.
2535 @node La instrucción textLengthOn
2536 @unnumberedsubsubsec La instrucción @code{@bs{}textLengthOn}
2537 @translationof The textLengthOn command
2539 @cindex notas, espaciar junto al texto
2541 @funindex \textLengthOn
2542 @funindex \textLengthOff
2544 De forma predeterminada, el texto producido mediante marcado no
2545 ocupa ningún espacio horizontal en cuanto se refiere a la
2546 disposición de la música. La instrucción @code{\textLengthOn}
2547 invierte este comportamiento, ocasionando que las notas resulten
2548 tan espaciadas como sea necesario para acomodar el texto:
2550 @lilypond[quote,fragment,ragged-right,verbatim]
2551 \textLengthOn % Cause notes to space out to accommodate text
2558 La instrucción para volver al comportamiento predeterminado es
2559 @code{\textLengthOff}. De forma alternativa, se puede usar
2560 @code{\once} con @code{\textLengthOn} si el efecto se ha de
2561 limitar a un solo momento musical. El comportamiento de espaciado
2562 correspondiente para las llamadas de ensayo y las indicaciones de
2563 tempo se controla independientemente con las instrucciones
2564 @code{\markLengthOn} y @code{\markLengthOff}.
2566 @cindex marcado, texto de, permitir las colisiones en
2568 El texto de marcado también evita las notas que se proyectan por
2569 encima del pentagrama. Si esto no es lo que deseamos, el
2570 desplazamiento automático hacia arriba se puede desactivar
2571 mediante el establecimiento de la prioridad a @code{#f}. He aquí
2572 un ejemplo que muestra cómo el texto de marcado interactúa con
2575 @cindex TextScript, ejemplo de sobreescritura
2576 @cindex outside-staff-priority, propiedad, ejemplo
2578 @lilypond[quote,ragged-right,verbatim]
2580 % This markup is short enough to fit without collision
2584 % This is too long to fit, so it is displaced upwards
2588 % Turn off collision avoidance
2589 \once \override TextScript.outside-staff-priority = ##f
2590 c,,2^"Long Text " c'' |
2593 % Turn off collision avoidance
2594 \once \override TextScript.outside-staff-priority = ##f
2595 \textLengthOn % and turn on textLengthOn
2596 c,,2^"Long Text " % Spaces at end are honored
2601 @node Posicionamiento de los matices dinámicos
2602 @unnumberedsubsubsec Posicionamiento de los matices dinámicos
2603 @translationof Dynamics placement
2605 @cindex trucar la colocación de los matices
2606 @cindex dinámica, trucar la colocación de las indicaciones de
2607 @cindex matices, trucar la colocación
2609 Las indicaciones de matiz dinámico normalmente se colocarán por
2610 debajo del pentagrama, pero se pueden posicionar por encima con la
2611 instrucción @code{\dynamicUp}. Se situarán verticalmente respecto
2612 a la nota a la que van adosadas, y flotarán por debajo (o por
2613 encima) de todos los objetos dentro-del-pentagrama tales como
2614 ligaduras de fraseo y números de compás. Esto puede ofrecer
2615 resultados bastante aceptables, como muestra este ejemplo:
2617 @lilypond[quote,ragged-right,verbatim]
2623 bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
2624 ees,2.~\)\mf ees4 r8 |
2628 Sin embargo, si las notas y sus indicaciones dinámicas adosadas
2629 están muy cerca, la colocación automática evitará las colisiones
2630 desplazando las marcas dinámicas posteriores más lejos, aunque
2631 este puede no ser el lugar óptimo, como muestra el siguiente
2632 ejemplo más bien artificial:
2634 @lilypond[quote,ragged-right,verbatim,fragment]
2636 \relative { a'4\f b\mf a\mp b\p }
2640 Si se presentara una situación similar en música @q{real}, podría
2641 ser preferible espaciar las notas un poco más entre sí, de forma
2642 que todas las marcas dinámicas puedan caber a la misma distancia
2643 vertical desde el pentagrama. Hemos sido capaces de hacer esto
2644 para el texto de marcado utilizando la instrucción
2645 @code{\textLengthOn}, pero no existe una instrucción equivalente
2646 para las indicaciones de matiz dinámico. Por tanto, tendremos que
2647 averiguar cómo hacerlo utilizando instrucciones @code{\override}.
2649 @node Escalado de un «Grob»
2650 @unnumberedsubsubsec Escalado de un «Grob»
2651 @translationof Grob sizing
2653 @cindex grob, cambio de tamaño de un
2654 @cindex escala de los grobs
2656 En primer lugar debemos aprender cómo se especifica el tamaño de
2657 los grobs. Todos los grobs tienen un punto de referencia definido
2658 dentro de ellos que se usa para colocarlos respecto a su objeto
2659 padre. Entonces, este punto del grob se posiciona a una distancia
2660 horizontal, @code{X-offset}, y una distancia vertical,
2661 @code{Y-offset}, a partir de su padre. La dimensión horizontal
2662 del objeto viene dada por una pareja de números, @code{X-extent},
2663 que dice dónde están los límites izquierdo y derecho respecto del
2664 punto de referencia. La amplitud vertical se define de forma
2665 similar mediante una pareja de números, @code{Y-extent}. Éstas
2666 son propiedades de todos los grobs que contemplan el
2667 @code{grob-interface}.
2669 @cindex @code{extra-spacing-width}
2671 De forma predeterminada, los objetos fuera-del-pentagrama reciben
2672 una anchura cero, de manera que pueden solaparse en la dirección
2673 horizontal. Esto se hace mediante el truco de hacer que la
2674 dimensión más a la izquierda sea igual a infinito y que la
2675 dimensión más a la derecha sea igual a menos infinito,
2676 estableciendo el valor de @code{extra-spacing-width} a
2677 @code{'(+inf.0 . -inf.0)}. Así, para asegurar que no se
2678 superponen en la dirección horizontal tendremos que sobreescribir
2679 este valor de @code{extra-spacing-width} para darles un poco de
2680 espacio adicional. Las unidades son el espacio entre dos líneas
2681 del pentagrama, de forma que debería bastar mover el límite
2682 izquierdo media unidad a la izquierda y el límite derecho media
2683 unidad a la derecha:
2686 \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
2690 Veamos si funciona en nuestro ejemplo anterior:
2692 @cindex DynamicText, ejemplo de sobreescritura
2693 @cindex extra-spacing-width, propiedad, ejemplo
2695 @lilypond[quote,ragged-right,verbatim,fragment]
2697 % Extend width by 1 staff space
2698 \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
2699 \relative { a'4\f b\mf a\mp b\p }
2703 Esto tiene un mejor aspecto, pero quizá habríamos preferido que
2704 las indicaciones de dinámica estuvieran alineadas sobre la misma
2705 línea de base en lugar de ir hacia arriba y hacia abajo con las
2706 notas. La propiedad que lo hace es @code{staff-padding} (relleno
2707 de pentagrama) que se estudia en la sección dedicada a las
2708 colisiones (véase @ref{Colisiones de objetos}).
2710 @node Espaciado vertical
2711 @section Espaciado vertical
2712 @translationof Vertical spacing
2714 Por lo general, el espaciado vertical de los objetos musicales que
2715 LilyPond hace es bastante bueno. Veamos cómo se comporta con una
2716 canción sencilla, con dos voces y acompañamiento de piano:
2718 @lilypond[quote,fragment,ragged-right]
2723 \new Voice = "music" {
2729 Here are some lyrics
2732 \clef bass e'2 f e c
2747 No hay ningún problema con el espaciado vertical predeterminado.
2748 Sin embargo, supongamos que estamos trabajando con un editor que
2749 tiene ciertos requisitos específicos para el espaciado vertical de
2750 los pentagramas y la letra: quiere que la letra está más separada
2751 de las notas, que el acompañamiento de piano esté más separado de
2752 la línea vocal y que los dos pentagramas de piano estén más juntos
2753 entre sí. Comenzaremos con la letra.
2755 La letra se encuentra en el interior de un sistem, y por tanto las
2756 instrucciones para aplicarle el espaciado estarán en
2757 @ruser{Espaciado vertical flexible dentro de los sistemas}. Allí
2758 se dice que el texo son líneas del tipo @qq{no-pauta} y por tanto
2759 la instrucción para cambiar su espaciado hará referencia a la
2760 propiedad @code{nonstaff}. Para separarlas del pentagrama al que
2761 pertenecen (la pauta superior) usaremos la propiedad
2762 @code{relatedstaff}. Para separarlas de la línea inferior
2763 usaremos la propiedad @code{unrelatedstaff}. Las partes vocales
2764 pertenecen a un grupo vertical @code{VerticalAxisGroup}, por lo
2765 que tenemos que ajustar sus propiedades. Probémoslo y veamos si
2768 @lilypond[quote,fragment,ragged-right,verbatim]
2773 \new Voice = "music" {
2778 \override VerticalAxisGroup.
2779 nonstaff-relatedstaff-spacing.padding = #5
2780 \override VerticalAxisGroup.
2781 nonstaff-unrelatedstaff-spacing.padding = #5
2784 Here are some lyrics
2787 \clef bass e'2 f e c
2802 Bien: sí, funciona, pero quizá demasiado bien. Cuando
2803 establecemos el @code{padding} (relleno) a 5, LilyPond añade 5
2804 espacios de pentagrama a la distancia entre los objetos, lo que es
2805 excesivo para nosotros en este caso. Usaremos un valor de 2.
2807 A continuación, desplazaremos la música de piano para separarla de
2808 las partes vocales. La música vocal es una @code{ChoirStaff} (un
2809 contexto de sistema coral), y por tanto tenemos que aumentar el
2810 espaciado entre ese grupo de pentagramas y el sistema de piano que
2811 se encuentra debajo. Lo haremos cambiando la
2812 @code{basic-distance} (distancia básica) del @code{StaffGrouper}
2813 del @code{staffgroup-staff-spacing}.
2815 @lilypond[quote,fragment,ragged-right,verbatim]
2817 \new ChoirStaff \with {
2818 \override StaffGrouper.
2819 staffgroup-staff-spacing.basic-distance = #15
2823 \new Voice = "music" {
2828 \override VerticalAxisGroup.
2829 nonstaff-relatedstaff-spacing.padding = #2
2830 \override VerticalAxisGroup.
2831 nonstaff-unrelatedstaff-spacing.padding = #2
2834 Here are some lyrics
2837 \clef bass e'2 f e c
2852 Muy bien. Ahora, sólo nos queda el último requisito de hacer que
2853 los pentagramas de piano estén más juntos. Para conseguirlo, de
2854 nuevo alteramos las propiedades del @code{StaffGrouper}, pero esta
2855 vez vamos a reducir tanto la @code{basic-distance} (distancia
2856 básica) como el @code{padding} (relleno). Podemos hacerlo como se
2857 muestra a continuación.
2859 @lilypond[quote,fragment,ragged-right,verbatim]
2861 \new ChoirStaff \with {
2862 \override StaffGrouper.
2863 staffgroup-staff-spacing.basic-distance = #15
2867 \new Voice = "music" {
2872 \override VerticalAxisGroup.
2873 nonstaff-relatedstaff-spacing.padding = #2
2874 \override VerticalAxisGroup.
2875 nonstaff-unrelatedstaff-spacing.padding = #2
2878 Here are some lyrics
2881 \clef bass e'2 f e c
2884 \new PianoStaff \with {
2885 \override StaffGrouper.staff-staff-spacing = #'(
2886 (basic-distance . 0)
2900 Con esto los hemos colocado muy juntos entre sí (pero es lo que el
2901 editor quería). Se podrían haber separado más alterando el
2902 relleno, @code{padding}, o la distancia básica,
2903 @code{basic-distance}, si quisiéramos.
2905 Hay muchas formas de alterar el espaciado vertical. Un punto
2906 clave que debemos recordar es que el espaciado entre objetos
2907 dentro de un @code{StaffGroup} (como los grupos @code{GrandStaff}
2908 o @code{PianoStaff}) se controla con las variables de espaciado
2909 del @code{StaffGrouper}. El espaciado de los pentagramas no
2910 agrupados (como @code{Lyrics} y @code{Staff}) se controla con las
2911 variables del @code{VerticalAxisGroup}. Para ver más detalles,
2913 @ruser{Variables de espaciado de paper verticales flexibles} y
2914 @ruser{Espaciado vertical flexible dentro de los sistemas}.
2917 @node Colisiones de objetos
2918 @section Colisiones de objetos
2919 @translationof Collisions of objects
2923 * Arreglar notación con superposiciones::
2924 * Ejemplos reales de música::
2928 @subsection Mover objetos
2929 @translationof Moving objects
2931 @cindex mover objetos superpuestos
2932 @cindex mover objetos que colisionan
2933 @cindex mover grobs que colisionan
2934 @cindex objetos que colisionan, mover
2935 @cindex grobs que colisionan, mover
2937 Aunque pueda sorprenderle, LilyPond no es perfecto. Ciertos
2938 elementos de notación se pueden superponer, lo que es una lástima,
2939 pero en realidad es bastante poco frecuente. Normalmente la
2940 necesidad de mover objetos es por claridad o razones estéticas: el
2941 aspecto es mejor con un poco más o un poco menos de espacio de
2944 Existen tres enfoques principales que llevan a la resolución de
2945 superposiciones en la notación. Se deben considerar en el
2950 La @strong{dirección} de uno de los objetos que se superponen se
2951 puede cambiar usando las instrucciones predefinidas que están
2952 relacionadas arriba para los objetos dentro-del-pentagrama (véase
2953 @ref{Objetos interiores al pentagrama}). Se pueden recolocar
2954 fácilmente las plicas, ligaduras de expresión y de unión, barras
2955 de corchea, indicaciones dinámicas, texto y grupos de valoración
2956 especial de esta forma. La limitación es que sólo tiene la
2957 posibilidad de elegir entre dos posiciones, y podría ser que
2958 ninguna de ellas sea la adecuada.
2961 Las @strong{propiedades del objeto}, que LilyPond usa cuando está
2962 colocando los objetos de presentación, se pueden modificar usando
2963 la instrucción de sobreescritura @code{\override}. Las ventadas
2964 de hacer cambios a este tipo de propiedad son: a) que algún otro
2965 objeto se moverá automáticamente si es necesario, para dejarle
2966 sitio, y b) una única sobreescritura se puede aplicar a todas las
2967 instancias del mismo tipo de objeto. Entre tales propiedades se
2973 @code{direction} (dirección)
2975 Ya se ha estudiado con cierto detalle: véase @ref{Objetos interiores al pentagrama}.
2978 @code{padding} (relleno),
2979 @code{right-padding} (relleno por la derecha),
2980 @code{staff-padding} (relleno de pentagrama)
2983 @cindex padding, propiedad
2984 @cindex right-padding, propiedad
2985 @cindex staff-padding, propiedad
2987 Según un objeto se está colocando, el valor de su propiedad de
2988 relleno @code{padding} especifica el espacio intermedio que se
2989 debe dejar entre él mismo y el límite más próximo del objeto
2990 contra el que se está colocando. Observe que es el valor de
2991 @code{padding} del objeto @strong{que se está colocando} el que se
2992 usa; el valor de @code{padding} del objeto que ya está colocado se
2993 ignora. Los espacios intermedios especificados mediante
2994 @code{padding} se pueden aplicar a todos los objetos que
2995 contemplan el interface @code{side-position-interface}.
2997 En lugar de con @code{padding}, la colocación de los grupos de
2998 alteraciones se controla con @code{right-padding}. Esta propiedad
2999 se encuentra en el objeto @code{AccidentalPlacement} que, observe,
3000 vive dentro del contexto de @strong{Staff}. Durante el proceso
3001 tipográfico, las cabezas de las notas se componen tipográficamente
3002 en primer lugar, y después las alteraciones, si existen, se añaden
3003 a la izquierda de las cabezas utilizando la propiedad de relleno
3004 por la derecha @code{right-padding} para determinar la separación
3005 entre la alteración y la cabeza, y de las alteraciones entre sí.
3006 Así pues, sólo la propiedad de relleno por la derecha
3007 @code{right-padding} del objeto @code{AccidentalPlacement} tiene
3008 efecto sobre la colocación de las alteraciones.
3010 La propiedad @code{staff-padding} está estrechamente relacionada
3011 con la propiedad @code{padding}: @code{padding} controla la
3012 separación mínima entre cualquier objeto que contemple el
3013 interface @code{side-position-interface} y el objeto más cercano
3014 (generalmente la nota o las líneas del pentagrama);
3015 @code{staff-padding} se aplica sólo a los objetos que siempre se
3016 sitúan fuera del pentagrama: controla la separación mínima entre
3017 dicho objeto y el pentagrama. Observe que @code{staff-padding} no
3018 tiene ningún efecto sobre objetos que se posicionan respecto a la
3019 nota en vez de hacerlo respecto al pentagrama, incluso aunque
3020 puede ser sobreescrito sin error por tales objetos: simplemente se
3023 Para descubrir qué propiedad de relleno se necesita para el objeto
3024 que quiere recolocar, debe volver al manual de RFI y buscar las
3025 propiedades del objeto. Tenga cuidado porque las propiedades de
3026 relleno podrían no estar en el objeto más obvio, así que busque en
3027 los objetos que puedan tener alguna relación con él.
3029 Todos los valores de relleno se miden en espacios del pentagrama.
3030 Para la mayor parte de los objetos el valor se establece de forma
3031 predeterminada en aproximadamente 1.0 o menos (varía con cada
3032 objeto). Se puede sobreescribir si se necesita una separación
3033 intermedia mayor (o menor).
3036 @code{self-alignment-X} (Auto-alineamiento en el eje X)
3038 @cindex self-alignment-X, propiedad
3040 Esta propiedad se puede usar para alinear el objeto a la
3041 izquierda, a la derecha, o centrarlo con respecto al punto de
3042 referencia del objeto «padre». Se puede usar con todos los
3043 objetos que contemplan el interface
3044 @code{self-alignment-interface}. En general son objetos que
3045 contienen texto. Los valores son @code{LEFT}, @code{RIGHT} o
3046 @code{CENTER}. De forma alternativa se puede especificar un valor
3047 numérico entre @w{@code{-1}} y @code{+1}, donde @w{@code{-1}} es
3048 alineado por la izquierda, @code{+1} es alineado por la derecha, y
3049 los números intermedios mueven el texto progresivamente desde
3050 alineado por la izquierda hasta alineado por la derecha. Se
3051 pueden especificar valores numéricos mayores de @code{1} para
3052 mover el texto incluso más lejos hacia la izquierda, o menos de
3053 @w{@code{-1}} para alejarlo más hacia la derecha. Un cambio en
3054 @code{1} en el valor corresponde a un movimiento de la mitad de la
3055 longitud total del propio texto.
3058 @code{extra-spacing-width} (anchura de separación adicional)
3060 @cindex extra-spacing-width, propiedad
3062 Esta propiedad está disponible para todos los objetos que
3063 contemplan el interface @code{item-interface}. Toma dos números,
3064 el primero se suma al límite izquierdo y el segundo se suma al
3065 límite derecho. Los números negativos desplazan el límite a la
3066 izquierda y los positivos a la derecha, por lo que para ensanchar
3067 un objeto el primer número debe ser negativo y el segundo
3068 positivo. Observe que no todos los objetos ostentan los dos
3069 números. Por ejemplo, el objeto @code{Accidental} (alteración)
3070 sólo toma nota del primer número (el borde izquierdo).
3073 @code{staff-position} (posición de pentagrama)
3075 @cindex staff-position, propiedad
3077 @code{staff-position} es una propiedad del interface
3078 @code{staff-symbol-referencer-interface}, que está contemplado por
3079 los objetos que se colocan con relación al pentagrama. Especifica
3080 la posición vertical del objeto con relación a la tercera línea
3081 del pentagrama en medios espacios de pentagrama. Es útil en la
3082 resolución de colisiones entre objetos de presentación como
3083 silencios multi-compás, ligaduras de unión y notas en distintas
3087 @code{horizontal-shift}
3089 @cindex horizontal-shift, propiedad
3090 @cindex nota, columna de
3091 @cindex nota, colisiones
3092 @cindex colisiones de notas
3093 @cindex desplazamiento, instrucciones de
3097 @funindex \shiftOnnn
3099 Dentro de una voz, todas las notas que se producen en el mismo
3100 moemtno se agrupan en una columna de notas, y se crea un objeto
3101 @code{NoteColumn} para controlar el posicionamiento horizonal de
3102 dicho grupo de notas (véase @qq{Columnas de nota} en @ref{Voces
3103 explícitas}). Si @emph{y sólo si} dos o más columnas de nota
3104 dentro de un solo contexto de pauta, las dos con las plicas en la
3105 misma dirección, aparecen en el mismo momento musical, los valores
3106 de sus propiedades @code{horizontal-shift} se usan para asignarles
3107 una puntuación y las columnas con puntuaciones más altas se
3108 desplazan progresivamente para evitar las colisiones entre las
3109 cabezas de las notas. Esta propiedad se establece con las
3110 instrucciones @code{\voiceXXX} y se pueden sobreescribir
3111 directamente con una instrucción @code{\override} o, de forma más
3112 común con las instrucciones @code{\shiftOn}. Observe que esta
3113 propiedad se usa para @emph{calificar} las columnas de nota o para
3114 aplicar desplazamientos: no especifica la magnitud del
3115 desplazamiento, que se va incrementando progresivamente en pasos
3116 basándolse en la anchura de las cabezas de nota para cada
3117 puntuación. Los pasos son normalmente de la mitad de la anchura
3118 de una cabeza de nota, pero puede ser el ancho completo de la
3119 cabeza de una nota cuando está implicado un grupo de notas muy
3123 @code{force-hshift} (forzar desplazamiento horizontal)
3125 @cindex force-hshift, propiedad
3127 La propiedad @code{force-hshift} es una propiedad de una
3128 @code{NoteColumn} (realmente lo es del interface
3129 @code{note-column-interface}). Modificarlo permite mover una
3130 columna de notas en situaciones donde las columnas de notas se
3131 superponen. Observe que no tiene efecto sobre las columnas de
3132 nota que no se superponen. Se especifica en unidades adecuadas a
3133 una columna de notas, por ejemplo la anchura de la cabeza de la
3134 nota de la primera voz. Se debe usar en situaciones complejas
3135 donde las instrucciones @code{\shiftOn} normales (véase @ref{Voces
3136 explícitas}) no resuelven el conflicto entre las notas de forma
3137 satisfactoria. Es preferible a la propiedad @code{extra-offset}
3138 para este propósito porque no hay necesidad de averiguar la
3139 distancia en espacios de pentagrama, y mover las notas dentro o
3140 fuera de una @code{NoteColumn} afecta a otras acciones como a la
3141 fusión entre cabezas de nota.
3146 Finalmente, cuando todo lo demás falla, los objetos se pueden
3147 reposicionar manualmente con relación a la tercera línea del
3148 pentagrama verticalmente, o desplazándolas una cierta distancia a
3149 una nueva posición. Las desventajas son que los valores correctos
3150 para el reposicionamiento se deben adivinar, a menudo por ensayo y
3151 error, para cada objeto individual y, puesto que el movimiento se
3152 hace después de que LilyPond ha colocado todos los demás objetos
3153 es usuario es responsable de evitar cualquier colisión que pudiera
3154 producirse. Pero la dificultar principal con este enfoque es que
3155 los valores de reposicionado podrían tener que ser vueltos a
3156 calcular si la música se modifica más tarde. Las propiedades que
3157 se pueden usar para este tipo de posicionamiento manual son:
3160 @item extra-offset (desplazamiento adicional)
3162 @cindex extra-offset, propiedad
3164 Esta propiedad se aplica a cualquier objeto de presentación que
3165 contemple el @code{grob-interface}. Toma una pareja de números
3166 que especifican el desplazamiento adicional en las direcciones
3167 horizontal y vertical. Los números negativos mueven el objeto a
3168 la izquierda o hacia abajo. Las unidades son espacios de
3169 pentagrama. El desplazamiento adicional se hace después de que la
3170 composición tipográfica de los objetos ha terminado, así que un
3171 objeto puede ser reposicionado a cualquier lugar sin afectar a
3174 @item positions (posiciones)
3176 @cindex positions, propiedad
3178 Ésta es de la mayor utilidad para ajustar manualmente la
3179 inclinación y la altura de las barras de corchea, ligaduras de
3180 expresión y corchetes de grupos de valoración especial. Toma una
3181 pareja de números que dan la posición de los extremos izquierdo y
3182 derecho de la barra, ligadura, etc. con relación a la tercera
3183 línea del pentagrama. Las unidades son espacios de pentagrama.
3184 Observe, sin embargo, que las ligaduras de expresión y de fraseo
3185 no se pueden reposicionar en cantidades arbitrariamente grandes.
3186 LilyPond en primer lugar genera una lista de posiciones posibles
3187 para la ligadura y de forma predeterminada encuentra la ligadura
3188 que tiene @qq{mejor aspecto}. Si la propiedad @code{positions} se
3189 ha sobreescrito, la ligadura que está más cerca de las posiciones
3190 que se han solicitado, se selecciona de la lista.
3195 Un objeto en particular podría no tener todas estas propiedades.
3196 Es necesario ir al manual RFI para buscar qué propiedades se
3197 encuentran disponibles para el objeto en cuestión.
3200 Aquí presentamos una lista de los objetos que es más probable que
3201 estén implicados en colisiones, con el nombre del objeto que
3202 habría que buscar en el RFI para descubrir qué propiedades se
3203 deben usar para moverlos.
3205 @multitable @columnfractions .5 .5
3206 @headitem Tipo de objeto @tab Nombre del objeto
3207 @item Articulaciones @tab @code{Script}
3208 @item Barras @tab @code{Beam}
3209 @item Dinámica (verticalmente) @tab @code{DynamicLineSpanner}
3210 @item Dinámica (horizontalmente) @tab @code{DynamicText}
3211 @item Digitaciones @tab @code{Fingering}
3212 @item Llamadas de ensayo y textuales @tab @code{RehearsalMark}
3213 @item Ligaduras de expresión @tab @code{Slur}
3214 @item Texto, por ejemplo @code{^"texto"} @tab @code{TextScript}
3215 @item Ligaduras de unión @tab @code{Tie}
3216 @item Grupos de valoración especial @tab @code{TupletBracket}
3220 @node Arreglar notación con superposiciones
3221 @subsection Arreglar notación con superposiciones
3222 @translationof Fixing overlapping notation
3224 Veamos ahora cómo pueden ser de ayuda las propiedades que hemos
3225 visto en la sección anterior, para resolver problemas de notación
3229 * La propiedad padding (relleno)::
3230 * La propiedad right-padding (relleno por la derecha)::
3231 * La propiedad staff-padding (relleno de pentagrama)::
3232 * La propiedad self-alignment-X (auto-alineación en X)::
3233 * La propiedad staff-position (posición en el pentagrama)::
3234 * La propiedad extra-offset (desplazamiento adicional)::
3235 * La propiedad positions (posiciones)::
3236 * La propiedad force-hshift (forzar desplazamiento horizontal)::
3239 @node La propiedad padding (relleno)
3240 @unnumberedsubsubsec La propiedad @code{padding} (relleno)
3241 @translationof The padding property
3244 @cindex arreglar notación que se superpone
3245 @cindex superpuesta, notación
3247 La propiedad @code{padding} se puede ajustar para aumentar (o
3248 disminuir) la distancia entre símbolos impresos encima o debajo de
3251 @cindex Script, ejemplo de sobreescritura
3252 @cindex padding, propiedad, ejemplo
3254 @lilypond[quote,fragment,verbatim]
3256 \override Script.padding = #3
3260 @cindex MetronomeMark, ejemplo de sobreescritura
3261 @cindex padding, propiedad, ejemplo
3263 @lilypond[quote,fragment,verbatim]
3264 % This will not work, see below
3265 \override MetronomeMark.padding = #3
3269 \override Score.MetronomeMark.padding = #3
3274 Observe en el segundo ejemplo la gran importancia que tiene saber
3275 qué contexto maneja un determinado objeto. Puesto que el objeto
3276 @code{MetronomeMark} se maneja dentro del contexto @code{Score},
3277 los cambios de propiedades en el contexto @code{Voice} pasarán
3279 Para ver más detalles, consulte @ruser{Modificar las propiedades}.
3281 Si la propiedad de relleno @code{padding} de un objeto se
3282 incrementa cuando dicho objeto se encuentra en una pila de objetos
3283 que se están colocando de acuerdo a su prioridad
3284 @code{outside-staff-priority}, entonces ese objeto se moverá, y
3285 también todos los que están por fuera de él.
3288 @node La propiedad right-padding (relleno por la derecha)
3289 @unnumberedsubsubsec La propiedad @code{right-padding} (relleno por la derecha)
3290 @translationof The right-padding property
3292 @cindex right-padding, propiedad
3294 La propiedad @code{right-padding} afecta al espaciado entre la
3295 alteración y la nota a que se aplica. Normalmente no es
3296 necesaria, pero el espaciado predeterminado puede estar mal para
3297 ciertos glifos de alteraciones o combinaciones de glifos que se
3298 usan en música microtonal. Éstos tienen que introducirse
3299 sobreescribiendo el sello de la alteración con un elemento de
3300 marcado que contenga los símbolos deseados, así:
3302 @cindex Accidental, ejemplo de sobreescritura
3303 @cindex text, propiedad, ejemplo
3304 @cindex stencil, propiedad, ejemplo
3305 @cindex AccidentalPlacement, ejemplo de sobreescritura
3306 @cindex right-padding, propiedad, ejemplo
3309 @lilypond[quote,ragged-right,verbatim]
3310 sesquisharp = \markup { \sesquisharp }
3313 % This prints a sesquisharp but the spacing is too small
3314 \once \override Accidental.stencil = #ly:text-interface::print
3315 \once \override Accidental.text = #sesquisharp
3317 % This improves the spacing
3318 \once \override Score.AccidentalPlacement.right-padding = #0.6
3319 \once \override Accidental.stencil = #ly:text-interface::print
3320 \once \override Accidental.text = #sesquisharp
3326 Esto utiliza necesariamente una sobreescritura para el sello de la
3327 alteración que no se estudiará hasta más adelante. El tipo de
3328 sello debe ser un procedimiento, aquí modificado para que imprima
3329 el contenido de la propiedad @code{text} del objeto
3330 @code{Accidental}, que a su vez está establecido como un signo de
3331 sesquisostenido. Entonces el signo se puede separar de la cabeza
3332 de la nota sobreescribiendo @code{right-padding}.
3336 @node La propiedad staff-padding (relleno de pentagrama)
3337 @unnumberedsubsubsec La propiedad @code{staff-padding} (relleno de pentagrama)
3338 @translationof The staff-padding property
3340 @cindex alineación de objetos sobre la línea base
3341 @cindex objetos, alineación sobre la línea base
3343 @code{staff-padding} se puede usar para alinear objetos como
3344 matices dinámicos a lo largo de una línea de base a una distancia
3345 fija del pentagrama, siempre que no exista ningún otro elemento de
3346 notación que fuerce una distancia mayor al pentagrama. No es una
3347 propiedad de @code{DynamicText} sino de @code{DynamicLineSpanner}.
3348 Esto es así porque la línea de base debe aplicarse por igual a
3349 @strong{todas} las dinámicas, entre ellas las que se han creado
3350 como objetos de extensión. Así que ésta es la forma de alinear
3351 las indicaciones de matiz en el ejemplo de la sección anterior:
3353 @cindex DynamicText, ejemplo de sobreescritura
3354 @cindex extra-spacing-width, propiedad, ejemplo
3355 @cindex DynamicLineSpanner, ejemplo de sobreescritura
3356 @cindex staff-padding, propiedad, ejemplo
3358 @lilypond[quote,fragment,ragged-right,verbatim]
3359 \override DynamicLineSpanner.staff-padding = #3
3360 \relative { a'4\f b\mf a\p b\mp }
3364 @node La propiedad self-alignment-X (auto-alineación en X)
3365 @unnumberedsubsubsec La propiedad @code{self-alignment-X} (auto-alineación en X)
3366 @translationof The self-alignment-X property
3368 El ejemplo siguiente muestra cómo ajustar la posición de un objeto
3369 de digitación de cuerda en relación a la plica de una nota
3370 mediante el alineamiento del límite derecho con el punto de
3371 referencia de la nota «padre»:
3373 @cindex StringNumber, ejemplo de sobreescritura
3374 @cindex self-alignment-X, propiedad, ejemplo
3376 @lilypond[quote,fragment,ragged-right,verbatim]
3379 \once \override StringNumber.self-alignment-X = #RIGHT
3383 @node La propiedad staff-position (posición en el pentagrama)
3384 @unnumberedsubsubsec La propiedad @code{staff-position} (posición en el pentagrama)
3385 @translationof The staff-position property
3387 @cindex objeto, colisión dentro del pentagrama
3389 Los silencios multi-compás en una voz pueden chocar con las notas
3390 en otra voz. Puesto que estos silencios se tipografían centrados
3391 entre las barras de compás se necesitaría bastante esfuerzo para
3392 que LilyPond averiguara qué otras notas podrían chocar con él, ya
3393 que actualmente todo el manejo de colisiones entre notas y
3394 silencios se hace solamente para notas y silencios que ocurren al
3395 mismo tiempo. He aquí un ejemplo de colisión de este tipo:
3397 @lilypond[quote,verbatim,ragged-right]
3398 << \relative { c'4 c c c } \\ { R1 } >>
3401 La mejor solución aquí es mover el silencio multi-compás hacia
3402 abajo, pues el silencio está en la voz dos. El ajuste
3403 predeterminado para @code{\voiceTwo} (es decir, en la segunda voz
3404 de una construcción @code{<<@{@dots{}@} \\ @{@dots{}@}>>}) es que
3405 @code{staff-position} tenga el valor -4 para MultiMeasureRest, así
3406 que tenemos que bajarlo, digamos, cuatro semi-espacios de
3407 pentagrama, al valor @w{@code{-8}}.
3409 @cindex MultiMeasureRest, ejemplo de sobreescritura
3410 @cindex staff-position, propiedad, ejemplo
3412 @lilypond[quote,verbatim,ragged-right]
3414 \relative { c'4 c c c }
3416 \override MultiMeasureRest.staff-position = #-8
3421 Esto es mejor que utilizar, por ejemplo, @code{extra-offset},
3422 porque la línea adicional por encima del silencio se inserta
3425 @node La propiedad extra-offset (desplazamiento adicional)
3426 @unnumberedsubsubsec La propiedad @code{extra-offset} (desplazamiento adicional)
3427 @translationof The extra-offset property
3429 @cindex posicionar objetos
3430 @cindex posicionar grobs
3431 @cindex objetos, posicionar
3432 @cindex grobs, posicionar
3434 La propiedad @code{extra-offset} da un completo control sobre el
3435 posicionamiento de un objeto tanto vertical como horizontalmente.
3437 En el ejemplo siguiente, la segunda digitación se desplaza
3438 ligeramente a la izquierda, y 1.8 espacios de pentagrama hacia
3441 @cindex fingering (digitación), ejemplo de sobreescritura
3442 @cindex extra-offset, propiedad, ejemplo
3444 @lilypond[quote,fragment,verbatim]
3446 \once \override Fingering.extra-offset = #'(-0.3 . -1.8)
3451 @node La propiedad positions (posiciones)
3452 @unnumberedsubsubsec La propiedad @code{positions} (posiciones)
3453 @translationof The positions property
3455 @cindex controlar manualmente grupos especiales, ligaduras y barras
3456 @cindex manual, control, de grupos especiales, ligaduras y barras
3457 @cindex grupos especiales, barras de, control manual
3458 @cindex ligaduras de expresión, control manual
3459 @cindex ligaduras de fraseo, control manual
3460 @cindex barras de corchea, control manual
3462 La propiedad @code{positions} permite controlar manualmente la
3463 posición vertical y de ahí también la inclinación de los
3464 tresillos, ligaduras de expresión y de fraseo, y barras de
3467 He aquí un ejemplo en el que las ligaduras de fraseo y de
3468 expresión chocan entre sí:
3470 @lilypond[quote,verbatim,ragged-right]
3471 \relative { a'8 \( ( a'16 ) a \) }
3474 @cindex PhrasingSlur, ejemplo de sobreescritura
3475 @cindex positions, propiedad, ejemplo
3478 Una posibilidad sería mover los dos extremos de la ligadura de
3479 fraseo hacia arriba. Podemos tratar de establecer el extremo
3480 izquierdo a 2.5 espacios de pentagrama por encima de la tercera
3481 línea y el extremo derecho a 4.5 también hacia arriba, y LilyPond
3482 seleccionaría la ligadura de fraseo de entre las candidatas que ha
3483 encontrado con sus extremos más cercanos a éstos:
3485 @lilypond[quote,verbatim,fragment,ragged-right]
3486 \once \override PhrasingSlur.positions = #'(2.5 . 4.5)
3487 a'8 \( ( a''16 ) a'' \)
3490 Esto supone una mejora, pero ¿por qué no bajar un poco el extremo
3491 derecho de la ligadura de expresión? Si lo probamos, veremos que
3492 no se puede hacer así. Ello es a causa de que no existen
3493 ligaduras de expresión candidatas que estén más bajas que la que
3494 ya se ha seleccionado, y en este caso la propiedad
3495 @code{positions} no tiene ningún efecto. Sin embargo, las
3496 ligaduras de unión, expresión y fraseo @emph{se pueden} colocar y
3497 conformar de manera muy exacta cuando se necesita. Para aprender
3498 la manera de hacerlo, consulte @ruser{Modificación de ligaduras de
3499 unión y de expresión}.
3501 Presentamos otro ejemplo. Vemos que la barra choca con las
3504 @lilypond[quote,verbatim,ragged-right]
3508 \relative { c'1~ 2. e8 f }
3517 \relative { c'1~ 2. e8 f }
3529 Esto se puede resolver manualmente elevando los dos extremos de la
3530 barra desde su posición a 1.81 espacios de pentagrama bajo la
3531 línea central hasta, digamos, 1 espacio:
3533 @cindex Beam, ejemplo de sobreescritura
3534 @cindex positions, propiedad, ejemplo
3536 @lilypond[quote,verbatim,ragged-right]
3540 \relative { c'1~ 2. e8 f }
3543 \override Beam.positions = #'(-1 . -1)
3550 \relative { c'1~ 2. e8 f }
3556 \revert Beam.positions
3563 Observe que la sobreescritura sigue aplicándose en la segunda voz
3564 del segundo compás de corcheas, pero no a ninguna de las barras de
3565 la primera voz, ni siquiera a las que están en el segundo compás,
3566 que es posterior. Tan pronto como la sobreescritura no pueda
3567 tener ningún efecto, debería ser revertida como se muestra.
3569 @node La propiedad force-hshift (forzar desplazamiento horizontal)
3570 @unnumberedsubsubsec La propiedad @code{force-hshift} (forzar desplazamiento horizontal)
3571 @translationof The force-hshift property
3573 Ahora podremos ver cómo aplicar las correcciones finales al
3574 ejemplo de Chopin que presentamos al final de @ref{Oigo voces},
3575 que dejamos con este aspecto:
3577 @lilypond[quote,verbatim,fragment,ragged-right]
3578 \new Staff \relative {
3593 Es necesario que la nota interior del primer acorde (el La bemol
3594 de la cuarta voz) no se aparte de la columna vertical de la nota
3595 aguda, por lo que usamos @code{\shiftOff}.
3597 En el segundo acorde preferimos que el Fa esté alineado con el La
3598 bemol y que la nota grave se coloque ligeramente a la derecha para
3599 evitar una colisión de las plicas. Lo conseguimos ajustando el
3600 valor de @code{force-hshift} en la @code{NoteColumn} del Re bemol
3601 grave para moverlo a la derecha medio espacio de pentagrama, y
3602 fijando @code{force-hshift} para el Fa al vaor cero. Observe que
3603 usamos @code{\once} para evitar que los ajustes se propaguen más
3604 allá del momento musical inmediato, aunque en este pequeño ejemplo
3605 podrían omitirse el @code{\once} y el segundo @code{\override} de
3606 la cuarta voz. Ello no supondría una buena práctica.
3608 Presentamos a continuación el resultado final:
3610 @cindex NoteColumn, ejemplo de sobreescritura
3611 @cindex force-hshift, propiedad, ejemplo
3613 @lilypond[quote,verbatim,fragment,ragged-right]
3614 \new Staff \relative {
3619 { <ees, c>2 \once \override NoteColumn.force-hshift = 0.5 des }
3622 { \once \shiftOff aes'2 \once \shiftOff f4 fes }
3629 @node Ejemplos reales de música
3630 @subsection Ejemplos reales de música
3631 @translationof Real music example
3633 Finalizaremos esta sección sobre los trucos mostrando los pasos
3634 que se deben tomar para tratar con un ejemplo complicado que
3635 necesita varios trucos para producir el resultado deseado. El
3636 ejemplo se ha escogido deliberadamente para ilustrar el uso de la
3637 Referencia de la Notación para resolver problemas de notación poco
3638 comunes. No es representativo del proceso de grabado más usual,
3639 por lo que ¡le recomendamos que no deje que estas dificultades le
3640 desanimen! ¡Afortunadamente, las dificultades como éstas no son
3643 El ejemplo está extraído de la Primera Balada de Chopin, Op. 23,
3644 compases 6 al 9, la transición entre el Lento inicial y el
3645 Moderato. Presentamos en primer lugar el aspecto que queremos que
3646 tenga el resultado, pero para evitar complicar demasiado el
3647 ejemplo hemos quitado las indicaciones dinámicas, las digitaciones
3650 @c The following should appear as music without code
3651 @c This example should not be indexed
3652 @c line-width ensures no break
3653 @lilypond[quote,ragged-right,line-width=6\in]
3654 rhMusic = \relative {
3657 \once \override Tie.staff-position = #3.5
3661 \mergeDifferentlyHeadedOn
3662 \mergeDifferentlyDottedOn
3663 bes2.\tempo "Moderato" r8
3669 % Reposition the c2 to the right of the merged note
3670 \once \override NoteColumn.force-hshift = #1.0
3671 % Move the c2 out of the main note column
3672 % so the merge will work
3679 % Stem on the d2 must be down to permit merging
3681 % Stem on the d2 should be invisible
3682 \tweak Stem.transparent ##t
3690 \mergeDifferentlyHeadedOff
3691 \mergeDifferentlyDottedOff
3696 lhMusic = \relative {
3698 <d g, d>1)\arpeggio |
3705 \new Staff = "RH" <<
3709 \new Staff = "LH" <<
3718 Observamos en primer lugar que la parte de la mano derecha del
3719 tercer compás requiere cuatro voces. Son las cinco corcheas
3720 unidas por una barra, la nota Do ligada, el Re blanca que se funde
3721 con el Re corchea, y el Fa sostenido negra con puntillo, que
3722 también está fundida con la corchea de su misma altura. Todo lo
3723 demás está en una sola voz, así que lo más fácil es introducir
3724 estas tres voces adicionales, en el momento en que se necesiten y
3725 de forma temporal. Si ha olvidado cómo hacerlo, lea las secciones
3726 @ref{Oigo voces} y @ref{Voces explícitas}. Aquí tomamos la
3727 decisión de utilizar voces instanciadas explícitamente para el
3728 pasaje polifónico, dado que LilyPond es más probable que pueda
3729 evitar las colisiones si todas las voces se instancian
3730 explícitamente de esta forma.
3732 Vamos a comenzar introduciendo las notas como dos variables y
3733 disponiendo la estructura de pentagramas en un bloque Score, y
3734 veremos qué produce LilyPond de forma predeterminada:
3736 @c line-width ensures no break
3737 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3738 rhMusic = \relative {
3744 % Start polyphonic section of four voices
3746 { c,8 d fis bes a } % continuation of main voice
3760 g2. % continuation of main voice
3764 lhMusic = \relative {
3773 \new Staff = "RH" <<
3777 \new Staff = "LH" <<
3786 Todas las notas son correctas, pero el aspecto está lejos de ser
3787 satisfactorio. La ligadura de unión choca con el cambio de
3788 compás, ciertas notas no se funden correctamente, y faltan algunos
3789 elementos de notación. En primer lugar trataremos con lo más
3790 fácil. Podemos añadir fácilmente la ligadura de expresión de la
3791 mano izquierda y la ligadura de fraseo de la mano derecha, pues
3792 todo ello se estudió en el Tutorial. Al hacerlo así obtenemos:
3794 @c line-width ensures no break
3795 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3796 rhMusic = \relative {
3802 % Start polyphonic section of four voices
3804 { c,8 d fis bes a } % continuation of main voice
3818 g2.\) % continuation of main voice
3822 lhMusic = \relative {
3831 \new Staff = "RH" <<
3835 \new Staff = "LH" <<
3844 El primer compás ahora es correcto. El segundo compás contiene un
3845 arpegio y acaba en una doble barra. ¿Cómo los hacemos, pues no
3846 han sido mencionados en este Manual de Aprendizaje? Aquí es donde
3847 tenemos que volver e la Referencia de la Notación. Buscando la
3848 palabra @q{arpegio} y @q{línea divisoria} en el índice nos muestra
3849 rápidamente que un arpegio se hace añadiendo @code{\arpeggio} a un
3850 acorde, y la doble barra se produce por medio de la instrucción
3851 @code{\bar "||"}. Esto podemos hacerlo fácilmente. A
3852 continuación tenemos que corregir la colisión entre la ligadura de
3853 unión y la indicación de compás. Esto se hace mejor moviendo la
3854 ligadura hacia arriba. Estudiamos cómo mover objetos
3855 anteriormente en @ref{Mover objetos}, donde dice que los objetos
3856 que están situados de forma relativa al pentagrama se pueden mover
3857 verticalmente sobreescribiendo su propiedad @code{staff-position},
3858 que se especifica en unidades de medio espacio de pentagrama
3859 respecto de la línea central del pentagrama. Así pues, la
3860 sobreescritura siguiente colocada justo antes de la primera nota
3861 ligada subirá la ligadura 3.5 medios espacios de pentagrama por
3862 encima de la línea central:
3864 @code{\once \override Tie.staff-position = #3.5}
3866 Con esto se completa el compás dos, dando como resultado:
3868 @c line-width ensures no break
3869 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3870 rhMusic = \relative {
3873 \once \override Tie.staff-position = #3.5
3878 % Start polyphonic section of four voices
3880 { c,8 d fis bes a } % continuation of main voice
3894 g2.\) % continuation of main voice
3898 lhMusic = \relative {
3900 <d g, d>1)\arpeggio |
3907 \new Staff = "RH" <<
3911 \new Staff = "LH" <<
3920 Vayamos ahora al tercer compás y comienzo de la sección Moderato.
3921 El tutorial nos enseñó cómo escribir una indicación de tempo
3922 mediante la instrucción @code{\tempo}, por lo que añadir
3923 @qq{Moderato} es fácil. Pero ahora ¿cómo fundimos notas que están
3924 en distintas voces? Aquí es donde debemos volver a buscar ayuda
3925 en el manual de Referencia de la notación. Al buscar la palabra
3926 @qq{merge} (mezcla) en el índice de la Referencia de la notación
3927 llegamos rápidamente a las instrucciones para mezclar notas con
3928 distinta cabeza y con o sin puntillo, en @ruser{Resolución de las
3929 colisiones}. En nuestro ejemplo tenemos que fusionar ambos tipos
3930 de nota en el transcurso de la sección polifónica del compás 3;
3931 por tanto, en virtud de la información que aparece en la
3932 Referencia de la Notación, escribimos
3935 \mergeDifferentlyHeadedOn
3936 \mergeDifferentlyDottedOn
3940 al principio de la sección, y
3943 \mergeDifferentlyHeadedOff
3944 \mergeDifferentlyDottedOff
3948 al final, dando como resultado:
3950 @c line-width ensures no break
3951 @lilypond[quote,ragged-right,line-width=6\in]
3952 rhMusic = \relative {
3955 \once \override Tie.staff-position = #3.5
3959 bes2.\tempo "Moderato" r8
3960 \mergeDifferentlyHeadedOn
3961 \mergeDifferentlyDottedOn
3962 % Start polyphonic section of four voices
3964 { c,8 d fis bes a } % continuation of main voice
3978 \mergeDifferentlyHeadedOff
3979 \mergeDifferentlyDottedOff
3980 g2.\) % continuation of main voice
3984 lhMusic = \relative {
3986 <d g, d>1)\arpeggio |
3993 \new Staff = "RH" <<
3997 \new Staff = "LH" <<
4006 Estas sobreescrituras han fundido los dos Fa sostenido, pero no
4007 los dos Re. ¿Por qué no? La respuesta está en la misma sección
4008 de la Referencia de la Notación: las notas que se fusionan deben
4009 tener las plicas en direcciones opuestas y dos notas no se pueden
4010 fusionar bien si hay una tercera nota en la misma columna. Aquí
4011 los dos Re tienen las plicas hacia arriba y hay una tercera nota:
4012 el Do. Sabemos cómo cambiar la dirección de la plica usando
4013 @code{\stemDown}, y la Referencia de la Notación también explica
4014 cómo mover el Do: aplicar un desplazamiento usando una de las
4015 instrucciones @code{\shift}. Pero ¿cuál? El Do está en la voz
4016 dos que tiene desactivado el desplazamiento, y los dos Re están en
4017 las voces uno y tres, que tienen el desplazamiento desactivado y
4018 activado, respectivamente. Por ello tenemos que desplazar el Do
4019 un nivel más todavía, usando @code{\shiftOnn} para evitar que
4020 interfiera con los dos Re. Al aplicar estos cambios obtenemos:
4022 @cindex Tie, ejemplo de sobreescritura
4023 @cindex staff-position, propiedad, ejemplo
4025 @c line-width ensures no break
4026 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
4027 rhMusic = \relative {
4030 \once \override Tie.staff-position = #3.5
4034 bes2.\tempo "Moderato" r8
4035 \mergeDifferentlyHeadedOn
4036 \mergeDifferentlyDottedOn
4037 % Start polyphonic section of four voices
4039 { c,8 d fis bes a } % continuation of main voice
4042 % Move the c2 out of the main note column
4043 % so the merge will work
4048 % Stem on the d2 must be down to permit merging
4056 \mergeDifferentlyHeadedOff
4057 \mergeDifferentlyDottedOff
4058 g2.\) % continuation of main voice
4062 lhMusic = \relative {
4064 <d g, d>1)\arpeggio |
4071 \new Staff = "RH" <<
4075 \new Staff = "LH" <<
4084 Ya casi está. Solamente quedan dos problemas: la plica hacia
4085 abajo sobre el Re fusionado no tendría que estar ahí, y el Do
4086 estaría mejor colocado a la derecha de los Re. Sabemos cómo hacer
4087 las dos cosas a partir de trucos anteriores: hacemos la plica
4088 transparente, y movemos el Do con la propiedad
4089 @code{force-hshift}. Aquí tenemos el resultado final:
4091 @cindex NoteColumn, ejemplo de sobreescritura
4092 @cindex force-hshift, propiedad, ejemplo
4093 @cindex Stem, ejemplo de sobreescritura
4094 @cindex transparent, propiedad, ejemplo
4096 @c line-width ensures no break
4097 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
4098 rhMusic = \relative {
4101 \once \override Tie.staff-position = #3.5
4105 bes2.\tempo "Moderato" r8
4106 \mergeDifferentlyHeadedOn
4107 \mergeDifferentlyDottedOn
4108 % Start polyphonic section of four voices
4110 { c,8 d fis bes a } % continuation of main voice
4114 % Reposition the c2 to the right of the merged note
4115 \once \override NoteColumn.force-hshift = #1.0
4116 % Move the c2 out of the main note column
4117 % so the merge will work
4124 % Stem on the d2 must be down to permit merging
4126 % Stem on the d2 should be invisible
4127 \tweak Stem.transparent ##t
4135 \mergeDifferentlyHeadedOff
4136 \mergeDifferentlyDottedOff
4137 g2.\) % continuation of main voice
4141 lhMusic = \relative {
4143 <d g, d>1)\arpeggio |
4150 \new Staff = "RH" <<
4154 \new Staff = "LH" <<
4164 @node Trucajes adicionales
4165 @section Trucajes adicionales
4166 @translationof Further tweaking
4169 * Otras aplicaciones de los trucos::
4170 * Uso de variables para los ajustes de disposición::
4172 * Otras fuentes de información::
4173 * Trucos avanzados con Scheme::
4176 @node Otras aplicaciones de los trucos
4177 @subsection Otras aplicaciones de los trucos
4178 @translationof Other uses for tweaks
4181 * Unir notas entre voces distintas::
4182 * Simulación de un calderón en el MIDI::
4185 @cindex eliminar objetos
4186 @cindex objetos, eliminar
4188 @node Unir notas entre voces distintas
4189 @unnumberedsubsubsec Unir notas entre voces distintas
4190 @translationof Tying notes across voices
4192 @cindex ligar notas entre voces distintas
4194 El ejemplo siguiente muestra cómo conectar notas que están en
4195 distintas voces utilizando ligaduras de unión. Normalmente sólo
4196 se pueden conectar mediante ligaduras de unión notas que estén en
4197 la misma voz. Usando dos voces, con las notas ligadas en una de
4201 << { b'8~ 8\noBeam } \\ { b'8[ g'] } >>
4205 y borrando la primera plica (con su corchete) hacia arriba en esa
4206 voz, da la impresión de que la ligadura se cruza entre las voces:
4209 @cindex Stem, example of removing
4210 @cindex Flag, example of removing
4211 @cindex @code{\omit}, example
4212 @cindex example of @code{\omit}
4214 @lilypond[quote,verbatim]
4227 Manual de aprendizaje
4228 @ref{El prefijo once,,El prefijo @code{@bs{}once}},
4229 @ref{La propiedad stencil (sello)}.
4232 @node Simulación de un calderón en el MIDI
4233 @unnumberedsubsubsec Simulación de un calderón en el MIDI
4234 @translationof Simulating a fermata in MIDI
4236 @cindex sello, uso de la propiedad
4237 @cindex fermata, realización en MIDI
4239 Para los objetos fuera-del-pentagrama, normalmente es mejor
4240 sobreescribir la propiedad @code{stencil} («sello») del objeto que
4241 su propiedad @code{transparent} cuando desee quitarlos de la
4242 salida impresa. Mediante el establecimiento de la propiedad
4243 @code{stencil} de un objeto al valor @code{#f} podemos quitar el
4244 objeto por completo de la salida impresa. Esto significa que no
4245 tiene efecto sobre la colocación de otros objetos que pudieran
4246 colocarse en relación a él.
4248 Por ejemplo, si quisiéramos cambiar la indicación metronómica con
4249 el propósito de simular un calderón en la salida MIDI, seguramente
4250 no querríamos que la indicación metronómica apareciese en la
4251 salida impresa, y no querríamos influir sobre la separación entre
4252 los dos sistemas ni sobre la colocación de las anotaciones
4253 adyacentes sobre el pentagrama. Por lo tanto, establecer su
4254 propiedad @code{stencil} al valor @code{#f} sería la mejor manera.
4255 Mostramos aquí el efecto de los dos métodos:
4257 @cindex MetronomeMark, ejemplo de sobreescritura
4258 @cindex transparent, propiedad, ejemplo
4260 @lilypond[quote,verbatim,ragged-right]
4263 % Visible tempo marking
4266 \once \hide Score.MetronomeMark
4267 % Invisible tempo marking to lengthen fermata in MIDI
4270 % New tempo for next section
4279 @cindex MetronomeMark, ejemplo de sobreescritura
4280 @cindex stencil, propiedad, ejemplo
4282 @lilypond[quote,verbatim,ragged-right]
4285 % Visible tempo marking
4288 \once \omit Score.MetronomeMark
4289 % Invisible tempo marking to lengthen fermata in MIDI
4292 % New tempo for next section
4302 Ambos métodos quitan de la salida impresa la indicación
4303 metronómica que alarga el calderón, y los dos afectan al tempo del
4304 MIDI tal y como queríamos, pero la indicación metronómica
4305 transparente de la primera línea fuerza una colocación muy alta de
4306 la indicación de tempo que sigue, mientras que la segunda (con el
4307 sello suprimido) no lo hace.
4313 @node Uso de variables para los ajustes de disposición
4314 @subsection Uso de variables para los ajustes de disposición
4315 @translationof Using variables for layout adjustments
4317 @cindex variables, usar para sobreescrituras
4318 @cindex sobreescrituras, usar variablas para
4319 @cindex ajustes, usar variables para
4320 @cindex ajustes de disposición, usar variables para hacer
4322 Las instrucciones de sobreescritura son con frecuencia largas y
4323 tediosas de escribir, y se tienen que escribir de forma
4324 absolutamente correcta. Si las mismas sobreescrituras se van a
4325 utilizar muchas veces, podría merecer la pena definir variables
4328 Supongamos que queremos realzar ciertas palabras de la letra de
4329 una canción imprimiéndolas en cursiva y negrita. Las
4330 instrucciones @code{\italic} y @code{\bold} sólo funcionan dentro
4331 de la letra de las canciones si están incluidas, junto con la
4332 palabra o palabras que se pretenden modificar, dentro de un
4333 @code{\markup}, lo que las hace tediosas de escribir. La necesidad
4334 de incluir las propias palabras impide que se puedan usar en
4335 variables simples. ¿Podríamos, como alternativa, utilizar las
4336 instrucciones @code{\override} y @code{\revert}?
4339 @code{\override Lyrics.LyricText.font-shape = #'italic}
4340 @code{\override Lyrics.LyricText.font-series = #'bold}
4342 @code{\revert Lyrics.LyricText.font-shape}
4343 @code{\revert Lyrics.LyricText.font-series}
4346 Estas instrucciones también serían extremadamente tediosas de
4347 escribir si hubiera muchas palabras que quisiéramos subrayar.
4348 Pero sí @emph{podemos} definirlas como dos variables y usarlas
4349 para delimitar las palabras que destacar. Otra ventaja de la
4350 utilización de variables para estas sobreescrituras es que ya no
4351 son necesarios los espacios que rodean al punto, puesto que no se
4352 interpretan directamente en el modo @code{\lyricmode}. He aquí un
4353 ejemplo de esto, aunque en la práctica quizá elegiríamos unos
4354 nombres de variable más cortos para que fueran más rápidos de
4357 @cindex LyricText, ejemplo de sobreescritura
4358 @cindex font-shape, propiedad, ejemplo
4359 @cindex font-series, propiedad, ejemplo
4361 @lilypond[quote,verbatim]
4363 \override Lyrics.LyricText.font-shape = #'italic
4364 \override Lyrics.LyricText.font-series = #'bold
4368 \revert Lyrics.LyricText.font-shape
4369 \revert Lyrics.LyricText.font-series
4372 global = { \key c \major \time 4/4 \partial 4 }
4374 SopranoMusic = \relative { c'4 | e4. e8 g4 g | a4 a g }
4375 AltoMusic = \relative { c'4 | c4. c8 e4 e | f4 f e }
4376 TenorMusic = \relative { e4 | g4. g8 c4. b8 | a8 b c d e4 }
4377 BassMusic = \relative { c4 | c4. c8 c4 c | f8 g a b c4 }
4379 VerseOne = \lyrics {
4380 E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save,
4383 VerseTwo = \lyricmode {
4384 O | \once \emphasize Christ, whose voice the | wa -- ters heard,
4387 VerseThree = \lyricmode {
4388 O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood
4391 VerseFour = \lyricmode {
4392 O | \emphasize Tri -- ni -- ty \normal of | love and pow'r
4399 \new Voice = "Soprano" { \voiceOne \global \SopranoMusic }
4400 \new Voice = "Alto" { \voiceTwo \AltoMusic }
4401 \new Lyrics \lyricsto "Soprano" { \VerseOne }
4402 \new Lyrics \lyricsto "Soprano" { \VerseTwo }
4403 \new Lyrics \lyricsto "Soprano" { \VerseThree }
4404 \new Lyrics \lyricsto "Soprano" { \VerseFour }
4408 \new Voice = "Tenor" { \voiceOne \TenorMusic }
4409 \new Voice = "Bass" { \voiceTwo \BassMusic }
4416 @node Hojas de estilo
4417 @subsection Hojas de estilo
4418 @translationof Style sheets
4420 La salida que produce LilyPond se puede modificar profundamente;
4421 consulte @ref{Trucar la salida} para leer detalles sobre este
4422 asunto. Pero ¿qué ocurre si tiene muchos archivos a los que les
4423 quiere aplicar sus propios trucos? O ¿qué ocurre si,
4424 sencillamente, quiere separar los trucos de la propia música?
4425 Todo esto es bastante fácil de conseguir.
4427 Veamos un ejemplo. No se preocupe si no entiende las partes que
4428 tienen todos los @code{#()}. Esto se explicará en @ref{Trucos
4429 avanzados con Scheme}.
4431 @lilypond[quote,verbatim,ragged-right]
4433 \tweak self-alignment-X #-0.6
4434 #(make-dynamic-script
4435 #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4438 #(define-music-function
4441 #{ <>^\markup \bold \box #string #})
4445 a'4.\mpdolce d8 cis4--\glissando a |
4449 g8(\! fis)-. e( d)-. cis2 |
4453 Hagamos algo respecto a las definiciones @code{mpdolce} e
4454 @code{inst}. Éstas producen la salida que deseamos, pero quizá
4455 las querríamos utilizar en otra pieza. Podríamos simplemente
4456 copiarlas y pegarlas al principio de cada archivo, pero sería
4457 bastante molesto. También hace que se queden las definiciones a
4458 la vista dentro de nuestros archivos de música, y yo personalmente
4459 encuentro todos los @code{#()} bastante poco estéticos. Los vamos
4460 a esconder dentro de otro archivo:
4463 %%% guardar esto en un archivo con el nombre "definiciones.ily"
4465 \tweak self-alignment-X #-0.6
4466 #(make-dynamic-script
4467 #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4470 #(define-music-function
4473 #@{ <>^\markup \bold \box #string #@})
4476 Haremos referencia a este archivo utilizando la instrucción
4477 @code{\include} al principio del archivo de música (la extensión
4478 @code{.ily} se utiliza para distinguir este archivo de inclusión
4479 --que se supone que no debe ser procesado de forma independiente--
4480 del archivo principal). Ahora modificaremos la música (guardemos
4481 este archivo como @file{musica.ly}).
4483 @c We have to do this awkward example/lilypond-non-verbatim
4484 @c because we can't do the \include stuff in the manual.
4487 \include "definiciones.ily"
4491 a'4.\mpdolce d8 cis4--\glissando a |
4495 g8(\! fis)-. e( d)-. cis2 |
4499 @lilypond[quote,ragged-right]
4501 \tweak self-alignment-X #-0.6
4502 #(make-dynamic-script
4503 #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4506 #(define-music-function
4509 #{ <>^\markup \bold \box #string #})
4513 a'4.\mpdolce d8 cis4--\glissando a |
4517 g8(\! fis)-. e( d)-. cis2 |
4521 Eso tiene mejor aspecto, pero haremos algunos cambios más. El
4522 glissando es difícil de ver, así que lo haremos más grueso y lo
4523 acercaremos a las cabezas de las notas. Pondremos la indicación
4524 metronómica encima de la clave, en lugar de ir encima de la
4525 primera nota. Y por último, mi profesor de composición odia las
4526 indicaciones de compás @q{C}, así que la convertiremos en @q{4/4}.
4528 Sin embargo, no debemos cambiar el archivo @file{musica.ly}.
4529 Sustituyamos nuestro archivo @file{definiciones.ily} con éste:
4532 %%% definiciones.ily
4534 \tweak self-alignment-X #-0.6
4535 #(make-dynamic-script
4536 #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4539 #(define-music-function
4542 #@{ <>^\markup \bold \box #string #@})
4547 \override MetronomeMark.extra-offset = #'(-5 . 0)
4548 \override MetronomeMark.padding = #'3
4552 \override TimeSignature.style = #'numbered
4556 \override Glissando.thickness = #3
4557 \override Glissando.gap = #0.1
4562 @lilypond[quote,ragged-right]
4564 \tweak self-alignment-X #-0.6
4565 #(make-dynamic-script
4566 #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4569 #(define-music-function
4572 #{ <>^\markup \bold \box #string #})
4577 \override MetronomeMark.extra-offset = #'(-5 . 0)
4578 \override MetronomeMark.padding = #'3
4582 \override TimeSignature.style = #'numbered
4586 \override Glissando.thickness = #3
4587 \override Glissando.gap = #0.1
4593 a'4.\mpdolce d8 cis4--\glissando a |
4597 g8(\! fis)-. e( d)-. cis2 |
4601 ¡Eso tiene un aspecto mucho mejor! Ahora suponga que quiere
4602 publicar esta pieza. A mi profesor de composición no le gustan
4603 las indicaciones de compás @q{C}, pero yo les tengo cierto cariño.
4604 Copiaremos el archivo actual @file{definiciones.ily} a
4605 @file{publicar-web.ily} y modificaremos éste. Como el propósito
4606 de esta música es producir un PDF que va a mostrarse en la
4607 pantalla, también vamos a aumentar el tamaño general de la salida.
4610 %%% publicar-web.ily
4612 \tweak self-alignment-X #-0.6
4613 #(make-dynamic-script
4614 #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4617 #(define-music-function
4620 #@{ <>^\markup \bold \box #string #@})
4622 #(set-global-staff-size 23)
4627 \override MetronomeMark.extra-offset = #'(-5 . 0)
4628 \override MetronomeMark.padding = #'3
4635 \override Glissando.thickness = #3
4636 \override Glissando.gap = #0.1
4641 @lilypond[quote,ragged-right]
4643 \tweak self-alignment-X #-0.6
4644 #(make-dynamic-script
4645 #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4648 #(define-music-function
4651 #{ <>^\markup \bold \box #string #})
4653 #(set-global-staff-size 23)
4657 \override MetronomeMark.extra-offset = #'(-5 . 0)
4658 \override MetronomeMark.padding = #'3
4661 \override Glissando.thickness = #3
4662 \override Glissando.gap = #0.1
4668 a'4.\mpdolce d8 cis4--\glissando a |
4672 g8(\! fis)-. e( d)-. cis2 |
4676 Ahora, en la música, simplemente sustituyo @code{\include
4677 "definiciones.ily"} por @code{\include "publicar-web.ily"}. Por
4678 supuesto, podríamos hacer esto aún más práctico. Podríamos hacer
4679 un archivo @file{definiciones.ily} que contuviera solamente las
4680 definiciones de @code{mpdolce} y de @code{inst}, un archivo
4681 @file{publicar-web.ily} que contuviera solamente la sección
4682 @code{\layout} que se mostró en el ejemplo, y un archivo
4683 @file{universidad.ily} que contendría solamente los trucos para
4684 producir la salida que le gusta a mi profesor. El comienzo de
4685 @file{musica.ly} tendría entonces este aspecto:
4688 \include "definiciones.ily"
4690 %%% ¡Quitar el comentario de una sola de estas líneas!
4691 \include "publicar-web.ily"
4692 %\include "universidad.ily"
4695 Este enfoque puede ser útil incluso si va a producir sólo un
4696 conjunto de particellas. Yo utilizo media docena de archivos de
4697 @q{hojas de estilo} para mis proyectos. Comienzo todos los
4698 archivos de música con @code{\include "../global.ily"}, que
4703 \version @w{"@version{}"}
4705 #(ly:set-option 'point-and-click #f)
4707 \include "../iniciar/iniciar-definiciones.ily"
4708 \include "../iniciar/iniciar-disposicion.ily"
4709 \include "../iniciar/iniciar-cabeceras.ily"
4710 \include "../iniciar/iniciar-papel.ily"
4714 @node Otras fuentes de información
4715 @subsection Otras fuentes de información
4716 @translationof Other sources of information
4718 La documentación del manual de Referencia de Funcionamiento
4719 Interno contiene montañas de información sobre LilyPond, pero se
4720 puede obtener más información aún leyendo los archivos internos de
4721 LilyPond. Para echarles un vistazo, en primer lugar debe buscar
4722 la carpeta correspondiente a su sistema. La ubicación de esta
4723 carpeta depende (a) de si consiguió el programa LilyPond
4724 descargando un binario precompilado desde el sitio web
4725 lilypond.org o si lo instaló mediante un gestor de paquetes (es
4726 decir, distribuido con GNU/Linux, o instalado bajo fink o cygwin)
4727 o fue compilado a partir de la fuente, y (b) de qué sistema
4728 operativo está utilizando:
4730 @subsubsubheading Descargado de lilypond.org
4737 @file{@var{CARPETA_DE_INSTALACIÓN}/lilypond/usr/@/share/lilypond/current/}
4744 @file{@var{CARPETA_DE_INSTALACIÓN}/LilyPond.app/Contents/@/Resources/share/lilypond/current/}
4747 bien haciendo @code{cd} hacia este directorio desde el Terminal, o
4748 bien manteniendo pulsada la tecla de Control y haciendo click
4749 sobre la aplicación de LilyPond, y allí eligiendo @q{Mostrar el
4750 contenido del paquete}.
4754 Mediante el Explorador de Windows, diríjase a
4756 @file{@var{CARPETA_DE_INSTALACIÓN}/LilyPond/usr/@/share/lilypond/current/}
4761 @subsubsubheading Instalado mediante un gestor de paquetes o compilado a partir de la fuente
4763 Diríjase a @file{@var{PREFIJO}/share/lilypond/@var{X.Y.Z}/}, donde
4764 @var{PREFIJO} se encuentra determinado por su administrador de
4765 paquetes o guión @code{configure}, y @var{X.Y.Z} es el número de
4766 la versión de LilyPond.
4770 Dentro de esta carpeta, las dos subcarpetas interesantes son
4773 @item @file{ly/} - contiene archivos en formato LilyPond
4774 @item @file{scm/} - contiene archivos en formato Scheme
4777 Vamos a comenzar observando algunos archivos que están en
4778 @file{ly/}. Abra @file{ly/property-init.ly} con un editor de
4779 textos. El mismo que usaría normalmente para los archivos
4780 @file{.ly} servirá perfectamente. Este archivo contiene las
4781 definiciones de todas las instrucciones estándar predefinidas de
4782 LilyPond, como por ejemplo @code{\tieUp} y @code{\slurDotted}.
4783 Podrá ver que no son nada más que definiciones de variables que
4784 contienen una o varias instrucciones @code{\override}. Por
4785 ejemplo, @code{\tieDotted} está definido de tal forma que su valor
4790 \override Tie.dash-period = #0.75
4791 \override Tie.dash-fraction = #0.1
4795 Si no le gustan los valores predeterminados, estas instrucciones
4796 predefinidas se pueden redefinir con facilidad como cualquier otra
4797 variable, al principio de su archivo de código de entrada.
4799 Los siguientes son los archivos más útiles que se encuentran en
4802 @multitable @columnfractions .4 .6
4805 @item @file{ly/engraver-init.ly}
4806 @tab Definiciones de Contextos de grabadores
4807 @item @file{ly/paper-defaults-init.ly}
4808 @tab especificaciones de valores predeterminados relacionados con el papel
4809 @item @file{ly/performer-init.ly}
4810 @tab Definiciones de Contextos de interpretación
4811 @item @file{ly/property-init.ly}
4812 @tab Definiciones de todas las instrucciones predefinidas que son comunes
4813 @item @file{ly/spanner-init.ly}
4814 @tab Definiciones de las instrucciones predefinidas relacionadas con los objetos de extensión
4817 Otros ajustes (como las definiciones de las instrucciones de
4818 marcado) se almacenan como archivos @file{.scm} (de Scheme). El
4819 lenguaje de programación Scheme se utiliza para proporcionar un
4820 interfaz programable en el funcionamiento interno de LilyPond.
4821 Cualquier explicación adicional sobre estos archivos se encuentra
4822 por el momento fuera del ámbito de este manual, porque se
4823 requieren conocimientos del lenguaje Scheme. Se advierte a los
4824 usuarios que se necesita una importante cantidad de conocimientos
4825 técnicos o de tiempo para comprender el lenguaje Scheme y estos
4826 archivos (véase @rextend{Tutorial de Scheme}).
4828 Si ya tiene estos conocimientos, los archivos de Scheme que pueden
4831 @multitable @columnfractions .4 .6
4834 @item @file{scm/auto-beam.scm}
4835 @tab Valores predeterminados de sub-barrado
4836 @item @file{scm/define-grobs.scm}
4837 @tab valores predeterminados de las propiedades de grobs
4838 @item @file{scm/define-markup-commands.scm}
4839 @tab Especificar todas las instrucciones de marcado
4840 @item @file{scm/midi.scm}
4841 @tab Ajustes predeterminados para la salida MIDI
4842 @item @file{scm/output-lib.scm}
4843 @tab Ajustes que afectan al aspecto de los trastes, colores, alteraciones, lineas divisorias, etc.
4844 @item @file{scm/parser-clef.scm}
4845 @tab Definiciones de las claves contempladas
4846 @item @file{scm/script.scm}
4847 @tab Ajustes predeterminados para las articulaciones
4851 @node Trucos avanzados con Scheme
4852 @subsection Trucos avanzados con Scheme
4853 @translationof Advanced tweaks with Scheme
4855 Aunque es posible hacer muchas cosas con las instrucciones
4856 @code{\override} y @code{\tweak} , tenemos una forma incluso más
4857 poderosa de modificar el funcionamiento de LilyPond, a través de
4858 un interface programable hacia las operaciones internas de
4859 LilyPond. Se puede incorporar código escrito en el lenguaje de
4860 programación Scheme, directamente en el mecanismo de
4861 funcionamiento de LilyPond. Por supuesto, para hacer esto se
4862 necesitan al menos unos conocimientos básicos de programación en
4863 Scheme, y damos una introducción en el @rextend{Tutorial de
4866 Como ejemplo que ilustra una de las muchas posibilidades, en lugar
4867 de dar a una propiedad un valor constante, se puede establecer al
4868 resultado de un procedimiento de Scheme que se invoca cada vez que
4869 LilyPond accede a esta propiedad. La propiedad se puede
4870 establecer dinámicamente a un valor determinado por el
4871 procedimiento en el momento en que se invoca. En este ejemplo
4872 damos a las cabezas de las notas un color que depende de su
4873 posición dentro del pentagrama.
4875 @cindex x11-color, función, ejemplo de utilización
4876 @cindex NoteHead, ejemplo de sobreescritura
4877 @cindex color, propiedad, establecer a procedimiento de Scheme
4879 @lilypond[quote,verbatim,ragged-right]
4880 #(define (color-notehead grob)
4881 "Color the notehead according to its position on the staff."
4882 (let ((mod-position (modulo (ly:grob-property grob 'staff-position)
4885 ;; Return rainbow colors
4886 ((1) (x11-color 'red )) ; for C
4887 ((2) (x11-color 'orange )) ; for D
4888 ((3) (x11-color 'yellow )) ; for E
4889 ((4) (x11-color 'green )) ; for F
4890 ((5) (x11-color 'blue )) ; for G
4891 ((6) (x11-color 'purple )) ; for A
4892 ((0) (x11-color 'violet )) ; for B
4896 % Arrange to obtain color from color-notehead procedure
4897 \override NoteHead.color = #color-notehead
4898 a2 b | c2 d | e2 f | g2 a |
4902 Se pueden encontrar ejemplos adicionales que muestran la
4903 utilización de estos interfaces programables, en
4904 @rextendnamed{Callback functions,Funciones de callback}.