]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/es/learning/tweaks.itely
Preliminary sectioning: 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: 7fdce4f39834cc8c83f176480cc1d20900eb09f8
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 extremadamente
18 configurable; prácticamente todos los fragmentos de la salida se pueden cambiar.
19
20
21 @menu
22 * Elementos de trucaje::
23 * Manual de referencia de funcionamiento interno::
24 * Apariencia de los objetos::
25 * Colocación de los objetos::
26 * Espaciado vertical::
27 * Colisiones de objetos::
28 * Trucajes adicionales::
29 @end menu
30
31 @node Elementos de trucaje
32 @section Elementos de trucaje
33 @translationof Tweaking basics
34
35 @menu
36 * Introducción al trucaje::
37 * Objetos e interfaces::
38 * Convenciones de nombres de objetos y propiedades::
39 * Métodos de trucaje::
40 @end menu
41
42 @node Introducción al trucaje
43 @subsection Introducción al trucaje
44 @translationof Introduction to tweaks
45
46 El @q{Trucaje} es un término de LilyPond que denota los diversos
47 métodos que el usuario tiene a su disposición para modificar el
48 proceso de interpretación del archivo de entrada y cambiar la
49 apariencia de la salida impresa.  Algunos trucos son muy fáciles de
50 usar; otros son más complejos.  Pero en su conjunto, los métodos de
51 trucaje disponibles posibilitan conseguir casi cualquier apariencia
52 que deseemos en la música impresa.
53
54 En esta sección vamos a estudiar los conceptos básicos que se
55 necesitan para comprender el trucaje.  Más tarde daremos un amplio
56 abanico de instrucciones listas para usar, que podrá simplemente
57 copiar para obtener el mismo efecto en sus partituras, y al mismo
58 tiempo mostraremos la forma de construir dichas instrucciones para que
59 pueda aprender cómo desarrollar sus propios trucos.
60
61 Antes de comenzar con este capítulo, quizá quiera echar un vistazo a
62 la sección @ref{Contextos y grabadores}, pues los Contextos, los
63 Grabadores y las Propiedades que se contienen en ellos son
64 fundamentales para comprender y construir los trucos.
65
66 @node Objetos e interfaces
67 @subsection Objetos e interfaces
68 @translationof Objects and interfaces
69
70 @cindex objeto
71 @cindex grob
72 @cindex objeto de extensión
73 @cindex interfaz
74 @cindex propiedades de objetos
75 @cindex objeto, propiedades de
76 @cindex layout (disposición), objeto de
77 @cindex objeto de disposición (layout)
78
79 El trucaje consiste en modificar el funcionamiento y estructura
80 interna del programa LilyPond, por lo que en primer lugar
81 introduciremos algunos términos que se usan para describir dichas
82 operaciones y estructuras internas.
83
84 El término @q{Objeto} es un término genérico que se usa para referirse
85 a la multitud de estructuras internas que LilyPond construye durante
86 el procesado de un archivo de entrada.  Así, cuando se encuentra una
87 instrucción como @code{\new Staff}, se construye un objeto nuevo del
88 tipo @code{Staff}.  Entonces, este objeto @code{Staff} contiene todas
89 las propiedades asociadas con ese pentagrama en particular, por
90 ejemplo, su nombre y su armadura, además de otros detalles de los
91 grabadores que se han asignado para que operen dentro del contexto del
92 pentagrama.  De forma similar, hay objetos que guardan las propiedades
93 de todos los demás contextos, como objetos de @code{Voice}, objetos de
94 @code{Score}, objetos de @code{Lyrics}, así como objetos que
95 representan todos los elementos notacionales como líneas divisorias,
96 cabezas de las notas, ligaduras, indicaciones dinámicas, etc.  Cada
97 objeto tiene su propio conjunto de valores de propiedad.
98
99 Ciertos tipos de objetos reciben nombres especiales.  Los objetos que
100 representan elementos de notación sobre la salida impresa como cabezas
101 de notas, plicas, ligaduras de expresión y de unión, digitaciones,
102 claves, etc. reciben el nombre de @q{Objetos de presentación}, a
103 menudo conocidos como @q{Objetos gráficos}, o abreviadamente
104 @q{Grobs}.  Aún son objetos en el sentido genérico que hemos
105 mencionado, y también todos ellos tienen propiedades asociadas, como
106 su posición, tamaño, color,etc.
107
108 Ciertos objetos de presentación son aún más especializados.  Las
109 ligaduras de fraseo, los reguladores, las indicaciones de octava alta
110 y baja, y muchos otros objetos gráficos no están situados en un solo
111 lugar: tienen un punto de inicio, un punto de final, y quizá otras
112 propiedades relacionadas con su forma.  Los objetos con una forma
113 extendida como estos, reciben el nombre de «Objetos de extensión» o
114 @q{Spanners}.
115
116 Spanners cannot be tweaked after their creation.  This includes both
117 @code{StaffSymbol} and @code{LedgerLineSpanner} which continue
118 throughout the score (except if they are terminated by the
119 @code{\stopStaff} command and then recreated using @code{\startStaff}
120 command.
121
122 What is more, there are @q{abstract} grobs which do not print
123 anything of their own, but rather collect, position and manage
124 other grobs.  Common examples for this are
125 @code{DynamicLineSpanner}, @code{BreakAlignment},
126 @code{NoteColumn}, @code{VerticalAxisGroup},
127 @code{NonMusicalPaperColumn} and similar.  We will see how some of
128 these are used later.
129
130 Aún falta por explicar qué son los @q{Interfaces}.  Muchos objetos,
131 incluso aunque son bastante diferentes, comparten funcionalidades que
132 se deben procesar de la misma manera.  Por ejemplo, todos los objetos
133 gráficos tienen un color, un tamaño, una posición, etc., y todas estas
134 propiedades se procesan de la misma forma durante la interpretación
135 del archivo de entrada por parte de LilyPond.  Para simplificar estas
136 operaciones internas, estas acciones y propiedades comunes se agrupan
137 en un objeto llamado @code{grob-interface}, interface de grob.  Hay
138 muchas otras agrupaciones de propiedades comunes como ésta, y cada
139 una recibe un nombre que acaba en @code{interface}.  En total hay más
140 de 100 interfaces de éstos.  Veremos más adelante porqué esto es del
141 interés y de utilidad para el usuario.
142
143 Estos son, en fin, los términos principales relativos a los objetos
144 que vamos a utilizar en este capítulo.
145
146 @node Convenciones de nombres de objetos y propiedades
147 @subsection Convenciones de nombres de objetos y propiedades
148 @translationof Naming conventions of objects and properties
149
150 @cindex nomenclatura, convenciones de, para objetos
151 @cindex nomenclatura, convenciones de, para propiedades
152 @cindex objetos, convenciones de nomenclatura
153 @cindex propiedades, convenciones de nomenclatura
154
155 Ya hemos visto ciertas convenciones de nomenclatura de objetos, en la
156 sección @ref{Contextos y grabadores}.  En este lugar, para más fácil
157 referencia, presentamos una lista de los tipos de objetos y
158 propiedades más comunes, junto con las convenciones según las cuales
159 reciben su nombre, y un par de ejemplos de nombres reales.  Hemos
160 utilizado una @q{A} mayúscula para denotar cualquier carácter
161 alfabético en mayúsculas, y @q{aaa} para cualquier número de
162 caracteres alfabéticos en minúscula.  Otros caracteres se utilizan
163 literalmente como están.
164
165 @multitable @columnfractions .33 .33 .33
166 @headitem Objeto o tipo de propiedad
167   @tab Convención de nomenclatura
168   @tab Ejemplos
169 @item Contextos
170   @tab Aaaa o AaaaAaaaAaaa
171   @tab Staff, GrandStaff
172 @item Objetos de presentación
173   @tab Aaaa o AaaaAaaaAaaa
174   @tab Slur, NoteHead
175 @item Grabadores
176   @tab Aaaa_aaa_engraver
177   @tab Clef_engraver, Note_heads_engraver
178 @item Interfaces
179   @tab aaa-aaa-interface
180   @tab grob-interface, break-aligned-interface
181 @item Propiedades de contextos
182   @tab aaa o aaaAaaaAaaa
183   @tab alignAboveContext, skipBars
184 @item Propiedades de objetos de presentación
185   @tab aaa o aaa-aaa-aaa
186   @tab direction, beam-thickness
187 @end multitable
188
189 Como podremos ver en breve, las propiedades de distintos tipos de
190 objeto se modifican por parte de diferentes instrucciones; así pues,
191 es útil poder reconocer los tipos de objetos y propiedades
192 a partir de sus nombres.
193
194 @seealso
195 Notation Reference:
196 @ruser{Modifying properties}.
197
198
199 @node Métodos de trucaje
200 @subsection Métodos de trucaje
201 @translationof Tweaking methods
202
203 @cindex trucaje, métodos de
204
205 @strong{La instrucción \override}
206
207 @menu
208 * La instrucción override::
209 * La instrucción revert::
210 * El prefijo once::
211 * La instrucción overrideProperty::
212 * La instrucción tweak::
213 @end menu
214
215 @node La instrucción override
216 @unnumberedsubsubsec La instrucción @code{@bs{}override}
217 @translationof The override command
218
219 @cindex override, instrucción
220 @cindex override (sobreescritura), sintaxis de
221
222 @funindex \override
223 @funindex override
224
225 Ya hemos visto las instrucciones @code{\set} y @code{\with}, que se
226 usan para cambiar las propiedades de los @strong{contextos} y para
227 quitar y poner @strong{grabadores}, en @ref{Modificar las propiedades de los contextos}
228 y @ref{Añadir y eliminar grabadores}.  Ahora debemos
229 examinar algunas otras instrucciones importantes.
230
231 La instrucción que cambia las propiedades de los @strong{objetos de
232 presentación} es @code{\override}.  Puesto que esta instrucción debe
233 modificar propiedades internas que se encuentran en un lugar profundo
234 dentro de LilyPond, su sintaxis no es tan simple como la del resto de
235 las instrucciones que hemos usado hasta ahora.  Tiene que saber
236 exactamente qué propiedad de qué objeto y en qué contexto se debe
237 modificar, y cuál debe ser su nuevo valor.  Veamos cómo se hace.
238
239 La sintaxis genérica de esta instrucción es:
240
241 @example
242 \override @var{Contexto}.@var{ObjetoDePresentación}.@var{propiedad-de-presentación} =
243 #@var{valor}
244 @end example
245
246 @noindent
247 Esto establecerá la propiedad de nombre
248 @var{propiedad-de-presentación} del objeto de presentación con el
249 nombre @var{ObjetoDePresentación}, que es miembro del contexto
250 @var{Contexto}, al valor @var{valor}.
251
252 El @var{contexto} se puede omitir (y normalmente así es) cuando el
253 contexto requerido se encuentra implicado sin ambigüedad y es uno de
254 los contextos del nivel más bajo, es decir: @code{Voice},
255 @code{ChordNames} o @code{Lyrics}, y lo omitiremos en muchos de los
256 ejemplos siguientes.  Veremos más tarde cuándo se debe especificar.
257
258 Las últimas secciones tratan de forma exhaustiva las propiedades y sus
259 valores, véase @ref{Tipos de propiedades}.  Pero en esta sección
260 usaremos sólo unas cuantas propiedades y valores
261 sencillos que sean fáciles de entender, para ilustrar el formato
262 y la utilización de estas instrucciones.
263
264 Las expresiones principales de LilyPond son elementos musicales
265 como notas, duraciones y elementos de marcado.  Las expresiones
266 más básicas como números, cadenas de caracteres y listas se
267 procesan en el @q{modo de Scheme}, que se invoca por medio del
268 prefijo @samp{#} escrito antes del valor.  Aunque los valores
269 pueden tener a veces una representación válida en el modo de
270 música de LilyPond, este manual utiliza siempre @samp{#} para la
271 escritura, por coherencia.  Para ver más información acerca del
272 modo de Scheme, consulte @rextend{Sintaxis del Scheme de LilyPond}.
273
274 @code{\override} es la
275 instrucción de uso más común dentro del trucaje, y durante la mayor
276 parte del resto de este capítulo presentaremos ejemplos de cómo se
277 usa.  A continuación hay un ejemplo sencillo para cambiar el color de
278 una cabeza:
279
280 @cindex color, propiedad, ejemplo
281 @cindex NoteHead, ejemplo de sobreescritura
282
283 @lilypond[quote,ragged-right,verbatim]
284 \relative {
285   c'4 d
286   \override NoteHead.color = #red
287   e4 f |
288   \override NoteHead.color = #green
289   g4 a b c |
290 }
291 @end lilypond
292
293
294 @node La instrucción revert
295 @unnumberedsubsubsec La instrucción @code{@bs{}revert}
296 @translationof The revert command
297
298 @cindex revert, instrucción
299
300 @funindex \revert
301 @funindex revert
302
303 Una vez sobreescrita, la propiedad retiene su nuevo valor hasta que
304 se sobreescribe de nuevo o se encuentra una instrucción
305 @code{\revert}.  La instrucción @code{\revert} tiene la siguiente
306 sintaxis y ocasiona que el valor de la propiedad se devuelva a su
307 valor predeterminado original; observe que no es a su valor previo si
308 se han utilizado varias instrucciones @code{\override}.
309
310 @example
311 \revert @var{Contexto}.@var{ObjetoDePresentación}.@var{propiedad-de-presentación}
312 @end example
313
314 Una vez más, igual que @var{Contexto} dentro de la instrucción
315 @code{\override}, con frecuencia no es necesario especificar el
316 @var{Contexto}.  Se omitirá en muchos de los ejemplos siguientes.
317 Aquí devolvemos el color de la cabeza al valor predeterminado para las
318 dos últimas notas:
319
320 @cindex color, propiedad, ejemplo
321 @cindex NoteHead, ejemplo de sobreescritura
322
323 @lilypond[quote,ragged-right,verbatim]
324 \relative {
325   c'4 d
326   \override NoteHead.color = #red
327   e4 f |
328   \override NoteHead.color = #green
329   g4 a
330   \revert NoteHead.color
331   b4 c |
332 }
333 @end lilypond
334
335
336 @node El prefijo once
337 @unnumberedsubsubsec El prefijo @code{@bs{}once}
338 @translationof The once prefix
339
340 @funindex \once
341 @funindex once
342
343 @code{\override}, @code{\revert}. @code{\set}, and @code{\unset}
344 se pueden
345 preceder por @code{\once}.  Esto ocasiona que la instrucción
346 sea efectiva solamente durante el
347 tiempo musical en curso y antes de que la propiedad vuelva a tener
348 otra vez su valor anterior (que puede ser distinto de su valor
349 predeterminado si aún se está aplicando otra instrucción
350 @code{\override} de sobreescritura).  Utilizando el mismo ejemplo,
351 podemos cambiar el color de una sola nota de la siguiente manera:
352
353 @cindex color, propiedad, ejemplo
354 @cindex NoteHead, ejemplo de sobreescritura
355
356 @lilypond[quote,verbatim]
357 \relative {
358   c'4 d
359   \override NoteHead.color = #red
360   e4 f |
361   \once \override NoteHead.color = #green
362   g4 a
363   \once \revert NoteHead.color
364   b c |
365   \revert NoteHead.color
366   f2 c |
367 }
368 @end lilypond
369
370 El prefijo @code{\once} también se puede usar delante de muchas
371 instrucciones predefinidas para limitar su efecto a un solo momento
372 musical:
373
374 @lilypond[quote,verbatim]
375 \relative {
376   c'4( d)
377   \once \slurDashed
378   e4( f) |
379   g4( a)
380   \once \hideNotes
381   b( c) |
382 }
383 @end lilypond
384
385 @node La instrucción overrideProperty
386 @unnumberedsubsubsec La instrucción @code{@bs{}overrideProperty}
387 @translationof The overrideProperty command
388
389 @cindex overrideProperty, instrucción
390
391 @funindex \overrideProperty
392 @funindex overrideProperty
393
394 Hay otra forma para la instrucción de sobreescritura,
395 @code{\overrideProperty}, que ocasionalmente es necesaria.  La
396 mencionamos aquí con un propósito de exhaustividad, pero para ver más
397 detalles consulte @rextend{Trucos difíciles}.
398 @c Maybe explain in a later iteration  -td
399
400
401 @node La instrucción tweak
402 @unnumberedsubsubsec La instrucción @code{@bs{}tweak}
403 @translationof The tweak command
404
405 @cindex tweak, instrucción
406
407 @funindex \tweak
408 @funindex tweak
409
410 La última instrucción de trucaje que está disponible es @code{\tweak}.
411 Se debe utilizar cuando varios objetos tienen lugar
412 en el mismo momento musical pero solo queremos cambiar las propiedades
413 de algunos de ellos, como una sola nota dentro de un acorde.
414 El uso de
415 @code{\override} para la sobreescritura afectaría a todas las notas
416 del acorde, mientras que @code{\tweak} afecta solamente al siguiente
417 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 notas
437 de un acorde ocurren en el mismo @emph{momento musical}, y la acción
438 de @code{\once} es aplicar la sobreescritura a todos los objetos de
439 presentación del tipo especificado que ocurren en el mismo momento
440 musical que la propia instrucción de sobreescritura @code{\override}.
441
442 La instrucción @code{\tweak} opera de una forma distinta.  Actúa sobre
443 el elemento inmediatamente siguiente dentro del flujo de entrada.
444 En su forma más sencilla es efectivo solamente sobre objetos
445 que se crean directamente
446 a partir del elemento siguiente, en esencia las cabezas y las
447 articulaciones.
448
449 Así pues, volviendo a nuestro ejemplo, el tamaño de la nota intermedia
450 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
464 debe especificar; de hecho, generaría un error hacerlo.
465 Tanto el contexto como el objeto de presentación
466 están implícitos por el siguiente elemento del flujo de entrada.
467 Observe también que no debe haber un signo igual. Así que la sintaxis
468 de la instrucción @code{\tweak} en su forma 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 una
488 marca de articulación porque la propia expresión trucada debe aplicarse
489 como una articulación.  En el caso de más de una sobreescritura de dirección
490 (@code{^} o @code{_}), gana la sobreescritura situada más a la izquierda
491 porque se aplica en último lugar.
492
493 @cindex @code{\tweak}, Accidental
494 @cindex @code{\tweak}, specific layout object
495
496 Los objetos tales como plicas y alteraciones accidentales se crean más
497 tarde, y no directamente a partir del evento que viene a continuación.
498 Aún es posible utilizar @code{\tweak} sobre tales objetos creados
499 indirectamente mediante el nombrado explícito del objeto de
500 presentación, siempre y cuando LilyPond pueda rastrear su origen hasta
501 el evento original:
502
503 @lilypond[quote,fragment,ragged-right,verbatim]
504 <\tweak Accidental.color #red   cis''4
505  \tweak Accidental.color #green es''
506  g''>
507 @end lilypond
508
509 Esta forma extensa de la instrucción @code{\tweak} se puede describir
510 como
511 @example
512 \tweak @var{LayoutObject}.@var{layout-property} #@var{value}
513 "ANTES" \tweak @var{objeto-de-presentación}.@var{propiedad-de-presentación} @var{valor}
514 @end example
515
516 @cindex grupos especiales anidados
517 @cindex tresillos anidados
518 @cindex corchete del grupo especial
519 @cindex corchete de tresillo
520 @cindex grupo especial, corchete de
521 @cindex tresillo, corchete de
522
523 @funindex TupletBracket
524
525 La instrucción @code{\tweak} también se debe usar para cambiar la
526 apariencia de uno solo de un conjunto de grupos especiales anidados
527 que comiencen en el mismo instante musical.  En el siguiente ejemplo,
528 el corchete del tresillo largo y el primero de los tres corchetes
529 cortos empiezan en el mismo momento musical, y por ello cualquier
530 instrucción @code{\override} se aplicaría a los dos.  En el ejemplo se
531 usa @code{\tweak} para distinguir entre ellos.  La primera instrucción
532 @code{\tweak} especifica que el corchete del tresillo largo se debe
533 colocar por encima de las notas y el segundo especifica que el número
534 del tresillo se debe imprimir en rojo sobre el corchete del primer
535 tresillo corto.
536
537 @cindex @code{\tweak}, ejemplo
538 @cindex direction, propiedad, ejemplo
539 @cindex color, propiedad, ejemplo
540
541 @lilypond[quote,ragged-right,verbatim]
542 \relative c'' {
543   \tweak direction #up
544   \tuplet 3/4 {
545     \tweak color #red
546     \tuplet 3/2 { c8[ c c] }
547     \tuplet 3/2 { c8[ c c] }
548     \tuplet 3/2 { c8[ c c] }
549   }
550 }
551 @end lilypond
552
553 Si los grupos anidados no comienzan en el mismo momento, su apariencia
554 se puede modificar de la forma usual mediante instrucciones
555 @code{\override}:
556
557 @cindex text, propiedad, ejemplo
558 @cindex tuplet-number, función, ejemplo
559 @cindex transparent, propiedad, ejemplo
560 @cindex TupletNumber, ejemplo de sobreescritura
561
562 @lilypond[quote,ragged-right,verbatim]
563 \relative {
564   \tuplet 3/2 { c'8[ c c] }
565   \once \override TupletNumber.text = #tuplet-number::calc-fraction-text
566   \tuplet 3/2 {
567     c8[ c]
568     c8[ c]
569     \once \override TupletNumber.transparent = ##t
570     \tuplet 3/2 { c8[ c c] }
571     \tuplet 3/2 { c8[ c c] }
572   }
573 }
574 @end lilypond
575
576
577 @seealso
578 Referencia de la notación:
579 @ruser{La instrucción tweak}.
580
581 @node The single prefix
582 @unnumberedsubsubsec The @code{@bs{}single} prefix
583
584 @funindex \single
585 @cindex tweak, generated from override
586
587 Suppose we wanted to emphasize particular note heads by coloring them
588 red and increasing their size, and to make it easy suppose also we
589 have defined a function to do this:
590
591 @lilypond[quote,verbatim]
592 emphNoteHead = {
593   \override NoteHead.color = #red
594   \override NoteHead.font-size = 2
595 }
596 \relative {
597   c''4 a \once \emphNoteHead f d |
598 }
599 @end lilypond
600
601 The @code{\once} prefix works fine to emphasize single notes or
602 complete chords, but it cannot be used to emphasize a single note
603 @emph{within} a chord.  Earlier we have seen how @code{\tweak} can
604 be used to do this, see
605 @ref{The tweak command,,The @code{@bs{}tweak} command}.  But
606 @code{\tweak} cannot be used with a function; that's where
607 @code{\single} comes in:
608
609 @lilypond[quote,verbatim]
610 emphNoteHead = {
611   \override NoteHead.color = #red
612   \override NoteHead.font-size = 2
613 }
614 \relative {
615    <c'' a \single \emphNoteHead f d>4
616 }
617 @end lilypond
618
619 In summary, @code{\single} converts overrides into tweaks so when
620 there are several objects at the same point in musical time (like
621 noteheads in a chord), @code{\single} will only affect a single one,
622 the one generated by the immediately following music expression, in
623 contrast to @code{\once} which will affect all of those objects.
624
625 By using @code{\single} in this way any shorthand function
626 containing just overrides may be applied to individual notes in a
627 chord.  However, @code{\single} does not convert @code{\revert},
628 @code{\set} or @code{\unset} into tweaks.
629
630 @seealso
631 Learning Manual:
632 @ref{The tweak command,,The @code{@bs{}tweak} command},
633 @ref{Using variables for layout adjustments}.
634
635
636 @node Manual de referencia de funcionamiento interno
637 @section Manual de referencia de funcionamiento interno
638 @translationof The Internals Reference manual
639
640 @cindex Internals Reference
641
642 @menu
643 * Propiedades de los objetos de presentación::
644 * Propiedades de los interfaces::
645 * Tipos de propiedades::
646 @end menu
647
648 @node Propiedades de los objetos de presentación
649 @subsection Propiedades de los objetos de presentación
650 @translationof Properties of layout objects
651
652 @cindex propiedades de los objetos de presentación
653 @cindex propiedades de los grobs
654 @cindex grobs, propiedades de
655 @cindex presentación, propiedades de los objetos de
656 @cindex Referencia de funcionamiento interno
657
658 Suponga que tiene una partitura con una ligadura de expresión que para
659 su gusto es demasiado fina y quiere trazarla un poco más gruesa. ¿Cómo
660 debe proceder?  Ya sabe, por las afirmaciones anteriores acerca de la
661 flexibilidad de LilyPond, que tal posibilidad existe, y seguramente
662 piensa que una cierta instrucción de sobreescritura @code{\override}
663 será necesaria.  Pero ¿existe una propiedad de grosor para las
664 ligaduras? y, si la hay, ¿cómo se puede modificar?  Aquí es donde
665 interviene el Manual de Funcionamiento Interno.  Contiene toda la
666 información que puede necesitar para construir ésta y todas las demás
667 instrucciones @code{\override}, de sobreescritura.
668
669 Una advertencia antes de dirigir nuestra mirada a la referencia de
670 funcionamiento interno.  Éste es un documento de @strong{referencia},
671 lo que significa que hay pocas o ninguna explicación en él: su
672 propósito es presentar la información de forma precisa y concisa.  Por
673 tanto, podrá parecerle desalentador a primera vista.  ¡No se preocupe!
674 La guía y las explicaciones que presentamos aquí le permitirán extraer
675 la información de la referencia de funcionamiento interno por sí mismo
676 con tan sólo algo de práctica.
677
678 @cindex sobreescritura, ejemplo de
679 @cindex Referencia de Funcionamiento Interno, ejemplo de utilización
680 @cindex @code{\addlyrics}, ejemplo
681
682 Utilicemos un ejemplo concreto con un sencillo fragmento de música
683 real:
684
685 @c Mozart, dúo, núm. 7 de La Flauta Mágica
686
687 @lilypond[quote,verbatim]
688 {
689   \key es \major
690   \time 6/8
691   \relative {
692     r4 bes'8 bes[( g]) g |
693     g8[( es]) es d[( f]) as |
694     as8 g
695   }
696   \addlyrics {
697     The man who | feels love's sweet e -- | mo -- tion
698   }
699 }
700 @end lilypond
701
702 Suponga ahora que decidimos que nos gustan las ligaduras algo más
703 gruesas.  ¿Es posible?  La ligadura es, ciertamente, un objeto de
704 presentación, así que la cuestión es @q{¿Hay una propiedad
705 perteneciente a las ligaduras de expresión que controle su grosor?}
706 Para responder a esta pregunta debemos mirar el manual de Referencia
707 de Funcionamiento Interno, abreviadamente RFI@footnote{@strong{IR}
708 (Internals Reference) en inglés}.
709
710 El RFI de la versión de LilyPond que está usando se puede encontrar en
711 la página web de LilyPond en @uref{http://lilypond.org}.  Vaya a la
712 página de la documentación y siga el enlace Manual de Referencia de
713 Funcionamiento Interno (RFI).  Para nuestros propósitos pedagógicos
714 sería mejor que utilizase la versión en HTML, no la @q{en una sola
715 página} ni el PDF.  Para que los siguientes párrafos tengan algún
716 sentido deberá consultarlo realmente al tiempo que lee.
717
718 @c Link names in English as those pages are not yet translated. FV
719 Bajo el encabezamiento @strong{Top} podrá ver cinco enlaces.
720 Seleccione el enlace @emph{Backend}, que es donde se encuentra la
721 información sobre los objetos de presentación.  Una vez allí, bajo el
722 encabezamiento @strong{Backend}, siga el enlace @emph{All layout
723 objects}.  La página que aparece relaciona todos los objetos de
724 presentación que se usan en su versión de LilyPond, en orden
725 alfabético.  Siga el enlace Slur (ligadura de expresión), y aparecerán
726 relacionadas las propiedades de las ligaduras de expresión o Slurs.
727
728 Una forma alternativa de encontrar esta página es a partir de la
729 Referencia de la Notación.  En una de las páginas que tratan de las
730 ligaduras de expresión podrá encontrar un enlace al manual de
731 referencia del funcionamiento interno.  Este enlace le llevará
732 directamente a esta página, aunque si tiene una idea del nombre del
733 objeto de presentación que pretende trucar, le resultará más fácil ir
734 directamente al RFI y buscar allí.
735
736 Esta página sobre las ligaduras de expresión dentro del manual RFI nos
737 dice en primer lugar que los objetos Slur se crean por el grabador
738 Slur_engraver.  A continuación relaciona los ajustes estándar.
739 Navegue por ellos buscando una propiedad que pudiera controlar
740 el grosor de las ligaduras, y encontrará
741
742 @example
743 @code{thickness} (number)
744      @code{1.2}
745      Line thickness, generally measured in @code{line-thickness}
746 @end example
747
748 Esto promete ser una buena opción para cambiar el grosor.  Nos dice
749 que el valor de @code{thickness} es un simple @emph{número}, que el
750 valor predeterminado es 1.2, y que las unidades están dentro de otra
751 propiedad llamada @code{line-thickness}.
752
753 Como dijimos con anterioridad, existen entre pocas y ninguna
754 explicación en el RFI, pero ya tenemos información suficiente para
755 probar a cambiar el grosor de la ligadura.  Vemos que el nombre del
756 objeto de presentación es @code{Slur}, que el nombre de la propiedad
757 que debemos cambiar es @code{thickness} y que el nuevo valor debe ser
758 un número algo más grande que 1.2 si queremos hacer las ligaduras más
759 gruesas.
760
761 Ahora podemos construir la instrucción de sobreescritura
762 @code{\override} simplemente mediante la sustitución de los valores
763 que hemos encontrado para los nombres, omitiendo el contexto.
764 Usaremos un valor muy grande para el grosor al principio, para estar
765 seguros de que la instrucción está funcionando.  Obtenemos lo
766 siguiente:
767
768 @example
769 \override Slur.thickness = #5.0
770 @end example
771
772 ¡No olvide el @code{#'} antes del nombre de la propiedad y@tie{}@code{#}
773 antes del valor nuevo!
774
775 La pregunta final es @q{¿Dónde se debe colocar esta instrucción?}
776 Aunque nos falta seguridad y estamos todavía aprendiendo, la mejor
777 respuesta es: @q{Dentro de la música, antes de la primera ligadura y
778 cerca de ella.}  Hagámoslo así:
779
780 @cindex Slur, ejemplo de sobreescritura
781 @cindex thickness, propiedad, ejemplo
782
783 @lilypond[quote,verbatim]
784 {
785   \key es \major
786   \time 6/8
787   \relative {
788     % Increase thickness of all following slurs from 1.2 to 5.0
789     \override Slur.thickness = #5.0
790     r4 bes'8 bes[( g]) g |
791     g8[( es]) es d[( f]) as |
792     as8 g
793   }
794   \addlyrics {
795     The man who | feels love's sweet e -- | mo -- tion
796   }
797 }
798 @end lilypond
799
800 @noindent
801 y podemos ver que la ligadura, es sin duda, más pesada.
802
803 Así pues, ésta es la forma básica de construir instrucciones
804 @code{\override} o de sobreescritura.  Existen unas cuantas
805 complicaciones más con las que nos encontraremos en secciones
806 posteriores, pero ahora conoce todos los principios esenciales que
807 necesita para hacerlo por sí mismo (aunque aún necesita algo de
808 práctica).  La cual vendrá proporcionada por los ejemplos que vienen a
809 continuación.
810
811 @subsubsubheading Búsqueda del contexto
812
813 @cindex contexto, encontrar
814 @cindex contexto, buscar el, correcto
815
816 Pero en primer lugar ¿qué habría pasado si hubiésemos tenido que
817 especificar el contexto? ¿Cuál sería?  Podemos suponer que las
818 ligaduras están en el contexto de Voz, por estar claramente asociados
819 de manera estrecha con las líneas individuales de música, pero
820 ¿podemos estar seguros?  Para averiguarlo, vayamos de nuevo al inicio
821 de la página del RFI que describe las ligaduras (Slur), donde dice
822 @q{Slur objects are created by: Slur engraver} («Los objetos de
823 ligadura de expresión se crean por: el grabador Slur»).  Así pues, las
824 ligaduras de expresión se crean en cualquier contexto en el que se
825 encuentre el grabador @code{Slur_engraver}.  Siga el enlace a la
826 página del grabador @code{Slur_engraver}.  Al final del todo, dice que
827 el grabador @code{Slur_engraver} es parte de siete contextos de voz,
828 incluido el contexto de voz estándar, @code{Voice}, por lo que nuestra
829 suposición era acertada.  Y a causa de que @code{Voice} es uno de los
830 contextos de más bajo nivel que se encuentra implícito sin ambigüedad
831 por el hecho de que estamos escribiendo notas, podemos omitirlo en
832 este lugar concreto.
833
834 @subsubsubheading Sobreescritura por una sola vez
835
836 @cindex sobreescritura por una sola vez
837 @cindex once override
838
839 @funindex \once
840 @funindex once
841
842 Como puede ver, @emph{todas} las ligaduras son más gruesas en el
843 último ejemplo.  Pero ¿y si quisiéramos que solamente la primera
844 ligadura fuese más gruesa?  Esto se consigue con la instrucción o
845 prefijo @code{\once}.  Colocado inmediatamente antes de la instrucción
846 @code{\override} ocasiona que solamente cambie la ligadura que
847 comienza en la nota @strong{inmediata siguiente}.  Si la nota
848 inmediata siguiente no da inicio a una ligadura, la instrucción no
849 tiene ningún efecto en absoluto: no se recuerda hasta que se
850 encuentre alguna ligadura, sino que simplemente se ignora.  Así pues,
851 la instrucción que lleva @code{\once} se debe reposicionar de la forma
852 siguiente:
853
854 @cindex Slur, ejemplo de sobreescritura
855 @cindex thickness, propiedad, ejemplo
856
857 @lilypond[quote,verbatim]
858 {
859   \key es \major
860   \time 6/8
861   \relative {
862     r4 bes'8
863     % Increase thickness of immediately following slur only
864     \once \override Slur.thickness = #5.0
865     bes8[( g]) g |
866     g8[( es]) es d[( f]) as |
867     as8 g
868   }
869   \addlyrics {
870     The man who | feels love's sweet e -- | mo -- tion
871   }
872 }
873 @end lilypond
874
875 @noindent
876 Hemos hecho que ahora solamente la primera ligadura sea más gruesa.
877
878 La instrucción o prefijo @code{\once} también se puede usar antes de
879 la instrucción @code{\set}.
880
881 @subsubsubheading Recuperación del ajuste
882
883 @cindex revertir
884 @cindex predeterminadas, recuperar las propiedades
885
886 @funindex \revert
887 @funindex revert
888
889 Finalmente ¿y si quisiéramos que solamente las dos primeras ligaduras
890 fuesen más gruesas?  En fin; podríamos usar dos instrucciones, cada
891 una de ellas precedida por el prefijo @code{\once}, situadas
892 inmediatamente antes de cada una de las notas en que comienzan las
893 ligaduras:
894
895 @cindex Slur, ejemplo de sobreescritura
896 @cindex thickness, propiedad, ejemplo
897
898 @lilypond[quote,verbatim]
899 {
900   \key es \major
901   \time 6/8
902   \relative {
903     r4 bes'8
904     % Increase thickness of immediately following slur only
905     \once \override Slur.thickness = #5.0
906     bes[( g]) g |
907     % Increase thickness of immediately following slur only
908     \once \override Slur.thickness = #5.0
909     g8[( es]) es d[( f]) as |
910     as8 g
911   }
912   \addlyrics {
913     The man who | feels love's sweet e -- | mo -- tion
914   }
915 }
916 @end lilypond
917
918 @noindent
919 o podríamos omitir la instrucción prefija @code{\once} y utilizar la
920 instrucción @code{\revert} (restablecer) para devolver la propiedad
921 del grosor, @code{thickness}, a su valor predeterminado después de la
922 segunda ligadura:
923
924 @cindex Slur, ejemplo de sobreescritura
925 @cindex thickness, propiedad, ejemplo
926
927 @lilypond[quote,verbatim]
928 {
929   \key es \major
930   \time 6/8
931   \relative {
932     r4 bes'8
933     % Increase thickness of all following slurs from 1.2 to 5.0
934     \override Slur.thickness = #5.0
935     bes[( g]) g |
936     g8[( es]) es
937     % Revert thickness of all following slurs to default of 1.2
938     \revert Slur.thickness
939     d8[( f]) as |
940     as8 g
941   }
942   \addlyrics {
943     The man who | feels love's sweet e -- | mo -- tion
944   }
945 }
946 @end lilypond
947
948 @noindent
949 la instrucción @code{\revert} se puede utilizar para devolver
950 cualquier propiedad que se haya cambiado con @code{\override} a su
951 valor predeterminado.  Puede utilizar el método que mejor se adapte a
952 aquello que quiere hacer.
953
954 Así finaliza nuestra introducción al manual de RFI, y el método básico
955 de trucaje.  A continuación, en las últimas secciones de este capítulo
956 encontrará varios ejemplos, en parte para introducirle en algunas de
957 las posibilidades adicionales del manual RFI, y en parte para
958 proporcionarle más práctica en cómo extraer información de él.  Estos
959 ejemplos irán conteniendo cada vez menos palabras de guía y
960 explicación.
961
962 @node Propiedades de los interfaces
963 @subsection Propiedades de los interfaces
964 @translationof Properties found in interfaces
965
966 @cindex interface
967 @cindex propiedades de los interfaces
968 @cindex interfaces, propiedades
969
970 Suponga ahora que queremos imprimir la letra de la canción en cursiva.
971 ¿Qué forma de instrucción @code{\override} necesitamos para hacerlo?
972 En primer lugar miramos en la página del RFI que relaciona todos los
973 objetos, @q{All layout objects}, como antes, y buscamos un objeto que
974 pueda controlar la letra de la canción.  Encontramos @code{LyricText},
975 que parece adecuado.  Al seguir este enlace se presentan las
976 propiedades ajustables para el texto de la letra.  Estos incluyen
977 @code{font-series} y @code{font-size}, pero nada que pudiera aplicar
978 una forma cursiva.  Esto es porque la propiedad de la forma es común a
979 todos los objetos de fuente tipográfica, y por tanto, en vez de
980 incluirlo en cada uno de los objetos de presentación, se agrupa junto
981 con otras propiedades comunes similares y se deposita en un
982 @strong{Interface}, el interface de las fuentes tipográficas
983 @code{font-interface}.
984
985 Por tanto, ahora necesitamos aprender cómo encontrar las propiedades
986 de los interfaces, y descubrir qué objetos usan estas propiedades de
987 interface.
988
989 Mire de nuevo la página del RFI que describe a LyricText.  Al final de
990 la página hay una lista de enlaces a los interfaces que LyricText
991 contempla.  La lista tiene siete elementos, entre ellos
992 @code{font-interface}.  Al seguir este enlace llegamos a las
993 propiedades asociadas con este interface, que también son propiedades
994 de todos los objetos que lo llevan, entre ellos LyricText.
995
996 Ahora vemos todas las propiedades ajustables por el usuario que
997 controlan las tipografías, entre ellas @code{font-shape(symbol)},
998 donde @code{symbol} se puede establecer a @code{upright} (recta),
999 @code{italics} (cursiva)o @code{caps} (mayúsculas pequeñas).
1000
1001 Observará que @code{font-series} y @code{font-size} también se
1002 encuentran aquí relacionadas.  Esto inmediatamente hace que surja la
1003 pregunta: ¿Por qué están las propiedades comunes de tipografía
1004 @code{font-series} y @code{font-size} relacionadas bajo
1005 @code{LyricText} así como bajo el interface @code{font-interface} pero
1006 @code{font-shape} no lo está?  La respuesta es que @code{font-series}
1007 y @code{font-size} se cambian a partir de sus valores predeterminados
1008 globales cuando se crea un objeto @code{LyricText}, pero
1009 @code{font-shape} no lo hace.  Entonces los elementos de la lista
1010 @code{LyricText} le dicen los valores para esas dos propiedades que
1011 son de aplicación para @code{LyricText}.  Otros objetos que contemplan
1012 @code{font-interface} establecerán dichas propiedades de forma
1013 diferente cuando se crean.
1014
1015 Veamos si ahora podemos construir la instrucción @code{\override} para
1016 cambiar la letra a cursiva.  El objeto es @code{LyricText}, la
1017 propiedad es @code{font-shape} y el valor es @code{italic}.  Igual que
1018 antes, omitiremos el contexto.
1019
1020 Como nota aparte, aunque es importante, observe que ciertas
1021 propiedades toman valores que son símbolos, como @code{italic}, y
1022 deben ir precedidos de un apóstrofo, @code{'}.  Los símbolos se
1023 leen a continuación internamente por parte de LilyPond.  Tenga en
1024 cuenta la diferencia con las cadenas de texto arbitrarias, que
1025 aparecerían como @code{"una cadena de texto"}; para ver más
1026 detalles sobre los símbolos y las cadenas, consulte
1027 @rextend{Tutorial de Scheme}.
1028
1029 Así pues, la instrucción @code{\override} necesaria para imprimir la
1030 letra en cursiva, es:
1031
1032 @example
1033 \override LyricText.font-shape = #'italic
1034 @end example
1035
1036 @noindent
1037 Esto debe escribirse justo delante de la letra a la que debe afectar,
1038 de esta forma:
1039
1040 @cindex font-shape, propiedad, ejemplo
1041 @cindex italic, ejemplo
1042 @cindex LyricText, ejemplo de sobreescritura
1043 @cindex @code{\addlyrics}, ejemplo
1044
1045 @lilypond[quote,ragged-right,verbatim]
1046 {
1047   \key es \major
1048   \time 6/8
1049   \relative {
1050     r4 bes'8 bes[( g]) g |
1051     g8[( es]) es d[( f]) as |
1052     as8 g
1053   }
1054   \addlyrics {
1055     \override LyricText.font-shape = #'italic
1056     The man who | feels love's sweet e -- | mo -- tion
1057   }
1058 }
1059 @end lilypond
1060
1061 @noindent
1062 y toda la letra se imprime en cursiva.
1063
1064 @warning{Dentro de la letra, deje siempre espacios entre la sílaba
1065 final y la llave de cierre.}
1066
1067
1068 @seealso
1069 Manual de Extensión:
1070 @rextend{Tutorial de Scheme}.
1071
1072
1073 @node Tipos de propiedades
1074 @subsection Tipos de propiedades
1075 @translationof Types of properties
1076
1077 @cindex propiedades, tipos de
1078
1079 Hasta ahora hemos visto dos tipos de propiedad:: @code{número} y
1080 @code{símbolo}.  Para que sea válido, el valor que se da a una
1081 propiedad debe ser del tipo correcto y obedecer las reglas de dicho
1082 tipo.  El tipo de la propiedad se muestra siempre entre paréntesis
1083 después del nombre de la propiedad en el RFI.  He aquí una lista de
1084 los tipos que podrá necesitar, junto con las reglas de dicho tipo, y
1085 algunos ejemplos.  Debe escribir siempre un símbolo de almohadilla,
1086 @code{#}, por supuesto, delante de estos valores cuando se introducen
1087 en la instrucción @code{\override}, incluso si el propio valor ya
1088 comienza por@tie{}@code{#}.  Solamente ofrecemos aquí ejemplos para
1089 constantes; si quiere calcular un valor usando Scheme, consulte
1090 @rextend{Cálculos en Scheme}.
1091
1092 @multitable @columnfractions .2 .45 .35
1093 @headitem Tipo de propiedad
1094   @tab Reglas
1095   @tab Ejemplos
1096 @item Booleano
1097   @tab Verdadero o Falso, representado por #t o #f
1098   @tab @code{#t}, @code{#f}
1099 @item Dimensión (en espacios de pentagrama)
1100   @tab Un número decimal (en unidades de espacios de pentagrama)
1101   @tab @code{2.5}, @code{0.34}
1102 @item Dirección
1103   @tab Una constante válida de dirección o su equivalente numérico
1104   (@code{0} o @code{CENTER} indican una dirección neutra)
1105   @tab @code{LEFT}, @code{CENTER}, @code{UP},
1106        @code{1}, @w{@code{-1}}
1107 @item Entero
1108   @tab Un número entero positivo
1109   @tab @code{3}, @code{-1}
1110 @item Lista
1111   @tab Una secuencia de constantes o símbolos separados por espacios,
1112   encerrado entre paréntesis
1113   y precedido de un apóstrofo o comilla simple
1114   @tab @code{'(left-edge staff-bar)}, @code{'(1)}, @code{'()},
1115        @code{'(1.0 0.25 0.5)}
1116 @item Marcado
1117   @tab Cualquier elemento válido de marcado de texto
1118   @tab @code{\markup @{ \italic "cresc." @}}, @code{"gaita"}
1119 @item Momento
1120   @tab Una fracción de redonda construida con la función make-moment
1121   @tab @code{(ly:make-moment 1/4)},
1122        @code{(ly:make-moment 3/8)}
1123 @item Número
1124   @tab Cualquier valor positivo o negativo, posiblemente decimal
1125   @tab @code{3}, @w{@code{-2.45}}
1126 @item Pareja (de números)
1127   @tab Dos números separados por un @q{espacio . espacio}, encerrado entre paréntesis y precedido de un apóstrofo
1128   @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
1129 @item Símbolo
1130   @tab Cualquiera del conjunto de símbolos permitidos para esa propiedad, precedido de un apóstrofo
1131   @tab @code{'italic}, @code{'inside}
1132 @item Desconocido
1133   @tab Un procedimiento o @code{#f} para no producir ninguna acción
1134   @tab @code{bend::print}, @code{ly:text-interface::print},
1135        @code{#f}
1136 @item Vector
1137   @tab Constantes
1138   encerradas entre @code{#(}@dots{}@code{)}.
1139   @tab @code{#(#t #t #f)}
1140 @end multitable
1141
1142
1143 @seealso
1144 Manual de Extensión:
1145 @rextend{Tutorial de Scheme}.
1146
1147
1148 @node Apariencia de los objetos
1149 @section Apariencia de los objetos
1150 @translationof Appearance of objects
1151
1152 Ahora vamos a poner en práctica lo que hemos aprendido con unos
1153 cuantos ejemplos que muestran cómo se pueden usar los trucos para
1154 cambiar el aspecto de la música impresa.
1155
1156 @menu
1157 * Visibilidad y color de los objetos::
1158 * Tamaño de los objetos::
1159 * Longitud y grosor de los objetos::
1160 @end menu
1161
1162 @node Visibilidad y color de los objetos
1163 @subsection Visibilidad y color de los objetos
1164 @translationof Visibility and color of objects
1165
1166 Dentro de un uso educativo de la música, podríamos desear imprimir una
1167 partitura con ciertos elementos omitidos como ejercicio para el
1168 alumno, a quien se le pide que los complete.  A la manera de ejemplo
1169 sencillo, supongamos que el ejercicio es escribir las líneas
1170 divisorias que faltan en un fragmento musical.  Pero las líneas
1171 divisorias normalmente se insertan automáticamente. ¿Cómo hacemos para
1172 que no se impriman?
1173
1174 Antes de enredarnos con esto, recordemos que las propiedades de los
1175 objetos se agrupan en lo que hemos llamado @emph{interfaces} (véase
1176 @ref{Propiedades de los interfaces}).  Esto es simplemente agrupar
1177 las propiedades que se pueden usar juntas para trucar un objeto
1178 gráfico: si una de ellas se necesita para un objeto, también las
1179 otras.  Así, ciertos objetos usan las propiedades de algunos
1180 interfaces, otros usan las de otros interfaces.  Los interfaces que
1181 contienen las propiedades que un determinado grob necesita se
1182 encuentran relacionadas en el manual RFI al final de la página que
1183 describe dicho grob, y esas propiedades se pueden ver mirando dichos
1184 interfaces.
1185
1186 Hemos explicado cómo encontrar información sobre los grobs en
1187 @ref{Propiedades de los objetos de presentación}.  Usando el mismo
1188 enfoque, vamos al RFI para buscar el objeto de presentación que
1189 imprime las líneas divisorias.  A través del enlace @emph{Backend} y
1190 @emph{All layout objects} encontramos que hay un objeto de
1191 presentación llamado @code{BarLine}.  Entre sus propiedades se
1192 encuentran dos que controlan la visibilidad: @code{break-visibility} y
1193 @code{stencil}.  Las líneas divisorias también contemplan un número de
1194 interfaces, entre ellos el @code{grob-interface}, donde podemos
1195 encontrar las propiedades @code{transparent} y @code{color}.  Todas
1196 ellas pueden afectar la visibilidad de las barras de compás (y, por
1197 supuesto, por extensión, también la de muchos otros objetos de
1198 presentación).  Vamos a considerar cada uno de ellos por orden.
1199
1200 @menu
1201 * La propiedad stencil (sello)::
1202 * La propiedad break-visibility (visibilidad en el salto)::
1203 * La propiedad transparent (transparente)::
1204 * La propiedad color::
1205 @end menu
1206
1207 @node La propiedad stencil (sello)
1208 @unnumberedsubsubsec La propiedad @code{stencil} (sello)
1209 @translationof The stencil property
1210
1211 @cindex stencil (sello), propiedad
1212
1213 Esta propiedad controla la apariencia de las barras de compás mediante
1214 la especificación del símbolo (o «glifo») que se debe imprimir.  Igual
1215 que como otras muchas propiedades, se puede establecer de forma que no
1216 imprima nada ajustando su valor a @code{#f}.  Vamos a probarlo, como
1217 antes, omitiendo el Contexto implícito, @code{Voice}:
1218
1219 @cindex BarLine, ejemplo de sobreescritura
1220 @cindex stencil, propiedad, ejemplo
1221
1222 @lilypond[quote,ragged-right,verbatim]
1223 \relative {
1224   \time 12/16
1225   \override BarLine.stencil = ##f
1226   c''4 b8 c d16 c d8 |
1227   g,8 a16 b8 c d4 e16 |
1228   e8
1229 }
1230 @end lilypond
1231
1232 Las barras de compás todavía se imprimen.  ¿Qué es lo que está mal?
1233 Vuelva al RFI y mire de nuevo la página que ofrece las propiedades del
1234 objeto BarLine.  Al principio de la página dice @qq{Barline objects
1235 are created by: Bar_engraver} (los objetos Barline se crean por el
1236 grabador Bar_engraver).  Vaya a la página del grabador
1237 @code{Bar_engraver} siguiendo el enlace.  Al final da una lista de
1238 contextos en los que el grabador de líneas divisorias opera.  Todos
1239 ellos son del tipo @code{Staff}, y así la razón de que la instrucción
1240 @code{\override} no funcionara como esperábamos, es porque
1241 @code{Barline} no se encuentra en el contexto predeterminado
1242 @code{Voice}.  Si el contexto no se especifica correctamente, la
1243 instrucción simplemente no funciona.  No se produce ningún mensaje de
1244 error, y no se registra nada en el archivo log de registro.  Vamos a
1245 intentar corregirlo escribiendo el contexto correcto:
1246
1247 @cindex BarLine, ejemplo de sobreescritura
1248 @cindex stencil, propiedad, ejemplo
1249
1250 @lilypond[quote,ragged-right,verbatim]
1251 \relative {
1252   \time 12/16
1253   \override Staff.BarLine.stencil = ##f
1254   c''4 b8 c d16 c d8 |
1255   g,8 a16 b8 c d4 e16 |
1256   e8
1257 }
1258 @end lilypond
1259
1260 Ahora las barras de compás han desaparecido.  La operación de
1261 fijar la propiedad @code{stencil} al valor @code{#f} es tan
1262 frecuente que existe una abreviatura para ella, llamada
1263 @code{\omit} (omitir):
1264 @funindex \omit
1265
1266 @lilypond[quote,ragged-right,verbatim]
1267 \relative {
1268   \time 12/16
1269   \omit Staff.BarLine
1270   c''4 b8 c d16 c d8 |
1271   g,8 a16 b8 c d4 e16 |
1272   e8
1273 }
1274 @end lilypond
1275
1276 Sin embargo, observe que el establecimiento de la propiedad
1277 @code{stencil} al valor @code{#f} produce errores cuando las se
1278 requieren las dimensiones del objeto para un procesamiento correcto.
1279 Por ejemplo, se generan errores si la propiedad @code{stencil} del
1280 objeto @code{NoteHead} se establece al valor @code{#f}.  Si es el
1281 caso, podemos en vez de ello utilizar la función @code{point-stencil},
1282 que establece el sello a un objeto con tamaño nulo:
1283
1284 @lilypond[quote,verbatim]
1285 \relative {
1286   c''4 c
1287   \once \override NoteHead.stencil = #point-stencil
1288   c4 c
1289 }
1290 @end lilypond
1291
1292 @node La propiedad break-visibility (visibilidad en el salto)
1293 @unnumberedsubsubsec The @code{break-visibility} (visibilidad en el salto)
1294 @translationof The break-visibility property
1295
1296 @cindex break-visibility, propiedad
1297
1298 Vemos en las propiedades de @code{BarLine} que aparecen en el RFI
1299 que la propiedad @code{break-visibility} requiere un vector de
1300 tres valores booleanos.  Controlan respectivamente si las barras
1301 de compás se imprimen al final de una línea, en mitad de una
1302 línea, y al principio de las líneas.  Para nuestro ejemplo,
1303 queremos que todas las barras de compás se supriman, por lo que el
1304 valor que necesitamos es @code{#(#f #f #f)} (disponible también
1305 bajo el nombre @code{all-invisible}, todas invisibles).  Vamos a
1306 probarlo, recordando incluir el contexto de @code{Staff}.  Observe
1307 también que al escribir este valor tenemos @code{##} antes del
1308 paréntesis de apertura.  Se necesita un @code{#} como parte de la
1309 sintaxis de las contantes vectoriales, y el primer símbolo de
1310 almohadilla@tie{}@code{#} se necesita, como siempre, para preceder
1311 el valor en sí dentro de la instrucción @code{\override}.
1312
1313 @cindex BarLine, ejemplo de sobreescritura
1314 @cindex break-visibility, propiedad, ejemplo
1315
1316 @lilypond[quote,ragged-right,verbatim]
1317 \relative {
1318   \time 12/16
1319   \override Staff.BarLine.break-visibility = ##(#f #f #f)
1320   c''4 b8 c d16 c d8 |
1321   g,8 a16 b8 c d4 e16 |
1322   e8
1323 }
1324 @end lilypond
1325
1326 Y podemos ver que esto también quita todas las líneas divisorias.
1327
1328 @node La propiedad transparent (transparente)
1329 @unnumberedsubsubsec La propiedad @code{transparent} (transparente)
1330 @translationof The transparent property
1331
1332 @cindex transparent, propiedad
1333 @cindex transparencia
1334
1335 En la relación de propiedades que se especifican en la página del
1336 @code{grob-interface} del RFI podemos ver que la propiedad
1337 @code{transparent} es un valor booleano.  Esto se debe establecer a
1338 @code{#t} para hacer que el grob sea transparente.  En el ejemplo
1339 siguiente vamos a hacer que la indicación de compás, y no las líneas
1340 divisorias, sea transparente.  Para hacerlo tenemos que buscar el
1341 nombre del grob de la indicación de compás.  Volviendo a la página
1342 @q{All layout objects} del RFI, buscamos las propiedades del objeto de
1343 presentación @code{TimeSignature}.  Se produce por parte del grabador
1344 @code{Time_signature_engraver} que como puede comprobar vive dentro
1345 del contexto de @code{Staff} y también contempla el interface
1346 @code{grob-interface}.  Así pues, la instrucción que hace transparente
1347 a la indicación de compás es:
1348
1349 @cindex TimeSignature, ejemplo de sobreescritura
1350 @cindex transparent, propiedad, ejemplo
1351
1352 @lilypond[quote,ragged-right,verbatim]
1353 \relative {
1354   \time 12/16
1355   \override Staff.TimeSignature.transparent = ##t
1356   c''4 b8 c d16 c d8 |
1357   g,8 a16 b8 c d4 e16 |
1358   e8
1359 }
1360 @end lilypond
1361
1362 @noindent
1363 Una vez más, el establecimiento de la propiedad @code{transparent}
1364 es una operación bastante frecuente, de modo que tenemos una
1365 abreviatura llamada @code{\hide} (ocultar):
1366 @funindex \hide
1367
1368 @lilypond[quote,ragged-right,verbatim]
1369 \relative {
1370   \time 12/16
1371   \hide Staff.TimeSignature
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 En ninguno de los dos casos aparece ya la indicación de compás,
1380 pero esta instrucción deja una separación en el lugar donde antes
1381 estaba la indicación de compás.  Quizá esto es lo que queremos
1382 para un ejercicio en que el alumno deba escribirlo, pero en otras
1383 circunstancias esta separación podría no ser deseable.  En vez de
1384 eso, para quitarla, el stencil o «sello» de la indicación de
1385 compás se debe establecer al valor @code{#f}:
1386
1387 @cindex TimeSignature, ejemplo de sobreescritura
1388 @cindex stencil, propiedad, ejemplo
1389
1390 @lilypond[quote,ragged-right,verbatim]
1391 \relative {
1392   \time 12/16
1393   \omit Staff.TimeSignature
1394   c''4 b8 c d16 c d8 |
1395   g,8 a16 b8 c d4 e16 |
1396   e8
1397 }
1398 @end lilypond
1399
1400 @noindent
1401 y la diferencia es obvia: al establecer el sello al valor
1402 @code{#f} (posiblemente por medio de @code{\omit}) quitamos el
1403 objeto por completo; al hacer el objeto @code{transparent} (lo que
1404 puede hacerse utilizando @code{\hide}) lo dejamos donde está, pero
1405 lo hacemos invisible.
1406
1407 @node La propiedad color
1408 @unnumberedsubsubsec La propiedad @code{color}
1409 @translationof The color property
1410
1411 @cindex color, propiedad
1412
1413 Para finalizar, intentemos hacer invisibles las barras de compás
1414 pintándolas de color blanco (hay un problema relacionado, que consiste
1415 en que la línea divisoria blanca puede tapar o no tapar las líneas del
1416 pentagrama a las que cruza.  Podrá observar en algunos de los ejemplos
1417 que aparecen a continuación, que esto sucede de forma impredecible.
1418 Los detalles sobre por qué esto ocurre así, y cómo controlarlo, se
1419 estudian en @ruser{Pintar los objetos de blanco}; de momento estamos
1420 estudiando el color, por lo que le rogamos que acepte esta limitación
1421 por ahora).
1422
1423 El interface @code{grob-interface} especifica que la propiedad del
1424 color es una lista, pero no hay ninguna explicación sobre lo que debe
1425 ir en esa lista.  La lista que requiere es realmente una lista de
1426 valores en unidades internas, pero para evitar tener que saber cuáles
1427 son, se ofrecen varias vías para la especificación de los colores.  La
1428 primera forma es utilizar uno de los colores @q{normales} que están
1429 relacionados en la primera tabla de la @ruser{Lista de colores}.  Para
1430 poner las líneas divisorias de color blanco, escribimos:
1431
1432 @cindex BarLine, ejemplo de sobreescritura
1433 @cindex color, propiedad, ejemplo
1434
1435 @lilypond[quote,ragged-right,verbatim]
1436 \relative {
1437   \time 12/16
1438   \override Staff.BarLine.color = #white
1439   c''4 b8 c d16 c d8 |
1440   g,8 a16 b8 c d4 e16 |
1441   e8
1442 }
1443 @end lilypond
1444
1445 @noindent
1446 y de nuevo podemos comprobar que las barras de compás no son visibles.
1447 Observe que @emph{white} no viene precedido de un apóstrofo: no es un
1448 símbolo, sino una @emph{variable}.  Cuando se evalúa, proporciona la
1449 lista de valores internos que se requieren para establecer el color a
1450 blanco.  Los otros colores de la lista normal también son variables.
1451 Para convencerse de que esto funciona, quizá quiera cambiar el color a
1452 una de las otras variables de la lista.
1453
1454 @cindex colores de X11
1455 @cindex X11, colores de
1456
1457 @funindex x11-color
1458
1459 La segunda forma de cambiar el color es utilizar la lista de
1460 nombres de colores de X11 que aparecen en la segunda lista de
1461 @ruser{Lista de colores}.  De todas formas, se hacen corresponder
1462 a los valores reales por medio de la función @code{x11-color} que
1463 convierte los símbolos de color de X11 en la lista de valores
1464 internos como éstos:
1465
1466 @cindex BarLine, ejemplo de sobreescritura
1467 @cindex color, propiedad, ejemplo
1468
1469 @lilypond[quote,ragged-right,verbatim]
1470 \relative {
1471   \time 12/16
1472   \override Staff.BarLine.color = #(x11-color 'white)
1473   c''4 b8 c d16 c d8 |
1474   g,8 a16 b8 c d4 e16 |
1475   e8
1476 }
1477 @end lilypond
1478
1479 @noindent
1480 Observe que en este caso la función @code{x11-color} toma un
1481 símbolo como argumento, así que el símbolo debe ir precedido de un
1482 apóstrofo para evitar que resulte evaluado como si fuera una
1483 variable, y toda la llamada a la función se debe encerrar entre
1484 paréntesis.
1485
1486 @cindex rgb, colores
1487 @cindex color, rgb
1488
1489 @funindex rgb-color
1490
1491 Aún existe otra función, que convierte valores RGB en colores
1492 internos: la función @code{rgb-color}.  Toma tres argumentos que dan
1493 las intensidades de rojo, verde y azul.  Cada uno de ellos puede tomar
1494 valores entre 0 y 1.  Por lo tanto, para establecer el color a rojo el
1495 valor debe ser @code{(rgb-color 1 0 0)} y para blanco debe ser
1496 @code{(rgb-color 1 1 1)}:
1497
1498 @cindex BarLine, ejemplo de sobreescritura
1499 @cindex color, propiedad, ejemplo
1500
1501 @lilypond[quote,ragged-right,verbatim]
1502 \relative {
1503   \time 12/16
1504   \override Staff.BarLine.color = #(rgb-color 1 1 1)
1505   c''4 b8 c d16 c d8 |
1506   g,8 a16 b8 c d4 e16 |
1507   e8
1508 }
1509 @end lilypond
1510
1511 Finalmente, existe también una escala de grises como parte del
1512 conjunto de colores de X11.  Varían desde el negro, @code{'grey0},
1513 hasta el blanco, @code{'grey100}, en pasos de 1.  Vamos a ilustrar esto
1514 estableciendo todos los objetos de presentación de nuestro ejemplo a
1515 varias gradaciones de gris:
1516
1517 @cindex StaffSymbol, ejemplo de sobreescritura
1518 @cindex TimeSignature, ejemplo de sobreescritura
1519 @cindex Clef, ejemplo de sobreescritura
1520 @cindex NoteHead, ejemplo de sobreescritura
1521 @cindex Stem, ejemplo de sobreescritura
1522 @cindex BarLine, ejemplo de sobreescritura
1523 @cindex color property, ejemplo
1524 @cindex x11-color, ejemplo de utilización
1525
1526 @lilypond[quote,ragged-right,verbatim]
1527 \relative {
1528   \time 12/16
1529   \override Staff.StaffSymbol.color = #(x11-color 'grey30)
1530   \override Staff.TimeSignature.color = #(x11-color 'grey60)
1531   \override Staff.Clef.color = #(x11-color 'grey60)
1532   \override Voice.NoteHead.color = #(x11-color 'grey85)
1533   \override Voice.Stem.color = #(x11-color 'grey85)
1534   \override Staff.BarLine.color = #(x11-color 'grey10)
1535   c''4 b8 c d16 c d8 |
1536   g,8 a16 b8 c d4 e16 |
1537   e8
1538 }
1539 @end lilypond
1540
1541 @noindent
1542 Observe los contextos asociados con cada uno de los objetos de
1543 presentación.  Es importante que estén correctamente escritos, o las
1544 instrucciones ¡no funcionarán!  Recuerde que el contexto es aquel en
1545 que se encuentra el grabador correspondiente.  El contesto
1546 predeterminado para los grabadores puede encontrarse empezando por el
1547 objeto de presentación, de ahí al grabador que lo produce, y en la
1548 página del grabador del RFI aparece en qué contexto se puede encontrar
1549 normalmente el grabador.
1550
1551
1552 @node Tamaño de los objetos
1553 @subsection Tamaño de los objetos
1554 @translationof Size of objects
1555
1556 @cindex cambiar el tamaño de los objetos
1557 @cindex tamaño de los objetos
1558 @cindex objetos, tamaño de
1559 @cindex objetos, cambiar el tamaño de
1560
1561 Empezaremos examinando de nuevo un ejemplo anterior (véase
1562 @ref{Anidado de expresiones musicales}) que nos mostraba cómo
1563 introducir un pentagrama temporal, como en un @rglos{ossia}.
1564
1565 @cindex alignAboveContext, propiedad, ejemplo
1566 @cindex @code{\with}, ejemplo
1567
1568 @lilypond[quote,ragged-right,verbatim]
1569 \new Staff ="main" {
1570   \relative {
1571     r4 g'8 g c4 c8 d |
1572     e4 r8
1573     <<
1574       { f8 c c }
1575       \new Staff \with {
1576         alignAboveContext = #"main" }
1577       { f8 f c }
1578     >>
1579     r4 |
1580   }
1581 }
1582 @end lilypond
1583
1584 Los fragmentos de Ossia se escriben normalmente sin clave ni compás, y
1585 por lo normal se imprimen más pequeños que el pentagrama principal.
1586 Ya sabemos cómo quitar la clave y el compás: simplemente establecemos
1587 el sello de cada uno de ellos a @code{#f}, como sigue:
1588
1589 @cindex alignAboveContext, propiedad, ejemplo
1590 @cindex @code{\with}, ejemplo
1591 @funindex \omit
1592 @cindex Clef, ejemplo de sobreescritura
1593 @cindex TimeSignature, ejemplo de sobreescritura
1594
1595 @lilypond[quote,ragged-right,verbatim]
1596 \new Staff ="main" {
1597   \relative {
1598     r4 g'8 g c4 c8 d |
1599     e4 r8
1600     <<
1601       { f8 c c }
1602       \new Staff \with {
1603         alignAboveContext = #"main"
1604       }
1605       {
1606         \omit Staff.Clef
1607         \omit Staff.TimeSignature
1608         { f8 f c }
1609       }
1610     >>
1611     r4 |
1612   }
1613 }
1614 @end lilypond
1615
1616 @noindent
1617 donde el par de llaves adicional después de la cláusula @code{\with}
1618 es necesario para asegurar que la sobreescritura encerrada y la música
1619 se aplican al pentagrama de ossia.
1620
1621 Pero ¿cuál es la diferencia entre modificar el contexto de pentagrama
1622 usando @code{\with} y modificar los sellos de clave y de compás con
1623 \override, o en este caso
1624 @code{\omit}?  La diferencia principal es que los cambios que se realizan
1625 en una cláusula @code{\with} se hacen en el momento en que se crea el
1626 contexto, y permanecen activos como valores @strong{predeterminados}
1627 durante toda la duración de dicho contexto, mientras que las
1628 instrucciones @code{\set} o @code{\override} incluidas dentro de la
1629 música son dinámicas: hacen cambios sincronizados con un punto
1630 concreto de la música.  Si los cambios se deshacen o se devuelven
1631 mediante @code{\unset} o @code{\revert} volverán a su valor
1632 predeterminado que será el establecido en la cláusula @code{\with}, o
1633 si no se ha establecido ninguno en este lugar, los valores
1634 predeterminados normales.
1635
1636 Ciertas propiedades de contexto se pueden modificar solamente dentro
1637 de cláusulas @code{\with}.  Son aquellas propiedades que no se pueden
1638 cambiar después de que el contexto se ha creado.
1639 @code{alignAboveContext} y su compañero, @code{alignBelowContext}, son
1640 dos de tales propiedades: una vez que el pentagrama se ha creado, su
1641 alineación está decidida y no tendría sentido intentar cambiarla más
1642 tarde.
1643
1644 Los valores predeterminados de las propiedades de los objetos de
1645 presentación también se pueden establecer dentro de cláusulas
1646 @code{\with}.  Simplemente utilice la instrucción @code{\override}
1647 normal dejando aparte el nombre del contexto, ya que está definido sin
1648 ambigüedad como el contexto que la cláusula @code{\with} está
1649 modificando.  De hecho, se producirá un error si se especifica un
1650 contexto en este lugar.
1651
1652 Así pues, podemos reemplazar el ejemplo anterior con
1653
1654 @cindex alignAboveContext, propiedad, ejemplo
1655 @cindex @code{\with}, example
1656 @cindex Clef, ejemplo de sobreescritura
1657 @cindex TimeSignature, ejemplo de sobreescritura
1658
1659 @lilypond[quote,ragged-right,verbatim]
1660 \new Staff ="main" {
1661   \relative {
1662     r4 g'8 g c4 c8 d |
1663     e4 r8
1664     <<
1665       { f8 c c }
1666       \new Staff \with {
1667         alignAboveContext = #"main"
1668         % Don't print clefs in this staff
1669         \override Clef.stencil = ##f
1670         % Don't print time signatures in this staff
1671         \override TimeSignature.stencil = ##f
1672       }
1673       { f8 f c }
1674     >>
1675     r4 |
1676   }
1677 }
1678 @end lilypond
1679
1680 Resulta que también podemos emplear aquí las abreviaturas
1681 @code{\hide} y @code{\omit} para fijar la propiedad
1682 @code{transparent} y borrar el @code{stencil}, lo que conduce al
1683 resultado siguiente:
1684
1685 @lilypond[quote,ragged-right,verbatim]
1686 \new Staff ="main" {
1687   \relative {
1688     r4 g'8 g c4 c8 d |
1689     e4 r8
1690     <<
1691       { f8 c c }
1692       \new Staff \with {
1693         alignAboveContext = #"main"
1694         % Don't print clefs in this staff
1695         \omit Clef
1696         % Don't print time signatures in this staff
1697         \omit TimeSignature
1698       }
1699       { f8 f c }
1700     >>
1701     r4 |
1702   }
1703 }
1704 @end lilypond
1705
1706 Finalmente llegamos a la forma de cambiar el tamaño de los objetos de
1707 presentación.
1708
1709 Ciertos objetos de presentación se crean como glifos sacados de una
1710 fuente tipográfica.  Entre ellos se encuentran las cabezas,
1711 alteraciones, elementos de marcado, claves, indicaciones de compás,
1712 indicaciones dinámicas y la letra de las canciones.  Su tamaño se
1713 cambia mediante la modificación de la propiedad @code{font-size}, como
1714 veremos en breve.  Otros objetos de presentación como ligaduras de
1715 unión y de expresión (en general, objetos de extensión) se trazan
1716 individualmente, por lo que no hay un tamaño de tipografía
1717 @code{font-size} asociado a ellos.  Estos objetos generalmente derivan
1718 su tamaño de los objetos a los que están adosados, y por ello
1719 normalmente no hay necesidad de cambiarles el tamaño manualmente.  Aún
1720 otras propiedades como la longitud de las plicas y las barras de
1721 compás, el grosor de las barras de corchea y otras líneas, y la
1722 separación de las líneas del pentagrama se deben modificar de otras
1723 formas especiales.
1724
1725 Volviendo al ejemplo del ossia, vamos a cambiar en primer lugar el
1726 tamaño de la tipografía.  Podemos hacerlo de dos formas.  Podemos
1727 cambiar el tamaño de las tipografías de cada uno de los tipos de
1728 objeto como las cabezas (@code{NoteHead}s) con instrucciones como
1729
1730 @example
1731 \override NoteHead.font-size = #-2
1732 @end example
1733
1734 o podemos cambiar el tamaño de todas las tipografías estableciendo una
1735 propiedad especial, @code{fontSize}, utilizando @code{\set}, o
1736 mediante su inclusión dentro de una cláusula @code{\with} (pero sin el
1737 @code{\set}).
1738
1739 @example
1740 \set fontSize = #-2
1741 @end example
1742
1743 Los dos enunciados producirían una reducción del tamaño de la
1744 tipografía en dos pasos a partir de su valor previo, donde cada paso
1745 reduce o aumenta el tamaño aproximadamente en un 12%.
1746
1747 Vamos a probarlo en nuestro ejemplo del ossia:
1748
1749 @cindex alignAboveContext, propiedad, ejemplo
1750 @cindex @code{\with}, ejemplo
1751 @cindex Clef, ejemplo de sobreescritura
1752 @cindex TimeSignature, ejemplo de sobreescritura
1753 @cindex fontSize, propiedad, ejemplo
1754
1755 @lilypond[quote,ragged-right,verbatim]
1756 \new Staff ="main" {
1757   \relative {
1758     r4 g'8 g c4 c8 d |
1759     e4 r8
1760     <<
1761       { f8 c c }
1762       \new Staff \with {
1763         alignAboveContext = #"main"
1764         \omit Clef
1765         \omit TimeSignature
1766         % Reduce all font sizes by ~24%
1767         fontSize = #-2
1768       }
1769       { f8 f c }
1770     >>
1771     r4 |
1772   }
1773 }
1774 @end lilypond
1775
1776 Aún no está demasiado bien.  Las cabezas y los corchetes de las notas
1777 son más pequeños, pero las plicas son demasiado largas en proporción,
1778 y las líneas del pentagrama están demasiado separadas entre sí.  Se
1779 debe reducir su escala en proporción a la reducción de la tipografía.
1780 El siguiente apartado trata sobre cómo se hace esto.
1781
1782 @node Longitud y grosor de los objetos
1783 @subsection Longitud y grosor de los objetos
1784 @translationof Length and thickness of objects
1785
1786 @cindex distancias
1787 @cindex grosor
1788 @cindex longitud
1789 @cindex magstep
1790 @cindex tamaño, cambiar
1791 @cindex plica, cambiar la longitud
1792 @cindex pentagrama, cambiar la separación de las líneas
1793
1794 Las distancias y longitudes en LilyPond se miden generalmente en
1795 espacios de pentagrama, la distancia entre líneas adyacentes de la
1796 pauta (o de manera ocasional medios espacios), mientras que la mayoría
1797 de las propiedades de @code{thickness} (grosor) se miden en unidades
1798 de una propiedad interna llamada @code{line-thickness.}  Por ejemplo,
1799 de forma predeterminada, a las líneas de los reguladores se les da un
1800 grosor de 1 unidad de @code{line-thickness}, mientras que el
1801 @code{thickness} de una plica es 1.3.  Observe sin embargo que ciertas
1802 propiedades de grosor son diferentes; por ejemplo, el grosor de las
1803 barras de corchea se controla por medio del valor de
1804 @code{beam-thickness}, que se mide en espacios de pentagrama.
1805
1806 Entonces ¿cómo se tienen que escalar las longitudes en proporción al
1807 tamaño de la tipografía?  Se puede hacer con la ayuda de una función
1808 especial que se llama @code{magstep}, pensada especialmente para este
1809 propósito.  Toma un argumento, el cambio de tamaño de la tipografía
1810 (#-2 en nuestro ejemplo) y devuelve un factor de escalado adecuado
1811 para reducir otros objetos en la misma proporción.  Se usa de la
1812 siguiente forma:
1813
1814 @cindex alignAboveContext, propiedad, ejemplo
1815 @cindex @code{\with}, ejemplo
1816 @cindex Clef, ejemplo de sobreescritura
1817 @cindex TimeSignature, ejemplo de sobreescritura
1818 @cindex fontSize, propiedad, ejemplo
1819 @cindex StaffSymbol, ejemplo de sobreescritura
1820 @cindex magstep, función, ejemplo de utilización
1821 @cindex staff-space, propiedad, ejemplo
1822 @cindex stencil, propiedad, ejemplo
1823
1824 @lilypond[quote,ragged-right,verbatim]
1825 \new Staff ="main" {
1826   \relative {
1827     r4 g'8 g c4 c8 d |
1828     e4 r8
1829     <<
1830       { f8 c c }
1831       \new Staff \with {
1832         alignAboveContext = #"main"
1833         \omit Clef
1834         \omit TimeSignature
1835         fontSize = #-2
1836         % Reduce stem length and line spacing to match
1837         \override StaffSymbol.staff-space = #(magstep -2)
1838       }
1839       { f8 f c }
1840     >>
1841     r4 |
1842   }
1843 }
1844 @end lilypond
1845
1846 @noindent
1847 Puesto que la longitud de las plicas y muchas otras propiedades
1848 relacionadas con la longitudes calculan siempre con relación al valor
1849 de la propiedad @code{staff-space}, su longitud también ve reducida su
1850 escala automáticamente.  Observe que esto afecta solamente a la escala
1851 vertical del ossia: la escala horizontal se determina por medio de la
1852 disposición de la música principal con el objeto de mantenerse en
1853 sincronía con ella, de forma que no resulte afectada por ninguno de
1854 estos cambios de tamaño.  Por supuesto, si la escala de toda la música
1855 principal se cambiase de esta forma, entonces el espaciado horizontal
1856 se vería afectado.  Trataremos de esto más tarde en la sección sobre
1857 la disposición.
1858
1859 Esto, en fin, completa la creación de un ossia.  Los tamaños y
1860 longitudes del resto de los objetos se pueden modificar de manera
1861 análoga.
1862
1863 Para cambios de escala pequeños, como en el ejemplo de arriba, el
1864 grosor de las diversas líneas dibujadas como divisorias, barras de
1865 corchea, reguladores, ligaduras, etc, no requieren normalmente ningún
1866 ajuste global.  Si el grosor de cualquier objeto de presentación en
1867 particular necesita ajustarse, se puede hacer mejor mediante la
1868 sobreescritura de su propiedad @code{thickness}.  Anteriormente
1869 mostramos un ejemplo de cambio de grosor en las ligaduras, en
1870 @ref{Propiedades de los objetos de presentación}.  El grosor de todos los objetos
1871 trazados (es decir, aquellos que no se producen a partir de una
1872 tipografía) se pueden cambiar de la misma forma.
1873
1874
1875 @node Colocación de los objetos
1876 @section Colocación de los objetos
1877 @translationof Placement of objects
1878
1879 @menu
1880 * Comportamiento automático::
1881 * Objetos interiores al pentagrama::
1882 * Objetos fuera del pentagrama::
1883 @end menu
1884
1885
1886 @node Comportamiento automático
1887 @subsection Comportamiento automático
1888 @translationof Automatic behavior
1889
1890 @cindex dentro del pentagrama, objetos
1891 @cindex fuera del pentagrama, objetos
1892 @cindex objetos dentro del pentagrama
1893 @cindex objetos fuera del pentagrama
1894
1895 Hay ciertos objetos en notación musical que pertenecen al pentagrama y
1896 otros cuyo lugar se sitúa fuera del pentagrama.  Reciben el nombre de
1897 objetos dentro-del-pentagrama y objetos fuera-del-pentagrama,
1898 respectivamente.
1899
1900 Los objetos dentro-del-pentagrama son los que se sitúan sobre la
1901 pauta: cabezas, plicas, alteraciones, etc.  Sus posiciones normalmente
1902 se fijan por la propia música; se posicionan verticalmente sobre
1903 líneas específicas del pentagrama o están unidos a otros objetos
1904 posicionados de esta forma.  Las colisiones entre cabezas, plicas y
1905 alteraciones en acordes de notas muy juntas, normalmente se evitan
1906 automáticamente.  Hay instrucciones y sobreescrituras que pueden
1907 modificar este comportamiento automático, como veremos en breve.
1908
1909 Entre los objetos que pertenecen al exterior de la pauta se encuentran
1910 cosas como las marcas de ensayo, las marcas de texto y las de
1911 dinámica.  La regla de LilyPond para la colocación vertical de los
1912 objetos fuera-de-pentagrama es colocarlos tan cerca del pentagrama
1913 como sea posible, pero no tan cerca como para que puedan chocar con
1914 algún otro objeto.  LilyPond utiliza la propiedad
1915 @code{outside-staff-priority} para determinar el orden en que se deben
1916 situar los objetos, como veremos ahora.
1917
1918 En primer lugar, LilyPond sitúa todos los objetos
1919 dentro-del-pentagrama.  Después ordena los objetos
1920 fuera-del-pentagrama de acuerdo con su prioridad
1921 @code{outside-staff-priority}.  Los objetos fuera-del-pentagrama se
1922 toman de uno en uno, comenzando por el que tiene la prioridad
1923 @code{outside-staff-priority} más baja, y se sitúan de forma que no
1924 colisionen con ningún objeto que se haya colocado ya. Esto es, si dos
1925 grobs fuera-del-pentagrama compiten por el mismo espacio, el que tiene
1926 la prioridad @code{outside-staff-priority} más baja se colocará más
1927 cerca del pentagrama.  Si dos objetos tienen la misma
1928 @code{outside-staff-priority}, el que se ha encontrado primero se
1929 situará más cerca de la pauta.
1930
1931 En el siguiente ejemplo, todos los textos de marcado tienen la misma
1932 prioridad (pues no se ha establecido explícitamente).  Observe que
1933 @q{Text3} se posiciona de nuevo automáticamente cerca del pentagrama,
1934 acomodado por debajo de @q{Text2}.
1935
1936 @cindex markup, ejemplo
1937
1938 @lilypond[quote,fragment,ragged-right,verbatim]
1939 c''2^"Text1"
1940 c''2^"Text2" |
1941 c''2^"Text3"
1942 c''2^"Text4" |
1943 @end lilypond
1944
1945 Los pentagramas también se posicionan, de forma predeterminada, tan
1946 cerca unos de otros como sea posible (sujeto a una separación mínima).
1947 Si las notas se proyectan muy lejos en dirección a un pentagrama
1948 adyacente, forzarán a alejarse a los pentagramas sólo si en caso
1949 contrario fuese a ocurrir un solapamiento de la notación.  El ejemplo
1950 siguiente muestra esta acomodación @q{nestling} de las notas sobre
1951 pentagramas adyacentes:
1952
1953 @lilypond[quote,ragged-right,verbatim]
1954 <<
1955   \new Staff {
1956     \relative { c'4 a, }
1957   }
1958   \new Staff {
1959     \relative { c''''4 a, }
1960   }
1961 >>
1962 @end lilypond
1963
1964
1965 @node Objetos interiores al pentagrama
1966 @subsection Objetos interiores al pentagrama
1967 @translationof Within-staff objects
1968
1969 Ya hemos visto cómo las instrucciones @code{\voiceXXX} afectan a la
1970 dirección de las ligaduras de expresión y de unión, digitaciones y
1971 todo lo demás que dependa de la dirección de las plicas (véase
1972 @ref{Voces explícitas}).  Cuando se
1973 escribe música polifónica, estas instrucciones son esenciales para que
1974 puedan distinguirse varias líneas melódicas entrelazadas.  Pero
1975 ocasionalmente puede ser necesario sobreescribir este comportamiento
1976 automático.  Se puede hacer por secciones de música completas o
1977 incluso para una nota individual.  La propiedad que controla este
1978 comportamiento es la propiedad de @code{direction} (dirección) de cada
1979 objeto de presentación.  En primer lugar explicaremos qué hace esto, y
1980 luego introduciremos algunas instrucciones listas para usar que le
1981 evitarán tener que codificar sobreescrituras explícitas para las
1982 modificaciones más comunes.
1983
1984 Algunos objetos de presentación como las ligaduras se curvan hacia
1985 arriba o hacia abajo; otros como las plicas y los corchetes también se
1986 mueven a la derecha o a la izquierda cuando apuntan hacia arriba o
1987 hacia abajo.  Esto se controla automáticamente cuando está establecida
1988 la propiedad @code{direction}.
1989
1990 @menu
1991 * La propiedad direction (dirección)::
1992 * Digitaciones::
1993 @end menu
1994
1995 @node La propiedad direction (dirección)
1996 @unnumberedsubsubsec La propiedad @code{direction} (dirección)
1997 @translationof The direction property
1998
1999 @cindex abajo
2000 @cindex arriba
2001 @cindex centro
2002 @cindex neutro
2003 @cindex down
2004 @cindex up
2005 @cindex center
2006 @cindex neutral
2007
2008 The following example shows the default positioning of slurs in the
2009 first bar, with slurs starting on high notes positioned above the notes
2010 and those starting on low notes positioned below, followed by a bar
2011 with both slurs forced down, a bar with both slurs forced up, and
2012 finally a bar with both slurs reverted back to the default behavior.
2013
2014 @cindex Slur, ejemplo de sobreescritura
2015 @cindex direction, propiedad, ejemplo
2016
2017 @lilypond[quote,fragment,verbatim]
2018 a'4( g') c''( a') |
2019 \override Slur.direction = #DOWN
2020 a'4( g') c''( a') |
2021 \override Slur.direction = #UP
2022 a'4( g') c''( a') |
2023 \revert Slur.direction
2024 a'4( g') c''( a') |
2025 @end lilypond
2026
2027 Aquí hemos usado las constantes @code{DOWN} (abajo) y @code{UP}
2028 (arriba).  Éstos tienen los valores @w{@code{-1}} y @code{+1}
2029 respectivamente, y dichos valores numéricos también se pueden usar
2030 directamente.  El valor @code{0} también se puede usar en algunos
2031 casos.  Se trata simplemente con el significado de @code{UP} para las
2032 ligaduras de expresión, pero para algunos objetos tiene el significado de
2033 @q{centrado}.  Existe una constante @code{CENTER} que tiene el valor
2034 @code{0}.
2035
2036 Sin embargo, estas sobreescrituras no se usan muy a menudo porque
2037 están disponibles instrucciones predefinidas equivalentes más
2038 sencillas.  Aquí podemos ver una tabla de las más comunes.  Se
2039 menciona el significado de cada una allí donde no es obvio.
2040
2041 @multitable @columnfractions .2 .2 .25 .35
2042 @headitem Abajo o Izquierda
2043   @tab Arriba o Derecha
2044   @tab Anular
2045   @tab Efecto
2046 @item @code{\arpeggioArrowDown}
2047   @tab @code{\arpeggioArrowUp}
2048   @tab @code{\arpeggioNormal}
2049   @tab La flecha está abajo, arriba o no hay flecha
2050 @item @code{\dotsDown}
2051   @tab @code{\dotsUp}
2052   @tab @code{\dotsNeutral}
2053   @tab Dirección del desplazamiento para evitar las líneas del pentagrama
2054 @item @code{\dynamicDown}
2055   @tab @code{\dynamicUp}
2056   @tab @code{\dynamicNeutral}
2057   @tab
2058 @item @code{\phrasingSlurDown}
2059   @tab @code{\phrasingSlurUp}
2060   @tab @code{\phrasingSlurNeutral}
2061   @tab Nota: diferente de las instrucciones de ligaduras de expresión
2062 @item @code{\slurDown}
2063   @tab @code{\slurUp}
2064   @tab @code{\slurNeutral}
2065   @tab
2066 @item @code{\stemDown}
2067   @tab @code{\stemUp}
2068   @tab @code{\stemNeutral}
2069   @tab
2070 @item @code{\textSpannerDown}
2071   @tab @code{\textSpannerUp}
2072   @tab @code{\textSpannerNeutral}
2073   @tab El texto introducido como objeto de extensión está debajo o encima del pentagrama
2074 @item @code{\tieDown}
2075   @tab @code{\tieUp}
2076   @tab @code{\tieNeutral}
2077   @tab
2078 @item @code{\tupletDown}
2079   @tab @code{\tupletUp}
2080   @tab @code{\tupletNeutral}
2081   @tab Los grupos especiales están debajo o encima de las notas
2082 @end multitable
2083
2084 Las variantes neutras o normales de estas instrucciones están
2085 implementadas usando @code{\revert} y éstas @strong{no} pueden ir
2086 precedidas de @code{\once}.  Si quiere limitar el efecto de las
2087 otras instrucciones (que están implementadas usando
2088 @code{\override}) a un solo paso de tiempo, puede precederla de
2089 @code{\once} de la misma forma en que lo haría con las
2090 sobreescrituras explícitas.
2091
2092 Or, if just a single layout object needs to be forced up or down, the
2093 direction indicators, @code{^} or @code{_}, may be used:
2094
2095 @lilypond[quote,fragment,verbatim]
2096 a'4( g') c''( a') |
2097 a'4^( g') c''_( a') |
2098 @end lilypond
2099
2100 @node Digitaciones
2101 @unnumberedsubsubsec Digitaciones
2102 @translationof Fingering
2103
2104 @cindex digitación, colocación
2105 @cindex digitación de acordes
2106
2107 La colocación de las digitaciones sobre notas sueltas también se puede
2108 controlar mediante la propiedad @code{direction}, pero los cambios
2109 sobre @code{direction} no tienen ningún efecto sobre las notas de los
2110 acordes.  Como veremos, existen instrucciones especiales que permiten
2111 controlar las digitaciones de notas individuales, situando la
2112 digitación encima, debajo, a la izquierda o a la derecha de cada nota.
2113
2114 En primer lugar, he aquí el efecto de @code{direction} sobre las
2115 digitaciones aplicadas a notas sueltas.  Se muestra en el primer
2116 compás el comportamiento predeterminado, y en los dos compases
2117 siguiente el efecto de especificar @code{DOWN} y @code{UP}:
2118
2119 @cindex Fingering, ejemplo de sobreescritura
2120 @cindex direction, propiedad, ejemplo
2121
2122 @lilypond[quote,verbatim]
2123 \relative {
2124   c''4-5 a-3 f-1 c'-5 |
2125   \override Fingering.direction = #DOWN
2126   c4-5 a-3 f-1 c'-5 |
2127   \override Fingering.direction = #UP
2128   c4-5 a-3 f-1 c'-5 |
2129 }
2130 @end lilypond
2131
2132 Sin embargo, la sobreescritura de la propiedad @code{direction} no es
2133 la forma más sencilla de especificar manualmente la digitación por
2134 encima o por debajo de las notas; suele ser preferible usar @code{_} o
2135 @code{^} en lugar de @code{-}, antes del número de la digitación.
2136 Este es el ejemplo anterior utilizando este método:
2137
2138 @cindex fingering, ejemplo
2139 @cindex digitación, ejemplo
2140
2141 @lilypond[quote,verbatim]
2142 \relative {
2143   c''4-5 a-3 f-1 c'-5 |
2144   c4_5 a_3 f_1 c'_5 |
2145   c4^5 a^3 f^1 c'^5 |
2146 }
2147 @end lilypond
2148
2149 La propiedad @code{direction} se ignora para los acordes, pero los
2150 prefijos direccionales @code{_} y @code{^} sí funcionan.  De forma
2151 predeterminada, las digitaciones se colocan automáticamente encima y
2152 debajo de las notas de un acorde, como se muestra aquí:
2153
2154 @cindex fingering, ejemplo
2155 @cindex digitación, ejemplo
2156
2157 @lilypond[quote,verbatim]
2158 \relative {
2159   <c''-5 g-3>4
2160   <c-5 g-3 e-2>4
2161   <c-5 g-3 e-2 c-1>4
2162 }
2163 @end lilypond
2164
2165 @noindent
2166 pero se puede forzar de manera que todos o algunos de los números de
2167 digitación estén por encima o por debajo:
2168
2169 @cindex fingering, ejemplo
2170 @cindex digitación, ejemplo
2171
2172 @lilypond[quote,verbatim]
2173 \relative {
2174   <c''-5 g-3 e-2 c-1>4
2175   <c^5 g_3 e_2 c_1>4
2176   <c^5 g^3 e^2 c_1>4
2177 }
2178 @end lilypond
2179
2180 Es posible ejercer un control aún mayor sobre la colocación de las
2181 digitaciones mediante la utilización de la instrucción @code{\set
2182 fingeringOrientations}.  El formato de esta instrucción es:
2183
2184 @example
2185 @code{\set fingeringOrientations = #'([up] [left/right] [down])}
2186 @end example
2187
2188 @noindent
2189 se utiliza @code{\set} porque @code{fingeringOrientations} es una
2190 propiedad del contexto @code{Voice}, creado y usado por el grabador
2191 @code{New_fingering_engraver}.
2192
2193 La propiedad se puede establecer al valor de una lista de entre uno y
2194 tres valores.  Controla si las digitaciones se pueden colocar por
2195 encima (si @code{up} aparece en la lista), por debajo (si aparece
2196 @code{down}), a la izquierda (si aparece @code{left}) o a la derecha
2197 (si aparece @code{right}).  A la inversa, si una colocación no está en
2198 la lista, no se sitúa ninguna digitación en dicho lugar.  LilyPond
2199 coma estas restricciones y se trabaja la mejor colocación para la
2200 digitación de las notas de los acordes que siguen.  Observe que
2201 @code{left} y @code{right} son mutuamente excluyentes: las
2202 digitaciones pueden situarse en un lado o en el otro, no en los dos.
2203
2204 @warning{Para controlar la colocación de la digitación de una sola
2205 nota usando esta instrucción es necesario escribirla como un acorde de
2206 una sola nota encerrándola entre ángulos simples.}
2207
2208 Aquí podemos ver algunos ejemplos:
2209
2210 @cindex fingering, ejemplo
2211 @cindex digitación, ejemplo
2212 @cindex @code{\set}, ejemplo de utilización
2213 @cindex fingeringOrientations, propiedad, ejemplo
2214
2215 @lilypond[quote,ragged-right,verbatim]
2216 \relative {
2217   \set fingeringOrientations = #'(left)
2218   <f'-2>4
2219   <c-1 e-2 g-3 b-5>4
2220   \set fingeringOrientations = #'(left)
2221   <f-2>4
2222   <c-1 e-2 g-3 b-5>4 |
2223   \set fingeringOrientations = #'(up left down)
2224   <f-2>4
2225   <c-1 e-2 g-3 b-5>4
2226   \set fingeringOrientations = #'(up left)
2227   <f-2>4
2228   <c-1 e-2 g-3 b-5>4 |
2229   \set fingeringOrientations = #'(right)
2230   <f-2>4
2231   <c-1 e-2 g-3 b-5>4
2232 }
2233 @end lilypond
2234
2235 @noindent
2236 Si la digitación parece un poco superpoblada, se puede reducir el
2237 tamaño @code{font-size}.  El valor predeterminado puede verse en el
2238 objeto @code{Fingering} del RFI que es @w{@code{-5}}, así que probaremos
2239 @w{@code{-7}}:
2240
2241 @lilypond[quote,ragged-right,verbatim]
2242 \relative {
2243   \override Fingering.font-size = #-7
2244   \set fingeringOrientations = #'(left)
2245   <f'-2>4
2246   <c-1 e-2 g-3 b-5>4
2247   \set fingeringOrientations = #'(left)
2248   <f-2>4
2249   <c-1 e-2 g-3 b-5>4 |
2250   \set fingeringOrientations = #'(up left down)
2251   <f-2>4
2252   <c-1 e-2 g-3 b-5>4
2253   \set fingeringOrientations = #'(up left)
2254   <f-2>4
2255   <c-1 e-2 g-3 b-5>4 |
2256   \set fingeringOrientations = #'(right)
2257   <f-2>4
2258   <c-1 e-2 g-3 b-5>4
2259 }
2260 @end lilypond
2261
2262
2263 @node Objetos fuera del pentagrama
2264 @subsection Objetos fuera del pentagrama
2265 @translationof Outside-staff objects
2266
2267 Los objetos fuera-del-pentagrama se sitúan automáticamente para evitar
2268 las colisiones.  Existen varias formas de sobreescribir la colocación
2269 automática si el posicionado no resulta óptimo.
2270
2271 @menu
2272 * La propiedad outside-staff-priority (prioridad fuera del pentagrama)::
2273 * La instrucción textLengthOn::
2274 * Posicionamiento de los matices dinámicos::
2275 * Escalado de un «Grob»::
2276 @end menu
2277
2278
2279 @node La propiedad outside-staff-priority (prioridad fuera del pentagrama)
2280 @unnumberedsubsubsec La propiedad @code{outside-staff-priority} (prioridad fuera del pentagrama)
2281 @translationof The outside-staff-priority property
2282
2283 Los objetos fuera-del-pentagrama se colocan automáticamente para
2284 evitar las colisiones.  Los objetos que tienen el valor más bajo de la
2285 propiedad @code{outside-staff-priority} se sitúan más cerca del
2286 pentagrama, y entonces otros objetos fuera-del-pentagrama se elevan
2287 tanto como sea necesario para evitar la colisión.  La prioridad
2288 @code{outside-staff-priority} se defina en el @code{grob-interface} y
2289 así es una propiedad de todos los objetos de presentación.  De forma
2290 predeterminada se establece a @code{#f} para todos los objetos
2291 dentro-del-pentagrama, y a un valor numérico adecuado a cada objeto
2292 fuera-del-pentagrama cuando se crea el objeto.  La tabla siguiente
2293 presenta los valores numéricos predeterminados para algunos de los
2294 objetos fuera-del-pentagrama más comunes.
2295
2296 @cindex objetos de extensión
2297
2298 Observe los nombres algo inusuales de algunos de los objetos: los
2299 objetos de extensión se crean automáticamente para controlar el
2300 posicionamiento vertical de los grobs que (quizá) comienzan y terminan
2301 en distintos momentos musicales, de manera que cualquier modificación
2302 a la prioridad @code{outside-staff-priority} del grob subyacente no
2303 tiene ningún efecto.  Por ejemplo, cambiar la
2304 @code{outside-staff-priority} del objeto de regulador @code{Hairpin}
2305 no tiene efecto sobre la posición vertical de los reguladores: en
2306 lugar de eso, tenemos que cambiar la @code{outside-staff-priority} del
2307 objeto asociado @code{DynamicLineSpanner}.  Esta sobreescritura se
2308 debe escribir al comienzo del objeto de extensión, que podría incluir
2309 varios reguladores o matices dinámicos encadenados.
2310
2311 @multitable @columnfractions .3 .3 .3
2312 @headitem Objeto de presentación
2313   @tab Prioridad
2314   @tab Controla la posición de:
2315 @item @code{RehearsalMark}
2316   @tab @code{1500}
2317   @tab Letras de ensayo
2318 @item @code{MetronomeMark}
2319   @tab @code{1000}
2320   @tab Indicaciones metronómicas
2321 @item @code{VoltaBracketSpanner}
2322   @tab @code{600}
2323   @tab Cajetines de primera y segunda vez
2324 @item @code{TextScript}
2325   @tab @code{450}
2326   @tab Texto en elementos de marcado
2327 @item @code{MultiMeasureRestText}
2328   @tab @code{450}
2329   @tab Texto sobre silencios de compás completo
2330 @item @code{OttavaBracket}
2331   @tab @code{400}
2332   @tab Corchetes de octava alta y baja
2333 @item @code{TextSpanner}
2334   @tab @code{350}
2335   @tab Objetos de extensión de texto
2336 @item @code{DynamicLineSpanner}
2337   @tab @code{250}
2338   @tab Todas las indicaciones dinámicas
2339 @item @code{VoltaBracketSpanner}
2340   @tab @code{100}
2341   @tab Números de compás
2342 @item @code{TrillSpanner}
2343   @tab @code{50}
2344   @tab Trinos mantenidos
2345 @end multitable
2346
2347 He aquí un ejemplo que muestra la situación predeterminada de algunos
2348 de ellos.
2349
2350 @cindex texto, extensiones de
2351 @cindex octava alta y baja, corchete de
2352
2353 @funindex \startTextSpan
2354 @funindex startTextSpan
2355 @funindex \stopTextSpan
2356 @funindex stopTextSpan
2357
2358 @cindex TextSpanner, ejemplo de sobreescritura
2359 @cindex bound-details, propiedad, ejemplo
2360
2361 @lilypond[quote,fragment,ragged-right,verbatim]
2362 % Set details for later Text Spanner
2363 \override TextSpanner.bound-details.left.text
2364     = \markup { \small \bold Slower }
2365 % Place dynamics above staff
2366 \dynamicUp
2367 % Start Ottava Bracket
2368 \ottava #1
2369 c''4 \startTextSpan
2370 % Add Dynamic Text and hairpin
2371 c''4\pp\<
2372 c''4
2373 % Add Text Script
2374 c''4^Text |
2375 c''4 c''
2376 % Add Dynamic Text and terminate hairpin
2377 c''4\ff c'' \stopTextSpan |
2378 % Stop Ottava Bracket
2379 \ottava #0
2380 c'4 c' c' c' |
2381 @end lilypond
2382
2383 Este ejemplo también muestra cómo crear textos con extensión (Text
2384 Spanners): textos con líneas extensoras por encima de una sección de
2385 música.  El extensor abarca desde la instrucción @code{\startTextSpan}
2386 hasta la instrucción @code{\stopTextSpan}, y el formado del texto se
2387 define por medio de la instrucción @code{\override TextSpanner}.  Para
2388 ver más detalles, consulte @ruser{Extensiones de texto}.
2389
2390 También muestra la manera de crear corchetes de octava alta y baja.
2391
2392 @cindex trucar la situación de los números de compás
2393 @cindex números de compás, ajustar posición
2394 @cindex trucar la situación de marcas metronómicas
2395 @cindex metrónomo, situación de las indicaciones de
2396 @cindex trucar la situación de las letras de ensayo
2397 @cindex ensayo, letras, trucar la colocación
2398
2399 Si los valores predeterminados de @code{outside-staff-priority} no le
2400 ofrecen las colocaciones deseadas se puede sobreescribir la prioridad
2401 de cualquiera de los objetos.  Suponga que quisiéramos que el corchete
2402 de octava estuviera situado por debajo del elemento extensor de texto
2403 en el ejemplo de arriba.  Todo lo que debemos hacer es localizar la
2404 prioridad de @code{OttavaBracket} en el RFI o en las tablas
2405 anteriores, y reducirlo a un valor inferior al de @code{TextSpanner},
2406 recordando que @code{OttavaBracket} se crea dentro del contexto de
2407 @code{Staff}:
2408
2409 @cindex TextSpanner, ejemplo de sobreescritura
2410 @cindex bound-details, propiedad, ejemplo
2411
2412 @lilypond[quote,fragment,ragged-right,verbatim]
2413 % Set details for later Text Spanner
2414 \override TextSpanner.bound-details.left.text
2415     = \markup { \small \bold Slower }
2416 % Place dynamics above staff
2417 \dynamicUp
2418 % Place following Ottava Bracket below Text Spanners
2419 \once \override Staff.OttavaBracket.outside-staff-priority = #340
2420 % Start Ottava Bracket
2421 \ottava #1
2422 c''4 \startTextSpan
2423 % Add Dynamic Text
2424 c''4\pp
2425 % Add Dynamic Line Spanner
2426 c''4\<
2427 % Add Text Script
2428 c''4^Text |
2429 c''4 c''
2430 % Add Dynamic Text
2431 c''4\ff c'' \stopTextSpan |
2432 % Stop Ottava Bracket
2433 \ottava #0
2434 c'4 c' c' c' |
2435 @end lilypond
2436
2437 Observe que algunos de estos objetos, concretamente los números de
2438 compás, las indicaciones metronómicas y las letras de ensayo, se
2439 alojan de forma predeterminada dentro del contexto @code{Score}; así
2440 pues, debe asegurarse de que utiliza el contexto adecuado cuando se
2441 sobreescriben sus propiedades.
2442
2443 @cindex ligaduras y outside-staff-priority
2444 @cindex ligaduras y articulaciones
2445 @cindex articulaciones y ligaduras
2446
2447 De forma predeterminada, las ligaduras de expresión están clasificadas
2448 como objetos dentro-del-pentagrama, pero con frecuencia aparecen
2449 encima del pentagrama si las notas que une son muy agudas.  Ello puede
2450 empujar a una posición muy elevada a los objetos fuera-del-pentagrama
2451 como las articulaciones, pues la ligadura se colocará en primer lugar.
2452 La propiedad @code{avoid-slur} de la articulación se puede establecer
2453 al valor @code{'inside} (por dentro) para llevarla al interior de la
2454 ligadura, pero la propiedad @code{avoid-slur} es efectiva solamente si
2455 la prioridad @code{outside-staff-priority} está también ajustada al
2456 valor @code{#f}.  De forma alternativa, la prioridad
2457 @code{outside-staff-priority} de la ligadura se puede fijar en un
2458 valor numérico para hacer que se sitúe en línea con otros objetos
2459 fuera del pentagrama de acuerdo con este valor.  He aquí un ejemplo
2460 que muestra el efecto de los dos métodos:
2461
2462 @lilypond[quote,verbatim]
2463 \relative c'' {
2464   c4( c^\markup { \tiny \sharp } d4.) c8 |
2465   c4(
2466     \once \override TextScript.avoid-slur = #'inside
2467     \once \override TextScript.outside-staff-priority = ##f
2468     c4^\markup { \tiny \sharp } d4.) c8 |
2469   \once \override Slur.outside-staff-priority = #500
2470     c4( c^\markup { \tiny \sharp } d4.) c8 |
2471 }
2472 @end lilypond
2473
2474 Los cambios en @code{outside-staff-priority} también se pueden emplear
2475 para controlar la situación vertical de los objetos individuales,
2476 aunque los resultados pueden no siempre ser deseables.  Suponga que
2477 quiere que @qq{Text3} se sitúe por encima de @qq{Text4} en el ejemplo
2478 bajo el epígrafe Comportamiento Automático de más arriba (véase
2479 @ref{Comportamiento automático}).  Todo lo que debemos hacer es localizar la
2480 prioridad de @code{TextScript} en el RFI o en las tablas de arriba, y
2481 aumentar la prioridad de @qq{Text3} hasta un valor superior:
2482
2483 @cindex TextScript, ejemplo de sobreescritura
2484 @cindex outside-staff-priority, propiedad, ejemplo
2485
2486 @lilypond[quote,fragment,ragged-right,verbatim]
2487 c''2^"Text1"
2488 c''2^"Text2" |
2489 \once \override TextScript.outside-staff-priority = #500
2490 c''2^"Text3"
2491 c''2^"Text4" |
2492 @end lilypond
2493
2494 Esto, ciertamente, eleva a @qq{Text3} por encima de @qq{Text4} pero
2495 también lo eleva por encima de @qq{Text2}, y @qq{Text4} ahora se
2496 desploma hacia abajo.  Quizá no sea tan buena idea.  ¿Y si lo que
2497 realmente queremos hacer es posicionar todas las anotaciones a la
2498 misma distancia por encima del pentagrama?  Para hacerlo, vamos a
2499 necesitar claramente espaciar las notas en sentido horizontal para
2500 hacer sitio para el texto.  Esto se hace empleando la instrucción
2501 @code{textLengthOn}.
2502
2503 @node La instrucción textLengthOn
2504 @unnumberedsubsubsec La instrucción @code{@bs{}textLengthOn}
2505 @translationof The textLengthOn command
2506
2507 @cindex notas, espaciar junto al texto
2508
2509 @funindex \textLengthOn
2510 @funindex textLengthOn
2511 @funindex \textLengthOff
2512 @funindex textLengthOff
2513
2514 De forma predeterminada, el texto producido mediante marcado no ocupa
2515 ningún espacio horizontal en cuanto se refiere a la disposición de la
2516 música.  La instrucción @code{\textLengthOn} invierte este
2517 comportamiento, ocasionando que las notas resulten tan espaciadas como
2518 sea necesario para acomodar el texto:
2519
2520 @lilypond[quote,fragment,ragged-right,verbatim]
2521 \textLengthOn  % Cause notes to space out to accommodate text
2522 c''2^"Text1"
2523 c''2^"Text2" |
2524 c''2^"Text3"
2525 c''2^"Text4" |
2526 @end lilypond
2527
2528 La instrucción para volver al comportamiento predeterminado es
2529 @code{\textLengthOff}.  De forma alternativa, se puede usar
2530 @code{\once} con @code{\textLengthOn} si el efecto se ha de limitar a
2531 un solo momento musical.
2532 The corresponding spacing behavior for rehearsal marks and tempo
2533 indications is independently controlled with the commands
2534 @code{\markLengthOn} and @code{\markLengthOff}.
2535
2536 @cindex marcado, texto de, permitir las colisiones en
2537
2538 El texto de marcado también evita las notas que se proyectan por
2539 encima del pentagrama.  Si esto no es lo que deseamos, el
2540 desplazamiento automático hacia arriba se puede desactivar mediante el
2541 establecimiento de la prioridad a @code{#f}.  He aquí un ejemplo que
2542 muestra cómo el texto de marcado interactúa con tales notas.
2543
2544 @cindex TextScript, ejemplo de sobreescritura
2545 @cindex outside-staff-priority, propiedad, ejemplo
2546
2547 @lilypond[quote,ragged-right,verbatim]
2548 \relative {
2549   % This markup is short enough to fit without collision
2550   c''2^"Tex" c'' |
2551   R1 |
2552
2553   % This is too long to fit, so it is displaced upwards
2554   c,,2^"Text" c'' |
2555   R1 |
2556
2557   % Turn off collision avoidance
2558   \once \override TextScript.outside-staff-priority = ##f
2559   c,,2^"Long Text   " c'' |
2560   R1 |
2561
2562   % Turn off collision avoidance
2563   \once \override TextScript.outside-staff-priority = ##f
2564   \textLengthOn        % and turn on textLengthOn
2565   c,,2^"Long Text   "  % Spaces at end are honored
2566   c''2 |
2567 }
2568 @end lilypond
2569
2570 @node Posicionamiento de los matices dinámicos
2571 @unnumberedsubsubsec Posicionamiento de los matices dinámicos
2572 @translationof Dynamics placement
2573
2574 @cindex trucar la colocación de los matices
2575 @cindex dinámica, trucar la colocación de las indicaciones de
2576 @cindex matices, trucar la colocación
2577
2578 Las indicaciones de matiz dinámico normalmente se colocarán por debajo
2579 del pentagrama, pero se pueden posicionar por encima con la
2580 instrucción @code{\dynamicUp}.  Se situarán verticalmente respecto a la
2581 nota a la que van adosadas, y flotarán por debajo (o por encima) de
2582 todos los objetos dentro-del-pentagrama tales como ligaduras de fraseo
2583 y números de compás.  Esto puede ofrecer resultados bastante
2584 aceptables, como muestra este ejemplo:
2585
2586 @lilypond[quote,ragged-right,verbatim]
2587 \relative {
2588   \clef "bass"
2589   \key aes \major
2590   \time 9/8
2591   \dynamicUp
2592   bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
2593   ees,2.~\)\mf ees4 r8 |
2594 }
2595 @end lilypond
2596
2597 Sin embargo, si las notas y sus indicaciones dinámicas adosadas están
2598 muy cerca, la colocación automática evitará las colisiones desplazando
2599 las marcas dinámicas posteriores más lejos, aunque este puede no ser
2600 el lugar óptimo, como muestra el siguiente ejemplo más bien
2601 artificial:
2602
2603 @lilypond[quote,ragged-right,verbatim,fragment]
2604 \dynamicUp
2605 \relative { a'4\f b\mf a\mp b\p }
2606 @end lilypond
2607
2608 @noindent
2609 Si se presentara una situación similar en música @q{real}, podría ser
2610 preferible espaciar las notas un poco más entre sí, de forma que todas
2611 las marcas dinámicas puedan caber a la misma distancia vertical desde
2612 el pentagrama.  Hemos sido capaces de hacer esto para el texto de
2613 marcado utilizando la instrucción @code{\textLengthOn}, pero no existe
2614 una instrucción equivalente para las indicaciones de matiz dinámico.
2615 Por tanto, tendremos que averiguar cómo hacerlo utilizando
2616 instrucciones @code{\override}.
2617
2618 @node Escalado de un «Grob»
2619 @unnumberedsubsubsec Escalado de un «Grob»
2620 @translationof Grob sizing
2621
2622 @cindex grob, cambio de tamaño de un
2623 @cindex escala de los grobs
2624
2625 En primer lugar debemos aprender cómo se especifica el tamaño de los
2626 grobs.  Todos los grobs tienen un punto de referencia definido dentro
2627 de ellos que se usa para colocarlos respecto a su objeto padre.
2628 Entonces, este punto del grob se posiciona a una distancia horizontal,
2629 @code{X-offset}, y una distancia vertical, @code{Y-offset}, a partir
2630 de su padre.  La dimensión horizontal del objeto viene dada por una
2631 pareja de números, @code{X-extent}, que dice dónde están los límites
2632 izquierdo y derecho respecto del punto de referencia.  La amplitud
2633 vertical se define de forma similar mediante una pareja de números,
2634 @code{Y-extent}.  Éstas son propiedades de todos los grobs que
2635 contemplan el @code{grob-interface}.
2636
2637 @cindex @code{extra-spacing-width}
2638
2639 De forma predeterminada, los objetos fuera-del-pentagrama reciben
2640 una anchura cero, de manera que pueden solaparse en la dirección
2641 horizontal.  Esto se hace mediante el truco de hacer que la
2642 dimensión más a la izquierda sea igual a infinito y que la
2643 dimensión más a la derecha sea igual a menos infinito,
2644 estableciendo el valor de @code{extra-spacing-width} a
2645 @code{'(+inf.0 . -inf.0)}.  Así, para asegurar que no se
2646 superponen en la dirección horizontal tendremos que sobreescribir
2647 este valor de @code{extra-spacing-width} para darles un poco de
2648 espacio adicional.  Las unidades son el espacio entre dos líneas
2649 del pentagrama, de forma que debería bastar mover el límite
2650 izquierdo media unidad a la izquierda y el límite derecho media
2651 unidad a la derecha:
2652
2653 @example
2654 \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
2655 @end example
2656
2657 @noindent
2658 Veamos si funciona en nuestro ejemplo anterior:
2659
2660 @cindex DynamicText, ejemplo de sobreescritura
2661 @cindex extra-spacing-width, propiedad, ejemplo
2662
2663 @lilypond[quote,ragged-right,verbatim,fragment]
2664 \dynamicUp
2665 % Extend width by 1 staff space
2666 \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
2667 \relative { a'4\f b\mf a\mp b\p }
2668 @end lilypond
2669
2670 @noindent
2671 Esto tiene un mejor aspecto, pero quizá habríamos preferido que
2672 las indicaciones de dinámica estuvieran alineadas sobre la misma
2673 línea de base en lugar de ir hacia arriba y hacia abajo con las
2674 notas.  La propiedad que lo hace es @code{staff-padding} (relleno
2675 de pentagrama) que se estudia en la sección dedicada a las
2676 colisiones (véase @ref{Colisiones de objetos}).
2677
2678 @node Espaciado vertical
2679 @section Espaciado vertical
2680 @translationof Vertical spacing
2681
2682 Por lo general, el espaciado vertical de los objetos musicales que
2683 LilyPond hace es bastante bueno.  Veamos cómo se comporta con una
2684 canción sencilla, con dos voces y acompañamiento de piano:
2685
2686 @lilypond[quote,fragment,ragged-right]
2687 <<
2688   \new ChoirStaff
2689   <<
2690     \new Staff {
2691       \new Voice = "music" {
2692         b'2 c' c' c'
2693       }
2694     }
2695     \new Lyrics
2696     \lyricsto "music" {
2697       Here are some lyrics
2698     }
2699     \new Staff {
2700       \clef bass e'2 f e c
2701     }
2702   >>
2703   \new PianoStaff
2704   <<
2705     \new Staff {
2706       g''2 c'' c'' a''
2707     }
2708     \new Staff {
2709       \clef bass e2 f c e
2710     }
2711   >>
2712 >>
2713 @end lilypond
2714
2715 No hay ningún problema con el espaciado vertical predeterminado.
2716 Sin embargo, supongamos que estamos trabajando con un editor que
2717 tiene ciertos requisitos específicos para el espaciado vertical de
2718 los pentagramas y la letra: quiere que la letra está más separada
2719 de las notas, que el acompañamiento de piano esté más separado de
2720 la línea vocal y que los dos pentagramas de piano estén más juntos
2721 entre sí.  Comenzaremos con la letra.
2722
2723 La letra se encuentra en el interior de un sistem, y por tanto las
2724 instrucciones para aplicarle el espaciado estarán en
2725 @ruser{Espaciado vertical flexible dentro de los sistemas}.  Allí
2726 se dice que el texo son líneas del tipo @qq{no-pauta} y por tanto
2727 la instrucción para cambiar su espaciado hará referencia a la
2728 propiedad @code{nonstaff}.  Para separarlas del pentagrama al que
2729 pertenecen (la pauta superior) usaremos la propiedad
2730 @code{relatedstaff}.  Para separarlas de la línea inferior
2731 usaremos la propiedad @code{unrelatedstaff}.  Las partes vocales
2732 pertenecen a un grupo vertical @code{VerticalAxisGroup}, por lo
2733 que tenemos que ajustar sus propiedades.  Probémoslo y veamos si
2734 funciona.
2735
2736 @lilypond[quote,fragment,ragged-right,verbatim]
2737 <<
2738   \new ChoirStaff
2739   <<
2740     \new Staff {
2741       \new Voice = "music" {
2742         b'2 c' c' c'
2743       }
2744     }
2745     \new Lyrics \with {
2746       \override VerticalAxisGroup.
2747         nonstaff-relatedstaff-spacing.padding = #5
2748       \override VerticalAxisGroup.
2749         nonstaff-unrelatedstaff-spacing.padding = #5
2750     }
2751     \lyricsto "music" {
2752       Here are some lyrics
2753     }
2754     \new Staff {
2755       \clef bass e'2 f e c
2756     }
2757   >>
2758   \new PianoStaff
2759   <<
2760     \new Staff {
2761       g''2 c'' c'' a''
2762     }
2763     \new Staff {
2764       \clef bass e2 f c e
2765     }
2766   >>
2767 >>
2768 @end lilypond
2769
2770 Bien: sí, funciona, pero quizá demasiado bien.  Cuando
2771 establecemos el @code{padding} (relleno) a 5, LilyPond añade 5
2772 espacios de pentagrama a la distancia entre los objetos, lo que es
2773 excesivo para nosotros en este caso.  Usaremos un valor de 2.
2774
2775 A continuación, desplazaremos la música de piano para separarla de
2776 las partes vocales.  La música vocal es una @code{ChoirStaff} (un
2777 contexto de sistema coral), y por tanto tenemos que aumentar el
2778 espaciado entre ese grupo de pentagramas y el sistema de piano que
2779 se encuentra debajo.  Lo haremos cambiando la
2780 @code{basic-distance} (distancia básica) del @code{StaffGrouper}
2781 del @code{staffgroup-staff-spacing}.
2782
2783 @lilypond[quote,fragment,ragged-right,verbatim]
2784 <<
2785   \new ChoirStaff \with {
2786     \override StaffGrouper.
2787       staffgroup-staff-spacing.basic-distance = #15
2788   }
2789   <<
2790     \new Staff {
2791       \new Voice = "music" {
2792         b'2 c' c' c'
2793       }
2794     }
2795     \new Lyrics \with {
2796       \override VerticalAxisGroup.
2797         nonstaff-relatedstaff-spacing.padding = #2
2798       \override VerticalAxisGroup.
2799         nonstaff-unrelatedstaff-spacing.padding = #2
2800     }
2801     \lyricsto "music" {
2802       Here are some lyrics
2803     }
2804     \new Staff {
2805       \clef bass e'2 f e c
2806     }
2807   >>
2808   \new PianoStaff
2809   <<
2810     \new Staff {
2811       g''2 c'' c'' a''
2812     }
2813     \new Staff {
2814       \clef bass e2 f c e
2815     }
2816   >>
2817 >>
2818 @end lilypond
2819
2820 Muy bien.  Ahora, sólo nos queda el último requisito de hacer que
2821 los pentagramas de piano estén más juntos.  Para conseguirlo, de
2822 nuevo alteramos las propiedades del @code{StaffGrouper}, pero esta
2823 vez vamos a reducir tanto la @code{basic-distance} (distancia
2824 básica) como el @code{padding} (relleno).  Podemos hacerlo como se
2825 muestra a continuación.
2826
2827 @lilypond[quote,fragment,ragged-right,verbatim]
2828 <<
2829   \new ChoirStaff \with {
2830     \override StaffGrouper.
2831       staffgroup-staff-spacing.basic-distance = #15
2832   }
2833   <<
2834     \new Staff {
2835       \new Voice = "music" {
2836         b'2 c' c' c'
2837       }
2838     }
2839     \new Lyrics \with {
2840       \override VerticalAxisGroup.
2841         nonstaff-relatedstaff-spacing.padding = #2
2842       \override VerticalAxisGroup.
2843         nonstaff-unrelatedstaff-spacing.padding = #2
2844     }
2845     \lyricsto "music" {
2846       Here are some lyrics
2847     }
2848     \new Staff {
2849       \clef bass e'2 f e c
2850     }
2851   >>
2852   \new PianoStaff \with {
2853     \override StaffGrouper.staff-staff-spacing = #'(
2854                             (basic-distance . 0)
2855                             (padding . 0))
2856   }
2857   <<
2858     \new Staff {
2859       g''2 c'' c'' a''
2860     }
2861     \new Staff {
2862       \clef bass e2 f c e
2863     }
2864   >>
2865 >>
2866 @end lilypond
2867
2868 Con esto los hemos colocado muy juntos entre sí (pero es lo que el
2869 editor quería).  Se podrían haber separado más alterando el
2870 relleno, @code{padding}, o la distancia básica,
2871 @code{basic-distance}, si quisiéramos.
2872
2873 Hay muchas formas de alterar el espaciado vertical.  Un punto
2874 clave que debemos recordar es que el espaciado entre objetos
2875 dentro de un @code{StaffGroup} (como los grupos @code{GrandStaff}
2876 o @code{PianoStaff}) se controla con las variables de espaciado
2877 del @code{StaffGrouper}. El espaciado de los pentagramas no
2878 agrupados (como @code{Lyrics} y @code{Staff}) se controla con las
2879 variables del @code{VerticalAxisGroup}.  Para ver más detalles,
2880 consulte
2881 @ruser{Variables de espaciado de paper verticales flexibles} y
2882 @ruser{Espaciado vertical flexible dentro de los sistemas}.
2883
2884
2885 @node Colisiones de objetos
2886 @section Colisiones de objetos
2887 @translationof Collisions of objects
2888
2889 @menu
2890 * Mover objetos::
2891 * Arreglar notación con superposiciones::
2892 * Ejemplos reales de música::
2893 @end menu
2894
2895 @node Mover objetos
2896 @subsection Mover objetos
2897 @translationof Moving objects
2898
2899 @cindex mover objetos superpuestos
2900 @cindex mover objetos que colisionan
2901 @cindex mover grobs que colisionan
2902 @cindex objetos que colisionan, mover
2903 @cindex grobs que colisionan, mover
2904
2905 Aunque pueda sorprenderle, LilyPond no es perfecto.  Ciertos elementos
2906 de notación se pueden superponer, lo que es una lástima, pero en
2907 realidad es bastante poco frecuente.  Normalmente la necesidad de
2908 mover objetos es por claridad o razones estéticas: el aspecto es mejor
2909 con un poco más o un poco menos de espacio de separación.
2910
2911 Existen tres enfoques principales que llevan a la resolución de
2912 superposiciones en la notación.  Se deben considerar en el siguiente
2913 orden:
2914
2915 @enumerate
2916 @item
2917 La @strong{dirección} de uno de los objetos que se superponen se puede
2918 cambiar usando las instrucciones predefinidas que están relacionadas
2919 arriba para los objetos dentro-del-pentagrama (véase @ref{Objetos interiores al pentagrama}).
2920 Se pueden recolocar fácilmente las
2921 plicas, ligaduras de expresión y de unión, barras de corchea,
2922 indicaciones dinámicas, texto y grupos de valoración especial de esta
2923 forma.  La limitación es que sólo tiene la posibilidad de elegir entre
2924 dos posiciones, y podría ser que ninguna de ellas sea la adecuada.
2925
2926 @item
2927 Las @strong{propiedades del objeto}, que LilyPond usa cuando está
2928 colocando los objetos de presentación, se pueden modificar usando la
2929 instrucción de sobreescritura @code{\override}.  Las ventadas de hacer
2930 cambios a este tipo de propiedad son: a) que algún otro objeto se
2931 moverá automáticamente si es necesario, para dejarle sitio, y b) una
2932 única sobreescritura se puede aplicar a todas las instancias del mismo
2933 tipo de objeto.  Entre tales propiedades se encuentran:
2934
2935 @itemize
2936
2937 @item
2938 @code{direction} (dirección)
2939
2940 Ya se ha estudiado con cierto detalle: véase @ref{Objetos interiores al pentagrama}.
2941
2942 @item
2943 @code{padding} (relleno),
2944 @code{right-padding} (relleno por la derecha),
2945 @code{staff-padding} (relleno de pentagrama)
2946
2947 @cindex relleno
2948 @cindex padding, propiedad
2949 @cindex right-padding, propiedad
2950 @cindex staff-padding, propiedad
2951
2952 Según un objeto se está colocando, el valor de su propiedad de relleno
2953 @code{padding} especifica el espacio intermedio que se debe dejar
2954 entre él mismo y el límite más próximo del objeto contra el que se
2955 está colocando.  Observe que es el valor de @code{padding} del objeto
2956 @strong{que se está colocando} el que se usa; el valor de
2957 @code{padding} del objeto que ya está colocado se ignora.  Los
2958 espacios intermedios especificados mediante @code{padding} se pueden
2959 aplicar a todos los objetos que contemplan el interface
2960 @code{side-position-interface}.
2961
2962 En lugar de con @code{padding}, la colocación de los grupos de
2963 alteraciones se controla con
2964 @code{right-padding}.  Esta propiedad se encuentra en el objeto
2965 @code{AccidentalPlacement} que, observe, vive dentro del contexto de
2966 @strong{Staff}.  Durante el proceso tipográfico, las cabezas de las
2967 notas se componen tipográficamente en primer lugar, y después las
2968 alteraciones, si existen, se añaden a la izquierda de las cabezas
2969 utilizando la propiedad de relleno por la derecha @code{right-padding}
2970 para determinar la separación entre la alteración y la cabeza, y
2971 de las alteraciones entre sí.  Así
2972 pues, sólo la propiedad de relleno por la derecha @code{right-padding}
2973 del objeto @code{AccidentalPlacement} tiene efecto sobre la colocación
2974 de las alteraciones.
2975
2976 La propiedad @code{staff-padding} está estrechamente relacionada con
2977 la propiedad @code{padding}: @code{padding} controla la separación
2978 mínima entre cualquier objeto que contemple el interface
2979 @code{side-position-interface} y el objeto más cercano (generalmente
2980 la nota o las líneas del pentagrama); @code{staff-padding} se aplica
2981 sólo a los objetos que siempre se sitúan fuera del pentagrama:
2982 controla la separación mínima entre dicho objeto y el pentagrama.
2983 Observe que @code{staff-padding} no tiene ningún efecto sobre objetos
2984 que se posicionan respecto a la nota en vez de hacerlo respecto al
2985 pentagrama, incluso aunque puede ser sobreescrito sin error por tales
2986 objetos: simplemente se ignora.
2987
2988 Para descubrir qué propiedad de relleno se necesita para el objeto que
2989 quiere recolocar, debe volver al manual de RFI y buscar las
2990 propiedades del objeto.  Tenga cuidado porque las propiedades de
2991 relleno podrían no estar en el objeto más obvio, así que busque en los
2992 objetos que puedan tener alguna relación con él.
2993
2994 Todos los valores de relleno se miden en espacios del pentagrama.
2995 Para la mayor parte de los objetos el valor se establece de forma
2996 predeterminada en aproximadamente 1.0 o menos (varía con cada objeto).
2997 Se puede sobreescribir si se necesita una separación intermedia mayor
2998 (o menor).
2999
3000 @item
3001 @code{self-alignment-X} (Auto-alineamiento en el eje X)
3002
3003 @cindex self-alignment-X, propiedad
3004
3005 Esta propiedad se puede usar para alinear el objeto a la izquierda, a
3006 la derecha, o centrarlo con respecto al punto de referencia del objeto
3007 «padre».  Se puede usar con todos los objetos que contemplan el
3008 interface
3009 @code{self-alignment-interface}.  En general son objetos que contienen
3010 texto.  Los valores son @code{LEFT}, @code{RIGHT} o @code{CENTER}.  De
3011 forma alternativa se puede especificar un valor numérico entre
3012 @w{@code{-1}} y @code{+1}, donde @w{@code{-1}} es alineado por la izquierda,
3013 @code{+1} es alineado por la derecha, y los números intermedios mueven
3014 el texto progresivamente desde alineado por la izquierda hasta alineado
3015 por la derecha.  Se pueden especificar valores numéricos mayores de
3016 @code{1} para mover el texto incluso más lejos hacia la izquierda, o
3017 menos de @w{@code{-1}} para alejarlo más hacia la derecha.  Un cambio en
3018 @code{1} en el valor corresponde a un movimiento de la mitad de la
3019 longitud total del propio texto.
3020
3021 @item
3022 @code{extra-spacing-width} (anchura de separación adicional)
3023
3024 @cindex extra-spacing-width, propiedad
3025
3026 Esta propiedad está disponible para todos los objetos que contemplan
3027 el interface @code{item-interface}.  Toma dos números, el primero se
3028 suma al límite izquierdo y el segundo se suma al límite derecho.  Los
3029 números negativos desplazan el límite a la izquierda y los positivos a
3030 la derecha, por lo que para ensanchar un objeto el primer número debe
3031 ser negativo y el segundo positivo.  Observe que no todos los objetos
3032 ostentan los dos números.  Por ejemplo, el objeto @code{Accidental}
3033 (alteración) sólo toma nota del primer número (el borde izquierdo).
3034
3035 @item
3036 @code{staff-position} (posición de pentagrama)
3037
3038 @cindex staff-position, propiedad
3039
3040 @code{staff-position} es una propiedad del interface
3041 @code{staff-symbol-referencer-interface}, que está contemplado por los
3042 objetos que se colocan con relación al pentagrama.  Especifica la
3043 posición vertical del objeto con relación a la tercera línea del
3044 pentagrama en medios espacios de pentagrama.  Es útil en la
3045 resolución de colisiones entre objetos de presentación como silencios
3046 multi-compás, ligaduras de unión y notas en distintas voces.
3047
3048 @item
3049 @code{horizontal-shift}
3050
3051 @cindex horizontal-shift, propiedad
3052 @cindex nota, columna de
3053 @cindex nota, colisiones
3054 @cindex colisiones de notas
3055 @cindex desplazamiento, instrucciones de
3056 @funindex \shiftOff
3057 @funindex shiftOff
3058 @funindex \shiftOn
3059 @funindex shiftOn
3060 @funindex \shiftOnn
3061 @funindex shiftOnn
3062 @funindex \shiftOnnn
3063 @funindex shiftOnnn
3064
3065 Dentro de una vozm todas las notas que se producen en el mismo
3066 moemtno se agrupan en una columna de notas, y se crea un objeto
3067 @code{NoteColumn} para controlar el posicionamiento horizonal de
3068 dicho grupo de notas (véase @qq{Columnas de nota} en @ref{Voces
3069 explícitas}).  Si @emph{y sólo si} dos o más columnas de nota
3070 dentro de un solo contexto de pauta, las dos con las plicas en la
3071 misma dirección, aparecen en el mismo momento musical, los valores
3072 de sus propiedades @code{horizontal-shift} se usan para asignarles
3073 una puntuación y las columnas con puntuaciones más altas se
3074 desplazan progresivamente para evitar las colisiones entre las
3075 cabezas de las notas.  Esta propiedad se establece con las
3076 instrucciones @code{\voiceXXX} y se pueden sobreescribir
3077 directamente con una instrucción @code{\override} o, de forma más
3078 común con las instrucciones @code{\shiftOn}.  Observe que esta
3079 propiedad se usa para @emph{calificar} las columnas de nota o para
3080 aplicar desplazamientos: no especifica la magnitud del
3081 desplazamiento, que se va incrementando progresivamente en pasos
3082 basándolse en la anchura de las cabezas de nota para cada
3083 puntuación.  Los pasos son normalmente de la mitad de la anchura
3084 de una cabeza de nota, pero puede ser el ancho completo de la
3085 cabeza de una nota cuando está implicado un grupo de notas muy
3086 apretadas entre sí.
3087
3088 @item
3089 @code{force-hshift} (forzar desplazamiento horizontal)
3090
3091 @cindex force-hshift, propiedad
3092
3093 La propiedad @code{force-hshift} es una propiedad de una
3094 @code{NoteColumn} (realmente lo es del interface
3095 @code{note-column-interface}).  Modificarlo permite mover una
3096 columna de notas en situaciones donde las columnas de notas se
3097 superponen.  Observe que no tiene efecto sobre las columnas de
3098 nota que no se superponen.  Se especifica en unidades adecuadas a
3099 una columna de notas, por ejemplo la anchura de la cabeza de la
3100 nota de la primera voz.  Se debe usar en situaciones complejas
3101 donde las instrucciones @code{\shiftOn} normales (véase @ref{Voces
3102 explícitas}) no resuelven el conflicto entre las notas de forma
3103 satisfactoria.  Es preferible a la propiedad @code{extra-offset}
3104 para este propósito porque no hay necesidad de averiguar la
3105 distancia en espacios de pentagrama, y mover las notas dentro o
3106 fuera de una @code{NoteColumn} afecta a otras acciones como a la
3107 fusión entre cabezas de nota.
3108
3109 @end itemize
3110
3111 @item
3112 Finalmente, cuando todo lo demás falla, los objetos se pueden
3113 reposicionar manualmente con relación a la tercera línea del
3114 pentagrama verticalmente, o desplazándolas una cierta distancia a una
3115 nueva posición.  Las desventajas son que los valores correctos para el
3116 reposicionamiento se deben adivinar, a menudo por ensayo y error, para
3117 cada objeto individual y, puesto que el movimiento se hace después de
3118 que LilyPond ha colocado todos los demás objetos es usuario es
3119 responsable de evitar cualquier colisión que pudiera producirse.  Pero
3120 la dificultar principal con este enfoque es que los valores de
3121 reposicionado podrían tener que ser vueltos a calcular si la música se
3122 modifica más tarde.  Las propiedades que se pueden usar para este tipo
3123 de posicionamiento manual son:
3124
3125 @table @code
3126 @item extra-offset (desplazamiento adicional)
3127
3128 @cindex extra-offset, propiedad
3129
3130 Esta propiedad se aplica a cualquier objeto de presentación que
3131 contemple el @code{grob-interface}.  Toma una pareja de números que
3132 especifican el desplazamiento adicional en las direcciones horizontal
3133 y vertical.  Los números negativos mueven el objeto a la izquierda o
3134 hacia abajo.  Las unidades son espacios de pentagrama.  El
3135 desplazamiento adicional se hace después de que la composición
3136 tipográfica de los objetos ha terminado, así que un objeto puede ser
3137 reposicionado a cualquier lugar sin afectar a ninguna otra cosa.
3138
3139 @item positions (posiciones)
3140
3141 @cindex positions, propiedad
3142
3143 Ésta es de la mayor utilidad para ajustar manualmente la inclinación y
3144 la altura de las barras de corchea, ligaduras de expresión y corchetes
3145 de grupos de valoración especial.  Toma una pareja de números que dan
3146 la posición de los extremos izquierdo y derecho de la barra, ligadura,
3147 etc. con relación a la tercera línea del pentagrama.  Las unidades son
3148 espacios de pentagrama.  Observe, sin embargo, que las ligaduras de
3149 expresión y de fraseo no se pueden reposicionar en cantidades
3150 arbitrariamente grandes.  LilyPond en primer lugar genera una lista de
3151 posiciones posibles para la ligadura y de forma predeterminada
3152 encuentra la ligadura que tiene @qq{mejor aspecto}.  Si la propiedad
3153 @code{positions} se ha sobreescrito, la ligadura que está más cerca de
3154 las posiciones que se han solicitado, se selecciona de la lista.
3155 @end table
3156
3157 @end enumerate
3158
3159 Un objeto en particular podría no tener todas estas propiedades.  Es
3160 necesario ir al manual RFI para buscar qué propiedades se encuentran
3161 disponibles para el objeto en cuestión.
3162
3163
3164 Aquí presentamos una lista de los objetos que es más probable que
3165 estén implicados en colisiones, con el nombre del objeto que habría
3166 que buscar en el RFI para descubrir qué propiedades se deben usar para
3167 moverlos.
3168
3169 @multitable @columnfractions .5 .5
3170 @headitem Tipo de objeto           @tab Nombre del objeto
3171 @item Articulaciones            @tab @code{Script}
3172 @item Barras                    @tab @code{Beam}
3173 @item Dinámica (verticalmente)  @tab @code{DynamicLineSpanner}
3174 @item Dinámica (horizontalmente)   @tab @code{DynamicText}
3175 @item Digitaciones                @tab @code{Fingering}
3176 @item Llamadas de ensayo y textuales   @tab @code{RehearsalMark}
3177 @item Ligaduras de expresión    @tab @code{Slur}
3178 @item Texto, por ejemplo @code{^"texto"}  @tab @code{TextScript}
3179 @item Ligaduras de unión        @tab @code{Tie}
3180 @item Grupos de valoración especial @tab @code{TupletBracket}
3181 @end multitable
3182
3183
3184 @node Arreglar notación con superposiciones
3185 @subsection Arreglar notación con superposiciones
3186 @translationof Fixing overlapping notation
3187
3188 Veamos ahora cómo pueden ser de ayuda las propiedades que hemos visto
3189 en la sección anterior, para resolver problemas de notación que se
3190 superpone.
3191
3192 @menu
3193 * La propiedad padding (relleno)::
3194 * La propiedad right-padding (relleno por la derecha)::
3195 * La propiedad staff-padding (relleno de pentagrama)::
3196 * La propiedad self-alignment-X (auto-alineación en X)::
3197 * La propiedad staff-position (posición en el pentagrama)::
3198 * La propiedad extra-offset (desplazamiento adicional)::
3199 * La propiedad positions (posiciones)::
3200 * La propiedad force-hshift (forzar desplazamiento horizontal)::
3201 @end menu
3202
3203 @node La propiedad padding (relleno)
3204 @unnumberedsubsubsec La propiedad @code{padding} (relleno)
3205 @translationof The padding property
3206
3207 @cindex relleno
3208 @cindex arreglar notación que se superpone
3209 @cindex superpuesta, notación
3210
3211 La propiedad @code{padding} se puede ajustar para aumentar (o
3212 disminuir) la distancia entre símbolos impresos encima o debajo de las
3213 notas.
3214
3215 @cindex Script, ejemplo de sobreescritura
3216 @cindex padding, propiedad, ejemplo
3217
3218 @lilypond[quote,fragment,verbatim]
3219 c'2\fermata
3220 \override Script.padding = #3
3221 b2\fermata
3222 @end lilypond
3223
3224 @cindex MetronomeMark, ejemplo de sobreescritura
3225 @cindex padding, propiedad, ejemplo
3226
3227 @lilypond[quote,fragment,verbatim]
3228 % This will not work, see below
3229 \override MetronomeMark.padding = #3
3230 \tempo 4 = 120
3231 c'1 |
3232 % This works
3233 \override Score.MetronomeMark.padding = #3
3234 \tempo 4 = 80
3235 d'1 |
3236 @end lilypond
3237
3238 Observe en el segundo ejemplo la gran importancia que tiene saber qué
3239 contexto maneja un determinado objeto.  Puesto que el objeto
3240 @code{MetronomeMark} se maneja dentro del contexto @code{Score}, los
3241 cambios de propiedades en el contexto @code{Voice} pasarán
3242 inadvertidos.  Para ver más detalles, consulte @ruser{Modificar las propiedades}.
3243
3244 Si la propiedad de relleno @code{padding} de un objeto se incrementa
3245 cuando dicho objeto se encuentra en una pila de objetos que se están
3246 colocando de acuerdo a su prioridad @code{outside-staff-priority},
3247 entonces ese objeto se moverá, y también todos los que están por fuera
3248 de él.
3249
3250
3251 @node La propiedad right-padding (relleno por la derecha)
3252 @unnumberedsubsubsec La propiedad @code{right-padding} (relleno por la derecha)
3253 @translationof The right-padding property
3254
3255 @cindex right-padding, propiedad
3256
3257 La propiedad @code{right-padding} afecta al espaciado entre la
3258 alteración y la nota a que se aplica.  Normalmente no es necesaria,
3259 pero el espaciado predeterminado puede estar mal para ciertos glifos
3260 de alteraciones o combinaciones de glifos que se usan en música
3261 microtonal.  Éstos tienen que introducirse sobreescribiendo el sello
3262 de la alteración con un elemento de marcado que contenga los símbolos
3263 deseados, así:
3264
3265 @cindex Accidental, ejemplo de sobreescritura
3266 @cindex text, propiedad, ejemplo
3267 @cindex stencil, propiedad, ejemplo
3268 @cindex AccidentalPlacement, ejemplo de sobreescritura
3269 @cindex right-padding, propiedad, ejemplo
3270
3271
3272 @lilypond[quote,ragged-right,verbatim]
3273 sesquisharp = \markup { \sesquisharp }
3274 \relative {
3275   c''4
3276   % This prints a sesquisharp but the spacing is too small
3277   \once \override Accidental.stencil = #ly:text-interface::print
3278   \once \override Accidental.text = #sesquisharp
3279   cis4 c
3280   % This improves the spacing
3281   \once \override Score.AccidentalPlacement.right-padding = #0.6
3282   \once \override Accidental.stencil = #ly:text-interface::print
3283   \once \override Accidental.text = #sesquisharp
3284   cis4 |
3285 }
3286 @end lilypond
3287
3288 @noindent
3289 Esto utiliza necesariamente una sobreescritura para el sello de la
3290 alteración que no se estudiará hasta más adelante.  El tipo de sello
3291 debe ser un procedimiento, aquí modificado para que imprima el
3292 contenido de la propiedad @code{text} del objeto @code{Accidental},
3293 que a su vez está establecido como un signo de sesquisostenido.
3294 Entonces el signo se puede separar de la cabeza de la nota
3295 sobreescribiendo @code{right-padding}.
3296
3297 @noindent
3298
3299 @node La propiedad staff-padding (relleno de pentagrama)
3300 @unnumberedsubsubsec La propiedad @code{staff-padding} (relleno de pentagrama)
3301 @translationof The staff-padding property
3302
3303 @cindex alineación de objetos sobre la línea base
3304 @cindex objetos, alineación sobre la línea base
3305
3306 @code{staff-padding} se puede usar para alinear objetos como matices
3307 dinámicos a lo largo de una línea de base a una distancia fija del
3308 pentagrama, siempre que no exista ningún otro elemento de notación
3309 que fuerce una distancia mayor al pentagrama.  No es una propiedad de
3310 @code{DynamicText} sino de @code{DynamicLineSpanner}.  Esto es así
3311 porque la línea de base debe aplicarse por igual a @strong{todas} las
3312 dinámicas, entre ellas las que se han creado como objetos de
3313 extensión.  Así que ésta es la forma de alinear las indicaciones de
3314 matiz en el ejemplo de la sección anterior:
3315
3316 @cindex DynamicText, ejemplo de sobreescritura
3317 @cindex extra-spacing-width, propiedad, ejemplo
3318 @cindex DynamicLineSpanner, ejemplo de sobreescritura
3319 @cindex staff-padding, propiedad, ejemplo
3320
3321 @lilypond[quote,fragment,ragged-right,verbatim]
3322 \override DynamicLineSpanner.staff-padding = #3
3323 \relative { a'4\f b\mf a\p b\mp }
3324 @end lilypond
3325
3326
3327 @node La propiedad self-alignment-X (auto-alineación en X)
3328 @unnumberedsubsubsec La propiedad @code{self-alignment-X} (auto-alineación en X)
3329 @translationof The self-alignment-X property
3330
3331 El ejemplo siguiente muestra cómo ajustar la posición
3332 de un objeto de digitación de cuerda en relación a la plica de una nota
3333 mediante el alineamiento del límite derecho con el punto de referencia
3334 de la nota «padre»:
3335
3336 @cindex StringNumber, ejemplo de sobreescritura
3337 @cindex self-alignment-X, propiedad, ejemplo
3338
3339 @lilypond[quote,fragment,ragged-right,verbatim]
3340 \voiceOne
3341 <a''\2>
3342 \once \override StringNumber.self-alignment-X = #RIGHT
3343 <a''\2>
3344 @end lilypond
3345
3346 @node La propiedad staff-position (posición en el pentagrama)
3347 @unnumberedsubsubsec La propiedad @code{staff-position} (posición en el pentagrama)
3348 @translationof The staff-position property
3349
3350 @cindex objeto, colisión dentro del pentagrama
3351
3352 Los silencios multi-compás en una voz pueden chocar con las notas en
3353 otra voz.  Puesto que estos silencios se tipografían centrados entre
3354 las barras de compás se necesitaría bastante esfuerzo para que
3355 LilyPond averiguara qué otras notas podrían chocar con él, ya que
3356 actualmente todo el manejo de colisiones entre notas y silencios se
3357 hace solamente para notas y silencios que ocurren al mismo tiempo.  He
3358 aquí un ejemplo de colisión de este tipo:
3359
3360 @lilypond[quote,verbatim,ragged-right]
3361 << \relative { c'4 c c c } \\ { R1 } >>
3362 @end lilypond
3363
3364 La mejor solución aquí es mover el silencio multi-compás hacia abajo,
3365 pues el silencio está en la voz dos.  El ajuste predeterminado para
3366 @code{\voiceTwo} (es decir, en la segunda voz de una construcción
3367 @code{<<@{@dots{}@} \\ @{@dots{}@}>>}) es que @code{staff-position} tenga el
3368 valor -4 para MultiMeasureRest, así que tenemos que bajarlo, digamos,
3369 cuatro semi-espacios de pentagrama, al valor @w{@code{-8}}.
3370
3371 @cindex MultiMeasureRest, ejemplo de sobreescritura
3372 @cindex staff-position, propiedad, ejemplo
3373
3374 @lilypond[quote,verbatim,ragged-right]
3375 <<
3376   \relative { c'4 c c c }
3377   \\
3378   \override MultiMeasureRest.staff-position = #-8
3379   { R1 }
3380 >>
3381 @end lilypond
3382
3383 Esto es mejor que utilizar, por ejemplo, @code{extra-offset}, porque
3384 la línea adicional por encima del silencio se inserta automáticamente.
3385
3386 @node La propiedad extra-offset (desplazamiento adicional)
3387 @unnumberedsubsubsec La propiedad @code{extra-offset} (desplazamiento adicional)
3388 @translationof The extra-offset property
3389
3390 @cindex posicionar objetos
3391 @cindex posicionar grobs
3392 @cindex objetos, posicionar
3393 @cindex grobs, posicionar
3394
3395 La propiedad @code{extra-offset} da un completo control sobre el
3396 posicionamiento de un objeto tanto vertical como horizontalmente.
3397
3398 En el ejemplo siguiente, la segunda digitación se desplaza ligeramente
3399 a la izquierda, y 1.8 espacios de pentagrama hacia abajo:
3400
3401 @cindex fingering (digitación), ejemplo de sobreescritura
3402 @cindex extra-offset, propiedad, ejemplo
3403
3404 @lilypond[quote,fragment,verbatim]
3405 f'4-5
3406 \once \override Fingering.extra-offset = #'(-0.3 . -1.8)
3407 f'4-5
3408 @end lilypond
3409
3410
3411 @node La propiedad positions (posiciones)
3412 @unnumberedsubsubsec La propiedad @code{positions} (posiciones)
3413 @translationof The positions property
3414
3415 @cindex controlar manualmente grupos especiales, ligaduras y barras
3416 @cindex manual, control, de grupos especiales, ligaduras y barras
3417 @cindex grupos especiales, barras de, control manual
3418 @cindex ligaduras de expresión, control manual
3419 @cindex ligaduras de fraseo, control manual
3420 @cindex barras de corchea, control manual
3421
3422 La propiedad @code{positions} permite controlar manualmente la
3423 posición vertical y de ahí también la inclinación de los tresillos,
3424 ligaduras de expresión y de fraseo, y barras de corchea.
3425
3426 He aquí un ejemplo en el que las ligaduras de fraseo y de expresión
3427 chocan entre sí:
3428
3429 @lilypond[quote,verbatim,ragged-right]
3430 \relative { a'8 \( ( a'16 ) a \) }
3431 @end lilypond
3432
3433 @cindex PhrasingSlur, ejemplo de sobreescritura
3434 @cindex positions, propiedad, ejemplo
3435
3436 @noindent
3437 Una posibilidad sería mover los dos extremos de la ligadura de fraseo
3438 hacia arriba.  Podemos tratar de establecer el extremo izquierdo a 2.5
3439 espacios de pentagrama por encima de la tercera línea y el extremo
3440 derecho a 4.5 también hacia arriba, y LilyPond seleccionaría la
3441 ligadura de fraseo de entre las candidatas que ha encontrado con sus
3442 extremos más cercanos a éstos:
3443
3444 @lilypond[quote,verbatim,fragment,ragged-right]
3445 \once \override PhrasingSlur.positions = #'(2.5 . 4.5)
3446 a'8 \( ( a''16 ) a'' \)
3447 @end lilypond
3448
3449 Esto supone una mejora, pero ¿por qué no bajar un poco el extremo
3450 derecho de la ligadura de expresión?  Si lo probamos, veremos que no
3451 se puede hacer así.  Ello es a causa de que no existen ligaduras de
3452 expresión candidatas que estén más bajas que la que ya se ha
3453 seleccionado, y en este caso la propiedad @code{positions} no tiene
3454 ningún efecto.  Sin embargo, las ligaduras de unión, expresión y
3455 fraseo @emph{se pueden} colocar y conformar de manera muy exacta
3456 cuando se necesita.  Para aprender la manera de hacerlo, consulte
3457 @ruser{Modificación de ligaduras de unión y de expresión}.
3458
3459 Presentamos otro ejemplo.  Vemos que la barra
3460 choca con las ligaduras:
3461
3462 @lilypond[quote,verbatim,ragged-right]
3463 {
3464   \time 4/2
3465   <<
3466     \relative { c'1~ 2. e8 f }
3467     \\
3468     \relative {
3469       e''8 e e e
3470       e e e e
3471       f2 g
3472     }
3473   >>
3474   <<
3475     \relative { c'1~ 2. e8 f }
3476     \\
3477     \relative {
3478       e''8 e e e
3479       e e e e
3480       f2 g
3481     }
3482   >>
3483 }
3484 @end lilypond
3485
3486 @noindent
3487 Esto se puede resolver manualmente elevando los dos extremos de la
3488 barra desde su posición a 1.81 espacios de pentagrama bajo la línea
3489 central hasta, digamos, 1 espacio:
3490
3491 @cindex Beam, ejemplo de sobreescritura
3492 @cindex positions, propiedad, ejemplo
3493
3494 @lilypond[quote,verbatim,ragged-right]
3495 {
3496   \time 4/2
3497   <<
3498     \relative { c'1~ 2. e8 f }
3499     \\
3500     \relative {
3501       \override Beam.positions = #'(-1 . -1)
3502       e''8 e e e
3503       e e e e
3504       f2 g
3505     }
3506   >>
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       \revert Beam.positions
3515     }
3516   >>
3517 }
3518 @end lilypond
3519
3520 @noindent
3521 Observe que la sobreescritura sigue aplicándose en la segunda voz del
3522 segundo compás de corcheas, pero no a ninguna de las barras de la
3523 primera voz, ni siquiera a las que están en el in the later second measure.  As soon as the
3524 override should no longer apply it should be reverted, as shown.
3525
3526 @node La propiedad force-hshift (forzar desplazamiento horizontal)
3527 @unnumberedsubsubsec La propiedad @code{force-hshift} (forzar desplazamiento horizontal)
3528 @translationof The force-hshift property
3529
3530 Ahora podremos ver cómo aplicar las correcciones finales al ejemplo de
3531 Chopin que presentamos al final de @ref{Oigo voces}, que
3532 dejamos con este aspecto:
3533
3534 @lilypond[quote,verbatim,fragment,ragged-right]
3535 \new Staff \relative {
3536   \key aes \major
3537   <<
3538     { c''2 aes4. bes8 }
3539     \\
3540     { <ees, c>2 des }
3541     \\
3542     \\
3543     { aes'2 f4 fes }
3544   >> |
3545   <c ees aes c>1 |
3546 }
3547 @end lilypond
3548
3549 @noindent
3550 Es necesario que la nota interior del primer acorde (el La bemol
3551 de la cuarta voz) no se aparte de la columna vertical de la nota
3552 aguda, por lo que usamos @code{\shiftOff}.
3553
3554 En el segundo acorde preferimos que el Fa esté alineado con el La
3555 bemol y que la nota grave se coloque ligeramente a la derecha para
3556 evitar una colisión de las plicas.  Lo conseguimos ajustando el
3557 valor de @code{force-hshift} en la @code{NoteColumn} del Re bemol
3558 grave para moverlo a la derecha medio espacio de pentagrama, y
3559 fijando @code{force-hshift} para el Fa al vaor cero.  Observe que
3560 usamos @code{\once} para evitar que los ajustes se propaguen más
3561 allá del momento musical inmediato, aunque en este pequeño ejemplo
3562 podrían omitirse el @code{\once} y el segundo @code{\override} de
3563 la cuarta voz.  Ello no supondría una buena práctica.
3564
3565 Presentamos a continuación el resultado final:
3566
3567 @cindex NoteColumn, ejemplo de sobreescritura
3568 @cindex force-hshift, propiedad, ejemplo
3569
3570 @lilypond[quote,verbatim,fragment,ragged-right]
3571 \new Staff \relative {
3572   \key aes \major
3573   <<
3574     { c''2 aes4. bes8 }
3575     \\
3576     { <ees, c>2 \once \override NoteColumn.force-hshift = 0.5 des }
3577     \\
3578     \\
3579     { \once \shiftOff aes'2 \once \shiftOff f4 fes }
3580   >> |
3581   <c ees aes c>1 |
3582 }
3583 @end lilypond
3584
3585
3586 @node Ejemplos reales de música
3587 @subsection Ejemplos reales de música
3588 @translationof Real music example
3589
3590 Finalizaremos esta sección sobre los trucos mostrando los pasos que se
3591 deben tomar para tratar con un ejemplo complicado que necesita varios
3592 trucos para producir el resultado deseado.  El ejemplo se ha escogido
3593 deliberadamente para ilustrar el uso de la Referencia de la Notación
3594 para resolver problemas de notación poco comunes.  No es
3595 representativo del proceso de grabado más usual, por lo que ¡le
3596 recomendamos que no deje que estas dificultades le desanimen!
3597 ¡Afortunadamente, las dificultades como éstas no son muy comunes!
3598
3599 El ejemplo está extraído de la Primera Balada de Chopin, Op. 23,
3600 compases 6 al 9, la transición entre el Lento inicial y el Moderato.
3601 Presentamos en primer lugar el aspecto que queremos que tenga el
3602 resultado, pero para evitar complicar demasiado el ejemplo hemos
3603 quitado las indicaciones dinámicas, las digitaciones y el pedal.
3604
3605 @c The following should appear as music without code
3606 @c This example should not be indexed
3607 @c line-width ensures no break
3608 @lilypond[quote,ragged-right,line-width=6\in]
3609 rhMusic = \relative {
3610   \new Voice {
3611     r2 c''4.\( g8 |
3612     \once \override Tie.staff-position = #3.5
3613     bes1~ |
3614     \bar "||"
3615     \time 6/4
3616     \mergeDifferentlyHeadedOn
3617     \mergeDifferentlyDottedOn
3618     bes2.\tempo "Moderato" r8
3619     <<
3620       { c,8 d fis bes a }
3621       \new Voice {
3622         \voiceTwo
3623         c,8~
3624         % Reposition the c2 to the right of the merged note
3625         \once \override NoteColumn.force-hshift = #1.0
3626         % Move the c2 out of the main note column
3627         % so the merge will work
3628         \shiftOnn
3629         c2
3630       }
3631       \new Voice {
3632         \voiceThree
3633         s8
3634         % Stem on the d2 must be down to permit merging
3635         \stemDown
3636         % Stem on the d2 should be invisible
3637         \tweak Stem.transparent ##t
3638         d2
3639       }
3640       \new Voice {
3641         \voiceFour
3642         s4 fis4.
3643       }
3644     >> |
3645     \mergeDifferentlyHeadedOff
3646     \mergeDifferentlyDottedOff
3647     g2.\)
3648   }
3649 }
3650
3651 lhMusic = \relative {
3652   r2 <c' g ees>2( |
3653   <d g, d>1)\arpeggio |
3654   r2. d,,4 r4 r |
3655   r4
3656 }
3657
3658 \score {
3659   \new PianoStaff <<
3660     \new Staff = "RH"  <<
3661       \key g \minor
3662       \rhMusic
3663     >>
3664     \new Staff = "LH" <<
3665       \key g \minor
3666       \clef "bass"
3667       \lhMusic
3668     >>
3669   >>
3670 }
3671 @end lilypond
3672
3673 Observamos en primer lugar que la parte de la mano derecha del tercer
3674 compás requiere cuatro voces.  Son las cinco corcheas unidas por una
3675 barra, la nota Do ligada, el Re blanca que se funde con el Re corchea,
3676 y el Fa sostenido negra con puntillo, que también está fundida con la
3677 corchea de su misma altura.  Todo lo demás está en una sola voz, así
3678 que lo más fácil es introducir estas tres voces adicionales, en el
3679 momento en que se necesiten y de forma temporal.  Si ha olvidado cómo
3680 hacerlo, lea las secciones @ref{Oigo voces} y @ref{Voces explícitas}.
3681 Aquí tomamos la decisión de utilizar voces instanciadas explícitamente
3682 para el pasaje polifónico, dado que LilyPond es más probable que pueda
3683 evitar las colisiones si todas las voces se instancian explícitamente
3684 de esta forma.
3685
3686 Vamos a comenzar introduciendo las notas como dos variables y
3687 disponiendo la estructura de pentagramas en un bloque Score, y veremos
3688 qué produce LilyPond de forma predeterminada:
3689
3690 @c line-width ensures no break
3691 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3692 rhMusic = \relative {
3693   \new Voice {
3694     r2 c''4. g8 |
3695     bes1~ |
3696     \time 6/4
3697     bes2. r8
3698     % Start polyphonic section of four voices
3699     <<
3700       { c,8 d fis bes a }  % continuation of main voice
3701       \new Voice {
3702         \voiceTwo
3703         c,8~ 2
3704       }
3705       \new Voice {
3706         \voiceThree
3707         s8 d2
3708       }
3709       \new Voice {
3710         \voiceFour
3711         s4 fis4.
3712       }
3713     >> |
3714     g2.  % continuation of main voice
3715   }
3716 }
3717
3718 lhMusic = \relative {
3719   r2 <c' g ees>2 |
3720   <d g, d>1 |
3721   r2. d,,4 r4 r |
3722   r4
3723 }
3724
3725 \score {
3726   \new PianoStaff <<
3727     \new Staff = "RH"  <<
3728       \key g \minor
3729       \rhMusic
3730     >>
3731     \new Staff = "LH" <<
3732       \key g \minor
3733       \clef "bass"
3734       \lhMusic
3735     >>
3736   >>
3737 }
3738 @end lilypond
3739
3740 Todas las notas son correctas, pero el aspecto está lejos de ser
3741 satisfactorio.  La ligadura de unión choca con el cambio de compás,
3742 ciertas notas no se funden correctamente, y faltan algunos elementos de
3743 notación.  En primer lugar trataremos con lo más fácil.  Podemos
3744 añadir fácilmente la ligadura de expresión de la mano izquierda y la
3745 ligadura de fraseo de la mano derecha, pues todo ello se estudió en el
3746 Tutorial.  Al hacerlo así obtenemos:
3747
3748 @c line-width ensures no break
3749 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3750 rhMusic = \relative {
3751   \new Voice {
3752     r2 c''4.\( g8 |
3753     bes1~ |
3754     \time 6/4
3755     bes2. r8
3756     % Start polyphonic section of four voices
3757     <<
3758       { c,8 d fis bes a }  % continuation of main voice
3759       \new Voice {
3760         \voiceTwo
3761         c,8~ 2
3762       }
3763       \new Voice {
3764         \voiceThree
3765         s8 d2
3766       }
3767       \new Voice {
3768         \voiceFour
3769         s4 fis4.
3770       }
3771     >> |
3772     g2.\)  % continuation of main voice
3773   }
3774 }
3775
3776 lhMusic = \relative {
3777   r2 <c' g ees>2( |
3778   <d g, d>1) |
3779   r2. d,,4 r4 r |
3780   r4
3781 }
3782
3783 \score {
3784   \new PianoStaff <<
3785     \new Staff = "RH"  <<
3786       \key g \minor
3787       \rhMusic
3788     >>
3789     \new Staff = "LH" <<
3790       \key g \minor
3791       \clef "bass"
3792       \lhMusic
3793     >>
3794   >>
3795 }
3796 @end lilypond
3797
3798 El primer compás ahora es correcto.  El segundo compás contiene un
3799 arpegio y acaba en una doble barra.  ¿Cómo los hacemos, pues no han
3800 sido mencionados en este Manual de Aprendizaje?  Aquí es donde tenemos
3801 que volver e la Referencia de la Notación.  Buscando la palabra
3802 @q{arpegio} y @q{línea divisoria} en el índice nos muestra rápidamente
3803 que un arpegio se hace añadiendo @code{\arpeggio} a un acorde, y la
3804 doble barra se produce por medio de la instrucción @code{\bar "||"}.
3805 Esto podemos hacerlo fácilmente.  A continuación tenemos que corregir
3806 la colisión entre la ligadura de unión y la indicación de compás.
3807 Esto se hace mejor moviendo la ligadura hacia arriba.  Estudiamos cómo
3808 mover objetos anteriormente en @ref{Mover objetos}, donde dice que
3809 los objetos que están situados de forma relativa al pentagrama se
3810 pueden mover verticalmente
3811 sobreescribiendo su propiedad @code{staff-position}, que
3812 se especifica en unidades de medio espacio de pentagrama respecto de
3813 la línea central del pentagrama.  Así pues, la sobreescritura
3814 siguiente colocada justo antes de la primera nota ligada subirá la
3815 ligadura 3.5 medios espacios de pentagrama por encima de la línea
3816 central:
3817
3818 @code{\once \override Tie.staff-position = #3.5}
3819
3820 Con esto se completa el compás dos, dando como resultado:
3821
3822 @c line-width ensures no break
3823 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3824 rhMusic = \relative {
3825   \new Voice {
3826     r2 c''4.\( g8 |
3827     \once \override Tie.staff-position = #3.5
3828     bes1~ |
3829     \bar "||"
3830     \time 6/4
3831     bes2. r8
3832     % Start polyphonic section of four voices
3833     <<
3834       { c,8 d fis bes a }  % continuation of main voice
3835       \new Voice {
3836         \voiceTwo
3837         c,8~ 2
3838       }
3839       \new Voice {
3840         \voiceThree
3841         s8 d2
3842       }
3843       \new Voice {
3844         \voiceFour
3845         s4 fis4.
3846       }
3847     >> |
3848     g2.\)  % continuation of main voice
3849   }
3850 }
3851
3852 lhMusic = \relative {
3853   r2 <c' g ees>2( |
3854   <d g, d>1)\arpeggio |
3855   r2. d,,4 r4 r |
3856   r4
3857 }
3858
3859 \score {
3860   \new PianoStaff <<
3861     \new Staff = "RH"  <<
3862       \key g \minor
3863       \rhMusic
3864     >>
3865     \new Staff = "LH" <<
3866       \key g \minor
3867       \clef "bass"
3868       \lhMusic
3869     >>
3870   >>
3871 }
3872 @end lilypond
3873
3874 Vayamos ahora al tercer compás y comienzo de la sección Moderato.  El
3875 tutorial nos enseñó cómo escribir una indicación de tempo mediante la
3876 instrucción @code{\tempo}, por lo que añadir @qq{Moderato} es fácil.  Pero ahora ¿cómo fundimos notas que están en distintas
3877 voces?  Aquí es donde debemos volver a buscar ayuda en el manual de
3878 Referencia de la notación. Al buscar la palabra @qq{merge} (mezcla) en
3879 el índice de la Referencia de la notación llegamos rápidamente a las
3880 instrucciones para mezclar notas con distinta cabeza y con o sin
3881 puntillo, en @ruser{Resolución de las colisiones}.  En nuestro ejemplo tenemos
3882 que fusionar ambos tipos de nota en el transcurso de la sección
3883 polifónica del compás 3; por tanto, en virtud de la información que
3884 aparece en la Referencia de la Notación, escribimos
3885
3886 @example
3887 \mergeDifferentlyHeadedOn
3888 \mergeDifferentlyDottedOn
3889 @end example
3890
3891 @noindent
3892 al principio de la sección, y
3893
3894 @example
3895 \mergeDifferentlyHeadedOff
3896 \mergeDifferentlyDottedOff
3897 @end example
3898
3899 @noindent
3900 al final, dando como resultado:
3901
3902 @c line-width ensures no break
3903 @lilypond[quote,ragged-right,line-width=6\in]
3904 rhMusic = \relative {
3905   \new Voice {
3906     r2 c''4.\( g8 |
3907     \once \override Tie.staff-position = #3.5
3908     bes1~ |
3909     \bar "||"
3910     \time 6/4
3911     bes2.\tempo "Moderato" r8
3912     \mergeDifferentlyHeadedOn
3913     \mergeDifferentlyDottedOn
3914     % Start polyphonic section of four voices
3915     <<
3916       { c,8 d fis bes a }  % continuation of main voice
3917       \new Voice {
3918         \voiceTwo
3919         c,8~ 2
3920       }
3921       \new Voice {
3922         \voiceThree
3923         s8 d2
3924       }
3925       \new Voice {
3926         \voiceFour
3927         s4 fis4.
3928       }
3929     >> |
3930     \mergeDifferentlyHeadedOff
3931     \mergeDifferentlyDottedOff
3932     g2.\)  % continuation of main voice
3933   }
3934 }
3935
3936 lhMusic = \relative {
3937   r2 <c' g ees>2( |
3938   <d g, d>1)\arpeggio |
3939   r2. d,,4 r4 r |
3940   r4
3941 }
3942
3943 \score {
3944   \new PianoStaff <<
3945     \new Staff = "RH"  <<
3946       \key g \minor
3947       \rhMusic
3948     >>
3949     \new Staff = "LH" <<
3950       \key g \minor
3951       \clef "bass"
3952       \lhMusic
3953     >>
3954   >>
3955 }
3956 @end lilypond
3957
3958 Estas sobreescrituras han fundido los dos Fa sostenido, pero no los
3959 dos Re.  ¿Por qué no?  La respuesta está en la misma sección de la
3960 Referencia de la Notación: las notas que se fusionan deben tener las
3961 plicas en direcciones opuestas y dos notas no se pueden fusionar bien
3962 si hay una tercera nota en la misma columna.  Aquí los dos Re tienen
3963 las plicas hacia arriba y hay una tercera nota: el Do.  Sabemos cómo
3964 cambiar la dirección de la plica usando @code{\stemDown}, y la
3965 Referencia de la Notación también explica cómo mover el Do: aplicar un
3966 desplazamiento usando una de las instrucciones @code{\shift}.  Pero
3967 ¿cuál?  El Do está en la voz dos que tiene desactivado el
3968 desplazamiento, y los dos Re están en las voces uno y tres, que tienen
3969 el desplazamiento desactivado y activado, respectivamente.  Por ello
3970 tenemos que desplazar el Do un nivel más todavía, usando
3971 @code{\shiftOnn} para evitar que interfiera con los dos Re.  Al
3972 aplicar estos cambios obtenemos:
3973
3974 @cindex Tie, ejemplo de sobreescritura
3975 @cindex staff-position, propiedad, ejemplo
3976
3977 @c line-width ensures no break
3978 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3979 rhMusic = \relative {
3980   \new Voice {
3981     r2 c''4.\( g8 |
3982     \once \override Tie.staff-position = #3.5
3983     bes1~ |
3984     \bar "||"
3985     \time 6/4
3986     bes2.\tempo "Moderato" r8
3987     \mergeDifferentlyHeadedOn
3988     \mergeDifferentlyDottedOn
3989     % Start polyphonic section of four voices
3990     <<
3991       { c,8 d fis bes a }  % continuation of main voice
3992       \new Voice {
3993         \voiceTwo
3994         % Move the c2 out of the main note column
3995         % so the merge will work
3996         c,8~ \shiftOnn c2
3997       }
3998       \new Voice {
3999         \voiceThree
4000         % Stem on the d2 must be down to permit merging
4001         s8 \stemDown d2
4002       }
4003       \new Voice {
4004         \voiceFour
4005         s4 fis4.
4006       }
4007     >> |
4008     \mergeDifferentlyHeadedOff
4009     \mergeDifferentlyDottedOff
4010     g2.\)  % continuation of main voice
4011   }
4012 }
4013
4014 lhMusic = \relative {
4015   r2 <c' g ees>2( |
4016   <d g, d>1)\arpeggio |
4017   r2. d,,4 r4 r |
4018   r4
4019 }
4020
4021 \score {
4022   \new PianoStaff <<
4023     \new Staff = "RH"  <<
4024       \key g \minor
4025       \rhMusic
4026     >>
4027     \new Staff = "LH" <<
4028       \key g \minor
4029       \clef "bass"
4030       \lhMusic
4031     >>
4032   >>
4033 }
4034 @end lilypond
4035
4036 Ya casi está.  Solamente quedan dos problemas: la plica hacia abajo
4037 sobre el Re fusionado no tendría que estar ahí, y el Do estaría mejor
4038 colocado a la derecha de los Re.  Sabemos cómo hacer las dos cosas a
4039 partir de trucos anteriores: hacemos la plica transparente, y movemos
4040 el Do con la propiedad @code{force-hshift}.  Aquí tenemos el resultado
4041 final:
4042
4043 @cindex NoteColumn, ejemplo de sobreescritura
4044 @cindex force-hshift, propiedad, ejemplo
4045 @cindex Stem, ejemplo de sobreescritura
4046 @cindex transparent, propiedad, ejemplo
4047
4048 @c line-width ensures no break
4049 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
4050 rhMusic = \relative {
4051   \new Voice {
4052     r2 c''4.\( g8 |
4053     \once \override Tie.staff-position = #3.5
4054     bes1~ |
4055     \bar "||"
4056     \time 6/4
4057     bes2.\tempo "Moderato" r8
4058     \mergeDifferentlyHeadedOn
4059     \mergeDifferentlyDottedOn
4060     % Start polyphonic section of four voices
4061     <<
4062       { c,8 d fis bes a }  % continuation of main voice
4063       \new Voice {
4064         \voiceTwo
4065         c,8~
4066         % Reposition the c2 to the right of the merged note
4067         \once \override NoteColumn.force-hshift = #1.0
4068         % Move the c2 out of the main note column
4069         % so the merge will work
4070         \shiftOnn
4071         c2
4072       }
4073       \new Voice {
4074         \voiceThree
4075         s8
4076         % Stem on the d2 must be down to permit merging
4077         \stemDown
4078         % Stem on the d2 should be invisible
4079         \tweak Stem.transparent ##t
4080         d2
4081       }
4082       \new Voice {
4083         \voiceFour
4084         s4 fis4.
4085       }
4086     >> |
4087     \mergeDifferentlyHeadedOff
4088     \mergeDifferentlyDottedOff
4089     g2.\)  % continuation of main voice
4090   }
4091 }
4092
4093 lhMusic = \relative {
4094   r2 <c' g ees>2( |
4095   <d g, d>1)\arpeggio |
4096   r2. d,,4 r4 r |
4097   r4
4098 }
4099
4100 \score {
4101   \new PianoStaff <<
4102     \new Staff = "RH"  <<
4103       \key g \minor
4104       \rhMusic
4105     >>
4106     \new Staff = "LH" <<
4107       \key g \minor
4108       \clef "bass"
4109       \lhMusic
4110     >>
4111   >>
4112 }
4113 @end lilypond
4114
4115
4116 @node Trucajes adicionales
4117 @section Trucajes adicionales
4118 @translationof Further tweaking
4119
4120 @menu
4121 * Otras aplicaciones de los trucos::
4122 * Uso de variables para los ajustes de disposición::
4123 * Hojas de estilo::
4124 * Otras fuentes de información::
4125 * Trucos avanzados con Scheme::
4126 @end menu
4127
4128 @node Otras aplicaciones de los trucos
4129 @subsection Otras aplicaciones de los trucos
4130 @translationof Other uses for tweaks
4131
4132 @menu
4133 * Unir notas entre voces distintas::
4134 * Simulación de un calderón en el MIDI::
4135 @end menu
4136
4137 @cindex eliminar objetos
4138 @cindex objetos, eliminar
4139
4140 @node Unir notas entre voces distintas
4141 @unnumberedsubsubsec Unir notas entre voces distintas
4142 @translationof Tying notes across voices
4143
4144 @cindex ligar notas entre voces distintas
4145
4146 El ejemplo siguiente muestra cómo conectar notas que están en
4147 distintas voces utilizando ligaduras de unión.  Normalmente sólo se
4148 pueden conectar mediante ligaduras de unión notas que estén en la
4149 misma voz.  Usando dos voces, con las notas ligadas en una de ellas:
4150
4151 @lilypond[quote]
4152 << { b'8~ 8\noBeam } \\ { b'8[ g'] } >>
4153 @end lilypond
4154
4155 @noindent
4156 y borrando la primera plica (con su corchete) hacia arriba en esa voz, da la impresión
4157 de que la ligadura se cruza entre las voces:
4158
4159 @funindex \omit
4160 @cindex Stem, example of removing
4161 @cindex Flag, example of removing
4162 @cindex @code{\omit}, example
4163 @cindex example of @code{\omit}
4164
4165 @lilypond[quote,verbatim]
4166 <<
4167   {
4168     \once \omit Stem
4169     \once \omit Flag
4170     b'8~ 8\noBeam
4171   }
4172 \\
4173   { b'8[ g'] }
4174 >>
4175 @end lilypond
4176
4177 @seealso
4178 Learning Manual:
4179 @ref{The once prefix,,The @code{@bs{}once} prefix},
4180 @ref{The stencil property}.
4181
4182
4183 @node Simulación de un calderón en el MIDI
4184 @unnumberedsubsubsec Simulación de un calderón en el MIDI
4185 @translationof Simulating a fermata in MIDI
4186
4187 @cindex sello, uso de la propiedad
4188 @cindex fermata, realización en MIDI
4189
4190 Para los objetos fuera-del-pentagrama, normalmente es mejor
4191 sobreescribir la propiedad @code{stencil} («sello») del objeto que su
4192 propiedad @code{transparent} cuando desee quitarlos de la salida
4193 impresa.  Mediante el establecimiento de la propiedad @code{stencil}
4194 de un objeto al valor @code{#f} podemos quitar el objeto por completo
4195 de la salida impresa.  Esto significa que no tiene efecto sobre la
4196 colocación de otros objetos que pudieran colocarse en relación a él.
4197
4198 Por ejemplo, si quisiéramos cambiar la indicación metronómica con el
4199 propósito de simular un calderón en la salida MIDI, seguramente no
4200 querríamos que la indicación metronómica apareciese en la salida
4201 impresa, y no querríamos influir sobre la separación entre los dos
4202 sistemas ni sobre la colocación de las anotaciones adyacentes sobre el
4203 pentagrama.  Por lo tanto, establecer su propiedad @code{stencil} al
4204 valor @code{#f} sería la mejor manera.  Mostramos aquí el efecto de
4205 los dos métodos:
4206
4207 @cindex MetronomeMark, ejemplo de sobreescritura
4208 @cindex transparent, propiedad, ejemplo
4209
4210 @lilypond[quote,verbatim,ragged-right]
4211 \score {
4212   \relative {
4213     % Visible tempo marking
4214     \tempo 4=120
4215     a'4 a a
4216     \once \hide Score.MetronomeMark
4217     % Invisible tempo marking to lengthen fermata in MIDI
4218     \tempo 4=80
4219     a4\fermata |
4220     % New tempo for next section
4221     \tempo 4=100
4222     a4 a a a |
4223   }
4224   \layout { }
4225   \midi { }
4226 }
4227 @end lilypond
4228
4229 @cindex MetronomeMark, ejemplo de sobreescritura
4230 @cindex stencil, propiedad, ejemplo
4231
4232 @lilypond[quote,verbatim,ragged-right]
4233 \score {
4234   \relative {
4235     % Visible tempo marking
4236     \tempo 4=120
4237     a'4 a a
4238     \once \omit Score.MetronomeMark
4239     % Invisible tempo marking to lengthen fermata in MIDI
4240     \tempo 4=80
4241     a4\fermata |
4242     % New tempo for next section
4243     \tempo 4=100
4244     a4 a a a |
4245   }
4246   \layout { }
4247   \midi { }
4248 }
4249 @end lilypond
4250
4251 @noindent
4252 Ambos métodos quitan de la salida impresa la indicación metronómica
4253 que alarga el calderón, y los dos afectan al tempo del MIDI tal y como
4254 queríamos, pero la indicación metronómica transparente de la primera
4255 línea fuerza una colocación muy alta de la indicación de tempo que
4256 sigue, mientras que la segunda (con el sello suprimido) no lo hace.
4257
4258 @seealso
4259 Glosario musical:
4260 @rglos{system}.
4261
4262 @node Uso de variables para los ajustes de disposición
4263 @subsection Uso de variables para los ajustes de disposición
4264 @translationof Using variables for layout adjustments
4265
4266 @cindex variables, usar para sobreescrituras
4267 @cindex sobreescrituras, usar variablas para
4268 @cindex ajustes, usar variables para
4269 @cindex ajustes de disposición, usar variables para hacer
4270
4271 Las instrucciones de sobreescritura son con frecuencia largas y
4272 tediosas de escribir, y se tienen que escribir de forma absolutamente
4273 correcta.  Si las mismas sobreescrituras se van a utilizar muchas
4274 veces, podría merecer la pena definir variables para guardarlas.
4275
4276 Supongamos que queremos realzar ciertas palabras de la letra de una
4277 canción imprimiéndolas en cursiva y negrita.  Las instrucciones
4278 @code{\italic} y @code{\bold} sólo funcionan dentro de la letra de las
4279 canciones si están incluidas, junto con la palabra o palabras que se
4280 pretenden modificar, dentro de un @code{\markup}, lo que las hace
4281 tediosas de escribir. La necesidad de incluir las propias palabras
4282 impide que se puedan usar en variables simples. ¿Podríamos, como
4283 alternativa, utilizar las instrucciones @code{\override} y
4284 @code{\revert}?
4285
4286 @example
4287 @code{\override Lyrics.LyricText.font-shape = #'italic}
4288 @code{\override Lyrics.LyricText.font-series = #'bold}
4289
4290 @code{\revert Lyrics.LyricText.font-shape}
4291 @code{\revert Lyrics.LyricText.font-series}
4292 @end example
4293
4294 Estas instrucciones también serían extremadamente tediosas de escribir
4295 si hubiera muchas palabras que quisiéramos subrayar.  Pero sí
4296 @emph{podemos} definirlas como dos variables y usarlas para delimitar
4297 las palabras que destacar.  Otra ventaja de la utilización de
4298 variables para estas sobreescrituras es que ya no son necesarios los
4299 espacios que rodean al punto, puesto que no se interpretan
4300 directamente en el modo @code{\lyricmode}.  He aquí un ejemplo de
4301 esto, aunque en la práctica quizá elegiríamos unos nombres de variable
4302 más cortos para que fueran más rápidos de teclear:
4303
4304 @cindex LyricText, ejemplo de sobreescritura
4305 @cindex font-shape, propiedad, ejemplo
4306 @cindex font-series, propiedad, ejemplo
4307
4308 @lilypond[quote,verbatim]
4309 emphasize = {
4310   \override Lyrics.LyricText.font-shape = #'italic
4311   \override Lyrics.LyricText.font-series = #'bold
4312 }
4313
4314 normal = {
4315   \revert Lyrics.LyricText.font-shape
4316   \revert Lyrics.LyricText.font-series
4317 }
4318
4319 global = { \key c \major \time 4/4 \partial 4 }
4320
4321 SopranoMusic = \relative { c'4 | e4. e8 g4 g    | a4   a   g  }
4322 AltoMusic    = \relative { c'4 | c4. c8 e4 e    | f4   f   e  }
4323 TenorMusic   = \relative  { e4 | g4. g8 c4.  b8 | a8 b c d e4 }
4324 BassMusic    = \relative  { c4 | c4. c8 c4 c    | f8 g a b c4 }
4325
4326 VerseOne = \lyrics {
4327   E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save,
4328 }
4329
4330 VerseTwo = \lyricmode {
4331   O | \once \emphasize Christ, whose voice the | wa -- ters heard,
4332 }
4333
4334 VerseThree = \lyricmode {
4335   O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood
4336 }
4337
4338 VerseFour = \lyricmode {
4339   O | \emphasize Tri -- ni -- ty \normal of | love and pow'r
4340 }
4341
4342 \score {
4343   \new ChoirStaff <<
4344     \new Staff <<
4345       \clef "treble"
4346       \new Voice = "Soprano"  { \voiceOne \global \SopranoMusic }
4347       \new Voice = "Alto" { \voiceTwo \AltoMusic }
4348       \new Lyrics \lyricsto "Soprano" { \VerseOne }
4349       \new Lyrics \lyricsto "Soprano" { \VerseTwo }
4350       \new Lyrics \lyricsto "Soprano" { \VerseThree }
4351       \new Lyrics \lyricsto "Soprano" { \VerseFour }
4352     >>
4353     \new Staff <<
4354       \clef "bass"
4355       \new Voice = "Tenor" { \voiceOne \TenorMusic }
4356       \new Voice = "Bass"  { \voiceTwo \BassMusic }
4357     >>
4358   >>
4359 }
4360 @end lilypond
4361
4362
4363 @node Hojas de estilo
4364 @subsection Hojas de estilo
4365 @translationof Style sheets
4366
4367 La salida que produce LilyPond se puede modificar profundamente;
4368 consulte @ref{Trucar la salida} para leer detalles sobre este asunto.
4369 Pero ¿qué ocurre si tiene muchos archivos a los que les quiere aplicar
4370 sus propios trucos?  O ¿qué ocurre si, sencillamente, quiere separar
4371 los trucos de la propia música?  Todo esto es bastante fácil de
4372 conseguir.
4373
4374 Veamos un ejemplo.  No se preocupe si no entiende
4375 las partes que tienen todos los @code{#()}.  Esto se explicará en
4376 @ref{Trucos avanzados con Scheme}.
4377
4378 @lilypond[quote,verbatim,ragged-right]
4379 mpdolce =
4380   \tweak self-alignment-X #-0.6
4381   #(make-dynamic-script
4382     #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4383
4384 inst =
4385 #(define-music-function
4386      (string)
4387      (string?)
4388    #{ <>^\markup \bold \box #string #})
4389
4390 \relative {
4391   \tempo 4=50
4392   a'4.\mpdolce d8 cis4--\glissando a |
4393   b4 bes a2 |
4394   \inst "Clarinet"
4395   cis4.\< d8 e4 fis |
4396   g8(\! fis)-. e( d)-. cis2 |
4397 }
4398 @end lilypond
4399
4400 Hagamos algo respecto a las definiciones @code{mpdolce} e
4401 @code{inst}.  Éstas producen la salida que deseamos, pero quizá las
4402 querríamos utilizar en otra pieza.  Podríamos simplemente copiarlas y
4403 pegarlas al principio de cada archivo, pero sería bastante molesto.
4404 También hace que se queden las definiciones a la vista dentro de
4405 nuestros archivos de música, y yo personalmente encuentro todos los
4406 @code{#()} bastante poco estéticos.  Los vamos a esconder dentro de
4407 otro archivo:
4408
4409 @example
4410 %%% guardar esto en un archivo con el nombre "definiciones.ily"
4411 mpdolce =
4412   \tweak self-alignment-X #-0.6
4413   #(make-dynamic-script
4414     #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4415
4416 inst =
4417 #(define-music-function
4418      (string)
4419      (string?)
4420    #@{ <>^\markup \bold \box #string #@})
4421 @end example
4422
4423 Haremos referencia a este archivo utilizando la instrucción
4424 @code{\include} al principio del archivo de música (la extensión
4425 @code{.ily} se utiliza para distinguir este archivo de inclusión --que
4426 se supone que no debe ser procesado de forma independiente-- del
4427 archivo principal).  Ahora modificaremos la música (guardemos este
4428 archivo como @file{musica.ly}).
4429
4430 @c  We have to do this awkward example/lilypond-non-verbatim
4431 @c  because we can't do the \include stuff in the manual.
4432
4433 @example
4434 \include "definiciones.ily"
4435
4436 \relative @{
4437   \tempo 4=50
4438   a'4.\mpdolce d8 cis4--\glissando a |
4439   b4 bes a2 |
4440   \inst "Clarinete"
4441   cis4.\< d8 e4 fis |
4442   g8(\! fis)-. e( d)-. cis2 |
4443 @}
4444 @end example
4445
4446 @lilypond[quote,ragged-right]
4447 mpdolce =
4448   \tweak self-alignment-X #-0.6
4449   #(make-dynamic-script
4450     #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4451
4452 inst =
4453 #(define-music-function
4454      (string)
4455      (string?)
4456    #{ <>^\markup \bold \box #string #})
4457
4458 \relative {
4459   \tempo 4=50
4460   a'4.\mpdolce d8 cis4--\glissando a |
4461   b4 bes a2 |
4462   \inst "Clarinet"
4463   cis4.\< d8 e4 fis |
4464   g8(\! fis)-. e( d)-. cis2 |
4465 }
4466 @end lilypond
4467
4468 Eso tiene mejor aspecto, pero haremos algunos cambios más.  El
4469 glissando es difícil de ver, así que lo haremos más grueso y lo
4470 acercaremos a las cabezas de las notas.  Pondremos la indicación
4471 metronómica encima de la clave, en lugar de ir encima de la primera
4472 nota.  Y por último, mi profesor de composición odia las indicaciones
4473 de compás @q{C}, así que la convertiremos en @q{4/4}.
4474
4475 Sin embargo, no debemos cambiar el archivo @file{musica.ly}.
4476 Sustituyamos nuestro archivo @file{definiciones.ily} con éste:
4477
4478 @example
4479 %%%  definiciones.ily
4480 mpdolce =
4481   \tweak self-alignment-X #-0.6
4482   #(make-dynamic-script
4483     #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4484
4485 inst =
4486 #(define-music-function
4487      (string)
4488      (string?)
4489    #@{ <>^\markup \bold \box #string #@})
4490
4491 \layout@{
4492   \context @{
4493     \Score
4494     \override MetronomeMark.extra-offset = #'(-5 . 0)
4495     \override MetronomeMark.padding = #'3
4496   @}
4497   \context @{
4498     \Staff
4499     \override TimeSignature.style = #'numbered
4500   @}
4501   \context @{
4502     \Voice
4503     \override Glissando.thickness = #3
4504     \override Glissando.gap = #0.1
4505   @}
4506 @}
4507 @end example
4508
4509 @lilypond[quote,ragged-right]
4510 mpdolce =
4511   \tweak self-alignment-X #-0.6
4512   #(make-dynamic-script
4513     #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4514
4515 inst =
4516 #(define-music-function
4517      (string)
4518      (string?)
4519    #{ <>^\markup \bold \box #string #})
4520
4521 \layout{
4522   \context {
4523     \Score
4524     \override MetronomeMark.extra-offset = #'(-5 . 0)
4525     \override MetronomeMark.padding = #'3
4526   }
4527   \context {
4528     \Staff
4529     \override TimeSignature.style = #'numbered
4530   }
4531   \context {
4532     \Voice
4533     \override Glissando.thickness = #3
4534     \override Glissando.gap = #0.1
4535   }
4536 }
4537
4538 \relative {
4539   \tempo 4=50
4540   a'4.\mpdolce d8 cis4--\glissando a |
4541   b4 bes a2 |
4542   \inst "Clarinet"
4543   cis4.\< d8 e4 fis |
4544   g8(\! fis)-. e( d)-. cis2 |
4545 }
4546 @end lilypond
4547
4548 ¡Eso tiene un aspecto mucho mejor!  Ahora suponga que quiere publicar
4549 esta pieza.  A mi profesor de composición no le gustan las
4550 indicaciones de compás @q{C}, pero yo les tengo cierto cariño.
4551 Copiaremos el archivo actual @file{definiciones.ily} a
4552 @file{publicar-web.ily} y modificaremos éste.  Como el propósito de
4553 esta música es producir un PDF que va a mostrarse en la pantalla,
4554 también vamos a aumentar el tamaño general de la salida.
4555
4556 @example
4557 %%%  publicar-web.ily
4558 mpdolce =
4559   \tweak self-alignment-X #-0.6
4560   #(make-dynamic-script
4561     #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4562
4563 inst =
4564 #(define-music-function
4565      (string)
4566      (string?)
4567    #@{ <>^\markup \bold \box #string #@})
4568
4569 #(set-global-staff-size 23)
4570
4571 \layout@{
4572   \context @{
4573     \Score
4574     \override MetronomeMark.extra-offset = #'(-5 . 0)
4575     \override MetronomeMark.padding = #'3
4576   @}
4577   \context @{
4578     \Staff
4579   @}
4580   \context @{
4581     \Voice
4582     \override Glissando.thickness = #3
4583     \override Glissando.gap = #0.1
4584   @}
4585 @}
4586 @end example
4587
4588 @lilypond[quote,ragged-right]
4589 mpdolce =
4590   \tweak self-alignment-X #-0.6
4591   #(make-dynamic-script
4592     #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4593
4594 inst =
4595 #(define-music-function
4596      (string)
4597      (string?)
4598    #{ <>^\markup \bold \box #string #})
4599
4600 #(set-global-staff-size 23)
4601
4602 \layout{
4603   \context { \Score
4604     \override MetronomeMark.extra-offset = #'(-5 . 0)
4605     \override MetronomeMark.padding = #'3
4606   }
4607   \context { \Voice
4608     \override Glissando.thickness = #3
4609     \override Glissando.gap = #0.1
4610   }
4611 }
4612
4613 \relative {
4614   \tempo 4=50
4615   a'4.\mpdolce d8 cis4--\glissando a |
4616   b4 bes a2 |
4617   \inst "Clarinet"
4618   cis4.\< d8 e4 fis |
4619   g8(\! fis)-. e( d)-. cis2 |
4620 }
4621 @end lilypond
4622
4623 Ahora, en la música, simplemente sustituyo @code{\include
4624 "definiciones.ily"} por @code{\include "publicar-web.ily"}.  Por
4625 supuesto, podríamos hacer esto aún más práctico.  Podríamos hacer un
4626 archivo @file{definiciones.ily} que contuviera solamente las
4627 definiciones de @code{mpdolce} y de @code{inst}, un archivo
4628 @file{publicar-web.ily} que contuviera solamente la sección
4629 @code{\layout} que se mostró en el ejemplo, y un archivo
4630 @file{universidad.ily} que contendría solamente los trucos para
4631 producir la salida que le gusta a mi profesor.  El comienzo de
4632 @file{musica.ly} tendría entonces este aspecto:
4633
4634 @example
4635 \include "definiciones.ily"
4636
4637 %%%  ¡Quitar el comentario de una sola de estas líneas!
4638 \include "publicar-web.ily"
4639 %\include "universidad.ily"
4640 @end example
4641
4642 Este enfoque puede ser útil incluso si va a producir sólo un conjunto
4643 de particellas.  Yo utilizo media docena de archivos de @q{hojas de
4644 estilo} para mis proyectos.  Comienzo todos los archivos de música con
4645 @code{\include "../global.ily"}, que contiene
4646
4647 @example
4648 %%%   global.ily
4649 \version @w{"@version{}"}
4650
4651 #(ly:set-option 'point-and-click #f)
4652
4653 \include "../iniciar/iniciar-definiciones.ily"
4654 \include "../iniciar/iniciar-disposicion.ily"
4655 \include "../iniciar/iniciar-cabeceras.ily"
4656 \include "../iniciar/iniciar-papel.ily"
4657 @end example
4658
4659
4660 @node Otras fuentes de información
4661 @subsection Otras fuentes de información
4662 @translationof Other sources of information
4663
4664 La documentación del manual de Referencia de Funcionamiento Interno
4665 contiene montañas de información sobre LilyPond, pero se puede obtener
4666 más información aún leyendo los archivos internos de LilyPond.  Para
4667 echarles un vistazo, en primer lugar debe buscar la carpeta
4668 correspondiente a su sistema.  La ubicación de esta carpeta depende
4669 (a) de si consiguió el programa LilyPond descargando un binario
4670 precompilado desde el sitio web lilypond.org o si lo instaló mediante
4671 un gestor de paquetes (es decir, distribuido con GNU/Linux, o instalado
4672 bajo fink o cygwin) o fue compilado a partir de la fuente, y (b) de
4673 qué sistema operativo está utilizando:
4674
4675 @subsubsubheading Descargado de lilypond.org
4676
4677 @itemize @bullet
4678 @item GNU/Linux
4679
4680 Diríjase a
4681 @example
4682 @file{@var{CARPETA_DE_INSTALACIÓN}/lilypond/usr/@/share/lilypond/current/}
4683 @end example
4684
4685 @item MacOS X
4686
4687 Diríjase a
4688 @example
4689 @file{@var{CARPETA_DE_INSTALACIÓN}/LilyPond.app/Contents/@/Resources/share/lilypond/current/}
4690 @end example
4691
4692 bien haciendo @code{cd} hacia este directorio desde el Terminal, o
4693 bien manteniendo pulsada la tecla de Control y haciendo click sobre la
4694 aplicación de LilyPond, y allí eligiendo @q{Mostrar el contenido del
4695 paquete}.
4696
4697 @item Windows
4698
4699 Mediante el Explorador de Windows, diríjase a
4700 @example
4701 @file{@var{CARPETA_DE_INSTALACIÓN}/LilyPond/usr/@/share/lilypond/current/}
4702 @end example
4703
4704 @end itemize
4705
4706 @subsubsubheading Instalado mediante un gestor de paquetes o compilado a partir de la fuente
4707
4708 Diríjase a
4709 @file{@var{PREFIJO}/share/lilypond/@var{X.Y.Z}/}, donde @var{PREFIJO}
4710 se encuentra determinado por su administrador de paquetes o guión
4711 @code{configure}, y @var{X.Y.Z} es el número de la versión de
4712 LilyPond.
4713
4714 @smallspace
4715
4716 Dentro de esta carpeta, las dos subcarpetas interesantes son
4717
4718 @itemize
4719 @item @file{ly/} - contiene archivos en formato LilyPond
4720 @item @file{scm/} - contiene archivos en formato Scheme
4721 @end itemize
4722
4723 Vamos a comenzar observando algunos archivos que están en @file{ly/}.
4724 Abra @file{ly/property-init.ly} con un editor de textos.  El mismo que
4725 usaría normalmente para los archivos @file{.ly} servirá perfectamente.
4726 Este archivo contiene las definiciones de todas las instrucciones
4727 estándar predefinidas de LilyPond, como por ejemplo @code{\tieUp} y
4728 @code{\slurDotted}.  Podrá ver que no son nada más que definiciones de
4729 variables que contienen una o varias instrucciones @code{\override}.
4730 Por ejemplo, @code{\tieDotted} está definido de tal forma que su valor
4731 es:
4732
4733 @example
4734 tieDotted = @{
4735   \override Tie.dash-period = #0.75
4736   \override Tie.dash-fraction = #0.1
4737 @}
4738 @end example
4739
4740 Si no le gustan los valores predeterminados, estas instrucciones
4741 predefinidas se pueden redefinir con facilidad como cualquier otra
4742 variable, al principio de su archivo de código de entrada.
4743
4744 Los siguientes son los archivos más útiles que se encuentran en
4745 @file{ly/}:
4746
4747 @multitable @columnfractions .4 .6
4748 @headitem Archivo
4749   @tab Contenido
4750 @item @file{ly/engraver-init.ly}
4751   @tab Definiciones de Contextos de grabadores
4752 @item @file{ly/paper-defaults-init.ly}
4753   @tab especificaciones de valores predeterminados relacionados con el papel
4754 @item @file{ly/performer-init.ly}
4755   @tab Definiciones de Contextos de interpretación
4756 @item @file{ly/property-init.ly}
4757   @tab Definiciones de todas las instrucciones predefinidas que son comunes
4758 @item @file{ly/spanner-init.ly}
4759   @tab Definiciones de las instrucciones predefinidas relacionadas con los objetos de extensión
4760 @end multitable
4761
4762 Otros ajustes (como las definiciones de las instrucciones de marcado)
4763 se almacenan como archivos @file{.scm} (de Scheme).  El lenguaje de
4764 programación Scheme se utiliza para proporcionar un interfaz
4765 programable en el funcionamiento interno de LilyPond.  Cualquier
4766 explicación adicional sobre estos archivos se encuentra por el momento
4767 fuera del ámbito de este manual, porque se requieren conocimientos del
4768 lenguaje Scheme.  Se advierte a los usuarios que se necesita una
4769 importante cantidad de conocimientos técnicos o de tiempo para
4770 comprender el lenguaje Scheme y estos archivos (véase @rextend{Tutorial de Scheme}).
4771
4772 Si ya tiene estos conocimientos, los archivos de Scheme que pueden
4773 interesarle son:
4774
4775 @multitable @columnfractions .4 .6
4776 @headitem Archivo
4777   @tab Contenido
4778 @item @file{scm/auto-beam.scm}
4779   @tab Valores predeterminados de sub-barrado
4780 @item @file{scm/define-grobs.scm}
4781   @tab valores predeterminados de las propiedades de grobs
4782 @item @file{scm/define-markup-commands.scm}
4783   @tab Especificar todas las instrucciones de marcado
4784 @item @file{scm/midi.scm}
4785   @tab Ajustes predeterminados para la salida MIDI
4786 @item @file{scm/output-lib.scm}
4787   @tab Ajustes que afectan al aspecto de los trastes, colores, alteraciones, lineas divisorias, etc.
4788 @item @file{scm/parser-clef.scm}
4789   @tab Definiciones de las claves contempladas
4790 @item @file{scm/script.scm}
4791   @tab Ajustes predeterminados para las articulaciones
4792 @end multitable
4793
4794
4795 @node Trucos avanzados con Scheme
4796 @subsection Trucos avanzados con Scheme
4797 @translationof Advanced tweaks with Scheme
4798
4799 Aunque es posible hacer muchas cosas con las instrucciones
4800 @code{\override} y @code{\tweak} , tenemos una forma incluso más
4801 poderosa de modificar el funcionamiento de LilyPond, a través de un
4802 interface programable hacia las operaciones internas de LilyPond.  Se
4803 puede incorporar código escrito en el lenguaje de programación Scheme,
4804 directamente en el mecanismo de funcionamiento de LilyPond.  Por
4805 supuesto, para hacer esto se necesitan al menos unos conocimientos
4806 básicos de programación en Scheme, y damos una introducción en el
4807 @rextend{Tutorial de Scheme}.
4808
4809 Como ejemplo que ilustra una de las muchas posibilidades, en lugar de
4810 dar a una propiedad un valor constante, se puede establecer al
4811 resultado de un procedimiento de Scheme que se invoca cada vez que
4812 LilyPond accede a esta propiedad.  La propiedad se puede establecer
4813 dinámicamente a un valor determinado por el procedimiento en el
4814 momento en que se invoca.  En este ejemplo damos a las cabezas de las
4815 notas un color que depende de su posición dentro del pentagrama.
4816
4817 @cindex x11-color, función, ejemplo de utilización
4818 @cindex NoteHead, ejemplo de sobreescritura
4819 @cindex color, propiedad, establecer a procedimiento de Scheme
4820
4821 @lilypond[quote,verbatim,ragged-right]
4822 #(define (color-notehead grob)
4823    "Color the notehead according to its position on the staff."
4824    (let ((mod-position (modulo (ly:grob-property grob 'staff-position)
4825                                7)))
4826      (case mod-position
4827        ;;   Return rainbow colors
4828        ((1) (x11-color 'red    ))  ; for C
4829        ((2) (x11-color 'orange ))  ; for D
4830        ((3) (x11-color 'yellow ))  ; for E
4831        ((4) (x11-color 'green  ))  ; for F
4832        ((5) (x11-color 'blue   ))  ; for G
4833        ((6) (x11-color 'purple ))  ; for A
4834        ((0) (x11-color 'violet ))  ; for B
4835        )))
4836
4837 \relative {
4838   % Arrange to obtain color from color-notehead procedure
4839   \override NoteHead.color = #color-notehead
4840   a2 b | c2 d | e2 f | g2 a |
4841 }
4842 @end lilypond
4843
4844 Se pueden encontrar ejemplos adicionales que muestran la utilización
4845 de estos interfaces programables, en
4846 @rextendnamed{Callback functions,Funciones de callback}.
4847