]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/es/learning/tweaks.itely
Doc-es: update Learning/Tweaks.
[lilypond.git] / Documentation / es / learning / tweaks.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
2
3 @ignore
4     Translation of GIT committish: db92af51a444062c8edaef3afa36f57375b8feeb
5
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..
9 @end ignore
10
11 @c \version "2.19.22"
12
13 @node Trucar la salida
14 @chapter Trucar la salida
15 @translationof Tweaking output
16
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.
20
21
22 @menu
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::
30 @end menu
31
32 @node Elementos de trucaje
33 @section Elementos de trucaje
34 @translationof Tweaking basics
35
36 @menu
37 * Introducción al trucaje::
38 * Objetos e interfaces::
39 * Convenciones de nombres de objetos y propiedades::
40 * Métodos de trucaje::
41 @end menu
42
43 @node Introducción al trucaje
44 @subsection Introducción al trucaje
45 @translationof Introduction to tweaks
46
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.
54
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.
61
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.
66
67 @node Objetos e interfaces
68 @subsection Objetos e interfaces
69 @translationof Objects and interfaces
70
71 @cindex objeto
72 @cindex grob
73 @cindex objeto de extensión
74 @cindex interfaz
75 @cindex propiedades de objetos
76 @cindex objeto, propiedades de
77 @cindex layout (disposición), objeto de
78 @cindex objeto de disposición (layout)
79
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.
84
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
100 de propiedad.
101
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.
110
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}.
118
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
124 @code{\startStaff}.
125
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.
133
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.
147
148 Estos son, en fin, los términos principales relativos a los
149 objetos que vamos a utilizar en este capítulo.
150
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
154
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
159
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.
169
170 @multitable @columnfractions .33 .33 .33
171 @headitem Objeto o tipo de propiedad
172   @tab Convención de nomenclatura
173   @tab Ejemplos
174 @item Contextos
175   @tab Aaaa o AaaaAaaaAaaa
176   @tab Staff, GrandStaff
177 @item Objetos de presentación
178   @tab Aaaa o AaaaAaaaAaaa
179   @tab Slur, NoteHead
180 @item Grabadores
181   @tab Aaaa_aaa_engraver
182   @tab Clef_engraver, Note_heads_engraver
183 @item Interfaces
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
192 @end multitable
193
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.
198
199 @seealso
200 Referencia de la notación:
201 @ruser{Modificar las propiedades}.
202
203
204 @node Métodos de trucaje
205 @subsection Métodos de trucaje
206 @translationof Tweaking methods
207
208 @cindex trucaje, métodos de
209
210 @strong{La instrucción \override}
211
212 @menu
213 * La instrucción override::
214 * La instrucción revert::
215 * El prefijo once::
216 * La instrucción overrideProperty::
217 * La instrucción tweak::
218 @end menu
219
220 @node La instrucción override
221 @unnumberedsubsubsec La instrucción @code{@bs{}override}
222 @translationof The override command
223
224 @cindex override, instrucción
225 @cindex override (sobreescritura), sintaxis de
226
227 @funindex \override
228
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.
235
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.
243 Veamos cómo se hace.
244
245 La sintaxis genérica de esta instrucción es:
246
247 @example
248 \override @var{Contexto}.@var{ObjetoDePresentación}.@var{propiedad-de-presentación} =
249 #@var{valor}
250 @end example
251
252 @noindent
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}.
257
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
263 especificar.
264
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.
270
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}.
280
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:
285
286 @cindex color, propiedad, ejemplo
287 @cindex NoteHead, ejemplo de sobreescritura
288
289 @lilypond[quote,ragged-right,verbatim]
290 \relative {
291   c'4 d
292   \override NoteHead.color = #red
293   e4 f |
294   \override NoteHead.color = #green
295   g4 a b c |
296 }
297 @end lilypond
298
299
300 @node La instrucción revert
301 @unnumberedsubsubsec La instrucción @code{@bs{}revert}
302 @translationof The revert command
303
304 @cindex revert, instrucción
305
306 @funindex \revert
307
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}.
314
315 @example
316 \revert @var{Contexto}.@var{ObjetoDePresentación}.@var{propiedad-de-presentación}
317 @end example
318
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:
324
325 @cindex color, propiedad, ejemplo
326 @cindex NoteHead, ejemplo de sobreescritura
327
328 @lilypond[quote,ragged-right,verbatim]
329 \relative {
330   c'4 d
331   \override NoteHead.color = #red
332   e4 f |
333   \override NoteHead.color = #green
334   g4 a
335   \revert NoteHead.color
336   b4 c |
337 }
338 @end lilypond
339
340
341 @node El prefijo once
342 @unnumberedsubsubsec El prefijo @code{@bs{}once}
343 @translationof The once prefix
344
345 @funindex \once
346
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:
355
356 @cindex color, propiedad, ejemplo
357 @cindex NoteHead, ejemplo de sobreescritura
358
359 @lilypond[quote,verbatim]
360 \relative {
361   c'4 d
362   \override NoteHead.color = #red
363   e4 f |
364   \once \override NoteHead.color = #green
365   g4 a
366   \once \revert NoteHead.color
367   b c |
368   \revert NoteHead.color
369   f2 c |
370 }
371 @end lilypond
372
373 El prefijo @code{\once} también se puede usar delante de muchas
374 instrucciones predefinidas para limitar su efecto a un solo
375 momento musical:
376
377 @lilypond[quote,verbatim]
378 \relative {
379   c'4( d)
380   \once \slurDashed
381   e4( f) |
382   g4( a)
383   \once \hideNotes
384   b( c) |
385 }
386 @end lilypond
387
388 @node La instrucción overrideProperty
389 @unnumberedsubsubsec La instrucción @code{@bs{}overrideProperty}
390 @translationof The overrideProperty command
391
392 @cindex overrideProperty, instrucción
393
394 @funindex \overrideProperty
395
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
401
402
403 @node La instrucción tweak
404 @unnumberedsubsubsec La instrucción @code{@bs{}tweak}
405 @translationof The tweak command
406
407 @cindex tweak, instrucción
408
409 @funindex \tweak
410
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.
418
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}:
422
423 @cindex font-size, propiedad, ejemplo
424 @cindex NoteHead, ejemplo de sobreescritura
425
426 @lilypond[quote,ragged-right,verbatim]
427 \relative {
428   <c' e g>4
429   \once \override NoteHead.font-size = #-3
430   <c e g>4
431   <c e g>4
432 }
433 @end lilypond
434
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
441 @code{\override}.
442
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.
448
449 Así pues, volviendo a nuestro ejemplo, el tamaño de la nota
450 intermedia se cambiaría de la siguiente forma:
451
452 @cindex font-size, propiedad, ejemplo
453 @cindex @code{\tweak}, ejemplo
454
455 @lilypond[quote,ragged-right,verbatim]
456 \relative {
457   <c' e g>4
458   <c \tweak font-size #-3 e g>4
459 }
460 @end lilypond
461
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
468 sencilla es:
469
470 @example
471 \tweak @var{propiedad-de-presentación} #@var{valor}
472 @end example
473
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í:
476
477 @cindex color, propiedad, ejemplo
478 @cindex @code{\tweak}, ejemplo
479
480 @lilypond[quote,fragment,ragged-right,verbatim]
481 a'4^"Black"
482   -\tweak color #red ^"Red"
483   -\tweak color #green _"Green"
484 @end lilypond
485
486 @noindent
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
492 último lugar.
493
494 @cindex @code{\tweak}, Accidental
495 @cindex @code{\tweak}, specific layout object
496
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:
503
504 @lilypond[quote,fragment,ragged-right,verbatim]
505 <\tweak Accidental.color #red   cis''4
506  \tweak Accidental.color #green es''
507  g''>
508 @end lilypond
509
510 Esta forma extensa de la instrucción @code{\tweak} se puede describir
511 como
512 @example
513 \tweak @var{LayoutObject}.@var{layout-property} #@var{value}
514 "ANTES" \tweak @var{objeto-de-presentación}.@var{propiedad-de-presentación} @var{valor}
515 @end example
516
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
523
524 @funindex TupletBracket
525
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.
537
538 @cindex @code{\tweak}, ejemplo
539 @cindex direction, propiedad, ejemplo
540 @cindex color, propiedad, ejemplo
541
542 @lilypond[quote,ragged-right,verbatim]
543 \relative c'' {
544   \tweak direction #up
545   \tuplet 3/4 {
546     \tweak color #red
547     \tuplet 3/2 { c8[ c c] }
548     \tuplet 3/2 { c8[ c c] }
549     \tuplet 3/2 { c8[ c c] }
550   }
551 }
552 @end lilypond
553
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}:
557
558 @cindex text, propiedad, ejemplo
559 @cindex tuplet-number, función, ejemplo
560 @cindex transparent, propiedad, ejemplo
561 @cindex TupletNumber, ejemplo de sobreescritura
562
563 @lilypond[quote,ragged-right,verbatim]
564 \relative {
565   \tuplet 3/2 { c'8[ c c] }
566   \once \override TupletNumber.text = #tuplet-number::calc-fraction-text
567   \tuplet 3/2 {
568     c8[ c]
569     c8[ c]
570     \once \override TupletNumber.transparent = ##t
571     \tuplet 3/2 { c8[ c c] }
572     \tuplet 3/2 { c8[ c c] }
573   }
574 }
575 @end lilypond
576
577
578 @seealso
579 Referencia de la notación:
580 @ruser{La instrucción tweak}.
581
582 @node El prefijo single
583 @unnumberedsubsubsec El prefijo @code{@bs{}single}
584 @translationof The single prefix
585
586 @funindex \single
587 @cindex truco, generado a partir de una sobreescritura
588
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
592 cómoda:
593
594 @lilypond[quote,verbatim]
595 emphNoteHead = {
596   \override NoteHead.color = #red
597   \override NoteHead.font-size = 2
598 }
599 \relative {
600   c''4 a \once \emphNoteHead f d |
601 }
602 @end lilypond
603
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}:
611
612 @lilypond[quote,verbatim]
613 emphNoteHead = {
614   \override NoteHead.color = #red
615   \override NoteHead.font-size = 2
616 }
617 \relative {
618    <c'' a \single \emphNoteHead f d>4
619 }
620 @end lilypond
621
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
628 todos esos objetos.
629
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
634 de @code{\tweak}.
635
636 @seealso
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}.
640
641
642 @node Manual de referencia de funcionamiento interno
643 @section Manual de referencia de funcionamiento interno
644 @translationof The Internals Reference manual
645
646 @cindex Referencia de funcionamiento interno
647
648 @menu
649 * Propiedades de los objetos de presentación::
650 * Propiedades de los interfaces::
651 * Tipos de propiedades::
652 @end menu
653
654 @node Propiedades de los objetos de presentación
655 @subsection Propiedades de los objetos de presentación
656 @translationof Properties of layout objects
657
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
663
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.
675
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
684 algo de práctica.
685
686 @cindex sobreescritura, ejemplo de
687 @cindex Referencia de Funcionamiento Interno, ejemplo de utilización
688 @cindex @code{\addlyrics}, ejemplo
689
690 Utilicemos un ejemplo concreto con un sencillo fragmento de música
691 real:
692
693 @c Mozart, dúo, núm. 7 de La Flauta Mágica
694
695 @lilypond[quote,verbatim]
696 {
697   \key es \major
698   \time 6/8
699   \relative {
700     r4 bes'8 bes[( g]) g |
701     g8[( es]) es d[( f]) as |
702     as8 g
703   }
704   \addlyrics {
705     The man who | feels love's sweet e -- | mo -- tion
706   }
707 }
708 @end lilypond
709
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}.
717
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.
726
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
736 expresión o Slurs.
737
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í.
745
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á
751
752 @example
753 thickness (number)
754      1.2
755      Line thickness, generally measured in line-thickness
756 @end example
757
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}.
762
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.
770
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:
777
778 @example
779 \override Slur.thickness = #5.0
780 @end example
781
782 ¡No olvide el @code{#'} antes del nombre de la propiedad
783 y@tie{}@code{#} antes del valor nuevo!
784
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í:
789
790 @cindex Slur, ejemplo de sobreescritura
791 @cindex thickness, propiedad, ejemplo
792
793 @lilypond[quote,verbatim]
794 {
795   \key es \major
796   \time 6/8
797   \relative {
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 |
802     as8 g
803   }
804   \addlyrics {
805     The man who | feels love's sweet e -- | mo -- tion
806   }
807 }
808 @end lilypond
809
810 @noindent
811 y podemos ver que la ligadura, es sin duda, más pesada.
812
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.
820
821 @subsubsubheading Búsqueda del contexto
822
823 @cindex contexto, encontrar
824 @cindex contexto, buscar el, correcto
825
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.
844
845 @subsubsubheading Sobreescritura por una sola vez
846
847 @cindex sobreescritura por una sola vez
848 @cindex once override
849
850 @funindex \once
851
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:
863
864 @cindex Slur, ejemplo de sobreescritura
865 @cindex thickness, propiedad, ejemplo
866
867 @lilypond[quote,verbatim]
868 {
869   \key es \major
870   \time 6/8
871   \relative {
872     r4 bes'8
873     % Increase thickness of immediately following slur only
874     \once \override Slur.thickness = #5.0
875     bes8[( g]) g |
876     g8[( es]) es d[( f]) as |
877     as8 g
878   }
879   \addlyrics {
880     The man who | feels love's sweet e -- | mo -- tion
881   }
882 }
883 @end lilypond
884
885 @noindent
886 Hemos hecho que ahora solamente la primera ligadura sea más
887 gruesa.
888
889 La instrucción o prefijo @code{\once} también se puede usar antes
890 de la instrucción @code{\set}.
891
892 @subsubsubheading Recuperación del ajuste
893
894 @cindex revertir
895 @cindex predeterminadas, recuperar las propiedades
896
897 @funindex \revert
898
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:
904
905 @cindex Slur, ejemplo de sobreescritura
906 @cindex thickness, propiedad, ejemplo
907
908 @lilypond[quote,verbatim]
909 {
910   \key es \major
911   \time 6/8
912   \relative {
913     r4 bes'8
914     % Increase thickness of immediately following slur only
915     \once \override Slur.thickness = #5.0
916     bes[( g]) g |
917     % Increase thickness of immediately following slur only
918     \once \override Slur.thickness = #5.0
919     g8[( es]) es d[( f]) as |
920     as8 g
921   }
922   \addlyrics {
923     The man who | feels love's sweet e -- | mo -- tion
924   }
925 }
926 @end lilypond
927
928 @noindent
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:
933
934 @cindex Slur, ejemplo de sobreescritura
935 @cindex thickness, propiedad, ejemplo
936
937 @lilypond[quote,verbatim]
938 {
939   \key es \major
940   \time 6/8
941   \relative {
942     r4 bes'8
943     % Increase thickness of all following slurs from 1.2 to 5.0
944     \override Slur.thickness = #5.0
945     bes[( g]) g |
946     g8[( es]) es
947     % Revert thickness of all following slurs to default of 1.2
948     \revert Slur.thickness
949     d8[( f]) as |
950     as8 g
951   }
952   \addlyrics {
953     The man who | feels love's sweet e -- | mo -- tion
954   }
955 }
956 @end lilypond
957
958 @noindent
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.
963
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.
971
972 @node Propiedades de los interfaces
973 @subsection Propiedades de los interfaces
974 @translationof Properties found in interfaces
975
976 @cindex interface
977 @cindex propiedades de los interfaces
978 @cindex interfaces, propiedades
979
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}.
994
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.
998
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
1005 LyricText.
1006
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).
1011
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.
1025
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.
1030
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}.
1039
1040 Así pues, la instrucción @code{\override} necesaria para imprimir
1041 la letra en cursiva, es:
1042
1043 @example
1044 \override LyricText.font-shape = #'italic
1045 @end example
1046
1047 @noindent
1048 Esto debe escribirse justo delante de la letra a la que debe
1049 afectar, de esta forma:
1050
1051 @cindex font-shape, propiedad, ejemplo
1052 @cindex italic, ejemplo
1053 @cindex LyricText, ejemplo de sobreescritura
1054 @cindex @code{\addlyrics}, ejemplo
1055
1056 @lilypond[quote,ragged-right,verbatim]
1057 {
1058   \key es \major
1059   \time 6/8
1060   \relative {
1061     r4 bes'8 bes[( g]) g |
1062     g8[( es]) es d[( f]) as |
1063     as8 g
1064   }
1065   \addlyrics {
1066     \override LyricText.font-shape = #'italic
1067     The man who | feels love's sweet e -- | mo -- tion
1068   }
1069 }
1070 @end lilypond
1071
1072 @noindent
1073 y toda la letra se imprime en cursiva.
1074
1075 @warning{Dentro de la letra, deje siempre espacios entre la sílaba
1076 final y la llave de cierre.}
1077
1078
1079 @seealso
1080 Manual de Extensión:
1081 @rextend{Tutorial de Scheme}.
1082
1083
1084 @node Tipos de propiedades
1085 @subsection Tipos de propiedades
1086 @translationof Types of properties
1087
1088 @cindex propiedades, tipos de
1089
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
1102 Scheme}.
1103
1104 @multitable @columnfractions .2 .45 .35
1105 @headitem Tipo de propiedad
1106   @tab Reglas
1107   @tab Ejemplos
1108 @item Booleano
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}
1114 @item Dirección
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}}
1119 @item Entero
1120   @tab Un número entero positivo
1121   @tab @code{3}, @code{-1}
1122 @item Lista
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)}
1128 @item Marcado
1129   @tab Cualquier elemento válido de marcado de texto
1130   @tab @code{\markup @{ \italic "cresc." @}}, @code{"gaita"}
1131 @item Momento
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)}
1135 @item Número
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)}
1141 @item Símbolo
1142   @tab Cualquiera del conjunto de símbolos permitidos para esa propiedad, precedido de un apóstrofo
1143   @tab @code{'italic}, @code{'inside}
1144 @item Desconocido
1145   @tab Un procedimiento o @code{#f} para no producir ninguna acción
1146   @tab @code{bend::print}, @code{ly:text-interface::print},
1147        @code{#f}
1148 @item Vector
1149   @tab Constantes
1150   encerradas entre @code{#(}@dots{}@code{)}.
1151   @tab @code{#(#t #t #f)}
1152 @end multitable
1153
1154
1155 @seealso
1156 Manual de Extensión:
1157 @rextend{Tutorial de Scheme}.
1158
1159
1160 @node Apariencia de los objetos
1161 @section Apariencia de los objetos
1162 @translationof Appearance of objects
1163
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.
1167
1168 @menu
1169 * Visibilidad y color de los objetos::
1170 * Tamaño de los objetos::
1171 * Longitud y grosor de los objetos::
1172 @end menu
1173
1174 @node Visibilidad y color de los objetos
1175 @subsection Visibilidad y color de los objetos
1176 @translationof Visibility and color of objects
1177
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?
1185
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.
1197
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.
1212
1213 @menu
1214 * La propiedad stencil (sello)::
1215 * La propiedad break-visibility (visibilidad en el salto)::
1216 * La propiedad transparent (transparente)::
1217 * La propiedad color::
1218 @end menu
1219
1220 @node La propiedad stencil (sello)
1221 @unnumberedsubsubsec La propiedad @code{stencil} (sello)
1222 @translationof The stencil property
1223
1224 @cindex stencil (sello), propiedad
1225
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}:
1232
1233 @cindex BarLine, ejemplo de sobreescritura
1234 @cindex stencil, propiedad, ejemplo
1235
1236 @lilypond[quote,ragged-right,verbatim]
1237 \relative {
1238   \time 12/16
1239   \override BarLine.stencil = ##f
1240   c''4 b8 c d16 c d8 |
1241   g,8 a16 b8 c d4 e16 |
1242   e8
1243 }
1244 @end lilypond
1245
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:
1261
1262 @cindex BarLine, ejemplo de sobreescritura
1263 @cindex stencil, propiedad, ejemplo
1264
1265 @lilypond[quote,ragged-right,verbatim]
1266 \relative {
1267   \time 12/16
1268   \override Staff.BarLine.stencil = ##f
1269   c''4 b8 c d16 c d8 |
1270   g,8 a16 b8 c d4 e16 |
1271   e8
1272 }
1273 @end lilypond
1274
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):
1279 @funindex \omit
1280
1281 @lilypond[quote,ragged-right,verbatim]
1282 \relative {
1283   \time 12/16
1284   \omit Staff.BarLine
1285   c''4 b8 c d16 c d8 |
1286   g,8 a16 b8 c d4 e16 |
1287   e8
1288 }
1289 @end lilypond
1290
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
1298 con tamaño nulo:
1299
1300 @lilypond[quote,verbatim]
1301 \relative {
1302   c''4 c
1303   \once \override NoteHead.stencil = #point-stencil
1304   c4 c
1305 }
1306 @end lilypond
1307
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
1311
1312 @cindex break-visibility, propiedad
1313
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}.
1328
1329 @cindex BarLine, ejemplo de sobreescritura
1330 @cindex break-visibility, propiedad, ejemplo
1331
1332 @lilypond[quote,ragged-right,verbatim]
1333 \relative {
1334   \time 12/16
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 |
1338   e8
1339 }
1340 @end lilypond
1341
1342 Y podemos ver que esto también quita todas las líneas divisorias.
1343
1344 @node La propiedad transparent (transparente)
1345 @unnumberedsubsubsec La propiedad @code{transparent} (transparente)
1346 @translationof The transparent property
1347
1348 @cindex transparent, propiedad
1349 @cindex transparencia
1350
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:
1364
1365 @cindex TimeSignature, ejemplo de sobreescritura
1366 @cindex transparent, propiedad, ejemplo
1367
1368 @lilypond[quote,ragged-right,verbatim]
1369 \relative {
1370   \time 12/16
1371   \override Staff.TimeSignature.transparent = ##t
1372   c''4 b8 c d16 c d8 |
1373   g,8 a16 b8 c d4 e16 |
1374   e8
1375 }
1376 @end lilypond
1377
1378 @noindent
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):
1382 @funindex \hide
1383
1384 @lilypond[quote,ragged-right,verbatim]
1385 \relative {
1386   \time 12/16
1387   \hide Staff.TimeSignature
1388   c''4 b8 c d16 c d8 |
1389   g,8 a16 b8 c d4 e16 |
1390   e8
1391 }
1392 @end lilypond
1393
1394 @noindent
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}:
1402
1403 @cindex TimeSignature, ejemplo de sobreescritura
1404 @cindex stencil, propiedad, ejemplo
1405
1406 @lilypond[quote,ragged-right,verbatim]
1407 \relative {
1408   \time 12/16
1409   \omit Staff.TimeSignature
1410   c''4 b8 c d16 c d8 |
1411   g,8 a16 b8 c d4 e16 |
1412   e8
1413 }
1414 @end lilypond
1415
1416 @noindent
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.
1422
1423 @node La propiedad color
1424 @unnumberedsubsubsec La propiedad @code{color}
1425 @translationof The color property
1426
1427 @cindex color, propiedad
1428
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).
1438
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:
1448
1449 @cindex BarLine, ejemplo de sobreescritura
1450 @cindex color, propiedad, ejemplo
1451
1452 @lilypond[quote,ragged-right,verbatim]
1453 \relative {
1454   \time 12/16
1455   \override Staff.BarLine.color = #white
1456   c''4 b8 c d16 c d8 |
1457   g,8 a16 b8 c d4 e16 |
1458   e8
1459 }
1460 @end lilypond
1461
1462 @noindent
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.
1471
1472 @cindex colores de X11
1473 @cindex X11, colores de
1474
1475 @funindex x11-color
1476
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:
1483
1484 @cindex BarLine, ejemplo de sobreescritura
1485 @cindex color, propiedad, ejemplo
1486
1487 @lilypond[quote,ragged-right,verbatim]
1488 \relative {
1489   \time 12/16
1490   \override Staff.BarLine.color = #(x11-color 'white)
1491   c''4 b8 c d16 c d8 |
1492   g,8 a16 b8 c d4 e16 |
1493   e8
1494 }
1495 @end lilypond
1496
1497 @noindent
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
1502 paréntesis.
1503
1504 @cindex rgb, colores
1505 @cindex color, rgb
1506
1507 @funindex rgb-color
1508
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)}:
1515
1516 @cindex BarLine, ejemplo de sobreescritura
1517 @cindex color, propiedad, ejemplo
1518
1519 @lilypond[quote,ragged-right,verbatim]
1520 \relative {
1521   \time 12/16
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 |
1525   e8
1526 }
1527 @end lilypond
1528
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:
1534
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
1543
1544 @lilypond[quote,ragged-right,verbatim]
1545 \relative {
1546   \time 12/16
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 |
1555   e8
1556 }
1557 @end lilypond
1558
1559 @noindent
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.
1568
1569
1570 @node Tamaño de los objetos
1571 @subsection Tamaño de los objetos
1572 @translationof Size of objects
1573
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
1578
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}.
1582
1583 @cindex alignAboveContext, propiedad, ejemplo
1584 @cindex @code{\with}, ejemplo
1585
1586 @lilypond[quote,ragged-right,verbatim]
1587 \new Staff ="main" {
1588   \relative {
1589     r4 g'8 g c4 c8 d |
1590     e4 r8
1591     <<
1592       { f8 c c }
1593       \new Staff \with {
1594         alignAboveContext = #"main" }
1595       { f8 f c }
1596     >>
1597     r4 |
1598   }
1599 }
1600 @end lilypond
1601
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:
1607
1608 @cindex alignAboveContext, propiedad, ejemplo
1609 @cindex @code{\with}, ejemplo
1610 @funindex \omit
1611 @cindex Clef, ejemplo de sobreescritura
1612 @cindex TimeSignature, ejemplo de sobreescritura
1613
1614 @lilypond[quote,ragged-right,verbatim]
1615 \new Staff ="main" {
1616   \relative {
1617     r4 g'8 g c4 c8 d |
1618     e4 r8
1619     <<
1620       { f8 c c }
1621       \new Staff \with {
1622         alignAboveContext = #"main"
1623       }
1624       {
1625         \omit Staff.Clef
1626         \omit Staff.TimeSignature
1627         { f8 f c }
1628       }
1629     >>
1630     r4 |
1631   }
1632 }
1633 @end lilypond
1634
1635 @noindent
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.
1639
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.
1654
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.
1662
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.
1670
1671 Así pues, podemos reemplazar el ejemplo anterior con
1672
1673 @cindex alignAboveContext, propiedad, ejemplo
1674 @cindex @code{\with}, example
1675 @cindex Clef, ejemplo de sobreescritura
1676 @cindex TimeSignature, ejemplo de sobreescritura
1677
1678 @lilypond[quote,ragged-right,verbatim]
1679 \new Staff ="main" {
1680   \relative {
1681     r4 g'8 g c4 c8 d |
1682     e4 r8
1683     <<
1684       { f8 c c }
1685       \new Staff \with {
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
1691       }
1692       { f8 f c }
1693     >>
1694     r4 |
1695   }
1696 }
1697 @end lilypond
1698
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:
1703
1704 @lilypond[quote,ragged-right,verbatim]
1705 \new Staff ="main" {
1706   \relative {
1707     r4 g'8 g c4 c8 d |
1708     e4 r8
1709     <<
1710       { f8 c c }
1711       \new Staff \with {
1712         alignAboveContext = #"main"
1713         % Don't print clefs in this staff
1714         \omit Clef
1715         % Don't print time signatures in this staff
1716         \omit TimeSignature
1717       }
1718       { f8 f c }
1719     >>
1720     r4 |
1721   }
1722 }
1723 @end lilypond
1724
1725 Finalmente llegamos a la forma de cambiar el tamaño de los objetos
1726 de presentación.
1727
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.
1743
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
1748
1749 @example
1750 \override NoteHead.font-size = #-2
1751 @end example
1752
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}).
1757
1758 @example
1759 \set fontSize = #-2
1760 @end example
1761
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%.
1765
1766 Vamos a probarlo en nuestro ejemplo del ossia:
1767
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
1773
1774 @lilypond[quote,ragged-right,verbatim]
1775 \new Staff ="main" {
1776   \relative {
1777     r4 g'8 g c4 c8 d |
1778     e4 r8
1779     <<
1780       { f8 c c }
1781       \new Staff \with {
1782         alignAboveContext = #"main"
1783         \omit Clef
1784         \omit TimeSignature
1785         % Reduce all font sizes by ~24%
1786         fontSize = #-2
1787       }
1788       { f8 f c }
1789     >>
1790     r4 |
1791   }
1792 }
1793 @end lilypond
1794
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
1800 esto.
1801
1802 @node Longitud y grosor de los objetos
1803 @subsection Longitud y grosor de los objetos
1804 @translationof Length and thickness of objects
1805
1806 @cindex distancias
1807 @cindex grosor
1808 @cindex longitud
1809 @cindex magstep
1810 @cindex tamaño, cambiar
1811 @cindex plica, cambiar la longitud
1812 @cindex pentagrama, cambiar la separación de las líneas
1813
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.
1826
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:
1834
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
1844
1845 @lilypond[quote,ragged-right,verbatim]
1846 \new Staff ="main" {
1847   \relative {
1848     r4 g'8 g c4 c8 d |
1849     e4 r8
1850     <<
1851       { f8 c c }
1852       \new Staff \with {
1853         alignAboveContext = #"main"
1854         \omit Clef
1855         \omit TimeSignature
1856         fontSize = #-2
1857         % Reduce stem length and line spacing to match
1858         \override StaffSymbol.staff-space = #(magstep -2)
1859       }
1860       { f8 f c }
1861     >>
1862     r4 |
1863   }
1864 }
1865 @end lilypond
1866
1867 @noindent
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.
1879
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
1882 análoga.
1883
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
1894 misma forma.
1895
1896
1897 @node Colocación de los objetos
1898 @section Colocación de los objetos
1899 @translationof Placement of objects
1900
1901 @menu
1902 * Comportamiento automático::
1903 * Objetos interiores al pentagrama::
1904 * Objetos fuera del pentagrama::
1905 @end menu
1906
1907
1908 @node Comportamiento automático
1909 @subsection Comportamiento automático
1910 @translationof Automatic behavior
1911
1912 @cindex dentro del pentagrama, objetos
1913 @cindex fuera del pentagrama, objetos
1914 @cindex objetos dentro del pentagrama
1915 @cindex objetos fuera del pentagrama
1916
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.
1921
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.
1931
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.
1940
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.
1953
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}.
1958
1959 @cindex markup, ejemplo
1960
1961 @lilypond[quote,fragment,ragged-right,verbatim]
1962 c''2^"Text1"
1963 c''2^"Text2" |
1964 c''2^"Text3"
1965 c''2^"Text4" |
1966 @end lilypond
1967
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:
1975
1976 @lilypond[quote,ragged-right,verbatim]
1977 <<
1978   \new Staff {
1979     \relative { c'4 a, }
1980   }
1981   \new Staff {
1982     \relative { c''''4 a, }
1983   }
1984 >>
1985 @end lilypond
1986
1987
1988 @node Objetos interiores al pentagrama
1989 @subsection Objetos interiores al pentagrama
1990 @translationof Within-staff objects
1991
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.
2006
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}.
2012
2013 @menu
2014 * La propiedad direction (dirección)::
2015 * Digitaciones::
2016 @end menu
2017
2018 @node La propiedad direction (dirección)
2019 @unnumberedsubsubsec La propiedad @code{direction} (dirección)
2020 @translationof The direction property
2021
2022 @cindex abajo
2023 @cindex arriba
2024 @cindex centro
2025 @cindex neutro
2026 @cindex down
2027 @cindex up
2028 @cindex center
2029 @cindex neutral
2030
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
2037 predeterminado.
2038
2039 @cindex Slur, ejemplo de sobreescritura
2040 @cindex direction, propiedad, ejemplo
2041
2042 @lilypond[quote,fragment,verbatim]
2043 a'4( g') c''( a') |
2044 \override Slur.direction = #DOWN
2045 a'4( g') c''( a') |
2046 \override Slur.direction = #UP
2047 a'4( g') c''( a') |
2048 \revert Slur.direction
2049 a'4( g') c''( a') |
2050 @end lilypond
2051
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}.
2060
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.
2065
2066 @multitable @columnfractions .2 .2 .25 .35
2067 @headitem Abajo o Izquierda
2068   @tab Arriba o Derecha
2069   @tab Anular
2070   @tab Efecto
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}
2076   @tab @code{\dotsUp}
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}
2082   @tab
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}
2088   @tab @code{\slurUp}
2089   @tab @code{\slurNeutral}
2090   @tab
2091 @item @code{\stemDown}
2092   @tab @code{\stemUp}
2093   @tab @code{\stemNeutral}
2094   @tab
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}
2100   @tab @code{\tieUp}
2101   @tab @code{\tieNeutral}
2102   @tab
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
2107 @end multitable
2108
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.
2116
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{_}:
2120
2121 @lilypond[quote,fragment,verbatim]
2122 a'4( g') c''( a') |
2123 a'4^( g') c''_( a') |
2124 @end lilypond
2125
2126 @node Digitaciones
2127 @unnumberedsubsubsec Digitaciones
2128 @translationof Fingering
2129
2130 @cindex digitación, colocación
2131 @cindex digitación de acordes
2132
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.
2140
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}:
2145
2146 @cindex Fingering, ejemplo de sobreescritura
2147 @cindex direction, propiedad, ejemplo
2148
2149 @lilypond[quote,verbatim]
2150 \relative {
2151   c''4-5 a-3 f-1 c'-5 |
2152   \override Fingering.direction = #DOWN
2153   c4-5 a-3 f-1 c'-5 |
2154   \override Fingering.direction = #UP
2155   c4-5 a-3 f-1 c'-5 |
2156 }
2157 @end lilypond
2158
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:
2164
2165 @cindex fingering, ejemplo
2166 @cindex digitación, ejemplo
2167
2168 @lilypond[quote,verbatim]
2169 \relative {
2170   c''4-5 a-3 f-1 c'-5 |
2171   c4_5 a_3 f_1 c'_5 |
2172   c4^5 a^3 f^1 c'^5 |
2173 }
2174 @end lilypond
2175
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í:
2180
2181 @cindex fingering, ejemplo
2182 @cindex digitación, ejemplo
2183
2184 @lilypond[quote,verbatim]
2185 \relative {
2186   <c''-5 g-3>4
2187   <c-5 g-3 e-2>4
2188   <c-5 g-3 e-2 c-1>4
2189 }
2190 @end lilypond
2191
2192 @noindent
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:
2195
2196 @cindex fingering, ejemplo
2197 @cindex digitación, ejemplo
2198
2199 @lilypond[quote,verbatim]
2200 \relative {
2201   <c''-5 g-3 e-2 c-1>4
2202   <c^5 g_3 e_2 c_1>4
2203   <c^5 g^3 e^2 c_1>4
2204 }
2205 @end lilypond
2206
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:
2210
2211 @example
2212 \set fingeringOrientations = #'([up] [left/right] [down])
2213 @end example
2214
2215 @noindent
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}.
2219
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.
2231
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.}
2235
2236 Aquí podemos ver algunos ejemplos:
2237
2238 @cindex fingering, ejemplo
2239 @cindex digitación, ejemplo
2240 @cindex @code{\set}, ejemplo de utilización
2241 @cindex fingeringOrientations, propiedad, ejemplo
2242
2243 @lilypond[quote,ragged-right,verbatim]
2244 \relative {
2245   \set fingeringOrientations = #'(left)
2246   <f'-2>4
2247   <c-1 e-2 g-3 b-5>4
2248   \set fingeringOrientations = #'(left)
2249   <f-2>4
2250   <c-1 e-2 g-3 b-5>4 |
2251   \set fingeringOrientations = #'(up left down)
2252   <f-2>4
2253   <c-1 e-2 g-3 b-5>4
2254   \set fingeringOrientations = #'(up left)
2255   <f-2>4
2256   <c-1 e-2 g-3 b-5>4 |
2257   \set fingeringOrientations = #'(right)
2258   <f-2>4
2259   <c-1 e-2 g-3 b-5>4
2260 }
2261 @end lilypond
2262
2263 @noindent
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}}:
2268
2269 @lilypond[quote,ragged-right,verbatim]
2270 \relative {
2271   \override Fingering.font-size = #-7
2272   \set fingeringOrientations = #'(left)
2273   <f'-2>4
2274   <c-1 e-2 g-3 b-5>4
2275   \set fingeringOrientations = #'(left)
2276   <f-2>4
2277   <c-1 e-2 g-3 b-5>4 |
2278   \set fingeringOrientations = #'(up left down)
2279   <f-2>4
2280   <c-1 e-2 g-3 b-5>4
2281   \set fingeringOrientations = #'(up left)
2282   <f-2>4
2283   <c-1 e-2 g-3 b-5>4 |
2284   \set fingeringOrientations = #'(right)
2285   <f-2>4
2286   <c-1 e-2 g-3 b-5>4
2287 }
2288 @end lilypond
2289
2290
2291 @node Objetos fuera del pentagrama
2292 @subsection Objetos fuera del pentagrama
2293 @translationof Outside-staff objects
2294
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.
2298
2299 @menu
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»::
2304 @end menu
2305
2306
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
2310
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
2323 más comunes.
2324
2325 @cindex objetos de extensión
2326
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.
2340
2341 @multitable @columnfractions .3 .3 .3
2342 @headitem Objeto de presentación
2343   @tab Prioridad
2344   @tab Controla la posición de:
2345 @item @code{RehearsalMark}
2346   @tab @code{1500}
2347   @tab Letras de ensayo
2348 @item @code{MetronomeMark}
2349   @tab @code{1000}
2350   @tab Indicaciones metronómicas
2351 @item @code{VoltaBracketSpanner}
2352   @tab @code{600}
2353   @tab Cajetines de primera y segunda vez
2354 @item @code{TextScript}
2355   @tab @code{450}
2356   @tab Texto en elementos de marcado
2357 @item @code{MultiMeasureRestText}
2358   @tab @code{450}
2359   @tab Texto sobre silencios de compás completo
2360 @item @code{OttavaBracket}
2361   @tab @code{400}
2362   @tab Corchetes de octava alta y baja
2363 @item @code{TextSpanner}
2364   @tab @code{350}
2365   @tab Objetos de extensión de texto
2366 @item @code{DynamicLineSpanner}
2367   @tab @code{250}
2368   @tab Todas las indicaciones dinámicas
2369 @item @code{VoltaBracketSpanner}
2370   @tab @code{100}
2371   @tab Números de compás
2372 @item @code{TrillSpanner}
2373   @tab @code{50}
2374   @tab Trinos mantenidos
2375 @end multitable
2376
2377 He aquí un ejemplo que muestra la situación predeterminada de
2378 algunos de ellos.
2379
2380 @cindex texto, extensiones de
2381 @cindex octava alta y baja, corchete de
2382
2383 @funindex \startTextSpan
2384 @funindex \stopTextSpan
2385
2386 @cindex TextSpanner, ejemplo de sobreescritura
2387 @cindex bound-details, propiedad, ejemplo
2388
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
2394 \dynamicUp
2395 % Start Ottava Bracket
2396 \ottava #1
2397 c''4 \startTextSpan
2398 % Add Dynamic Text and hairpin
2399 c''4\pp\<
2400 c''4
2401 % Add Text Script
2402 c''4^Text |
2403 c''4 c''
2404 % Add Dynamic Text and terminate hairpin
2405 c''4\ff c'' \stopTextSpan |
2406 % Stop Ottava Bracket
2407 \ottava #0
2408 c'4 c' c' c' |
2409 @end lilypond
2410
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}.
2418
2419 También muestra la manera de crear corchetes de octava alta y
2420 baja.
2421
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
2428
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}:
2438
2439 @cindex TextSpanner, ejemplo de sobreescritura
2440 @cindex bound-details, propiedad, ejemplo
2441
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
2447 \dynamicUp
2448 % Place following Ottava Bracket below Text Spanners
2449 \once \override Staff.OttavaBracket.outside-staff-priority = #340
2450 % Start Ottava Bracket
2451 \ottava #1
2452 c''4 \startTextSpan
2453 % Add Dynamic Text
2454 c''4\pp
2455 % Add Dynamic Line Spanner
2456 c''4\<
2457 % Add Text Script
2458 c''4^Text |
2459 c''4 c''
2460 % Add Dynamic Text
2461 c''4\ff c'' \stopTextSpan |
2462 % Stop Ottava Bracket
2463 \ottava #0
2464 c'4 c' c' c' |
2465 @end lilypond
2466
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.
2472
2473 @cindex ligaduras y outside-staff-priority
2474 @cindex ligaduras y articulaciones
2475 @cindex articulaciones y ligaduras
2476
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:
2492
2493 @lilypond[quote,verbatim]
2494 \relative c'' {
2495   c4( c^\markup { \tiny \sharp } d4.) c8 |
2496   c4(
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 |
2502 }
2503 @end lilypond
2504
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:
2514
2515 @cindex TextScript, ejemplo de sobreescritura
2516 @cindex outside-staff-priority, propiedad, ejemplo
2517
2518 @lilypond[quote,fragment,ragged-right,verbatim]
2519 c''2^"Text1"
2520 c''2^"Text2" |
2521 \once \override TextScript.outside-staff-priority = #500
2522 c''2^"Text3"
2523 c''2^"Text4" |
2524 @end lilypond
2525
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}.
2534
2535 @node La instrucción textLengthOn
2536 @unnumberedsubsubsec La instrucción @code{@bs{}textLengthOn}
2537 @translationof The textLengthOn command
2538
2539 @cindex notas, espaciar junto al texto
2540
2541 @funindex \textLengthOn
2542 @funindex \textLengthOff
2543
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:
2549
2550 @lilypond[quote,fragment,ragged-right,verbatim]
2551 \textLengthOn  % Cause notes to space out to accommodate text
2552 c''2^"Text1"
2553 c''2^"Text2" |
2554 c''2^"Text3"
2555 c''2^"Text4" |
2556 @end lilypond
2557
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}.
2565
2566 @cindex marcado, texto de, permitir las colisiones en
2567
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
2573 tales notas.
2574
2575 @cindex TextScript, ejemplo de sobreescritura
2576 @cindex outside-staff-priority, propiedad, ejemplo
2577
2578 @lilypond[quote,ragged-right,verbatim]
2579 \relative {
2580   % This markup is short enough to fit without collision
2581   c''2^"Tex" c'' |
2582   R1 |
2583
2584   % This is too long to fit, so it is displaced upwards
2585   c,,2^"Text" c'' |
2586   R1 |
2587
2588   % Turn off collision avoidance
2589   \once \override TextScript.outside-staff-priority = ##f
2590   c,,2^"Long Text   " c'' |
2591   R1 |
2592
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
2597   c''2 |
2598 }
2599 @end lilypond
2600
2601 @node Posicionamiento de los matices dinámicos
2602 @unnumberedsubsubsec Posicionamiento de los matices dinámicos
2603 @translationof Dynamics placement
2604
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
2608
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:
2616
2617 @lilypond[quote,ragged-right,verbatim]
2618 \relative {
2619   \clef "bass"
2620   \key aes \major
2621   \time 9/8
2622   \dynamicUp
2623   bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
2624   ees,2.~\)\mf ees4 r8 |
2625 }
2626 @end lilypond
2627
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:
2633
2634 @lilypond[quote,ragged-right,verbatim,fragment]
2635 \dynamicUp
2636 \relative { a'4\f b\mf a\mp b\p }
2637 @end lilypond
2638
2639 @noindent
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}.
2648
2649 @node Escalado de un «Grob»
2650 @unnumberedsubsubsec Escalado de un «Grob»
2651 @translationof Grob sizing
2652
2653 @cindex grob, cambio de tamaño de un
2654 @cindex escala de los grobs
2655
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}.
2668
2669 @cindex @code{extra-spacing-width}
2670
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:
2684
2685 @example
2686 \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
2687 @end example
2688
2689 @noindent
2690 Veamos si funciona en nuestro ejemplo anterior:
2691
2692 @cindex DynamicText, ejemplo de sobreescritura
2693 @cindex extra-spacing-width, propiedad, ejemplo
2694
2695 @lilypond[quote,ragged-right,verbatim,fragment]
2696 \dynamicUp
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 }
2700 @end lilypond
2701
2702 @noindent
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}).
2709
2710 @node Espaciado vertical
2711 @section Espaciado vertical
2712 @translationof Vertical spacing
2713
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:
2717
2718 @lilypond[quote,fragment,ragged-right]
2719 <<
2720   \new ChoirStaff
2721   <<
2722     \new Staff {
2723       \new Voice = "music" {
2724         b'2 c' c' c'
2725       }
2726     }
2727     \new Lyrics
2728     \lyricsto "music" {
2729       Here are some lyrics
2730     }
2731     \new Staff {
2732       \clef bass e'2 f e c
2733     }
2734   >>
2735   \new PianoStaff
2736   <<
2737     \new Staff {
2738       g''2 c'' c'' a''
2739     }
2740     \new Staff {
2741       \clef bass e2 f c e
2742     }
2743   >>
2744 >>
2745 @end lilypond
2746
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.
2754
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
2766 funciona.
2767
2768 @lilypond[quote,fragment,ragged-right,verbatim]
2769 <<
2770   \new ChoirStaff
2771   <<
2772     \new Staff {
2773       \new Voice = "music" {
2774         b'2 c' c' c'
2775       }
2776     }
2777     \new Lyrics \with {
2778       \override VerticalAxisGroup.
2779         nonstaff-relatedstaff-spacing.padding = #5
2780       \override VerticalAxisGroup.
2781         nonstaff-unrelatedstaff-spacing.padding = #5
2782     }
2783     \lyricsto "music" {
2784       Here are some lyrics
2785     }
2786     \new Staff {
2787       \clef bass e'2 f e c
2788     }
2789   >>
2790   \new PianoStaff
2791   <<
2792     \new Staff {
2793       g''2 c'' c'' a''
2794     }
2795     \new Staff {
2796       \clef bass e2 f c e
2797     }
2798   >>
2799 >>
2800 @end lilypond
2801
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.
2806
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}.
2814
2815 @lilypond[quote,fragment,ragged-right,verbatim]
2816 <<
2817   \new ChoirStaff \with {
2818     \override StaffGrouper.
2819       staffgroup-staff-spacing.basic-distance = #15
2820   }
2821   <<
2822     \new Staff {
2823       \new Voice = "music" {
2824         b'2 c' c' c'
2825       }
2826     }
2827     \new Lyrics \with {
2828       \override VerticalAxisGroup.
2829         nonstaff-relatedstaff-spacing.padding = #2
2830       \override VerticalAxisGroup.
2831         nonstaff-unrelatedstaff-spacing.padding = #2
2832     }
2833     \lyricsto "music" {
2834       Here are some lyrics
2835     }
2836     \new Staff {
2837       \clef bass e'2 f e c
2838     }
2839   >>
2840   \new PianoStaff
2841   <<
2842     \new Staff {
2843       g''2 c'' c'' a''
2844     }
2845     \new Staff {
2846       \clef bass e2 f c e
2847     }
2848   >>
2849 >>
2850 @end lilypond
2851
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.
2858
2859 @lilypond[quote,fragment,ragged-right,verbatim]
2860 <<
2861   \new ChoirStaff \with {
2862     \override StaffGrouper.
2863       staffgroup-staff-spacing.basic-distance = #15
2864   }
2865   <<
2866     \new Staff {
2867       \new Voice = "music" {
2868         b'2 c' c' c'
2869       }
2870     }
2871     \new Lyrics \with {
2872       \override VerticalAxisGroup.
2873         nonstaff-relatedstaff-spacing.padding = #2
2874       \override VerticalAxisGroup.
2875         nonstaff-unrelatedstaff-spacing.padding = #2
2876     }
2877     \lyricsto "music" {
2878       Here are some lyrics
2879     }
2880     \new Staff {
2881       \clef bass e'2 f e c
2882     }
2883   >>
2884   \new PianoStaff \with {
2885     \override StaffGrouper.staff-staff-spacing = #'(
2886                             (basic-distance . 0)
2887                             (padding . 0))
2888   }
2889   <<
2890     \new Staff {
2891       g''2 c'' c'' a''
2892     }
2893     \new Staff {
2894       \clef bass e2 f c e
2895     }
2896   >>
2897 >>
2898 @end lilypond
2899
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.
2904
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,
2912 consulte
2913 @ruser{Variables de espaciado de paper verticales flexibles} y
2914 @ruser{Espaciado vertical flexible dentro de los sistemas}.
2915
2916
2917 @node Colisiones de objetos
2918 @section Colisiones de objetos
2919 @translationof Collisions of objects
2920
2921 @menu
2922 * Mover objetos::
2923 * Arreglar notación con superposiciones::
2924 * Ejemplos reales de música::
2925 @end menu
2926
2927 @node Mover objetos
2928 @subsection Mover objetos
2929 @translationof Moving objects
2930
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
2936
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
2942 separación.
2943
2944 Existen tres enfoques principales que llevan a la resolución de
2945 superposiciones en la notación.  Se deben considerar en el
2946 siguiente orden:
2947
2948 @enumerate
2949 @item
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.
2959
2960 @item
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
2968 encuentran:
2969
2970 @itemize
2971
2972 @item
2973 @code{direction} (dirección)
2974
2975 Ya se ha estudiado con cierto detalle: véase @ref{Objetos interiores al pentagrama}.
2976
2977 @item
2978 @code{padding} (relleno),
2979 @code{right-padding} (relleno por la derecha),
2980 @code{staff-padding} (relleno de pentagrama)
2981
2982 @cindex relleno
2983 @cindex padding, propiedad
2984 @cindex right-padding, propiedad
2985 @cindex staff-padding, propiedad
2986
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}.
2996
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.
3009
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
3021 ignora.
3022
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.
3028
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).
3034
3035 @item
3036 @code{self-alignment-X} (Auto-alineamiento en el eje X)
3037
3038 @cindex self-alignment-X, propiedad
3039
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.
3056
3057 @item
3058 @code{extra-spacing-width} (anchura de separación adicional)
3059
3060 @cindex extra-spacing-width, propiedad
3061
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).
3071
3072 @item
3073 @code{staff-position} (posición de pentagrama)
3074
3075 @cindex staff-position, propiedad
3076
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
3084 voces.
3085
3086 @item
3087 @code{horizontal-shift}
3088
3089 @cindex horizontal-shift, propiedad
3090 @cindex nota, columna de
3091 @cindex nota, colisiones
3092 @cindex colisiones de notas
3093 @cindex desplazamiento, instrucciones de
3094 @funindex \shiftOff
3095 @funindex \shiftOn
3096 @funindex \shiftOnn
3097 @funindex \shiftOnnn
3098
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
3120 apretadas entre sí.
3121
3122 @item
3123 @code{force-hshift} (forzar desplazamiento horizontal)
3124
3125 @cindex force-hshift, propiedad
3126
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.
3142
3143 @end itemize
3144
3145 @item
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:
3158
3159 @table @code
3160 @item extra-offset (desplazamiento adicional)
3161
3162 @cindex extra-offset, propiedad
3163
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
3172 ninguna otra cosa.
3173
3174 @item positions (posiciones)
3175
3176 @cindex positions, propiedad
3177
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.
3191 @end table
3192
3193 @end enumerate
3194
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.
3198
3199
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.
3204
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}
3217 @end multitable
3218
3219
3220 @node Arreglar notación con superposiciones
3221 @subsection Arreglar notación con superposiciones
3222 @translationof Fixing overlapping notation
3223
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
3226 que se superpone.
3227
3228 @menu
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)::
3237 @end menu
3238
3239 @node La propiedad padding (relleno)
3240 @unnumberedsubsubsec La propiedad @code{padding} (relleno)
3241 @translationof The padding property
3242
3243 @cindex relleno
3244 @cindex arreglar notación que se superpone
3245 @cindex superpuesta, notación
3246
3247 La propiedad @code{padding} se puede ajustar para aumentar (o
3248 disminuir) la distancia entre símbolos impresos encima o debajo de
3249 las notas.
3250
3251 @cindex Script, ejemplo de sobreescritura
3252 @cindex padding, propiedad, ejemplo
3253
3254 @lilypond[quote,fragment,verbatim]
3255 c'2\fermata
3256 \override Script.padding = #3
3257 b2\fermata
3258 @end lilypond
3259
3260 @cindex MetronomeMark, ejemplo de sobreescritura
3261 @cindex padding, propiedad, ejemplo
3262
3263 @lilypond[quote,fragment,verbatim]
3264 % This will not work, see below
3265 \override MetronomeMark.padding = #3
3266 \tempo 4 = 120
3267 c'1 |
3268 % This works
3269 \override Score.MetronomeMark.padding = #3
3270 \tempo 4 = 80
3271 d'1 |
3272 @end lilypond
3273
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
3278 inadvertidos.
3279 Para ver más detalles, consulte @ruser{Modificar las propiedades}.
3280
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.
3286
3287
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
3291
3292 @cindex right-padding, propiedad
3293
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í:
3301
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
3307
3308
3309 @lilypond[quote,ragged-right,verbatim]
3310 sesquisharp = \markup { \sesquisharp }
3311 \relative {
3312   c''4
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
3316   cis4 c
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
3321   cis4 |
3322 }
3323 @end lilypond
3324
3325 @noindent
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}.
3333
3334 @noindent
3335
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
3339
3340 @cindex alineación de objetos sobre la línea base
3341 @cindex objetos, alineación sobre la línea base
3342
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:
3352
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
3357
3358 @lilypond[quote,fragment,ragged-right,verbatim]
3359 \override DynamicLineSpanner.staff-padding = #3
3360 \relative { a'4\f b\mf a\p b\mp }
3361 @end lilypond
3362
3363
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
3367
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»:
3372
3373 @cindex StringNumber, ejemplo de sobreescritura
3374 @cindex self-alignment-X, propiedad, ejemplo
3375
3376 @lilypond[quote,fragment,ragged-right,verbatim]
3377 \voiceOne
3378 <a''\2>
3379 \once \override StringNumber.self-alignment-X = #RIGHT
3380 <a''\2>
3381 @end lilypond
3382
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
3386
3387 @cindex objeto, colisión dentro del pentagrama
3388
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:
3396
3397 @lilypond[quote,verbatim,ragged-right]
3398 << \relative { c'4 c c c } \\ { R1 } >>
3399 @end lilypond
3400
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}}.
3408
3409 @cindex MultiMeasureRest, ejemplo de sobreescritura
3410 @cindex staff-position, propiedad, ejemplo
3411
3412 @lilypond[quote,verbatim,ragged-right]
3413 <<
3414   \relative { c'4 c c c }
3415   \\
3416   \override MultiMeasureRest.staff-position = #-8
3417   { R1 }
3418 >>
3419 @end lilypond
3420
3421 Esto es mejor que utilizar, por ejemplo, @code{extra-offset},
3422 porque la línea adicional por encima del silencio se inserta
3423 automáticamente.
3424
3425 @node La propiedad extra-offset (desplazamiento adicional)
3426 @unnumberedsubsubsec La propiedad @code{extra-offset} (desplazamiento adicional)
3427 @translationof The extra-offset property
3428
3429 @cindex posicionar objetos
3430 @cindex posicionar grobs
3431 @cindex objetos, posicionar
3432 @cindex grobs, posicionar
3433
3434 La propiedad @code{extra-offset} da un completo control sobre el
3435 posicionamiento de un objeto tanto vertical como horizontalmente.
3436
3437 En el ejemplo siguiente, la segunda digitación se desplaza
3438 ligeramente a la izquierda, y 1.8 espacios de pentagrama hacia
3439 abajo:
3440
3441 @cindex fingering (digitación), ejemplo de sobreescritura
3442 @cindex extra-offset, propiedad, ejemplo
3443
3444 @lilypond[quote,fragment,verbatim]
3445 f'4-5
3446 \once \override Fingering.extra-offset = #'(-0.3 . -1.8)
3447 f'4-5
3448 @end lilypond
3449
3450
3451 @node La propiedad positions (posiciones)
3452 @unnumberedsubsubsec La propiedad @code{positions} (posiciones)
3453 @translationof The positions property
3454
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
3461
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
3465 corchea.
3466
3467 He aquí un ejemplo en el que las ligaduras de fraseo y de
3468 expresión chocan entre sí:
3469
3470 @lilypond[quote,verbatim,ragged-right]
3471 \relative { a'8 \( ( a'16 ) a \) }
3472 @end lilypond
3473
3474 @cindex PhrasingSlur, ejemplo de sobreescritura
3475 @cindex positions, propiedad, ejemplo
3476
3477 @noindent
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:
3484
3485 @lilypond[quote,verbatim,fragment,ragged-right]
3486 \once \override PhrasingSlur.positions = #'(2.5 . 4.5)
3487 a'8 \( ( a''16 ) a'' \)
3488 @end lilypond
3489
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}.
3500
3501 Presentamos otro ejemplo.  Vemos que la barra choca con las
3502 ligaduras:
3503
3504 @lilypond[quote,verbatim,ragged-right]
3505 {
3506   \time 4/2
3507   <<
3508     \relative { c'1~ 2. e8 f }
3509     \\
3510     \relative {
3511       e''8 e e e
3512       e e e e
3513       f2 g
3514     }
3515   >>
3516   <<
3517     \relative { c'1~ 2. e8 f }
3518     \\
3519     \relative {
3520       e''8 e e e
3521       e e e e
3522       f2 g
3523     }
3524   >>
3525 }
3526 @end lilypond
3527
3528 @noindent
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:
3532
3533 @cindex Beam, ejemplo de sobreescritura
3534 @cindex positions, propiedad, ejemplo
3535
3536 @lilypond[quote,verbatim,ragged-right]
3537 {
3538   \time 4/2
3539   <<
3540     \relative { c'1~ 2. e8 f }
3541     \\
3542     \relative {
3543       \override Beam.positions = #'(-1 . -1)
3544       e''8 e e e
3545       e e e e
3546       f2 g
3547     }
3548   >>
3549   <<
3550     \relative { c'1~ 2. e8 f }
3551     \\
3552     \relative {
3553       e''8 e e e
3554       e e e e
3555       f2 g
3556       \revert Beam.positions
3557     }
3558   >>
3559 }
3560 @end lilypond
3561
3562 @noindent
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.
3568
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
3572
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:
3576
3577 @lilypond[quote,verbatim,fragment,ragged-right]
3578 \new Staff \relative {
3579   \key aes \major
3580   <<
3581     { c''2 aes4. bes8 }
3582     \\
3583     { <ees, c>2 des }
3584     \\
3585     \\
3586     { aes'2 f4 fes }
3587   >> |
3588   <c ees aes c>1 |
3589 }
3590 @end lilypond
3591
3592 @noindent
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}.
3596
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.
3607
3608 Presentamos a continuación el resultado final:
3609
3610 @cindex NoteColumn, ejemplo de sobreescritura
3611 @cindex force-hshift, propiedad, ejemplo
3612
3613 @lilypond[quote,verbatim,fragment,ragged-right]
3614 \new Staff \relative {
3615   \key aes \major
3616   <<
3617     { c''2 aes4. bes8 }
3618     \\
3619     { <ees, c>2 \once \override NoteColumn.force-hshift = 0.5 des }
3620     \\
3621     \\
3622     { \once \shiftOff aes'2 \once \shiftOff f4 fes }
3623   >> |
3624   <c ees aes c>1 |
3625 }
3626 @end lilypond
3627
3628
3629 @node Ejemplos reales de música
3630 @subsection Ejemplos reales de música
3631 @translationof Real music example
3632
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
3641 muy comunes!
3642
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
3648 y el pedal.
3649
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 {
3655   \new Voice {
3656     r2 c''4.\( g8 |
3657     \once \override Tie.staff-position = #3.5
3658     bes1~ |
3659     \bar "||"
3660     \time 6/4
3661     \mergeDifferentlyHeadedOn
3662     \mergeDifferentlyDottedOn
3663     bes2.\tempo "Moderato" r8
3664     <<
3665       { c,8 d fis bes a }
3666       \new Voice {
3667         \voiceTwo
3668         c,8~
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
3673         \shiftOnn
3674         c2
3675       }
3676       \new Voice {
3677         \voiceThree
3678         s8
3679         % Stem on the d2 must be down to permit merging
3680         \stemDown
3681         % Stem on the d2 should be invisible
3682         \tweak Stem.transparent ##t
3683         d2
3684       }
3685       \new Voice {
3686         \voiceFour
3687         s4 fis4.
3688       }
3689     >> |
3690     \mergeDifferentlyHeadedOff
3691     \mergeDifferentlyDottedOff
3692     g2.\)
3693   }
3694 }
3695
3696 lhMusic = \relative {
3697   r2 <c' g ees>2( |
3698   <d g, d>1)\arpeggio |
3699   r2. d,,4 r4 r |
3700   r4
3701 }
3702
3703 \score {
3704   \new PianoStaff <<
3705     \new Staff = "RH"  <<
3706       \key g \minor
3707       \rhMusic
3708     >>
3709     \new Staff = "LH" <<
3710       \key g \minor
3711       \clef "bass"
3712       \lhMusic
3713     >>
3714   >>
3715 }
3716 @end lilypond
3717
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.
3731
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:
3735
3736 @c line-width ensures no break
3737 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3738 rhMusic = \relative {
3739   \new Voice {
3740     r2 c''4. g8 |
3741     bes1~ |
3742     \time 6/4
3743     bes2. r8
3744     % Start polyphonic section of four voices
3745     <<
3746       { c,8 d fis bes a }  % continuation of main voice
3747       \new Voice {
3748         \voiceTwo
3749         c,8~ 2
3750       }
3751       \new Voice {
3752         \voiceThree
3753         s8 d2
3754       }
3755       \new Voice {
3756         \voiceFour
3757         s4 fis4.
3758       }
3759     >> |
3760     g2.  % continuation of main voice
3761   }
3762 }
3763
3764 lhMusic = \relative {
3765   r2 <c' g ees>2 |
3766   <d g, d>1 |
3767   r2. d,,4 r4 r |
3768   r4
3769 }
3770
3771 \score {
3772   \new PianoStaff <<
3773     \new Staff = "RH"  <<
3774       \key g \minor
3775       \rhMusic
3776     >>
3777     \new Staff = "LH" <<
3778       \key g \minor
3779       \clef "bass"
3780       \lhMusic
3781     >>
3782   >>
3783 }
3784 @end lilypond
3785
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:
3793
3794 @c line-width ensures no break
3795 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3796 rhMusic = \relative {
3797   \new Voice {
3798     r2 c''4.\( g8 |
3799     bes1~ |
3800     \time 6/4
3801     bes2. r8
3802     % Start polyphonic section of four voices
3803     <<
3804       { c,8 d fis bes a }  % continuation of main voice
3805       \new Voice {
3806         \voiceTwo
3807         c,8~ 2
3808       }
3809       \new Voice {
3810         \voiceThree
3811         s8 d2
3812       }
3813       \new Voice {
3814         \voiceFour
3815         s4 fis4.
3816       }
3817     >> |
3818     g2.\)  % continuation of main voice
3819   }
3820 }
3821
3822 lhMusic = \relative {
3823   r2 <c' g ees>2( |
3824   <d g, d>1) |
3825   r2. d,,4 r4 r |
3826   r4
3827 }
3828
3829 \score {
3830   \new PianoStaff <<
3831     \new Staff = "RH"  <<
3832       \key g \minor
3833       \rhMusic
3834     >>
3835     \new Staff = "LH" <<
3836       \key g \minor
3837       \clef "bass"
3838       \lhMusic
3839     >>
3840   >>
3841 }
3842 @end lilypond
3843
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:
3863
3864 @code{\once \override Tie.staff-position = #3.5}
3865
3866 Con esto se completa el compás dos, dando como resultado:
3867
3868 @c line-width ensures no break
3869 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3870 rhMusic = \relative {
3871   \new Voice {
3872     r2 c''4.\( g8 |
3873     \once \override Tie.staff-position = #3.5
3874     bes1~ |
3875     \bar "||"
3876     \time 6/4
3877     bes2. r8
3878     % Start polyphonic section of four voices
3879     <<
3880       { c,8 d fis bes a }  % continuation of main voice
3881       \new Voice {
3882         \voiceTwo
3883         c,8~ 2
3884       }
3885       \new Voice {
3886         \voiceThree
3887         s8 d2
3888       }
3889       \new Voice {
3890         \voiceFour
3891         s4 fis4.
3892       }
3893     >> |
3894     g2.\)  % continuation of main voice
3895   }
3896 }
3897
3898 lhMusic = \relative {
3899   r2 <c' g ees>2( |
3900   <d g, d>1)\arpeggio |
3901   r2. d,,4 r4 r |
3902   r4
3903 }
3904
3905 \score {
3906   \new PianoStaff <<
3907     \new Staff = "RH"  <<
3908       \key g \minor
3909       \rhMusic
3910     >>
3911     \new Staff = "LH" <<
3912       \key g \minor
3913       \clef "bass"
3914       \lhMusic
3915     >>
3916   >>
3917 }
3918 @end lilypond
3919
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
3933
3934 @example
3935 \mergeDifferentlyHeadedOn
3936 \mergeDifferentlyDottedOn
3937 @end example
3938
3939 @noindent
3940 al principio de la sección, y
3941
3942 @example
3943 \mergeDifferentlyHeadedOff
3944 \mergeDifferentlyDottedOff
3945 @end example
3946
3947 @noindent
3948 al final, dando como resultado:
3949
3950 @c line-width ensures no break
3951 @lilypond[quote,ragged-right,line-width=6\in]
3952 rhMusic = \relative {
3953   \new Voice {
3954     r2 c''4.\( g8 |
3955     \once \override Tie.staff-position = #3.5
3956     bes1~ |
3957     \bar "||"
3958     \time 6/4
3959     bes2.\tempo "Moderato" r8
3960     \mergeDifferentlyHeadedOn
3961     \mergeDifferentlyDottedOn
3962     % Start polyphonic section of four voices
3963     <<
3964       { c,8 d fis bes a }  % continuation of main voice
3965       \new Voice {
3966         \voiceTwo
3967         c,8~ 2
3968       }
3969       \new Voice {
3970         \voiceThree
3971         s8 d2
3972       }
3973       \new Voice {
3974         \voiceFour
3975         s4 fis4.
3976       }
3977     >> |
3978     \mergeDifferentlyHeadedOff
3979     \mergeDifferentlyDottedOff
3980     g2.\)  % continuation of main voice
3981   }
3982 }
3983
3984 lhMusic = \relative {
3985   r2 <c' g ees>2( |
3986   <d g, d>1)\arpeggio |
3987   r2. d,,4 r4 r |
3988   r4
3989 }
3990
3991 \score {
3992   \new PianoStaff <<
3993     \new Staff = "RH"  <<
3994       \key g \minor
3995       \rhMusic
3996     >>
3997     \new Staff = "LH" <<
3998       \key g \minor
3999       \clef "bass"
4000       \lhMusic
4001     >>
4002   >>
4003 }
4004 @end lilypond
4005
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:
4021
4022 @cindex Tie, ejemplo de sobreescritura
4023 @cindex staff-position, propiedad, ejemplo
4024
4025 @c line-width ensures no break
4026 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
4027 rhMusic = \relative {
4028   \new Voice {
4029     r2 c''4.\( g8 |
4030     \once \override Tie.staff-position = #3.5
4031     bes1~ |
4032     \bar "||"
4033     \time 6/4
4034     bes2.\tempo "Moderato" r8
4035     \mergeDifferentlyHeadedOn
4036     \mergeDifferentlyDottedOn
4037     % Start polyphonic section of four voices
4038     <<
4039       { c,8 d fis bes a }  % continuation of main voice
4040       \new Voice {
4041         \voiceTwo
4042         % Move the c2 out of the main note column
4043         % so the merge will work
4044         c,8~ \shiftOnn c2
4045       }
4046       \new Voice {
4047         \voiceThree
4048         % Stem on the d2 must be down to permit merging
4049         s8 \stemDown d2
4050       }
4051       \new Voice {
4052         \voiceFour
4053         s4 fis4.
4054       }
4055     >> |
4056     \mergeDifferentlyHeadedOff
4057     \mergeDifferentlyDottedOff
4058     g2.\)  % continuation of main voice
4059   }
4060 }
4061
4062 lhMusic = \relative {
4063   r2 <c' g ees>2( |
4064   <d g, d>1)\arpeggio |
4065   r2. d,,4 r4 r |
4066   r4
4067 }
4068
4069 \score {
4070   \new PianoStaff <<
4071     \new Staff = "RH"  <<
4072       \key g \minor
4073       \rhMusic
4074     >>
4075     \new Staff = "LH" <<
4076       \key g \minor
4077       \clef "bass"
4078       \lhMusic
4079     >>
4080   >>
4081 }
4082 @end lilypond
4083
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:
4090
4091 @cindex NoteColumn, ejemplo de sobreescritura
4092 @cindex force-hshift, propiedad, ejemplo
4093 @cindex Stem, ejemplo de sobreescritura
4094 @cindex transparent, propiedad, ejemplo
4095
4096 @c line-width ensures no break
4097 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
4098 rhMusic = \relative {
4099   \new Voice {
4100     r2 c''4.\( g8 |
4101     \once \override Tie.staff-position = #3.5
4102     bes1~ |
4103     \bar "||"
4104     \time 6/4
4105     bes2.\tempo "Moderato" r8
4106     \mergeDifferentlyHeadedOn
4107     \mergeDifferentlyDottedOn
4108     % Start polyphonic section of four voices
4109     <<
4110       { c,8 d fis bes a }  % continuation of main voice
4111       \new Voice {
4112         \voiceTwo
4113         c,8~
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
4118         \shiftOnn
4119         c2
4120       }
4121       \new Voice {
4122         \voiceThree
4123         s8
4124         % Stem on the d2 must be down to permit merging
4125         \stemDown
4126         % Stem on the d2 should be invisible
4127         \tweak Stem.transparent ##t
4128         d2
4129       }
4130       \new Voice {
4131         \voiceFour
4132         s4 fis4.
4133       }
4134     >> |
4135     \mergeDifferentlyHeadedOff
4136     \mergeDifferentlyDottedOff
4137     g2.\)  % continuation of main voice
4138   }
4139 }
4140
4141 lhMusic = \relative {
4142   r2 <c' g ees>2( |
4143   <d g, d>1)\arpeggio |
4144   r2. d,,4 r4 r |
4145   r4
4146 }
4147
4148 \score {
4149   \new PianoStaff <<
4150     \new Staff = "RH"  <<
4151       \key g \minor
4152       \rhMusic
4153     >>
4154     \new Staff = "LH" <<
4155       \key g \minor
4156       \clef "bass"
4157       \lhMusic
4158     >>
4159   >>
4160 }
4161 @end lilypond
4162
4163
4164 @node Trucajes adicionales
4165 @section Trucajes adicionales
4166 @translationof Further tweaking
4167
4168 @menu
4169 * Otras aplicaciones de los trucos::
4170 * Uso de variables para los ajustes de disposición::
4171 * Hojas de estilo::
4172 * Otras fuentes de información::
4173 * Trucos avanzados con Scheme::
4174 @end menu
4175
4176 @node Otras aplicaciones de los trucos
4177 @subsection Otras aplicaciones de los trucos
4178 @translationof Other uses for tweaks
4179
4180 @menu
4181 * Unir notas entre voces distintas::
4182 * Simulación de un calderón en el MIDI::
4183 @end menu
4184
4185 @cindex eliminar objetos
4186 @cindex objetos, eliminar
4187
4188 @node Unir notas entre voces distintas
4189 @unnumberedsubsubsec Unir notas entre voces distintas
4190 @translationof Tying notes across voices
4191
4192 @cindex ligar notas entre voces distintas
4193
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
4198 ellas:
4199
4200 @lilypond[quote]
4201 << { b'8~ 8\noBeam } \\ { b'8[ g'] } >>
4202 @end lilypond
4203
4204 @noindent
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:
4207
4208 @funindex \omit
4209 @cindex Stem, example of removing
4210 @cindex Flag, example of removing
4211 @cindex @code{\omit}, example
4212 @cindex example of @code{\omit}
4213
4214 @lilypond[quote,verbatim]
4215 <<
4216   {
4217     \once \omit Stem
4218     \once \omit Flag
4219     b'8~ 8\noBeam
4220   }
4221 \\
4222   { b'8[ g'] }
4223 >>
4224 @end lilypond
4225
4226 @seealso
4227 Manual de aprendizaje
4228 @ref{El prefijo once,,El prefijo @code{@bs{}once}},
4229 @ref{La propiedad stencil (sello)}.
4230
4231
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
4235
4236 @cindex sello, uso de la propiedad
4237 @cindex fermata, realización en MIDI
4238
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.
4247
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:
4256
4257 @cindex MetronomeMark, ejemplo de sobreescritura
4258 @cindex transparent, propiedad, ejemplo
4259
4260 @lilypond[quote,verbatim,ragged-right]
4261 \score {
4262   \relative {
4263     % Visible tempo marking
4264     \tempo 4=120
4265     a'4 a a
4266     \once \hide Score.MetronomeMark
4267     % Invisible tempo marking to lengthen fermata in MIDI
4268     \tempo 4=80
4269     a4\fermata |
4270     % New tempo for next section
4271     \tempo 4=100
4272     a4 a a a |
4273   }
4274   \layout { }
4275   \midi { }
4276 }
4277 @end lilypond
4278
4279 @cindex MetronomeMark, ejemplo de sobreescritura
4280 @cindex stencil, propiedad, ejemplo
4281
4282 @lilypond[quote,verbatim,ragged-right]
4283 \score {
4284   \relative {
4285     % Visible tempo marking
4286     \tempo 4=120
4287     a'4 a a
4288     \once \omit Score.MetronomeMark
4289     % Invisible tempo marking to lengthen fermata in MIDI
4290     \tempo 4=80
4291     a4\fermata |
4292     % New tempo for next section
4293     \tempo 4=100
4294     a4 a a a |
4295   }
4296   \layout { }
4297   \midi { }
4298 }
4299 @end lilypond
4300
4301 @noindent
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.
4308
4309 @seealso
4310 Glosario musical:
4311 @rglos{system}.
4312
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
4316
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
4321
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
4326 para guardarlas.
4327
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}?
4337
4338 @example
4339 \override Lyrics.LyricText.font-shape = #'italic
4340 \override Lyrics.LyricText.font-series = #'bold
4341
4342 \revert Lyrics.LyricText.font-shape
4343 \revert Lyrics.LyricText.font-series
4344 @end example
4345
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
4355 teclear:
4356
4357 @cindex LyricText, ejemplo de sobreescritura
4358 @cindex font-shape, propiedad, ejemplo
4359 @cindex font-series, propiedad, ejemplo
4360
4361 @lilypond[quote,verbatim]
4362 emphasize = {
4363   \override Lyrics.LyricText.font-shape = #'italic
4364   \override Lyrics.LyricText.font-series = #'bold
4365 }
4366
4367 normal = {
4368   \revert Lyrics.LyricText.font-shape
4369   \revert Lyrics.LyricText.font-series
4370 }
4371
4372 global = { \key c \major \time 4/4 \partial 4 }
4373
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 }
4378
4379 VerseOne = \lyrics {
4380   E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save,
4381 }
4382
4383 VerseTwo = \lyricmode {
4384   O | \once \emphasize Christ, whose voice the | wa -- ters heard,
4385 }
4386
4387 VerseThree = \lyricmode {
4388   O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood
4389 }
4390
4391 VerseFour = \lyricmode {
4392   O | \emphasize Tri -- ni -- ty \normal of | love and pow'r
4393 }
4394
4395 \score {
4396   \new ChoirStaff <<
4397     \new Staff <<
4398       \clef "treble"
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 }
4405     >>
4406     \new Staff <<
4407       \clef "bass"
4408       \new Voice = "Tenor" { \voiceOne \TenorMusic }
4409       \new Voice = "Bass"  { \voiceTwo \BassMusic }
4410     >>
4411   >>
4412 }
4413 @end lilypond
4414
4415
4416 @node Hojas de estilo
4417 @subsection Hojas de estilo
4418 @translationof Style sheets
4419
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.
4426
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}.
4430
4431 @lilypond[quote,verbatim,ragged-right]
4432 mpdolce =
4433   \tweak self-alignment-X #-0.6
4434   #(make-dynamic-script
4435     #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4436
4437 inst =
4438 #(define-music-function
4439      (string)
4440      (string?)
4441    #{ <>^\markup \bold \box #string #})
4442
4443 \relative {
4444   \tempo 4=50
4445   a'4.\mpdolce d8 cis4--\glissando a |
4446   b4 bes a2 |
4447   \inst "Clarinet"
4448   cis4.\< d8 e4 fis |
4449   g8(\! fis)-. e( d)-. cis2 |
4450 }
4451 @end lilypond
4452
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:
4461
4462 @example
4463 %%% guardar esto en un archivo con el nombre "definiciones.ily"
4464 mpdolce =
4465   \tweak self-alignment-X #-0.6
4466   #(make-dynamic-script
4467     #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4468
4469 inst =
4470 #(define-music-function
4471      (string)
4472      (string?)
4473    #@{ <>^\markup \bold \box #string #@})
4474 @end example
4475
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}).
4482
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.
4485
4486 @example
4487 \include "definiciones.ily"
4488
4489 \relative @{
4490   \tempo 4=50
4491   a'4.\mpdolce d8 cis4--\glissando a |
4492   b4 bes a2 |
4493   \inst "Clarinete"
4494   cis4.\< d8 e4 fis |
4495   g8(\! fis)-. e( d)-. cis2 |
4496 @}
4497 @end example
4498
4499 @lilypond[quote,ragged-right]
4500 mpdolce =
4501   \tweak self-alignment-X #-0.6
4502   #(make-dynamic-script
4503     #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4504
4505 inst =
4506 #(define-music-function
4507      (string)
4508      (string?)
4509    #{ <>^\markup \bold \box #string #})
4510
4511 \relative {
4512   \tempo 4=50
4513   a'4.\mpdolce d8 cis4--\glissando a |
4514   b4 bes a2 |
4515   \inst "Clarinet"
4516   cis4.\< d8 e4 fis |
4517   g8(\! fis)-. e( d)-. cis2 |
4518 }
4519 @end lilypond
4520
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}.
4527
4528 Sin embargo, no debemos cambiar el archivo @file{musica.ly}.
4529 Sustituyamos nuestro archivo @file{definiciones.ily} con éste:
4530
4531 @example
4532 %%%  definiciones.ily
4533 mpdolce =
4534   \tweak self-alignment-X #-0.6
4535   #(make-dynamic-script
4536     #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4537
4538 inst =
4539 #(define-music-function
4540      (string)
4541      (string?)
4542    #@{ <>^\markup \bold \box #string #@})
4543
4544 \layout@{
4545   \context @{
4546     \Score
4547     \override MetronomeMark.extra-offset = #'(-5 . 0)
4548     \override MetronomeMark.padding = #'3
4549   @}
4550   \context @{
4551     \Staff
4552     \override TimeSignature.style = #'numbered
4553   @}
4554   \context @{
4555     \Voice
4556     \override Glissando.thickness = #3
4557     \override Glissando.gap = #0.1
4558   @}
4559 @}
4560 @end example
4561
4562 @lilypond[quote,ragged-right]
4563 mpdolce =
4564   \tweak self-alignment-X #-0.6
4565   #(make-dynamic-script
4566     #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4567
4568 inst =
4569 #(define-music-function
4570      (string)
4571      (string?)
4572    #{ <>^\markup \bold \box #string #})
4573
4574 \layout{
4575   \context {
4576     \Score
4577     \override MetronomeMark.extra-offset = #'(-5 . 0)
4578     \override MetronomeMark.padding = #'3
4579   }
4580   \context {
4581     \Staff
4582     \override TimeSignature.style = #'numbered
4583   }
4584   \context {
4585     \Voice
4586     \override Glissando.thickness = #3
4587     \override Glissando.gap = #0.1
4588   }
4589 }
4590
4591 \relative {
4592   \tempo 4=50
4593   a'4.\mpdolce d8 cis4--\glissando a |
4594   b4 bes a2 |
4595   \inst "Clarinet"
4596   cis4.\< d8 e4 fis |
4597   g8(\! fis)-. e( d)-. cis2 |
4598 }
4599 @end lilypond
4600
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.
4608
4609 @example
4610 %%%  publicar-web.ily
4611 mpdolce =
4612   \tweak self-alignment-X #-0.6
4613   #(make-dynamic-script
4614     #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4615
4616 inst =
4617 #(define-music-function
4618      (string)
4619      (string?)
4620    #@{ <>^\markup \bold \box #string #@})
4621
4622 #(set-global-staff-size 23)
4623
4624 \layout@{
4625   \context @{
4626     \Score
4627     \override MetronomeMark.extra-offset = #'(-5 . 0)
4628     \override MetronomeMark.padding = #'3
4629   @}
4630   \context @{
4631     \Staff
4632   @}
4633   \context @{
4634     \Voice
4635     \override Glissando.thickness = #3
4636     \override Glissando.gap = #0.1
4637   @}
4638 @}
4639 @end example
4640
4641 @lilypond[quote,ragged-right]
4642 mpdolce =
4643   \tweak self-alignment-X #-0.6
4644   #(make-dynamic-script
4645     #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4646
4647 inst =
4648 #(define-music-function
4649      (string)
4650      (string?)
4651    #{ <>^\markup \bold \box #string #})
4652
4653 #(set-global-staff-size 23)
4654
4655 \layout{
4656   \context { \Score
4657     \override MetronomeMark.extra-offset = #'(-5 . 0)
4658     \override MetronomeMark.padding = #'3
4659   }
4660   \context { \Voice
4661     \override Glissando.thickness = #3
4662     \override Glissando.gap = #0.1
4663   }
4664 }
4665
4666 \relative {
4667   \tempo 4=50
4668   a'4.\mpdolce d8 cis4--\glissando a |
4669   b4 bes a2 |
4670   \inst "Clarinet"
4671   cis4.\< d8 e4 fis |
4672   g8(\! fis)-. e( d)-. cis2 |
4673 }
4674 @end lilypond
4675
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:
4686
4687 @example
4688 \include "definiciones.ily"
4689
4690 %%%  ¡Quitar el comentario de una sola de estas líneas!
4691 \include "publicar-web.ily"
4692 %\include "universidad.ily"
4693 @end example
4694
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
4699 contiene
4700
4701 @example
4702 %%%   global.ily
4703 \version @w{"@version{}"}
4704
4705 #(ly:set-option 'point-and-click #f)
4706
4707 \include "../iniciar/iniciar-definiciones.ily"
4708 \include "../iniciar/iniciar-disposicion.ily"
4709 \include "../iniciar/iniciar-cabeceras.ily"
4710 \include "../iniciar/iniciar-papel.ily"
4711 @end example
4712
4713
4714 @node Otras fuentes de información
4715 @subsection Otras fuentes de información
4716 @translationof Other sources of information
4717
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:
4729
4730 @subsubsubheading Descargado de lilypond.org
4731
4732 @itemize @bullet
4733 @item GNU/Linux
4734
4735 Diríjase a
4736 @example
4737 @file{@var{CARPETA_DE_INSTALACIÓN}/lilypond/usr/@/share/lilypond/current/}
4738 @end example
4739
4740 @item MacOS X
4741
4742 Diríjase a
4743 @example
4744 @file{@var{CARPETA_DE_INSTALACIÓN}/LilyPond.app/Contents/@/Resources/share/lilypond/current/}
4745 @end example
4746
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}.
4751
4752 @item Windows
4753
4754 Mediante el Explorador de Windows, diríjase a
4755 @example
4756 @file{@var{CARPETA_DE_INSTALACIÓN}/LilyPond/usr/@/share/lilypond/current/}
4757 @end example
4758
4759 @end itemize
4760
4761 @subsubsubheading Instalado mediante un gestor de paquetes o compilado a partir de la fuente
4762
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.
4767
4768 @smallspace
4769
4770 Dentro de esta carpeta, las dos subcarpetas interesantes son
4771
4772 @itemize
4773 @item @file{ly/} - contiene archivos en formato LilyPond
4774 @item @file{scm/} - contiene archivos en formato Scheme
4775 @end itemize
4776
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
4786 es:
4787
4788 @example
4789 tieDotted = @{
4790   \override Tie.dash-period = #0.75
4791   \override Tie.dash-fraction = #0.1
4792 @}
4793 @end example
4794
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.
4798
4799 Los siguientes son los archivos más útiles que se encuentran en
4800 @file{ly/}:
4801
4802 @multitable @columnfractions .4 .6
4803 @headitem Archivo
4804   @tab Contenido
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
4815 @end multitable
4816
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}).
4827
4828 Si ya tiene estos conocimientos, los archivos de Scheme que pueden
4829 interesarle son:
4830
4831 @multitable @columnfractions .4 .6
4832 @headitem Archivo
4833   @tab Contenido
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
4848 @end multitable
4849
4850
4851 @node Trucos avanzados con Scheme
4852 @subsection Trucos avanzados con Scheme
4853 @translationof Advanced tweaks with Scheme
4854
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
4864 Scheme}.
4865
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.
4874
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
4878
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)
4883                                7)))
4884      (case mod-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
4893        )))
4894
4895 \relative {
4896   % Arrange to obtain color from color-notehead procedure
4897   \override NoteHead.color = #color-notehead
4898   a2 b | c2 d | e2 f | g2 a |
4899 }
4900 @end lilypond
4901
4902 Se pueden encontrar ejemplos adicionales que muestran la
4903 utilización de estos interfaces programables, en
4904 @rextendnamed{Callback functions,Funciones de callback}.
4905