]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/es/notation/changing-defaults.itely
Run update-with-convert-ly.sh
[lilypond.git] / Documentation / es / notation / changing-defaults.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
2
3 @ignore
4 Translation of GIT committish: f0978ed121192fee9bdf2453a325d98693148acf
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.15.10"
12
13 @node Cambiar los valores por omisión
14 @chapter Cambiar los valores por omisión
15 @translationof Changing defaults
16
17 El objetivo del diseño de LilyPond es proporcionar la más alta calidad
18 de los resultados, de forma predeterminada.  A pesar de ello, podría
19 tener que cambiar este resultado predeterminado.  La disposición sobre
20 el papel se controla a través de un amplio número de @q{botones e
21 interruptores} llamados en su conjunto @q{propiedades}.  En el Manual
22 de aprendizaje podemos encontrar una introducción en forma de tutorial
23 al acceso y modificación de estas propiedades, véase
24 @rlearning{Trucar la salida}.  Éste debería leerse en primer lugar.
25 Este capítulo cubre un terreno similar, pero con un estilo más
26 adecuado para un manual de referencia.
27
28 @cindex Referencia de funcionamiento interno
29
30 La descripción definitiva de los controles que están disponibles para
31 su ajuste fino están en un documento aparte: la
32 @rinternalsnamed{Top,Referencia de funcionamiento interno}.
33 Dicho manual relaciona todas
34 las variables, funciones y opciones que se encuentran disponibles en
35 LilyPond.  Está escrito como un documento HTML, que se puede encontrar
36 @c leave the @uref as one long line.
37 @uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/user/@/lilypond@/-internals/,en línea},
38 pero que también va incluido en el paquete de la documentación de LilyPond.
39
40 Internamente, LilyPond utiliza el lenguaje Scheme (un dialecto de
41 LISP) para aportar la infraestructura.  La sobreescritura de las
42 decisiones de disposición da acceso efectivo a las interioridades del
43 programa, lo que requiere código de Scheme como entrada.  Los
44 elementos de Scheme se inauguran dentro de un archivo @file{.ly} con
45 el símbolo de cuadradillo@tie{}@code{#}.@footnote{@rextend{Tutorial de Scheme}
46 contiene un breve tutorial sobre la introducción de números,
47 listas, cadenas y símbolos en Scheme.}
48
49 @menu
50 * Contextos de interpretación::
51 * Explicación del Manual de referencia de funcionamiento interno::
52 * Modificar las propiedades::
53 * Conceptos y propiedades útiles::
54 * Trucos avanzados::
55 * Uso de las funciones musicales::
56 @end menu
57
58
59 @node Contextos de interpretación
60 @section Contextos de interpretación
61 @translationof Interpretation contexts
62
63 Esta sección explica qué son los contextos y cómo modificarlos.
64
65 @menu
66 * Explicación de los contextos::
67 * Crear contextos::
68 * Mantener vivos los contextos::
69 * Modificar los complementos (plug-ins) de contexto::
70 * Cambiar los valores por omisión de los contextos::
71 * Definir contextos nuevos::
72 * Alinear los contextos::
73 @end menu
74
75
76 @seealso
77 Manual de aprendizaje:
78 @rlearning{Contextos y grabadores}.
79
80 Archivos de inicio:
81 @file{ly/engraver-init.ly},
82 @file{ly/performer-init.ly}.
83
84 Fragmentos de código:
85 @rlsr{Contexts and engravers}.
86
87 Referencia de funcionamiento interno:
88 @rinternals{Contexts},
89 @rinternals{Engravers and Performers}.
90
91
92 @node Explicación de los contextos
93 @subsection Explicación de los contextos
94 @translationof Contexts explained
95
96 Los contextos se disponen de forma jerárquica:
97
98 @menu
99 * Score. El contexto maestro::
100 * Contextos del nivel superior. Contenedores de pentagramas::
101 * Contextos de nivel intermedio. Pentagramas::
102 * Contextos del nivel más bajo. Voces::
103 @end menu
104
105 @node Score. El contexto maestro
106 @unnumberedsubsubsec Score. El contexto maestro
107 @translationof Score - the master of all contexts
108
109 Este es el contexto de notación del nivel más alto.  Ningún otro
110 contexto puede contener a un contexto Score.  De forma predeterminada,
111 el contexto Score maneja la administración de las indicaciones de
112 compás y se asegura de que ciertos elementos como claves, compases y
113 armaduras están siempre alineados entre los distintos pentagramas.
114
115 Se crea implícitamente una instancia del contexto Score cuando se
116 procesa un bloque @code{\score @{@dots{}@}} o @code{\layout
117 @{@dots{}@}}.
118
119 @node Contextos del nivel superior. Contenedores de pentagramas
120 @unnumberedsubsubsec Contextos del nivel superior: contenedores de pentagramas
121 @translationof Top-level contexts - staff containers
122
123 @strong{@emph{StaffGroup}}
124
125 Agrupa pentagramas y añade un corchete en la parte izquierda, formando
126 un grupo.  Las líneas divisorias de los pentagramas contenidos se
127 conectan verticalmente.  @code{StaffGroup} sólo consiste en una
128 colección de pentagramas, con un corchete delante y líneas divisorias
129 de arriba a abajo.
130
131 @strong{@emph{ChoirStaff}}
132
133 Idéntico a @code{StaffGroup} excepto que las barras de compás de los
134 pentagramas contenidos no se conectan verticalmente.
135
136 @strong{@emph{GrandStaff}}
137
138 Un grupo de pentagramas, con una llave en la parte izquierda que
139 abarca el grupo.  Las barras de compás de los pentagramas contenidos
140 se conectan verticalmente.
141
142 @strong{@emph{PianoStaff}}
143
144 Igual que @code{GrandStaff}, pero contempla la posibilidad de poner el
145 nombre del instrumento a la izquierda del sistema.
146
147 @node Contextos de nivel intermedio. Pentagramas
148 @unnumberedsubsubsec Contextos de nivel intermedio. Pentagramas
149 @translationof Intermediate-level contexts - staves
150
151 @strong{@emph{Staff}}
152
153 Maneja claves, barras de compás, tonalidades y alteraciones
154 accidentales.  Puede contener contextos de @code{Voice}.
155
156 @strong{@emph{RhythmicStaff}}
157
158 Como @code{Staff}, pero para imprimir ritmos.  Se ignoran las alturas
159 de las notas; las notas se imprimen sobre una línea.
160
161 @strong{@emph{TabStaff}}
162
163 Contexto para generar tablaturas.  De forma predeterminada dispone la
164 expresión musical como una tablatura de guitarra, impresa sobre seis
165 líneas.
166
167 @strong{@emph{DrumStaff}}
168
169 Maneja el tipografiado para instrumentos de percusión.  Puede contener
170 contextos @code{DrumVoice}.
171
172 @strong{@emph{VaticanaStaff}}
173
174 Igual que @code{Staff}, excepto que está pensado para tipografiar
175 piezas en estilo gregoriano.
176
177 @strong{@emph{MensuralStaff}}
178
179 Igual que @code{Staff}, excepto que está diseñado para tipografiar
180 piezas en estilo mensural.
181
182
183 @node Contextos del nivel más bajo. Voces
184 @unnumberedsubsubsec Contextos del nivel más bajo. Voces
185 @translationof Bottom-level contexts - voices
186
187 Los contextos del mismo nivel que Voice dan un valor inicial a ciertas
188 propiedades e inician los grabadores correspondientes.  Siendo
189 contextos del nivel más bajo, no pueden contener a otros contextos.
190
191 @strong{@emph{Voice}}
192
193 Corresponde a una voz sobre un pentagrama. este contexto maneja la
194 conversión de las indicaciones dinámicas, plicas, barras, subíndices y
195 superíndices, ligaduras de expresión y de unión, y silencios.  Tenemos
196 que crear instancias explícitas de este contexto si necesitamos varias
197 voces en el mismo pentagrama.
198
199 @strong{@emph{VaticanaVoice}}
200
201 Lo mismo que @code{Voice}, excepto que está diseñado para tipografiar
202 piezas en estilo gregoriano.
203
204 @strong{@emph{MensuralVoice}}
205
206 Lo mismo que @code{Voice}, con modificaciones para el tipografiado de
207 piezas en estilo mensural.
208
209 @strong{@emph{Lyrics}}
210
211 Corresponde a una voz con letra.  Maneja la impresión de una sola
212 línea de letra.
213
214 @strong{@emph{DrumVoice}}
215
216 El contexto de voz utilizado en una pauta de percusión.
217
218 @strong{@emph{FiguredBass}}
219
220 El contexto en que los objetos @code{BassFigure} se crean a partir de
221 la entrada escrita en el modo @code{\figuremode}.
222
223 @strong{@emph{TabVoice}}
224
225 El contexto de voz utilizado dentro de un contexto @code{TabStaff}.
226 Se suele dejar que se cree implícitamente.
227
228 @strong{@emph{CueVoice}}
229
230 El contexto de voz que se utiliza para dibujar notas de tamaño
231 reducido, con el principal objetivo de añadir notas guía de un
232 pentagrama a otro, véase @ref{Formateo de las notas guía}.
233 Normalmente se deja que se cree implícitamente.
234
235 @strong{@emph{ChordNames}}
236
237 Tipografía nombres de acordes.
238
239
240 @node Crear contextos
241 @subsection Crear contextos
242 @translationof Creating contexts
243
244 @c TODO more complete descriptions rather than learning style
245
246 Para partituras que sólo tienen una voz y un pentagrama, los contextos
247 se crean automáticamente.  Para partituras más complejas, es necesario
248 crearlos a mano.  Existen tres instrucciones que hacen esto.
249
250 @itemize
251
252 @item
253 La instrucción más fácil es @code{\new}, y es también la más rápida de
254 escribir.  Se antepone a una expresión musical, por ejemplo
255
256 @funindex \new
257 @cindex nuevos, contextos
258 @cindex Contexto, creación de
259
260 @example
261 \new @var{tipo} @var{expresión_musical}
262 @end example
263
264 @noindent
265 donde @var{tipo} es el nombre de un contexto (como @code{Staff} o
266 @code{Voice}).  Esta instrucción crea un contexto nuevo, y empieza a
267 interpretar la @var{expresión_musical} con él.
268
269 Una aplicación práctica de @code{\new} es una partitura con muchos
270 pentagramas.  Cada parte que debe ir en su propio pentagrama, va
271 precedida de @code{\new Staff}.
272
273 @lilypond[quote,verbatim,relative=2,ragged-right]
274 <<
275   \new Staff { c4 c }
276   \new Staff { d4 d }
277 >>
278 @end lilypond
279
280 La instrucción @code{\new} puede también dar nombre al contexto,
281
282 @example
283 \new @var{tipo} = @var{identificador} @var{música}
284 @end example
285 Sin embargo, este nombre especificado por el usuario sólo se utiliza
286 si no hay ya otro contexto anterior con el mismo nombre.
287
288
289 @funindex \context
290
291 @item
292 Como @code{\new}, la instrucción @code{\context} también dirige una
293 expresión musical a un objeto de contexto, pero da al contexto un
294 nombre explícito.  La sintaxis es
295
296 @example
297 \context @var{tipo} = @var{identificador} @var{música}
298 @end example
299
300 En esta forma, la instrucción buscará un contexto existente del
301 @var{tipo} especificado que tenga el nombre @var{identificador}.  Si
302 ese contexto aún no existe, se crea un contexto nuevo con el nombre
303 especificado.  Esto es útil si nos vamos a referir más tarde al
304 contexto.  Por ejemplo, cuando se escribe la letra, la melodía está
305 dentro de un contexto con nombre
306
307 @example
308 \context Voice = "@b{tenor}" @var{música}
309 @end example
310
311 @noindent
312 de forma que los textos se puedan alinear correctamente con sus notas,
313
314 @example
315 \new Lyrics \lyricsto "@b{tenor}" @var{letra}
316 @end example
317
318 @noindent
319
320 Otro uso posible de los contextos con nombre es la fusión de dos
321 expresiones musicales distintas en un solo contexto.  En el siguiente
322 ejemplo, se introducen por separado las articulaciones y las notas:
323
324 @example
325 musica = @{ c4 c4 @}
326 decoracion = @{ s4-. s4-> @}
327 @end example
328
329 se combinan enviando los dos al mismo contexto @code{Voice},
330
331 @example
332 <<
333   \new Staff \context Voice = "A" \musica
334   \context Voice = "A" \decoracion
335 >>
336 @end example
337 @lilypond[quote,ragged-right]
338 music = { c4 c4 }
339 arts = { s4-. s4-> }
340 \relative c'' <<
341   \new Staff \context Voice = "A" \music
342   \context Voice = "A" \arts
343 >>
344 @end lilypond
345
346 Con este mecanismo, es posible definir un @qq{urtext} (una edición
347 original), con la posibilidad de poner articulaciones distintas sobre
348 las mismas notas.
349
350 @cindex crear contextos
351
352 @item
353 La tercera instrucción para crear contextos es
354 @example
355 \context @var{tipo} @var{música}
356 @end example
357
358
359 @noindent
360 Esto es similar a @code{\context} con @code{= @var{identificador}},
361 pero se corresponde con cualquier contexto del tipo @var{tipo}, sin
362 importar qué nombre se le ha dado.
363
364 Esta variante se usa con expresiones musicales que se pueden
365 interpretar en varios niveles.  Por ejemplo, la instrucción
366 @code{\applyOutput} (véase
367 @rextend{Ejecutar una función sobre todos los objetos de la presentación}).
368 Sin una instrucción @code{\context}
369 explícita, normalmente se aplicaría a @code{Voice}
370
371 @example
372 \applyOutput #'@var{contexto} #@var{función}   % aplicar al contexto Voice
373 @end example
374
375 Para que se interprete dentro de los niveles de @code{Score} o
376 @code{Staff}, utilice las siguientes formas:
377
378 @example
379 \applyOutput #'Score #@var{función}
380 \applyOutput #'Staff #@var{función}
381 @end example
382
383 @end itemize
384
385 @node Mantener vivos los contextos
386 @subsection Mantener vivos los contextos
387 @translationof Keeping contexts alive
388
389 @cindex contextos, mantener vivos
390 @cindex contextos, tiempo de vida
391
392 Normalmente los contextos finalizan en el primer momento musical en
393 que no tienen nada que hacer.  Así, los contextos de @code{Voice}
394 mueren tan pronto como ya no contienen ningún evento; los contextos de
395 @code{Staff} mueren tan pronto como todos los contextos de
396 @code{Voice} que contenían ya no contengan ningún evento; etc.  Esto
397 puede ocasionar dificultades si se tiene que hacer referencia a
398 contextos anteriores que ya han muerto, por ejemplo, al cambiar de
399 pentagramas con instrucciones @code{\change}, asociar letra con una
400 voz mediante instrucciones @code{\lyricsto}, o cuando se añaden
401 eventos musicales adicionales a un contexto anterior.
402
403 Existe una excepción a esta regla general: precisamente uno de los
404 contextos de @code{Voice} que están dentro de un contexto de
405 @code{Staff} o de una construcción @code{<<...>>} persiste siempre
406 hasta el final de, contexto de @code{Staff} circundante o la
407 construcción @code{<<...>>}, incluso aunque puede haber períodos en
408 que no tiene nada que hacer.  El contexto que persiste de esta forma
409 será el primero que se encuentre en la primera construcción encerrada
410 entre llaves @code{@{...@}}, ignorando cualquiera que se encuentre
411 dentro de construcciones encerradas por ángulos dobles @code{<<...>>}.
412
413 Cualquier contexto se puede mantener vivo si nos aseguramos de que
414 tiene algo que hacer en cualquier momento musical dado.  Los
415 contextos de @code{Staff} se mantienen con vida si nos aseguramos de
416 que una de sus voces se mantiene viva.  Una manera de hacerlo es
417 añadir silencios de separación a una voz en paralelo con la música
418 real.  Éstos deben añadirse a todos y cada uno de los contextos de
419 @code{Voice} que se hayan de mantener vivos.  Si se van a usar
420 esporádicamente varias voces, es más seguro mantenerlas todas vivas en
421 lugar de tratar de confiar en las excepciones que hemos mencionado
422 arriba.
423
424 En el ejemplo siguiente, tanto la voz A como la voz B se mantienen
425 vivas de esta manera durante la duración de la pieza:
426
427 @lilypond[quote,verbatim]
428 musicA = \relative c'' { d4 d d d }
429 musicB = \relative c'' { g4 g g g }
430 keepVoicesAlive = {
431   <<
432     \new Voice = "A" { s1*5 }  % Keep Voice "A" alive for 5 bars
433     \new Voice = "B" { s1*5 }  % Keep Voice "B" alive for 5 bars
434   >>
435 }
436
437 music = {
438   \context Voice = "A" {
439     \voiceOneStyle
440     \musicA
441   }
442   \context Voice = "B" {
443     \voiceTwoStyle
444     \musicB
445   }
446   \context Voice = "A" { \musicA }
447   \context Voice = "B" { \musicB }
448   \context Voice = "A" { \musicA }
449 }
450
451 \score {
452   \new Staff <<
453     \keepVoicesAlive
454     \music
455   >>
456 }
457 @end lilypond
458
459 @cindex letra, alineación con melodía esporádica
460
461 El ejemplo siguiente muestra cómo se puede escribir una línea melódica
462 esporádica con letra utilizando este enfoque.  Por supuesto, en una
463 situación real la melodía y el acompañamiento consistirían en varias
464 secciones diferentes.
465
466 @lilypond[quote,verbatim]
467 melody = \relative c'' { a4 a a a }
468 accompaniment = \relative c' { d4 d d d }
469 words = \lyricmode { These words fol -- low the mel -- o -- dy }
470 \score {
471   <<
472     \new Staff = "music" {
473       <<
474         \new Voice = "melody" {
475           \voiceOne
476           s1*4  % Keep Voice "melody" alive for 4 bars
477         }
478         {
479           \new Voice = "accompaniment" {
480             \voiceTwo
481             \accompaniment
482           }
483           <<
484             \context Voice = "melody" { \melody }
485             \context Voice = "accompaniment" { \accompaniment }
486           >>
487           \context Voice = "accompaniment" { \accompaniment }
488           <<
489             \context Voice = "melody" { \melody }
490             \context Voice = "accompaniment" { \accompaniment }
491           >>
492         }
493       >>
494     }
495     \new Lyrics \with { alignAboveContext = #"music" }
496     \lyricsto "melody" { \words }
497   >>
498 }
499 @end lilypond
500
501 Una forma alternativa, que podría resultar mejor en muchas
502 situaciones, es mantener con vida la línea melódica simplemente
503 incluyendo notas espaciadoras para alinearla correctamente con el
504 acompañamiento:
505
506 @lilypond[quote,verbatim]
507 melody = \relative c'' {
508   s1  % skip a bar
509   a4 a a a
510   s1  % skip a bar
511   a4 a a a
512 }
513 accompaniment = \relative c' {
514   d4 d d d
515   d4 d d d
516   d4 d d d
517   d4 d d d
518 }
519 words = \lyricmode { These words fol -- low the mel -- o -- dy }
520
521 \score {
522   <<
523     \new Staff = "music" {
524       <<
525         \new Voice = "melody" {
526           \voiceOne
527           \melody
528         }
529         \new Voice = "accompaniment" {
530           \voiceTwo
531           \accompaniment
532         }
533       >>
534     }
535     \new Lyrics \with { alignAboveContext = #"music" }
536     \lyricsto "melody" { \words }
537   >>
538 }
539 @end lilypond
540
541
542 @node Modificar los complementos (plug-ins) de contexto
543 @subsection Modificar los complementos (plug-ins) de contexto
544 @translationof Modifying context plug-ins
545
546 @c TODO Should this be Modifying engravers or Modifying contexts?
547
548 Los contextos de notación (como @code{Score} y @code{Staff}) no sólo
549 almacenan propiedades, también contienen «plug-ins» o complementos
550 llamados @q{grabadores} que crean elementos de notación.  Por ejemplo,
551 el contexto @code{Voice} contiene un grabador
552 @code{Note_heads_engraver} que crea las cabezas de nota y el contexto
553 @code{Staff} contiene un grabador @code{Key_signature_engraver} que
554 crea la indicación de compás.
555
556 Para ver una descripción completa de todos y cada uno de los
557 complementos, consulte
558 @ifhtml
559 @rinternals{Engravers and Performers}.
560 @end ifhtml
561 @ifnothtml
562 Referencia de funcionamiento interno @expansion{} Traducción @expansion{} Grabadores.
563 @end ifnothtml
564 Cada contexto que se describe en
565 @ifhtml
566 @rinternals{Contexts}
567 @end ifhtml
568 @ifnothtml
569 Referencia de funcionamiento interno @expansion{} Traducción @expansion{} Contexto.
570 @end ifnothtml
571 relaciona los grabadores que se usan para ese contexto.
572
573
574 Puede ser de utilidad jugar un poco con estos complementos.  Se hace
575 iniciando un contexto nuevo con @code{\new} o @code{\context} y
576 modificándolo:
577
578 @funindex \with
579
580 @example
581 \new @var{contexto} \with @{
582   \consists @dots{}
583   \consists @dots{}
584   \remove @dots{}
585   \remove @dots{}
586   @emph{etc.}
587 @}
588 @{
589   @emph{..música..}
590 @}
591 @end example
592
593 @noindent
594 donde los @dots{} deben ser el nombre de un grabador.  Aquí tenemos un
595 ejemplo sencillo que suprime los grabadores
596 @code{Time_signature_engraver} y @code{Clef_engraver} de un contexto
597 @code{Staff}:
598
599 @lilypond[quote,relative=1,verbatim]
600 <<
601   \new Staff {
602     f2 g
603   }
604   \new Staff \with {
605      \remove "Time_signature_engraver"
606      \remove "Clef_engraver"
607   } {
608     f2 g2
609   }
610 >>
611 @end lilypond
612
613 En el segundo pentagrama no hay indicación de compás ni clave.  Éste
614 es un método bastante rudimentario de hacer que desaparezcan los
615 objetos porque afecta a todo el pentagrama.  Este método también
616 afecta al espaciado, lo que puede ser deseable o no serlo.  Se
617 muestran métodos más sofisticados para quitar objetos en
618 @rlearning{Visibilidad y color de los objetos}.
619
620 El ejemplo siguiente muestra una aplicación práctica.  Normalmente las
621 líneas divisorias y las indicaciones de compás están sincronizadas a
622 lo largo de toda la partitura.  Lo hacen los grabadores
623 @code{Timing_translator} y @code{Default_bar_line_engraver}.  Estos
624 complementos mantienen al día la administración de las indicaciones de
625 compás, posición dentro del compás, etc.  Moviendo estos grabadores
626 desde el contexto de @code{Score} al de @code{Staff}, podemos
627 conseguir una partitura en la que cada pentagrama tiene su propio
628 compás independiente.
629
630 @cindex polimétricas, partituras
631 @cindex compases distintos al mismo tiempo
632
633 @lilypond[quote,verbatim]
634 \score {
635   <<
636     \new Staff \with {
637       \consists "Timing_translator"
638       \consists "Default_bar_line_engraver"
639     } {
640         \time 3/4
641         c4 c c c c c
642     }
643   \new Staff \with {
644     \consists "Timing_translator"
645     \consists "Default_bar_line_engraver"
646   } {
647       \time 2/4
648       c4 c c c c c
649   }
650 >>
651 \layout {
652   \context {
653     \Score
654     \remove "Timing_translator"
655     \remove "Default_bar_line_engraver"
656     }
657   }
658 }
659 @end lilypond
660
661 @knownissues
662
663 Normalmente, el orden en que se especifican los grabadores no tiene
664 importancia, pero en algunos casos especiales sí la tiene, por ejemplo
665 donde un grabador escribe una propiedad y otro la lee, o donde un
666 grabador crea un groby otro debe procesarlo.  El orden en que los
667 grabadores se especifican es el orden en que se llaman para realizar
668 su tarea de procesamiento.
669
670 Las siguientes ordenaciones son importantes: el grabador de compases
671 @code{Bar_engraver} debe ir normalmente en primer lugar, y el grabador
672 de digitaciones @code{New_fingering_engraver} debe ir antes del
673 grabador @code{Script_column_engraver} de columnas de inscripciones.
674 Podría haber otros que tengan dependencias de ordenación.
675
676 @node Cambiar los valores por omisión de los contextos
677 @subsection Cambiar los valores por omisión de los contextos
678 @translationof Changing context default settings
679
680 Los ajustes de contexto que están preparados para usarse de forma
681 predeterminada en los contextos @code{Score}, @code{Staff} y
682 @code{Voice}, se pueden especificar dentro de un bloque
683 @code{\layout}, como se ilustra en el ejemplo siguiente.  El bloque
684 @code{\layout} se debe colocar dentro del bloque @code{\score} en que
685 se quiere que haga efecto, pero fuera de la música.
686
687 Observe que la propia instrucción @code{\set} y el contexto se deben
688 omitir cuando se especifican de esta manera los valores de contexto
689 predeterminados:
690
691 @lilypond[quote,verbatim]
692 \score {
693   \relative c'' {
694     a4^"Really small, thicker stems, no time signature" a a a
695     a a a a
696   }
697   \layout {
698     \context {
699       \Staff
700       fontSize = #-4
701       \override Stem #'thickness = #4.0
702       \remove "Time_signature_engraver"
703     }
704   }
705 }
706 @end lilypond
707
708 En este ejemplo, la instrucción @code{\Staff} especifica que los
709 ajustes siguientes se apliquen a todos los pentagramas dentro del
710 bloque de partitura.
711
712 Se pueden realizar de forma similar modificaciones al contexto
713 @code{Score} o a todos los contextos @code{Voice}.
714
715 @knownissues
716
717 No es posible recolectar cambios de contexto dentro de una variable y
718 aplicarlos a una definición de @code{\context} por referencia a dicha
719 variable.
720
721 La instrucción @code{\RemoveEmptyStaves} sobreescribe nuestros ajustes
722 en curso para el contexto @code{\Staff}.  Si queremos cambiar los
723 valores predeterminados para un pentagrama que utilice
724 @code{\RemoveEmptyStaves}, debemos hacerlo después de llamar a
725 @code{\RemoveEmptyStaves}, o sea
726
727 @example
728 \layout @{
729   \context @{
730     \Staff \RemoveEmptyStaves
731
732     \override Stem #'thickness = #4.0
733   @}
734 @}
735 @end example
736
737 @c TODO: add \with in here.
738
739
740
741 @node Definir contextos nuevos
742 @subsection Definir contextos nuevos
743 @translationof Defining new contexts
744
745 @cindex contextos, definición de nuevos
746 @cindex grabadores, incluir en contextos
747
748 @funindex \alias
749 @funindex alias
750 @funindex \name
751 @funindex name
752 @funindex \type
753 @funindex type
754 @funindex \consists
755 @funindex consists
756 @funindex \accepts
757 @funindex accepts
758 @funindex \denies
759 @funindex denies
760
761 Los contextos específicos, como @code{Staff} y @code{Voice}, están
762 construidos a base de bloques sencillos.  Es posible crear nuevos
763 tipos de contextos con combinaciones distintas de añadidos grabadores.
764
765 El siguiente ejemplo muestra cómo construir un tipo diferente de
766 contexto de @code{Voice} partiendo de cero.  Será parecido a
767 @code{Voice}, pero imprime solamente cabezas centradas en forma de
768 barra inclinada.  Se puede usar para indicar improvisación en piezas
769 de jazz,
770
771 @c KEEP LY
772 @lilypond[quote,ragged-right]
773 \layout { \context {
774   \name ImproVoice
775   \type "Engraver_group"
776   \consists "Note_heads_engraver"
777   \consists "Rhythmic_column_engraver"
778   \consists "Text_engraver"
779   \consists Pitch_squash_engraver
780   squashedPosition = #0
781   \override NoteHead #'style = #'slash
782   \override Stem #'transparent = ##t
783   \override Flag #'transparent = ##t
784   \alias Voice
785 }
786 \context { \Staff
787   \accepts "ImproVoice"
788 }}
789
790 \relative c'' {
791   a4 d8 bes8 \new ImproVoice { c4^"ad lib" c
792    c4 c^"desvístete" c_"mientras tocas :)" c }
793   a1
794 }
795 @end lilypond
796
797
798 Estos ajustes se definen dentro de un bloque @code{\context} que a su
799 vez está dentro de un bloque @code{\layout},
800
801 @example
802 \layout @{
803   \context @{
804     @dots{}
805   @}
806 @}
807 @end example
808
809 En el siguiente análisis, la entrada de ejemplo que se muestra debe ir
810 en el lugar de los puntos suspensivos @dots{} del fragmento anterior.
811
812 En primer lugar es necesario definir un nombre para el nuevo contexto:
813
814 @example
815 \name ImproVoice
816 @end example
817
818 Debido a que es parecido al contexto @code{Voice}, queremos órdenes
819 que funcionen sobre contextos de @code{Voice} (existentes) para que
820 siga funcionando.  Esto se consigue dando al contexto nuevo un alias
821 @code{Voice},
822
823 @example
824 \alias Voice
825 @end example
826
827 El contexto imprimirá notas y textos explicativos, por ello tenemos
828 que añadir los grabadores que aportan esta funcionalidad:
829
830 @example
831 \consists Note_heads_engraver
832 \consists Text_engraver
833 @end example
834
835 pero sólo necesitamos esto en la línea central:
836
837 @example
838 \consists Pitch_squash_engraver
839 squashedPosition = #0
840 @end example
841
842 El grabador @rinternals{Pitch_squash_engraver} modifica las cabezas de
843 nota (creadas por el grabador @rinternals{Note_heads_engraver}) y
844 establece sus posiciones verticales al valor de
845 @code{squashedPosition}, en este caso@tie{}@code{0}, la línea central.
846
847 Las notas parecen barras inclinadas y no tienen plica:
848
849 @example
850 \override NoteHead #'style = #'slash
851 \override Stem #'transparent = ##t
852 \override Flag #'transparent = ##t
853 \override Flag #'transparent = ##t
854 @end example
855
856 Todos estos añadidos tienen que cooperar, y esto se consigue con un
857 añadido especial, que se debe marcar con la palabra clave
858 @code{\type}.  Este será siempre @code{Engraver_group},
859
860 @example
861 \type "Engraver_group"
862 @end example
863
864 Al juntarlo todo, obtenemos
865
866 @example
867 \context @{
868   \name ImproVoice
869   \type "Engraver_group"
870   \consists "Note_heads_engraver"
871   \consists "Text_engraver"
872   \consists Pitch_squash_engraver
873   squashedPosition = #0
874   \override NoteHead #'style = #'slash
875   \override Stem #'transparent = ##t
876   \override Flag #'transparent = ##t
877   \override Flag #'transparent = ##t
878   \alias Voice
879 @}
880 @end example
881
882 @funindex \accepts
883 Los contextos dan lugar a jerarquías.  Queremos colgar el contexto
884 @code{ImproVoice} bajo el contexto @code{Staff}, como simples
885 @code{Voice}s normales.  Por tanto, modificamos la definición de
886 @code{Staff} con la instrucción @code{\accepts} (acepta),
887
888 @example
889 \context @{
890   \Staff
891   \accepts ImproVoice
892 @}
893 @end example
894
895 @funindex \denies
896 Lo opuesto a @code{\accepts} (acepta) es @code{\denies} (deniega), lo
897 que a veces se necesita cuando se están reutilizando definiciones de
898 contexto existentes.
899
900 Ponemos ambos dentro de un bloque @code{\layout}, como
901
902 @example
903 \layout @{
904   \context @{
905     \name ImproVoice
906     @dots{}
907   @}
908   \context @{
909     \Staff
910     \accepts "ImproVoice"
911   @}
912 @}
913 @end example
914
915 Así pues, la salida que aparece al comienzo de esta sub-sección se
916 puede escribir como
917
918 @example
919 \relative c'' @{
920   a4 d8 bes8
921   \new ImproVoice @{
922     c4^"ad lib" c
923     c4 c^"desvístete"
924     c c_"mientras tocas :)"
925   @}
926   a1
927 @}
928 @end example
929
930
931 @node Alinear los contextos
932 @subsection Alinear los contextos
933 @translationof Aligning contexts
934
935 Los contextos nuevos se pueden alinear por encima o por debajo de
936 otros contextos existentes.  Esto podría ser de utilidad al preparar
937 un pentagrama vocal (@rlearning{Conjuntos vocales}) y en el ossia,
938
939 @cindex ossia
940 @funindex alignAboveContext
941 @funindex alignBelowContext
942
943 @lilypond[quote,ragged-right]
944 ossia = { f4 f f f }
945 \score{
946   \relative c' \new Staff = "main" {
947     c4 c c c
948     <<
949       \new Staff \with { alignAboveContext = #"main" } \ossia
950       { d8 f d f d f d f }
951     >>
952   }
953 }
954 @end lilypond
955
956 @cindex nested contexts
957 @cindex contexts, nested
958
959 @funindex \accepts
960 @funindex \denies
961
962 Los contextos como @code{PianoStaff} pueden llevar dentro otros
963 contextos anidados.  Los contextos que se pueden aceptar para su
964 anidamiento están definidos por la lista @qq{accepts} (acepta) de un
965 contexto.  Los contextos que no están en esta lista se colocan debajo
966 del contexto exterior en la partitura impresa.  Por ejemplo, el
967 contexto @code{PianoStaff} está definido para que acepte contextos
968 @code{Staff} y @code{FiguredBass} de forma predeterminada, pero no un
969 contexto @code{Lyrics}, por ejemplo.  Así pues, en la siguiente
970 estructura la letra se sitúa debajo del sistema de piano en lugar de
971 colocarse entre los dos pentagramas:
972
973 @lilypond[verbatim,quote,relative=1]
974 \new PianoStaff
975 <<
976   \new Staff { e4 d c2 }
977   \addlyrics { Three blind mice }
978   \new Staff {
979     \clef "bass"
980     { c,1 }
981   }
982 >>
983 @end lilypond
984
985 La lista @qq{accepts} de un contexto se puede modificar para que
986 incluya contextos anidados adicionales, y así si quisiéramos que la
987 letra apareciese entre los dos pentagramas podríamos usar:
988
989 @lilypond[verbatim,quote,relative=1]
990 \new PianoStaff \with { \accepts Lyrics }
991 <<
992   \new Staff { e4 d c2 }
993   \addlyrics { Three blind mice }
994   \new Staff {
995     \clef "bass"
996     { c,1 }
997   }
998 >>
999 @end lilypond
1000
1001 Lo contrario de @code{\accepts} (acepta) es @code{\denies} (deniega);
1002 esto suprime un contexto de la lista @qq{accepts}.
1003
1004
1005 @node Explicación del Manual de referencia de funcionamiento interno
1006 @section Explicación del Manual de referencia de funcionamiento interno
1007 @translationof Explaining the Internals Reference
1008
1009
1010 @menu
1011 * Navegar por la referencia del programa::
1012 * Interfaces de la presentación::
1013 * Determinar la propiedad del grob::
1014 * Convenciones de nombres::
1015 @end menu
1016
1017
1018
1019 @node Navegar por la referencia del programa
1020 @subsection Navegar por la referencia del programa
1021 @translationof Navigating the program reference
1022
1023 Supongamos que queremos mover la indicación de digitación del
1024 fragmento siguiente:
1025
1026 @lilypond[quote,relative=2,verbatim]
1027 c-2
1028 \stemUp
1029 f
1030 @end lilypond
1031
1032 Si hace una visita a la documentación en busca de instrucciones de
1033 digitación (en @ref{Indicaciones de digitación}), encontrará:
1034
1035 @quotation
1036 @strong{Véase también}
1037
1038 Referencia de funcionamiento interno: @rinternals{Fingering}.
1039
1040 @end quotation
1041
1042 @ifnothtml
1043 La referencia del programador se encuentra disponible en forma de
1044 documento HTML.  Se recomienda mucho que lo lea en la forma HTML, bien
1045 en línea o bien descargando los archivos de la documentación HTML.
1046 Esta sección sería mucho más difícil de entender si está utilizando el
1047 manual en formato PDF.
1048 @end ifnothtml
1049
1050 Siga el enlace que lleva a @rinternals{Fingering}.  Al principio de la
1051 página, puede ver
1052
1053 @quotation
1054 Los objetos de digitación se crean por parte de:
1055 @rinternals{Fingering_engraver} y @rinternals{New_fingering_engraver}.
1056 @end quotation
1057
1058 Siguiendo los enlaces relacionados dentro de la referencia del
1059 programa, podemos seguir el flujo de información dentro del programa:
1060
1061 @itemize
1062
1063 @item @rinternals{Fingering}:
1064 los objetos @rinternals{Fingering} se crean por parte de:
1065 @rinternals{Fingering_engraver}
1066
1067 @item @rinternals{Fingering_engraver}:
1068 Tipos de música aceptados: @rinternals{fingering-event}
1069
1070 @item @rinternals{fingering-event}:
1071 El tipo de evento musical @code{fingering-event} está descrito en
1072 Expresiones musicales con el nombre de @rinternals{FingeringEvent}
1073 @end itemize
1074
1075 Este camino se recorre en contra de la corriente de información del
1076 programa: comienza por la salida y acaba en el evento de entrada.
1077 También podríamos haber empezado por un evento de la entrada, y leído
1078 siguiendo el flujo de información terminando en su caso en el objeto
1079 (u objetos) de la salida.
1080
1081 La referencia del programa también se puede examinar como un documento
1082 normal.  Contiene capítulos que tratan de
1083 @ifhtml
1084 @rinternals{Music definitions},
1085 @end ifhtml
1086 @ifnothtml
1087 @code{Music definitions}
1088 @end ifnothtml
1089 de la @rinternals{Translation}, y del @rinternals{Backend}.  Cada uno
1090 de los capítulos relaciona todas las definiciones utilizadas y todas
1091 las propiedades que se pueden ajustar.
1092
1093
1094 @node Interfaces de la presentación
1095 @subsection Interfaces de la presentación
1096 @translationof Layout interfaces
1097
1098 @cindex interfaz de la presentación
1099 @cindex presentación, interfaz de la
1100 @cindex grob
1101
1102 La página HTML que pudimos ver en la sección anterior describe el
1103 objeto de presentación llamado @rinternals{Fingering}.  Dicho objeto
1104 es un símbolo dentro de la partitura.  Tiene propiedades que guardan
1105 números (como grosores y direcciones), pero también punteros a objetos
1106 relacionados.  Un objeto de presentación también se llama un
1107 @emph{Grob}, que es una abreviatura de Graphical Object (objeto
1108 gráfico).  Para ver más detalles acerca de los objetos gráficos o
1109 Grobs, consulte @rinternals{grob-interface}.
1110
1111 La página dedicada a @code{Fingering} relaciona las definiciones del
1112 objeto @code{Fingering}.  Por ejemplo, la página dice
1113
1114 @quotation
1115 @code{padding} (dimensión, en espacios de pentagrama):
1116
1117 @code{0.5}
1118 @end quotation
1119
1120 @noindent
1121 lo que significa que el número se mantendrá a una distancia de al
1122 menos 0.5 de la cabeza de la nota.
1123
1124
1125 Cada objeto de presentación puede tener varias funciones como elemento
1126 notacional o tipográfico.  Por ejemplo, el objeto de digitación
1127 Fingering tiene los siguientes aspectos
1128
1129 @itemize
1130 @item
1131 Su tamaño es independiente del espaciado horizontal, al contrario de
1132 las ligaduras o las barras de las figuras.
1133
1134 @item
1135 Es un elemento de texto.  Casi seguro que es un texto muy corto.
1136
1137 @item
1138 este elemento de texto se tipografía con un tipo de letra, no como las
1139 ligaduras o las barras de las figuras.
1140
1141 @item
1142 Horizontalmente, el centro del símbolo se debe alinear con el centro
1143 de la cabeza de la nota.
1144
1145 @item
1146 Verticalmente, el símbolo se coloca cerca de la nota y del pentagrama.
1147
1148 @item
1149 La posición vertical también está coordinada con otros símbolos de
1150 superíndice y de subíndice.
1151 @end itemize
1152
1153 Cada uno de estos aspectos se capta en lo que se llaman
1154 @emph{interface}s, que se relacionan al final de la página dedicada a
1155 @rinternals{Fingering}
1156
1157 @quotation
1158 Este objeto contempla los siguientes interfaces:
1159 @rinternals{item-interface},
1160 @rinternals{self-alignment-interface},
1161 @rinternals{side-position-interface}, @rinternals{text-interface},
1162 @rinternals{text-script-interface}, @rinternals{font-interface},
1163 @rinternals{finger-interface} y @rinternals{grob-interface}.
1164 @end quotation
1165
1166 Al pulsar sobre cualquiera de los enlaces nos desplazaremos a la
1167 página del respectivo interfaz del objeto.  Cada interfaz tiene un
1168 cierto número de propiedades.  Algunas de ellas no son para que el
1169 usuario las pueda ajustar (@q{Propiedades internas}), pero otras sí se
1170 pueden modificar.
1171
1172 Hemos estado hablando de @emph{el} objeto @code{Fingering}, pero
1173 realmente esto no significa mucho.  El archivo de inicialización
1174 (véase @rlearning{Otras fuentes de información})
1175 @file{scm/define-grobs.scm} muestra el alma del @q{objeto},
1176
1177 @example
1178 (Fingering
1179   . ((padding . 0.5)
1180      (avoid-slur . around)
1181      (slur-padding . 0.2)
1182      (staff-padding . 0.5)
1183      (self-alignment-X . 0)
1184      (self-alignment-Y . 0)
1185      (script-priority . 100)
1186      (stencil . ,ly:text-interface::print)
1187      (direction . ,ly:script-interface::calc-direction)
1188      (font-encoding . fetaText)
1189      (font-size . -5)           ; don't overlap when next to heads.
1190      (meta . ((class . Item)
1191      (interfaces . (finger-interface
1192                     font-interface
1193                     text-script-interface
1194                     text-interface
1195                     side-position-interface
1196                     self-alignment-interface
1197                     item-interface))))))
1198 @end example
1199
1200 @noindent
1201 Como podemos ver, el objeto @code{Fingering} no es más que un montón
1202 de valores de variables, y la página web de la Referencia de
1203 funcionamiento interno se genera directamente a partir de esta
1204 definición.
1205
1206
1207 @node Determinar la propiedad del grob
1208 @subsection Determinar la propiedad del grob
1209 @translationof Determining the grob property
1210
1211 Recordemos que queríamos cambiar la posición del @b{2} en
1212
1213 @lilypond[quote,relative=2,verbatim]
1214 c-2
1215 \stemUp
1216 f
1217 @end lilypond
1218
1219 Puesto que el @b{2} se encuentra colocado verticalmente sobre su nota,
1220 tenemos que negociar con el interfaz asociado con esta colocación.
1221 Esto se hace usando @code{side-position-interface}.  La página que
1222 describe este interface dice:
1223
1224 @quotation
1225 @code{side-position-interface}
1226
1227 Colocar un objeto víctima (este mismo) junto a otros objetos (el
1228 soporte).  La propiedad @code{direction} significa dónde poner el
1229 objeto víctima con relación al soporte (¿a la izquierda o a la
1230 derecha, encima o debajo?)
1231 @end quotation
1232
1233 @cindex relleno
1234 @cindex padding (relleno)
1235 @noindent
1236 Debajo de esta descripción, la variable @code{padding} (relleno) se
1237 describe como
1238
1239 @quotation
1240 @table @code
1241 @item padding
1242 (dimensión, en espacios de pentagrama)
1243
1244 Añadir esta cantidad de espacio adicional entre objetos que están unos
1245 junto a otros.
1246 @end table
1247 @end quotation
1248
1249 Aumentando el valor de @code{padding}, podemos alejar la cifra de
1250 digitación de la cabeza de la nota.  La siguiente orden inserta un
1251 espacio en blanco de 3 espacios de pentagrama entre la nota y la
1252 digitación:
1253 @example
1254 \once \override Voice.Fingering #'padding = #3
1255 @end example
1256
1257 Al insertar esta instrucción antes de que se haya creado el objeto
1258 Fingering, es decir, antes del @code{c2}, llegamos al siguiente
1259 resultado:
1260
1261 @lilypond[quote,relative=2,verbatim]
1262 \once \override Voice.Fingering #'padding = #3
1263 c-2
1264 \stemUp
1265 f
1266 @end lilypond
1267
1268 En este caso, el contexto de este truco es @code{Voice}.  Este hecho
1269 se puede deducir también a partir de la referencia del programa, ya
1270 que la página dedicada al añadido @rinternals{Fingering_engraver} dice
1271
1272 @quotation
1273 El grabador Fingering_engraver es parte de los contextos: @dots{}
1274 @rinternals{Voice}
1275 @end quotation
1276
1277
1278 @node Convenciones de nombres
1279 @subsection Convenciones de nombres
1280 @translationof Naming conventions
1281
1282 Se hace necesario presentar una panorámica de las diversas
1283 convenciones de nomenclatura:
1284
1285 @itemize
1286 @item funciones de Scheme: minúsculas-con-guiones (incluso nombres de una sola palabra)
1287 @item funciones de Scheme: ly:más-estilo-de-scheme
1288 @item eventos, clases y propiedades musicales: como-las-funciones-de-scheme
1289 @item interfaces de Grobs: estilo-scheme
1290 @item propiedades de backend: estilo-scheme (¡pero X e Y en mayúsculas!)
1291 @item contextos (y ExpresionesMusicales y grobs): Mayúsculas o MayúsculasDeCamello
1292 @item propiedades de contexto: minúsculasSeguidoDeMayúsculasDeCamello
1293 @item grabadores: Mayúsculas_seguido_de_minúsculas_y_con_barras_bajas
1294 @end itemize
1295
1296 @ignore
1297 Preguntas aún sin respuesta
1298 @itemize
1299 @item ¿Cuáles de aquéllas son convenciones y cuáles son reglas?
1300 @item ¿Cuáles son reglas del lenguaje subyacente, y cuáles son específicas de LilyPond?
1301 @end itemize
1302 @end ignore
1303
1304 @node Modificar las propiedades
1305 @section Modificar las propiedades
1306 @translationof Modifying properties
1307
1308 @menu
1309 * Panorámica de la modificación de las propiedades::
1310 * La instrucción set::
1311 * La instrucción override::
1312 * La instrucción tweak::
1313 * set frente a override::
1314 * Modificación de las listas-A::
1315 @end menu
1316
1317
1318 @node Panorámica de la modificación de las propiedades
1319 @subsection Panorámica de la modificación de las propiedades
1320 @translationof Overview of modifying properties
1321
1322 Cada contexto es responsable de la creación de ciertos tipos de
1323 objetos gráficos.  Los ajustes que se usan para imprimir estos objetos
1324 también se almacenan por contexto.  Mediante la modificación de estos
1325 ajustes, se puede alterar la apariencia de los objetos.
1326
1327 Existen dos tipos diferentes de propiedades almacenadas en los
1328 contextos: las propiedades de contexto y las propiedades de grob.  Las
1329 prpopiedades de contexto son propiedades que se aplican al contexto
1330 como un todo y controlan la forma en que el propio contexto se
1331 imprime.  Por contra, las propiedades de grob se aplican a los tipos
1332 de grob específicos que se imprimirán dentro del contexto.
1333
1334 Las instrucciones @code{\set} y @code{\unset} se usan para cambiar los
1335 valores de las propiedades de contexto.  Las instrucciones
1336 @code{\override} y @code{\revert} se usan para cambiar los valores de
1337 las propiedades de grob.
1338
1339 @ignore
1340 La sintaxis de esto es
1341
1342 @example
1343 \override @var{contexto}.@var{nombre} #'@var{propiedad} = #@var{valor}
1344 @end example
1345
1346 Aquí @var{nombre} es el nombre de un objeto gráfico, como @code{Stem}
1347 o @code{NoteHead}, y @var{propiedad} es una variable interna del
1348 sistema de formateo (@q{propiedad del grob} o @q{propiedad de
1349 disposición}).  Este último es un símbolo, y por ello debe ir
1350 precedido de un apóstrofo.  La subsección @ref{Modificar las propiedades}
1351 explica cómo se deben cumplimentar los conceptos @var{nombre},
1352 @var{propiedad} y @var{valor}.  Aquí sólo nos ocuparemos de la
1353 funcionalidad des esta instrucción.
1354
1355 La instrucción
1356
1357 @verbatim
1358 \override Staff.Stem #'thickness = #4.0
1359 @end verbatim
1360
1361 @noindent
1362 hace más gruesas las plicas (el valor predeterminado es 1.3, con el
1363 grosor de una línea del pentagrama como unidad).  Puesto que la
1364 instrucción especifica como contexto a @code{Staff}, sólo se aplica al
1365 pentagrama actual.  Otros pentagramas mantienen su aspecto normal.
1366 Aquí vemos la instrucción en pleno funcionamiento:
1367
1368 @lilypond[quote,verbatim,relative=2]
1369 c4
1370 \override Staff.Stem #'thickness = #4.0
1371 c4
1372 c4
1373 c4
1374 @end lilypond
1375
1376 La instrucción @code{\override} modifica la definición de la plica
1377 @code{Stem} dentro del pentagrama en curso @code{Staff}.  Después de
1378 que la instrucción se ha interpretado, todas las plicas se engrosan.
1379
1380 De manera análoga a @code{\set}, el argumento @var{contexto} se puede
1381 omitir, ocasionando que se utilice el contexto predeterminado
1382 @code{Voice}.  Al añadir @code{\once} se aplica el cambio durante un
1383 solo paso de tiempo.
1384
1385 @lilypond[quote,verbatim,relative=2]
1386 c4
1387 \once \override Stem #'thickness = #4.0
1388 c4
1389 c4
1390 @end lilypond
1391
1392 El @code{\override} se debe hacer antes de que el objeto se inicia.
1393 Por tanto, al alterar objetos @emph{Spanner} «de extensión» como
1394 ligaduras o barras, la instrucción @code{\override} se debe ejecutar
1395 en el momento en que se crea el objeto.  En este ejemplo:
1396
1397 @lilypond[quote,verbatim,relative=2]
1398 \override Slur #'thickness = #3.0
1399 c8[( c
1400 \override Beam #'beam-thickness = #0.6
1401 c8 c])
1402 @end lilypond
1403
1404 @noindent
1405 la ligadura es más gruesa pero la barra no lo es.  Esto es así porque
1406 la instrucción para @code{Beam}, la barra, va después de que la barra
1407 se ha iniciado, y por ello no tiene ningún efecto.
1408
1409 De forma análoga a @code{\unset}, la instrucción @code{\revert} para
1410 un contexto deshace una instrucción @code{\override}; como con
1411 @code{\unset}, solamente afecta a los ajustes que se hicieron dentro
1412 del mismo contexto.  En otras palabras, el @code{\revert} del
1413 siguiente ejemplo no hace nada.
1414
1415 @example
1416 \override Voice.Stem #'thickness = #4.0
1417 \revert Staff.Stem #'thickness
1418 @end example
1419
1420 Algunas opciones «trucables» se llaman @q{subpropiedades} y residen
1421 dentro de las propiedades normales.  Para trucarlas, utilice
1422 instrucciones de la forma
1423
1424 @c leave this as a long long
1425 @example
1426 \override @var{context}.@var{name} #'@var{property} #'@var{subproperty} = #@var{value}
1427 @end example
1428
1429 @noindent
1430 tales como
1431
1432 @example
1433 \override Stem #'(details beamed-lengths) = #'(4 4 3)
1434 @end example
1435
1436 @end ignore
1437
1438 @seealso
1439 Referencia de funcionamiento interno:
1440 @rinternals{Backend},
1441 @rinternals{All layout objects},
1442 @rinternals{OverrideProperty},
1443 @rinternals{RevertProperty},
1444 @rinternals{PropertySet}.
1445
1446
1447 @knownissues
1448
1449 El «back-end» o motor de salida no es muy estricto en la comprobación
1450 de tipos de las propiedades de objetos.  Las referencias cíclicas en
1451 valores Scheme de propiedades pueden producir cuelgues o salidas
1452 abruptas, o las dos cosas.
1453
1454
1455 @node La instrucción set
1456 @subsection La instrucción @code{@bs{}set}
1457 @translationof The set command
1458
1459 @cindex propiedades
1460 @funindex \set
1461 @cindex cambiar propiedades
1462
1463 Cada contexto puede tener distintas @emph{propiedades}, variables
1464 contenidas dentro de ese contexto.  Se pueden cambiar mientras dura el
1465 paso de interpretación.  Se consigue insertando la instrucción
1466 @code{\set} dentro de la música:
1467
1468 @example
1469 \set @var{contexto}.@var{propiedad} = #@var{valor}
1470 @end example
1471
1472 @var{valor} es un objeto de Scheme, razón por la que va precedido del
1473 carácter almohadilla,@tie{}@code{#}.
1474
1475 El nombre de las propiedades de contexto suele ir en minúsculas con
1476 mayúscula en medio.  Controlan sobre todo la traducción de la música a
1477 la notación, p.ej. @code{localKeySignature} (para determinar si hay
1478 que impriir alteraciones o no), o @code{measurePosition} (para
1479 determinar cuándo hay que imprimir una línea divisoria).  El valor de
1480 las propiedades de contexto puede modifcarse con el tiempo durante la
1481 interpretación de la música; un ejemplo obvio es
1482 @code{measurePosition}.  Las propiedades de contexto se modifican
1483 mediante la instrucción @code{\set}.
1484
1485 Por ejemplo, los silencios multicompás se combinan en un solo compás
1486 si el valor de la propiedad de contexto @code{skipBars} se establece a
1487 @code{#t} (verdadero):
1488
1489 @lilypond[quote,verbatim,relative=2]
1490 R1*2
1491 \set Score.skipBars = ##t
1492 R1*2
1493 @end lilypond
1494
1495 Si se omite el argumento @var{context}, entonces se utiliza el
1496 contexto actual de nivel más bajo (normalmente @code{ChordNames},
1497 @code{Voice} o @code{Lyrics}). En este ejemplo:
1498
1499 @lilypond[quote,verbatim,relative=2]
1500 \set Score.autoBeaming = ##f
1501 <<
1502   {
1503     e8 e e e
1504     \set autoBeaming = ##t
1505     e8 e e e
1506   } \\ {
1507     c8 c c c c8 c c c
1508   }
1509 >>
1510 @end lilypond
1511
1512 El cambio se aplica @q{al vuelo}, mientras dura la música, de forma
1513 que el ajuste sólo afecta al segundo grupo de corcheas.
1514
1515 Observe que el contexto del nivel más bajo no siempre contiene la
1516 propiedad que querríamos modificar: por ejemplo, intentar ajustar el
1517 valor de la propiedad @code{skipBars} del contexto predeterminado del
1518 nivel más bajo, que en este caso es @code{Voice}, no tendrá ningún
1519 efecto, porque skipBars es una propiedad del contexto @code{Score}.
1520
1521 @lilypond[quote,verbatim,relative=2]
1522 R1*2
1523 \set skipBars = ##t
1524 R1*2
1525 @end lilypond
1526
1527 Los contextos son jerárquicos, y si se ha especificado un contexto
1528 mayor, por ejemplo @code{Staff}, entonces el cambio se aplicaría
1529 también a todos los contextos @code{Voice} dentro del pentagrama
1530 actual.
1531
1532 @funindex \unset
1533
1534 También existe una instrucción @code{\unset}:
1535 @example
1536 \unset @var{contexto}.@var{propiedad}
1537 @end example
1538
1539 @noindent
1540 que elimina la definición de @var{propiedad}.  Esta instrucción
1541 elimina la definición solamente si está establecida dentro de
1542 @var{contexto}.  Properties that have been set in enclosing contexts will
1543 not be altered by an unset in an enclosed context:
1544
1545 @lilypond[quote,verbatim,relative=2]
1546 \set Score.autoBeaming = ##t
1547 <<
1548   {
1549     \unset autoBeaming
1550     e8 e e e
1551     \unset Score.autoBeaming
1552     e8 e e e
1553   } \\ {
1554     c8 c c c c8 c c c
1555   }
1556 >>
1557 @end lilypond
1558
1559 Como @code{\set}, el argumento @var{contexto} no se tiene que
1560 especificar para un contexto del nivel más bajo, por lo que los dos
1561 enunciados
1562
1563 @example
1564 \set Voice.autoBeaming = ##t
1565 \set autoBeaming = ##t
1566 @end example
1567
1568 @noindent
1569 son equivalentes si el contexto inferior en curso es @code{Voice}.
1570
1571
1572 @cindex \once
1573 Los ajustes que se aplican solamente a un único paso de tiempo se
1574 pueden escribir con @code{\once}, por ejemplo en
1575
1576 @lilypond[quote,verbatim,relative=2]
1577 c4
1578 \once \set fontSize = #4.7
1579 c4
1580 c4
1581 @end lilypond
1582
1583 En el manual de Referencia de funcionamiento interno hay una
1584 descripción completa de todas las propiedades de contexto disponibles,
1585 consulte
1586 @ifhtml
1587 @rinternals{Tunable context properties}.
1588 @end ifhtml
1589 @ifnothtml
1590 Traducción @expansion{} Propiedades de contexto modificables por el
1591 usuario.
1592 @end ifnothtml
1593
1594 @seealso
1595
1596 Referencia de funcionamiento interno:
1597 @rinternals{Tunable context properties}.
1598
1599
1600 @cindex grob, propiedades de
1601 @cindex propiedades de grob
1602 @funindex \override
1603
1604 @node La instrucción override
1605 @subsection La instrucción @code{\override}
1606 @translationof The override command
1607
1608 Existe un tipo especial de propiedad de contexto: la descripción de
1609 los grobs.  Las decscripciones de los grobs reciben un nombre en
1610 @code{MayúsculasDeCamello} (empezando en mayúscula).  Contienen los
1611 @q{ajustes predeterminados} para un tipo particular de grob, en forma
1612 de lista asociativa.  Consulte @file{scm/define-grobs.scm} para
1613 ver los ajustes de cada descripción de grob.  Las descripciones de
1614 grob se modifican con @code{\override}.
1615
1616 @code{\override} es en realidad una forma abreviada;
1617
1618 @example
1619 \override @var{contexto}.@var{NombreDelGrob} #'@var{propiedad} = #@var{valor}
1620 @end example
1621
1622 @noindent
1623 equivale más o menos a
1624
1625 @c  leave this long line -gp
1626 @example
1627 \set @var{contexto}.@var{NombreDelGrob}  =
1628   #(cons (cons '@var{propiedad} @var{valor})
1629          <valor anterior de @var{contexto}.@var{NombreDelGrob}>)
1630 @end example
1631
1632 El valor de @code{contexto}.@code{NombreDelGrob} (la lista-A) se
1633 utiliza para inicializar las propiedades de los grobs individuales.
1634 Los grobs tienen propiedades, denominadas en el estilo de Scheme, con
1635 @code{palabras-con-guiones}.  Los valores de las propiedades de grob
1636 cambian durante el proceso de formateo: éste se realiza básicamente
1637 calculando las propiedades utilizando funciones de @q{callback}
1638 (pasadas como parámetro).
1639
1640 Por ejemplo, podemos aumentar el grosor de la plica de una figura
1641 sobreescribiendo la propiedad @code{thickness} (grosor) del objeto
1642 @code{Stem} (plica):
1643
1644 @lilypond[quote,verbatim,relative=2]
1645 c4 c
1646 \override Voice.Stem #'thickness = #3.0
1647 c4 c
1648 @end lilypond
1649
1650 Si no se ha especificado ningún contexto en la instrucción
1651 @code{\override}, se utiliza el contexto del nivel inferior:
1652
1653 @lilypond[quote,verbatim,relative=2]
1654 { \override Staff.Stem #'thickness = #3.0
1655   <<
1656     {
1657       e4 e
1658       \override Stem #'thickness = #0.5
1659       e4 e
1660     } \\ {
1661       c4 c c c
1662     }
1663   >>
1664 }
1665 @end lilypond
1666
1667 @funindex \revert
1668 @cindex reversión de sobreescrituras
1669 @cindex sobreescrituras, reversión de
1670
1671 El efecto de una instrucción de sobreescritura @code{\override} se
1672 puede deshacer con @code{\revert}:
1673
1674 @lilypond[quote,verbatim,relative=2]
1675 c4
1676 \override Voice.Stem #'thickness = #3.0
1677 c4 c
1678 \revert Voice.Stem #'thickness
1679 c4
1680 @end lilypond
1681
1682 Los efectos de @code{\override} y @code{\revert} se aplican a todos
1683 los grobs del contexto afectado partiendo del momento actual y hacia
1684 adelante:
1685
1686 @lilypond[quote,verbatim,relative=2]
1687 {
1688   <<
1689     {
1690       e4
1691       \override Staff.Stem #'thickness = #3.0
1692       e4 e e
1693     } \\ {
1694       c4 c c
1695       \revert Staff.Stem #'thickness
1696       c4
1697     }
1698   >>
1699 }
1700 @end lilypond
1701
1702 @funindex \once
1703 @cindex sobreescritura para un solo momento
1704
1705 Se puede usar @code{\once} con @code{\override} para afectar solamente
1706 al instante de tiempo actual:
1707
1708 @lilypond[quote,verbatim,relative=2]
1709 {
1710   <<
1711     {
1712       \override Stem #'thickness = #3.0
1713       e4 e e e
1714     } \\ {
1715       c4
1716       \once \override Stem #'thickness = #3.0
1717       c4 c c
1718     }
1719   >>
1720 }
1721 @end lilypond
1722
1723
1724 @ignore
1725 Las instrucciones que modifican la salida tienen por lo general un
1726 aspecto como
1727
1728 @example
1729 \override Voice.Stem #'thickness = #3.0
1730 @end example
1731
1732 @noindent
1733 Para construir este truco debemos determinar los siguientes datos:
1734
1735 @itemize
1736 @item el contexto: aquí @code{Voice}.
1737 @item el objeto de presentación: aquí @code{Stem}.
1738 @item la propiedad de presentación: aquí @code{thickness}.
1739 @item un valor adecuado: aquí @code{3.0}.
1740 @end itemize
1741
1742 Ciertas opciones ajustables se denominan @q{subpropiedades} y residen
1743 en el interior de las propiedades normales.  Para modificarlas utilice
1744 instrucciones de la forma
1745
1746 @example
1747 \override Stem #'(details beamed-lengths) = #'(4 4 3)
1748 @end example
1749
1750 @cindex documentación interna
1751 @cindex buscar objetos gráficos
1752 @cindex gráficos, descripción de los objetos
1753 @cindex trucos
1754 @funindex \override
1755 @cindex interna, documentación
1756
1757 Para muchas propiedades, independientemente del tipo de datos de la
1758 propiedad, si se establece el valor de la propiedad a falso
1759 (@code{#f}) se producirá su desactivación, ocasionando que LilyPond
1760 ignore por completo dicha propiedad.  Esto es especialmente útil para
1761 «apagar» propiedades de grobs (objetos gráficos) que de otra manera
1762 causarían problemas.
1763
1764 Mostraremos a continuación cómo localizar esta información en el
1765 manual de notación y en la referencia de funcionamiento interno.
1766 @end ignore
1767
1768 @seealso
1769
1770 Referencia de funcionamiento interno:
1771 @rinternals{Backend}
1772
1773 @node La instrucción tweak
1774 @subsection La instrucción @code{\tweak}
1775 @translationof The tweak command
1776
1777 @funindex \tweak
1778 @cindex trucar
1779
1780 El cambio de las propiedades de grob mediante @code{\override} produce
1781 la aplicación del cambio a todos los grobs dados en el contexto en el
1782 momento en que se aplica dicho cambio.  Sin embargo, en ocasiones
1783 podemos desear que los cambios se apliquen a un solo grob en lugar de
1784 a todos los grobs del contexto afectado.  Esto se consigue con la
1785 instrucción @code{\tweak}, que tiene la sintaxis siguiente:
1786
1787 @example
1788 \tweak #'@code{propiedad-del-grob} #@code{valor}
1789 @end example
1790
1791 La instrucción @code{\tweak} se aplica al objeto que viene
1792 inmediatamente después de @code{valor} dentro del flujo musical.
1793
1794 @ignore
1795 En ocasiones es posible tomar un atajo para realizar el ajuste fino de
1796 los objetos gráficos.  Para objetos que resultan directamente de un
1797 elemento de código de la entrada, puede usar la función @code{\tweak},
1798 por ejemplo
1799
1800 @lilypond[relative=2,verbatim,quote]
1801 < c
1802   \tweak #'color #red
1803   d
1804   g
1805   \tweak #'duration-log #1
1806   a
1807 > 4
1808 -\tweak #'padding #8
1809 -^
1810 @end lilypond
1811
1812
1813
1814 Pero el uso principal de la instrucción @code{\tweak} es modificar
1815 solamente uno de varios elementos de notación que dan comienzo en el
1816 mismo momento musical, como las notas de un acorde, o corchetes de
1817 tresillo que empiezan al mismo tiempo.
1818
1819 La instrucción @code{\tweak} fija una propiedad en el objeto que viene
1820 a continuación de forma directa, sin necesidad de especificar el
1821 nombre del grob o el contexto.  Para que esto funcione, es necesario
1822 que la instrucción @code{\tweak} permanezca inmediatamente adyacente
1823 al objeto al que se aplica, después de que el archivo de entrada se ha
1824 convertido en un flujo musical.  Con frecuencia no es el caso, pues
1825 muchos elementos adicionales se insertan en la corriente musical de
1826 forma implícita.  Por ejemplo, cuando se procesa una nota que no forma
1827 parte de un acorde, LilyPond inserta implícitamente un evento
1828 @code{ChordEvent} antes de la nota, separando así el truco de la nota.
1829 Sin embargo, si los símbolos de acorde se sitúan cerca del truco y la
1830 nota, la instrucción @code{\tweak} viene después del @code{ChordEvent}
1831 en el flujo musical, permaneciendo así adyacente a la nota, y con la
1832 posibilidad de modificarla.
1833
1834 Así, esto funciona:
1835
1836 @lilypond[relative=2,verbatim,quote]
1837 <\tweak #'color #red c>4
1838 @end lilypond
1839
1840 @noindent
1841 pero esto no funciona:
1842
1843 @lilypond[relative=2,verbatim,quote]
1844 \tweak #'color #red c4
1845 @end lilypond
1846
1847 @end ignore
1848
1849 Para ver una introducción a la sintaxis y los usos de la instrucción tweak,
1850 consulte @rlearning{Métodos de trucaje}.
1851
1852 Si se colocan varios elementos similares en el mismo momento musical,
1853 la instrucción @code{\override} no se puede usar para modificar uno
1854 solo de ellos: aquí es donde se debe usar la instrucción
1855 @code{\tweak}.  Entre los elementos que pueden aparecer más de una vez
1856 en el mismo momento musical están los siguientes:
1857
1858 @c TODO expand to include any further uses of \tweak
1859 @itemize
1860 @item las cabezas de las notas de un acorde
1861 @item signos de articulación sobre la misma nota
1862 @item ligaduras de unión entre notas de un acorde
1863 @item corchetes de grupos especials que comienzan en el mismo momento
1864 @end itemize
1865
1866 @c TODO add examples of these
1867
1868 @cindex acorde, modificación de una nota
1869
1870 En este ejemplo se modifican el color de una cabeza y el tipo de otra,
1871 dentro del mismo acorde:
1872
1873 @lilypond[relative=2,verbatim,quote]
1874 < c
1875   \tweak #'color #red
1876   d
1877   g
1878   \tweak #'duration-log #1
1879   a
1880 > 4
1881 @end lilypond
1882
1883 @code{\tweak} se puede usar para modificar ligaduras de expresión:
1884
1885 @lilypond[verbatim,quote,relative=1]
1886 c-\tweak #'thickness #5 ( d e f)
1887 @end lilypond
1888
1889
1890 Para que funcione la instrucción @code{\tweak}, debe permanecer
1891 adyacente al objeto al que se ha de aplicar después de que el código
1892 de entrada se ha convertido a un flujo musical.  A veces, LilyPond
1893 puede insertar elementos adicionales dentro del flujo de música
1894 durante el proceso de análisis sintáctico.  Por ejemplo, cuando una
1895 nota que no es parte explícita de un acorde se coloca dentro de un
1896 acorde por parte de LilyPond de manera que las notas que se pretenden
1897 modificar con @code{\tweak} se deben poner dentro de una construcción
1898 de acorde:
1899
1900 @lilypond[relative=2,verbatim,quote]
1901 \tweak #'color #red c4
1902 <\tweak #'color #red c>4
1903 @end lilypond
1904
1905 La instrucción @code{\tweak} no se puede usar para modificar ningún
1906 elemento que no aparezca explícitamente en el código de entrada.
1907 Concretamente, no se puede usar para modificar plicas, barras o
1908 alteraciones directamente, porque éstos se generan posteriormente por
1909 parte de las cabezas de las notas, más que por elementos musicales del
1910 flujo de entrada.  Tampoco se puede usar @code{\tweak} para modificar
1911 las claves ni las indicaciones de compás, porque se separarán de
1912 cualquier instrucción @code{\tweak} que aparezca en el flujo de
1913 entrada debido a la inserción automática de los elementos adicionales
1914 que se requieren para especificar el contexto.
1915
1916 También se pueden escribir varias instrucciones @code{\tweak} antes de
1917 un elemento notacional, y todas ellas le afectan:
1918
1919 @lilypond[verbatim,quote,relative=1]
1920 c
1921 -\tweak #'style #'dashed-line
1922 -\tweak #'dash-fraction #0.2
1923 -\tweak #'thickness #3
1924 -\tweak #'color #red
1925  \glissando
1926 f'
1927 @end lilypond
1928
1929 El flujo musical que se genera a partir de una sección de un archivo
1930 de entrada (incluido cualquier elemento insertado automáticamente)
1931 puede examinarse, véase @rextend{Presentación de las expresiones musicales}.
1932 Esto puede ser de utilidad en la determinación de lo que
1933 puede modificarse por medio de una instrucción @code{\tweak}.
1934
1935
1936 @seealso
1937 Manual de aprendizaje:
1938 @rlearning{Métodos de trucaje}.
1939
1940 Manual de extensión:
1941 @rextend{Presentación de las expresiones musicales}.
1942
1943
1944 @knownissues
1945
1946 @cindex trucos en una variable
1947 La instrucción @code{\tweak} no se puede usar dentro de una variable.
1948
1949 @cindex trucos en la letra
1950 Las instrucciones @code{\tweak} no se pueden usar dentro del modo
1951 @code{\lyricmode}.
1952
1953 @cindex trucar puntos de control
1954 @cindex control, trucar puntos de
1955
1956 La instrucción @code{\tweak} solamente se aplica a la primera de
1957 varias ligaduras generadas dentro de un acorde.
1958
1959 @node set frente a override
1960 @subsection @code{\set} frente a @code{\override}
1961 @translationof set versus override
1962
1963 @c HACER: probablemente esta sección es innecesaria.
1964
1965 @ignore
1966 We have seen two methods of changing properties: @code{\set} and
1967 @code{\override}.  There are actually two different kinds of
1968 properties.
1969
1970 @code{fontSize} is a special property: it is equivalent to
1971 entering @code{\override ... #'font-size} for all pertinent
1972 objects.  Since this is a common change, the special
1973 property (modified with @code{\set}) was created.
1974
1975 @end ignore
1976
1977
1978 @node Modificación de las listas-A
1979 @subsection Modificación de las listas-A
1980 @translationof Modifying alists
1981
1982 Ciertas propiedades configurables por parte del usuario se representan
1983 internamente como @emph{listas-A} (listas asociativas), que almacenan
1984 duplas de @emph{claves} y @emph{valores}.  La estructura de una
1985 lista-A es la siguiente:
1986
1987 @example
1988 '((@var{clave1} . @var{valor1})
1989   (@var{clave2} . @var{valor2})
1990   (@var{clave3} . @var{valor3})
1991   @dots{})
1992 @end example
1993
1994 Si una lista-A es una propiedad de un grob o una variable de
1995 @code{\paper}, sus claves se pueden modificar individualmente sin que
1996 afecte a las otras claves.
1997
1998 Por ejemplo, para reducir el espacio entre pentagramas adyacentes
1999 dentro de un grupo, use la propiedad @code{staff-staff-spacing}
2000 del grob @code{StaffGrouper}.  La propiedad es una lista-A con cuatro
2001 claves: @code{basic-distance} (distancia básica),
2002 @code{minimum-distance} (distancia mínima), @code{padding} (relleno)
2003 y @code{stretchability} (ampliabilidad).
2004 Los ajustes estándar para esta propiedad
2005 se relacionan en la sección
2006 @qq{Backend} de la Referencia de Funcionamiento Interno
2007 (véase @rinternals{StaffGrouper}):
2008
2009 @example
2010 '((basic-distance . 9)
2011   (minimum-distance . 7)
2012   (padding . 1)
2013   (stretchability . 5))
2014 @end example
2015
2016 Una forma de acercar los pentagramas entre sí es reducir el valor de
2017 la clave @code{basic-distance} (@code{9}) para que se corresponda con el valor
2018 de @code{minimum-distance} (@code{7}).  Para modificar una única clave
2019 de forma individual, utilice una @emph{declaración anidada}:
2020
2021 @lilypond[quote,verbatim]
2022 % default space between staves
2023 \new PianoStaff <<
2024   \new Staff { \clef treble c''1 }
2025   \new Staff { \clef bass   c1   }
2026 >>
2027
2028 % reduced space between staves
2029 \new PianoStaff \with {
2030   % this is the nested declaration
2031   \override StaffGrouper #'staff-staff-spacing #'basic-distance = #7
2032 } <<
2033   \new Staff { \clef treble c''1 }
2034   \new Staff { \clef bass   c1   }
2035 >>
2036 @end lilypond
2037
2038 La utilización de una declaración anidada actualiza la clave
2039 especificada (como @code{basic-distance} en el ejemplo anterior)
2040 sin alterar ninguna
2041 de las otras claves que ya se habían establecido para la misma
2042 propiedad.
2043
2044 Ahora, supongamos que deseamos que los pentagramas estén tan próximos
2045 como sea posible sin que se superpongan.  La manera más sencilla de
2046 hacerlo es establecer las cuatro claves de la lista-A a cero.  Sin
2047 embargo, no es necesario escribir cuatro declaraciones anidadas,
2048 una por cada clave.  En lugar de eso, se puede redefinir
2049 completamente la propiedad con una sola declaración, como una lista-A:
2050
2051 @lilypond[quote,verbatim]
2052 \new PianoStaff \with {
2053   \override StaffGrouper #'staff-staff-spacing =
2054     #'((basic-distance . 0)
2055        (minimum-distance . 0)
2056        (padding . 0)
2057        (stretchability . 0))
2058 } <<
2059   \new Staff { \clef treble c''1 }
2060   \new Staff { \clef bass   c1   }
2061 >>
2062 @end lilypond
2063
2064 Observe que cualquier clave que no haya sido relacionada
2065 explícitamente en la definición de la lista-A, será reiniciada a sus
2066 valores @emph{predeterminados si no se han fijado}.  En el caso de
2067 @code{staff-staff-spacing}, el valor de cualquier clave no fijada se
2068 reiniciaría a cero (excepto @code{stretchability}, que toma el valor
2069 de @code{basic-distance} si no se fija).  Así, las dos declaraciones siguientes
2070 son equivalentes:
2071
2072 @example
2073 \override StaffGrouper #'staff-staff-spacing =
2074   #'((basic-distance . 7))
2075
2076 \override StaffGrouper #'staff-staff-spacing =
2077   #'((basic-distance . 7)
2078      (minimum-distance . 0)
2079      (padding . 0)
2080      (stretchability . 7))
2081 @end example
2082
2083 Una consecuencia de esto (posiblemente no intencionada) es la
2084 eliminación de cualquier valor estándar que
2085 se establezca en un archivo de inicio y que se carga cada vez que se
2086 compila un archivo de entrada.  En el ejemplo anterior, los ajustes
2087 estándar para @code{padding} y
2088 @code{minimum-distance} (definidos en @file{scm/define-grobs.scm}) se
2089 reinician a sus valores predeterminados si no se han fijado (cero para
2090 las dos claves).  La definición de una propiedad o variable como una
2091 lista-A (de cualquier tamaño) siempre reinicia todos los valores de
2092 clave no establecidos a sus valores predeterminados si no se han
2093 fijado.  Ano ser que este sea el resultado deseado, es más seguro
2094 actualizar los valores de clave individualmente con una declaración
2095 anidada.
2096
2097 @warning{Las declaraciones anidadas no funcionan para las listas-A de
2098 propiedades de contexto (como @code{beamExceptions},
2099 @code{keySignature}, @code{timeSignatureSettings}, etc.).  Estas
2100 propiedades sólo se pueden modificar redefiniéndolas completamente
2101 como listas-A.}
2102
2103
2104 @node Conceptos y propiedades útiles
2105 @section Conceptos y propiedades útiles
2106 @translationof Useful concepts and properties
2107
2108
2109 @menu
2110 * Modos de entrada::
2111 * Dirección y posición::
2112 * Orden de disposición de los contextos::
2113 * Distancias y medidas::
2114 * Propiedades del símbolo del pentagrama::
2115 * Objetos de extensión::
2116 * Visibilidad de los objetos::
2117 * Estilos de línea::
2118 * Rotación de objetos::
2119 @end menu
2120
2121 @node Modos de entrada
2122 @subsection Modos de entrada
2123 @translationof Input modes
2124
2125 La forma en que se interpreta la notación contenida dentro de un
2126 archivo de entrada, está determinada por el modo de entrada en curso.
2127
2128 @strong{Modo de acordes}
2129
2130 Se activa con la instrucción @code{\chordmode} y produce que la
2131 entrada se interprete con al sintaxis de la notación de acordes, véase
2132 @ref{Notación de acordes}.  Los acordes se imprimen como notas sobre un
2133 pentagrama.
2134
2135 El modo de acordes se activa también con la instrucción
2136 @code{\chords}.  Esto crea también un contexto @code{ChordNames} nuevo
2137 y produce que el código que sigue se interprete con la sintaxis de la
2138 notación de acordes y se imprima como nombres de acorde dentro del
2139 contexto @code{ChordNames}, véase @ref{Impresión de los nombres de acorde}.
2140
2141 @strong{Modo de percusión}
2142
2143 Se activa con la instrucción @code{\drummode} y produce que el código
2144 de entrada se interprete con la sintaxis de la notación de percusión,
2145 véase @ref{Notación básica de percusión}.
2146
2147 El modo de percusión también se activa con la instrucción
2148 @code{\drums}.  También crea un contexto @code{DrumStaff} nuevo y hace
2149 que el código que sigue se interprete con la sintaxis de la notación
2150 de percusión y se imprima como símbolos de percusión sobre un
2151 pentagrama de percusión, véase @ref{Notación básica de percusión}.
2152
2153 @strong{Modo de cifras}
2154
2155 Se activa con la instrucción @code{\figuremode} y hace que el código
2156 de entrada se interprete con la sintaxis del bajo cifrado, véase
2157 @ref{Introducir el bajo cifrado}.
2158
2159 El modo de cifrase también se activa con la instrucción
2160 @code{\figures}.  También crea un contexto de @code{FiguredBass} nuevo
2161 y hace que el código que viene a continuación se interprete con la
2162 sintaxis del bajo cifrado y se imprima como símbolos de bajo cifrado
2163 dentro del contexto @code{FiguredBass}, véase @ref{Introducción al bajo cifrado}.
2164
2165 @strong{Modos de traste y tablatura}
2166
2167 No existen modos de entrada especiales para introducir símbolos de
2168 trastes y de tablatura.
2169
2170 Para crear diagramas de trastes, escriba las notas o acordes en el
2171 modo de notas e imprímalos dentro de un contexto @code{TabStaff},
2172 véase @ref{Tablaturas predeterminadas}.
2173
2174 Para crear diagramas de trastes encima de un pentagrama, escríbalos
2175 como elementos de marcado encima de las notas utilizando la
2176 instrucción @code{\fret-diagram}, véase @ref{Marcas de diagramas de trastes}.
2177
2178 @strong{Modo de letra}
2179
2180 Se activa con la instrucción @code{\lyricmode}, y hace que la entrada
2181 se interprete como sílabas de la letra de la canción con duraciones
2182 opcionales y modificadores de letra asociados, véase @ref{Música vocal}.
2183
2184 El modo de letra también se habilita con la instrucción
2185 @code{\addlyrics}.  Esto también crea un contexto @code{Lyrics} nuevo
2186 y una instrucción @code{\lyricsto} implícita que asocia la letra que
2187 viene a continuación con la música precedente.
2188
2189 @strong{Modo de marcado}
2190
2191 Se activa con la instrucción @code{\markup}, y hace que la entrada se
2192 interprete con la sintaxis del marcado, véase @ref{Text markup commands}.
2193
2194 @c silly work-around for texinfo broken-ness
2195 @c (@strong{Note...} causes a spurious cross-reference in Info)
2196 @b{Modo de notas}
2197
2198 Es el modo predeterminado o se puede activar con la instrucción
2199 @code{\notemode}.  La entrada se interpreta como alturas, duraciones,
2200 marcado, etc. y se imprime como notación musical sobre un pentagrama.
2201
2202 Normalmente no es necesario especificar el modo de notas de forma
2203 explícita, pero puede ser útil hacerlo en ciertas situaciones, por
2204 ejemplo si estamos en el modo de letra, en el modo de acordes o en
2205 otro modo y queremos insertar algo que solamente se puede hacer con la
2206 sintaxis del modo de notas.
2207
2208 Por ejemplo, para insertar indicaciones dinámicas para las estrofas de
2209 una pieza coral es necesario entrar en el modo de notas para poder
2210 interpretar dichas indicaciones:
2211
2212 @lilypond[verbatim,relative=2,quote]
2213 { c4 c4 c4 c4 }
2214 \addlyrics {
2215   \notemode{\set stanza = \markup{ \dynamic f 1. } }
2216   To be sung loudly
2217 }
2218 \addlyrics {
2219   \notemode{\set stanza = \markup{ \dynamic p 2. } }
2220   To be sung quietly
2221 }
2222 @end lilypond
2223
2224
2225
2226 @node Dirección y posición
2227 @subsection Dirección y posición
2228 @translationof Direction and placement
2229
2230 Al tipografiar música, la dirección y colocación de muchos elementos
2231 es cuestión de elección.  Por ejemplo, las plicas de las notas se
2232 pueden dirigir hacia arriba o hacia abajo; la letra, las indicaciones
2233 dinámicas y otras marcas expresivas se pueden colocar encima o debajo
2234 del pentagrama; el texto se pude alinear a la izquierda, a la derecha
2235 o centrado; etc.  La mayoría de estas elecciones pueden dejarse que
2236 LilyPond las determine automáticamente, pero en ciertos casos puede
2237 ser deseable forzar una dirección o colocación concreta.
2238
2239 @strong{Acciones predeterminadas}
2240
2241 De forma predeterminada algunas direcciones siempre son hacia arriba o
2242 siempre hacia abajo (p. ej. los matices o el calderón), mientras que
2243 otras cosas pueden alternar entre arriba y abajo en función de la
2244 dirección de las plicas (como las ligaduras o los acentos).
2245
2246 @c TODO Add table showing these
2247
2248 Se puede sobreescribir la acción predeterminada mediante el prefijado
2249 de la articulación por un @emph{indicacor de dirección}.  Están disponibles
2250 tres indicadores de dirección: @code{^} (que significa @qq{arriba}), @code{_}
2251 (que significa @qq{abajo}) o @code{-} (que significa @qq{usar la
2252 dirección predeterminada}).  El indicador de dirección se puede normalmente
2253 omitir, en cuyo caso se supone el indicador predeterminado
2254 @code{-}, pero se necesita un indicador de dirección @strong{siempre}
2255 antes de:
2256
2257 @itemize
2258 @item las instrucciones @code{\tweak}
2259 @item las instrucciones @code{\markup}
2260 @item las instrucciones @code{\tag}
2261 @item los marcados de cadena, p.ej. -"cadena"
2262 @item las instrucciones de digitación, p.ej. @w{@code{-1}}
2263 @item las abreviaturas de articulación, p.ej. @w{@code{-.}}, @w{@code{->}}, @w{@code{--}}
2264 @end itemize
2265
2266 Estas indicaciones afectan sólo a la nota siguiente.
2267
2268 @lilypond[verbatim,quote,relative=2]
2269 c2( c)
2270 c2_( c)
2271 c2( c)
2272 c2^( c)
2273 @end lilypond
2274
2275 @strong{La propiedad de dirección}
2276
2277 La posición o dirección de muchos objetos de presentación está
2278 controlada por la propiedad @code{direction}.
2279
2280 El valor de la propiedad @code{direction} se puede establecer al valor
2281 @code{1}, con el significado de @qq{hacia arriba} o @qq{encima}, o a
2282 @w{@code{-1}}, con el significado de @qq{hacia abajo} o @qq{debajo}.  Se
2283 pueden usar los símbolos @code{UP} y @code{DOWN} en sustitución de
2284 @code{1} y @w{@code{-1}} respectivamente.  La dirección predeterminada se
2285 puede especificar estableciendo @code{direction} a @code{0} ó a
2286 @code{CENTER}.  De forma alternativa, en muchos casos existen
2287 instrucciones predefinidas para especificar la dirección.  Todas ellas
2288 son de la forma:
2289
2290 @noindent
2291 @code{\xxxUp}, @code{xxxDown}, @code{xxxNeutral}
2292
2293 @noindent
2294 donde @code{xxxNeutral} significa @qq{utilizar la dirección
2295 predeterminada}.  Véase @rlearning{Objetos interiores al pentagrama}.
2296
2297 En alguna que otra ocasión, con el único ejemplo usual del arpegio, el
2298 valor de la propiedad @code{direction} especifica si el objeto se debe
2299 colocar a la izquierda o a la derecha del objeto padre.  En este caso
2300 @w{@code{-1}} ó @code{LEFT} significan @qq{a la izquierda} y @code{1} ó
2301 @code{RIGHT} significan @qq{a la derecha}.  @code{0} ó @code{CENTER}
2302 significan @qq{utilizar la dirección predeterminada}, como antes.
2303
2304 Estas indicaciones afectan a todas las notas hasta que son canceladas.
2305
2306 @lilypond[verbatim,quote,relative=2]
2307 c2( c)
2308 \slurDown
2309 c2( c)
2310 c2( c)
2311 \slurNeutral
2312 c2( c)
2313 @end lilypond
2314
2315
2316 @node Orden de disposición de los contextos
2317 @subsection Orden de disposición de los contextos
2318 @translationof Context layout order
2319
2320 @cindex contextos, orden de disposición
2321
2322 Los contextos se disponen en un sistema normalmente desde arriba hacia
2323 abajo en el orden en que se encuentran en el archivo de entrada.
2324 Cuando los contextos se anidan unos dentro de otros, el contexto
2325 exterior incluye a los contextos anidados tal y como se especifica en
2326 el archivo de entrada, siempre y cuando los contextos interiores estén
2327 incluidos en la lista @qq{accepts} del contexto externo.  Los
2328 contextos anidados que no está nincluidos en la lista @qq{accepts} del
2329 contexto externo se recolocan debajo del contexto externo en lugar de
2330 anidarse dentro de él.
2331
2332 Observe que discretamente se crea un contexto de forma implícita si se
2333 encuentra una instrucción donde no hay un contexto apropiado para
2334 contenerlo.  Esto puede dar lugar a pentagramas o partituras nuevos no
2335 esperados.
2336
2337 El orden predeterminado en que los contextos se disponen, así como la
2338 lista @qq{accepts}, pueden cambiarse; véase @ref{Alinear los
2339 contextos}.
2340
2341 @seealso
2342 Manual de utilización del programa:
2343 @rprogram{Aparece un pentagrama de más}.
2344
2345 @node Distancias y medidas
2346 @subsection Distancias y medidas
2347 @translationof Distances and measurements
2348
2349 @cindex distancias absolutas
2350 @cindex distancias escaladas
2351
2352 @funindex \mm
2353 @funindex \cm
2354 @funindex \in
2355 @funindex \pt
2356
2357 Las distancias en LilyPond son de dos tipos: absolutas y escaladas.
2358
2359 Las distancias absolutas se usan para especificar márgenes, sangrados
2360 y otros detalles de diseño de página, y de forma predeterminada se
2361 especifican en milímetros.  Las distancias se pueden especificar en
2362 otras unidades escribiendo después de la cifra indicativa de la
2363 cantidad, @code{\mm}, @code{\cm}, @code{\in}@tie{}(pulgadas), o
2364 @code{\pt}@tie{}(puntos, 1/72.27 pulgadas).  Las distancias de diseño
2365 de página se pueden especificar también en unidades escalables (véase
2366 el párrafo siguiente) adjuntando @code{\staff-space} a la cantidad.
2367 La disposición de página se describe en detalle en
2368 @ref{Disposición de la página}.
2369
2370 Las distancias escaladas siempre se especifican en unidades de un
2371 espacio del pentagrama o, más raramente, medio espacio del pentagrama.
2372 El espacio de pentagrama es la distancia entre dos líneas del
2373 pentagrama adyacentes.  El valor predeterminado se puede cambiar
2374 globalmente fijando el tamaño global del pentagrama, o se puede
2375 sobreescribir localmente cambiando la propiedad @code{staff-space} del
2376 objeto @code{StaffSymbol}.  Las distancias escaladas se escalan
2377 automáticamente con cualquier cambio al tamaño global del pentagrama o
2378 a la propiedad @code{staff-space} del objeto @code{StaffSymbol}, pero
2379 las fuentes tipográficas se escalan solamente con los cambios
2380 efectuados al tamaño global del pentagrama.  Así, el tamaño global del
2381 pentagrama posibilita la fácil variación del tamaño general de una
2382 partitura impresa.  Para ver los métodos de establecimiento del tamaño
2383 global del pentagrama, véase @ref{Establecer el tamaño del pentagrama}.
2384
2385 @funindex magstep
2386
2387 Si se necesita dibujar sólo una sección de una partitura a una escala
2388 distinta, por ejemplo una sección ossia o una nota al pie, no se puede
2389 simplemente cambiar el tamaño global del pentagrama porque esto
2390 afectaría a toda la partitura.  En tales casos, el cambio de tamaño se
2391 hace sobreescribiendo tanto la propiedad @code{staff-space} de
2392 @code{StaffSymbol} como el tamaño de las fuentes tipográficas.  Está a
2393 nuestra disposición una función de Scheme, @code{magstep}, para
2394 convertir de un cambio en el tamaño de la fuente al cambio equivalente
2395 en @code{staff-space}.  Para ver una explicación y un ejemplo de su
2396 utilización, consulte @rlearning{Longitud y grosor de los objetos}.
2397
2398
2399 @seealso
2400 Manual de aprendizaje:
2401 @rlearning{Longitud y grosor de los objetos}.
2402
2403 Referencia de la notación:
2404 @ref{Disposición de la página},
2405 @ref{Establecer el tamaño del pentagrama}.
2406
2407
2408 @node Propiedades del símbolo del pentagrama
2409 @subsection Propiedades del símbolo del pentagrama
2410 @translationof Staff symbol properties
2411
2412 @cindex ajuste del símbolo del pentagrama
2413 @cindex dibujar el símbolo del pentagrama
2414 @cindex pentagrama, establecer el símbolo del
2415
2416 @c TODO Extend or remove this section.  See also NR 1.6.2 Staff symbol
2417 @c      Need to think of uses for these properties.  Eg 'line-positions
2418 @c      is used in a snippet to thicken centre line.
2419 @c      If retained, add @ref to here in 1.6.2  -td
2420
2421 Se puede definir al mismo tiempo la posición vertical de las líneas de
2422 la pauta y el número de líneas de la misma.  Como muestra el siguiente
2423 ejemplo, las posiciones de las notas no están influidas por las
2424 posiciones de las líneas de la pauta.
2425
2426 @warning{La propiedad @code{'line-positions} sobreescribe a la
2427 propiedad @code{'line-count}.  El número de líneas de la pauta está
2428 definido implícitamente por el número de elementos de la lista de
2429 valores de @code{'line-positions}.}
2430
2431 @lilypond[verbatim,quote,relative=1]
2432 \new Staff \with {
2433   \override StaffSymbol #'line-positions = #'(7 3 0 -4 -6 -7)
2434 }
2435 { a4 e' f b | d1 }
2436 @end lilypond
2437
2438 Se puede modificar la anchura de la pauta.  Las unidades son espacios
2439 de pentagrama.  El espaciado de los objetos dentro del pentagrama no
2440 resulta afectado por este ajuste.
2441
2442 @lilypond[verbatim,quote,relative=1]
2443 \new Staff \with {
2444   \override StaffSymbol #'width = #23
2445 }
2446 { a4 e' f b | d1 }
2447 @end lilypond
2448
2449
2450 @node Objetos de extensión
2451 @subsection Objetos de extensión
2452 @translationof Spanners
2453
2454 Muchos objetos de notación musical abarcan varias notas o incluso
2455 varios compases.  Son ejemplos los crescendi, trinos, corchetes de
2456 grupo especial y corchetes de primera y segunda vez.  Estos objetos se
2457 llaman @qq{spanners} u «objetos de extensión», y tienen propiedades
2458 especiales para controlar su apariencia y comportamiento.  Algunas de
2459 estas propiedades son comunes a todos los objetos de extensión; otras
2460 se limitan a un subconjunto de los extensores.
2461
2462 Todos los objetos de extensión contemplan el interface
2463 @code{spanner-interface}.  Algunos, básicamente aquellos que trazan
2464 una línea recta entre los dos objetos, contemplan también el interface
2465 @code{line-spanner-interface}.
2466
2467 @unnumberedsubsubsec Uso del @code{spanner-interface}
2468
2469 Este interface proporciona dos propiedades que se aplican a varios
2470 extensores.
2471
2472 @strong{@i{La propiedad @code{minimum-length}}}
2473
2474 La longitud mínima del objeto de extensión se especifica a través de
2475 la propiedad @code{minimum-length}.  Su aumento suele producir el
2476 efecto necesario de aumentar el espaciado de las notas entre los dos
2477 puntos extremos.  Sin embargo, esta sobreescritura no tiene ningún
2478 efecto sobre muchos extensores, pues su longitud está determinada por
2479 otras consideraciones.  Más abajo se muestran algunos ejemplos de
2480 dónde es efectiva.
2481
2482 @ignore
2483 Works for:
2484   Tie
2485   MultiMeasureRest
2486   Hairpin
2487   Slur
2488   PhrasingSlur
2489
2490 Works as long as callback is made:
2491   Glissando
2492   Beam
2493
2494 Works not at all for:
2495   LyricSpace
2496   LyricHyphen
2497   LyricExtender
2498   TextSpanner
2499   System
2500
2501 @end ignore
2502
2503 @lilypond[verbatim,quote,relative=2]
2504 a~a
2505 a
2506 % increase the length of the tie
2507 -\tweak #'minimum-length #5
2508 ~a
2509 @end lilypond
2510
2511 @lilypond[verbatim,quote,relative=2]
2512 a1
2513 \compressFullBarRests
2514 R1*23
2515 % increase the length of the rest bar
2516 \once \override MultiMeasureRest #'minimum-length = #20
2517 R1*23
2518 a1
2519 @end lilypond
2520
2521 @lilypond[verbatim,quote,relative=2]
2522 a \< a a a \!
2523 % increase the length of the hairpin
2524 \override Hairpin #'minimum-length = #20
2525 a \< a a a \!
2526 @end lilypond
2527
2528 Esta sobreescritura se puede usar también para aumentar la longitud de
2529 las ligaduras de expresión y de fraseo:
2530
2531 @lilypond[verbatim,quote,relative=2]
2532 a( a)
2533 a
2534 -\tweak #'minimum-length #5
2535 ( a)
2536
2537 a\( a\)
2538 a
2539 -\tweak #'minimum-length #5
2540 \( a\)
2541 @end lilypond
2542
2543 Para algunos objetos de presentación, la propiedad
2544 @code{minimum-length} es efectiva sólo si se llama explícitamente al
2545 procedimiento @code{set-spacing-rods}.  Para hacerlo, se debe fijar la
2546 propiedad @code{springs-and-rods} al valor
2547 @code{ly:spanner::set-spacing-rods}.  Por ejemplo, la longitud mínima
2548 de un glissando no tiene efecto a no ser que se establezca la
2549 propiedad @code{springs-and-rods}:
2550
2551 @lilypond[verbatim,quote,relative=1]
2552 % default
2553 e \glissando c'
2554
2555 % not effective alone
2556 \once \override Glissando #'minimum-length = #20
2557 e, \glissando c'
2558
2559 % effective only when both overrides are present
2560 \once \override Glissando #'minimum-length = #20
2561 \once \override Glissando #'springs-and-rods = #ly:spanner::set-spacing-rods
2562 e, \glissando c'
2563 @end lilypond
2564
2565 Lo mismo se puede decir del objeto @code{Beam}:
2566
2567 @lilypond[verbatim,quote,relative=1]
2568 % not effective alone
2569 \once \override Beam #'minimum-length = #20
2570 e8 e e e
2571
2572 % effective only when both overrides are present
2573 \once \override Beam #'minimum-length = #20
2574 \once \override Beam #'springs-and-rods = #ly:spanner::set-spacing-rods
2575 e8 e e e
2576 @end lilypond
2577
2578 @strong{@i{The @code{to-barline} property}}
2579
2580 La segunda propiedad útil del @code{spanner-interface} es
2581 @code{to-barline}.  De forma predeterminada tiene el valor cierto,
2582 haciendo que los reguladores y otros objetos de extensión que terminan
2583 sobre la primera nota de un compás, en vez de eso terminen en la línea
2584 divisoria inmediatamente precedente.  Si se establece al valor falso,
2585 el extensor llegará más allá de la barra de compás y terminará
2586 exactamente sobre la nota:
2587
2588 @lilypond[verbatim,quote,relative=2]
2589 a \< a a a a \! a a a \break
2590 \override Hairpin #'to-barline = ##f
2591 a \< a a a a \! a a a
2592 @end lilypond
2593
2594 Esta propiedad no es efectiva para todos los extensores.  Por ejemplo,
2595 su establecimiento a @code{#t} no tienen ningún efecto sobre las
2596 ligaduras de expresión o de fraseo, o sobre otros extensores para los
2597 que terminar en la barra de compás no tendría ningún significado.
2598
2599 @unnumberedsubsubsec Uso del @code{line-spanner-interface}
2600
2601 Entre los objetos que contemplan el interface
2602 @code{line-spanner-interface} se encuentran
2603
2604 @itemize
2605 @item @code{DynamicTextSpanner}
2606 @item @code{Glissando}
2607 @item @code{TextSpanner}
2608 @item @code{TrillSpanner}
2609 @item @code{VoiceFollower}
2610 @end itemize
2611
2612 La rutina responsable de dibujar los sellos de estos extensores es
2613 @code{ly:line-interface::print}.  esta rutina determina la
2614 localización exacta de los dos puntos extremos y traza una línea entre
2615 ellos, en el estilo solicitado.  Las posiciones de los dos puntos
2616 extremos del extensor se calculan al vuelo, pero es posible
2617 sobreescribir sus coordenadas Y.  Las propiedades que se deben
2618 especificar están anidadas a dos niveles de profundidad en la
2619 jerarquía de propiedades, pero la sintaxis de la instrucción
2620 @code{\override} es bastante sencilla:
2621
2622 @lilypond[relative=2,quote,verbatim]
2623 e2 \glissando b
2624 \once \override Glissando #'(bound-details left Y) = #3
2625 \once \override Glissando #'(bound-details right Y) = #-2
2626 e2 \glissando b
2627 @end lilypond
2628
2629 Las unidades para la propiedad @code{Y} son @code{staff-space}s,
2630 siendo el punto del cero la línea central del pentagrama.  Para el
2631 glissando, esto es el valor de @code{Y} en la coordenada X que
2632 corresponde al punto central de cada cabeza de nota si nos imaginamos
2633 que la línea se extiende hasta allí.
2634
2635 Si no está fijado @code{Y}, su valor se calcula a partir de la
2636 posición vertical del punto de anclaje correspondiente del extensor.
2637
2638 En caso de salto de línea, los valores para los puntos extremos se
2639 especifican por las sub-listas @code{left-broken} y
2640 @code{right-broken} de @code{bound-details}.  Por ejemplo:
2641
2642 @lilypond[relative=2,ragged-right,verbatim,quote]
2643 \override Glissando #'breakable = ##t
2644 \override Glissando #'(bound-details right-broken Y) = #-3
2645 c1 \glissando \break
2646 f1
2647 @end lilypond
2648
2649 Un número de propiedades adicionales de las sub-listas @code{left} y
2650 @code{right} de la propiedad @code{bound-details} se pueden
2651 especificar de la misma forma que @code{Y}:
2652
2653 @table @code
2654 @item Y
2655 Establece la coordenada Y del punto extremo, en desplazamientos de
2656 @code{staff-space}s desde la línea central del pentagrama.  De forma
2657 predeterminada es el centro del objeto ancla, y así un glissando
2658 apunta al centro vertical de la cabeza de la nota.
2659
2660 Para extensores horizontales como los extensores de texto y los
2661 trinos, está inamoviblemente codificado como 0.
2662
2663 @item attach-dir (dirección de anclaje)
2664 Determina dónde comienza y termina la línea en la dirección X, con
2665 relación al objeto ancla.  Sí, un valor de @w{@code{-1}} (o @code{LEFT},
2666 izquierda) hace que la línea comience o termine en el lado izquierdo
2667 de la cabeza de la nota a la que está anclado.
2668
2669 @item X
2670 Es la coordenada X absoluta del punto extremo.  Se suele calcular al
2671 vuelo, y su sobreescritura no tiene un efecto útil.
2672
2673 @item stencil (sello)
2674 Los extensores de línea pueden tener símbolos al comienzo o al final,
2675 lo que está contenido en esta sub-propiedad.  Esto es para uso
2676 interno; se recomienda en su lugar el uso de @code{text}.
2677
2678 @item text (texto)
2679 Es un elemento de marcado que se evalúa para dar lugar al sello.  Se
2680 usa para escribir @i{cresc.}, @i{tr} y otros textos sobre los objetos
2681 de extensión horizontales.
2682
2683 @lilypond[quote,ragged-right,relative=2,verbatim]
2684 \override TextSpanner #'(bound-details left text)
2685    = \markup { \small \bold Slower }
2686 c2\startTextSpan b c a\stopTextSpan
2687 @end lilypond
2688
2689 @item stencil-align-dir-y (alineación del sello en y)
2690 @item stencil-offset (desplazamiento del sello)
2691 Si no se modifican uno u otro, el sello se coloca sencillamente en el
2692 punto extremo, centrado sobre la línea, como viene definido por las
2693 subpropiedades @code{X} e @code{Y}.  Si se fijan
2694 @code{stencil-align-dir-y} o @code{stencil-offset} se moverá el
2695 símbolo del borde verticalmente con relación al extremo de la línea:
2696
2697 @lilypond[relative=1,quote,verbatim]
2698 \override TextSpanner
2699   #'(bound-details left stencil-align-dir-y) = #-2
2700 \override TextSpanner
2701   #'(bound-details right stencil-align-dir-y) = #UP
2702
2703 \override TextSpanner
2704   #'(bound-details left text) = #"ggg"
2705 \override TextSpanner
2706   #'(bound-details right text) = #"hhh"
2707 c4^\startTextSpan c c c \stopTextSpan
2708 @end lilypond
2709
2710 Observe que los valores negativos mueven el texto @emph{hacia arriba},
2711 al contrario de lo que podría esperarse, pues el valor de @w{@code{-1}} o
2712 @code{DOWN} (abajo) significa alinear el borde @emph{inferior} del
2713 texto con la línea de extensión.  Un valor de @code{1} o @code{UP}
2714 (arriba) alinea el borde superior del texto con la línea extensora.
2715
2716 @item arrow (flecha)
2717 Al establecer esta sub-propiedad a @code{#t} se produce una punta de
2718 flecha en el extremo de la línea.
2719
2720 @item padding (relleno)
2721 Esta sub-propiedad controla el espacio entre el punto extremo
2722 especificado de la línea y el extremo real.  Sin relleno, un glissando
2723 empezaría y terminaría en el centro de la cabeza de las notas.
2724
2725 @end table
2726
2727 La función musical @code{\endSpanners} finaliza de forma prematura el
2728 extensor que comienza sobre la nota que sigue inmediatamente a
2729 continuación.  Se termina después de una nota exactamente, o en la
2730 siguiente barra de compás si @code{to-barline} es verdadero y se
2731 produce una divisoria antes de la siguiente nota.
2732
2733 @lilypond[verbatim,quote,ragged-right,relative=2]
2734 \endSpanners
2735 c2 \startTextSpan c2 c2
2736 \endSpanners
2737 c2 \< c2 c2
2738 @end lilypond
2739
2740 Si se usa @code{\endSpanners} no es necesario cerrar \startTextSpan
2741 con \stopTextSpan, ni cerrar los reguladores con @code{\!}.
2742
2743
2744 @seealso
2745 Referencia de funcionamiento interno:
2746 @rinternals{TextSpanner},
2747 @rinternals{Glissando},
2748 @rinternals{VoiceFollower},
2749 @rinternals{TrillSpanner},
2750 @rinternals{line-spanner-interface}.
2751
2752
2753 @node Visibilidad de los objetos
2754 @subsection Visibilidad de los objetos
2755 @translationof Visibility of objects
2756
2757 @cindex objetos, visibilidad de
2758 @cindex grobs, visibilidad de
2759 @cindex visibilidad de los objetos
2760
2761 Hay cuatro formas principales en que se puede controlar la visibilidad
2762 de los objetos de presentación: se puede eliminar su sello, se pueden
2763 volver transparentes, se pueden pintar de blanco, o se puede
2764 sobreescribir su propiedad @code{break-visibility}.  Las tres primeras
2765 se aplican a todos los objetos de presentación; la última sólo a unos
2766 pocos: los objetos @emph{divisibles}.  El Manual de aprendizaje
2767 introduce estas cuatro técnicas, véase @rlearning{Visibilidad y color de los objetos}.
2768
2769 Hay también algunas otras técnicas que son específicas de ciertos
2770 objetos de presentación.  Se estudian bajo Consideraciones especiales.
2771
2772 @menu
2773 * Eliminar el sello::
2774 * Hacer transparentes los objetos::
2775 * Pintar los objetos de blanco::
2776 * Uso de break-visibility (visibilidad en el salto)::
2777 * Consideraciones especiales::
2778 @end menu
2779
2780
2781 @node Eliminar el sello
2782 @unnumberedsubsubsec Eliminar el sello
2783 @translationof Removing the stencil
2784
2785 @cindex sello, eliminar
2786
2787 Todo objeto de presentación tiene una propiedad stencil (sello).  De
2788 forma predeterminada está establecida a la función específica que
2789 dibuja ese objeto.  Si se sobreescribe esta propiedad a @code{#f} no
2790 se llama a ninguna función y el objeto no se dibuja.  La acción
2791 predeterminada se puede recuperar con @code{\revert}.
2792
2793 @lilypond[quote,verbatim,relative=1]
2794 a1 a
2795 \override Score.BarLine #'stencil = ##f
2796 a a
2797 \revert Score.BarLine #'stencil
2798 a a a
2799 @end lilypond
2800
2801 @node Hacer transparentes los objetos
2802 @unnumberedsubsubsec Hacer transparentes los objetos
2803 @translationof Making objects transparent
2804
2805 @cindex transparentes, hacer los objetos
2806
2807 Todo objeto de presentación tiene una propiedad transparent
2808 (transparente) que de forma predeterminada está establecida a
2809 @code{#f}.  Si se fija a @code{#t} el objeto aún ocupa espacio pero es
2810 invisible.
2811
2812 @lilypond[quote,verbatim,relative=2]
2813 a4 a
2814 \once \override NoteHead #'transparent = ##t
2815 a a
2816 @end lilypond
2817
2818 @node Pintar los objetos de blanco
2819 @unnumberedsubsubsec Pintar los objetos de blanco
2820 @translationof Painting objects white
2821
2822 @cindex objetos, coloreado de
2823 @cindex coloreado de objetos
2824 @cindex capas
2825 @cindex impresión, orden de
2826 @cindex sobreescritura de objetos
2827 @cindex objetos, sobreescritura de
2828 @cindex grobs, sobreescritura de
2829
2830 Todo objeto de presentación tiene una propiedad de color que de forma
2831 predeterminada está establecida a @code{black} (negro).  Si se
2832 sobreescribe a @code{white} (blanco) el objeto será indistinguible del
2833 fondo blanco.  Sin embargo, si el objeto cruza a otros objetos, el
2834 color de los puntos de cruce queda determinado por el orden en que se
2835 dibujan estos objetos, lo que puede dejar una imagen fantasma del
2836 objeto blanco, como puede verse aquí:
2837
2838 @lilypond[quote,verbatim,relative=2]
2839 \override Staff.Clef #'color = #white
2840 a1
2841 @end lilypond
2842
2843 Se puede evitar esto cambiando el orden de impresión de los objetos.
2844 Todos los objetos de presentación tienen una propiedad @code{layer}
2845 (capa) que se debe establecer a un valor entero.  Los objetos con el
2846 valor de @code{layer} más bajo se dibujan primero, después se dibujan
2847 los objetos con valores progresivamente mayores, y así los objetos con
2848 valores más altos se dibujan encima de los que tienen valores más
2849 bajos.  De forma predeterminada, casi todos los objetos tienen
2850 asignado un valor @code{layer} de @code{1}, aunque algunos objetos,
2851 entre ellos el pentagrama y las líneas divisorias, @code{StaffSymbol}
2852 y @code{BarLine}, tienen asignado un calor de @code{0}.  El orden de
2853 impresión de los objetos con el mismo valor de @code{layer} es
2854 indeterminado.
2855
2856 En el ejemplo de arriba, la clave blanca, con un valor @code{layer}
2857 predeterminado de @code{1}, se dibuja después de las líneas del
2858 pentagrama (valor @code{layer} predeterminado de @code{0}),
2859 sobreimpresionándolas.  Para cambiarlo, se debe dar al objeto
2860 @code{Clef} un valor de @code{layer} más bajo, digamos @w{@code{-1}}, para
2861 que se dibuje antes:
2862
2863 @lilypond[quote,verbatim,relative=2]
2864 \override Staff.Clef #'color = #white
2865 \override Staff.Clef #'layer = #-1
2866 a1
2867 @end lilypond
2868
2869 @node Uso de break-visibility (visibilidad en el salto)
2870 @unnumberedsubsubsec Uso de break-visibility (visibilidad en el salto)
2871 @translationof Using break-visibility
2872
2873 @c TODO Add making other objects breakable
2874
2875 @cindex break-visibility
2876
2877 Casi todos los objetos de presentación se imprimen una sola vez, pero
2878 algunos como las líneas divisorias, claves, indicaciones de compás y
2879 armaduras de tonalidad, se pueden tener que imprimir dos veces cuando
2880 se produce un salto de línea : una vez al final de la línea y otra al
2881 comienzo de la siguiente.  Estos objetos reciben el nombre de
2882 @emph{divisibles}, y tienen una propiedad, @code{break-visibility}
2883 (visibilidad en el salto), para controlar su visibilidad en las tres
2884 posiciones en que pueden aparecer: al comienzo de una línea, dentro de
2885 la línea si se produce un cambio, y al final de la línea si el cambio
2886 se produce en ese lugar.
2887
2888 Por ejemplo, la indicación de compás se imprime de forma
2889 predeterminada al comienzo de la primera línea y en ningún otro lugar
2890 a no ser que cambie, en cuyo caso se imprime en el punto en que se
2891 produce el cambio.  Si este cambio se produce al final de una línea,
2892 la nueva indicación de compás se imprime al principio de la línea
2893 siguiente y también al final de la línea anterior como indicación de
2894 precaución.
2895
2896 Este comportamiento se controla por medio de la propiedad
2897 @code{break-visibility}, que se explica en
2898 @c Leave this ref on a newline - formats incorrectly otherwise -td
2899 @rlearning{Visibilidad y color de los objetos}.  Esta propiedad toma un
2900 vector de tres valores booleanos que, por orden, determinan si el
2901 objeto se imprime al final, dentro, o al principio de la línea.  O,
2902 para ser más exactos: antes del salto de línea, si no hay salto, o
2903 después del salto.
2904
2905 Como alternativa se puede especificar cualquiera de las ocho
2906 combinaciones mediante funciones predefinidas cuya definición está en
2907 @file{scm/output-lib.scm}, donde las tres últimas columnas indican si
2908 los objetos de presentación serán visibles en las posiciones que se
2909 muestran en el encabezamiento de cada columna:
2910
2911 @multitable {@code{begin-of-line-invisible}} {@code{'#(#t #t #t)}} {yes} {yes} {yes}
2912 @headitem Forma                   @tab Forma                  @tab Antes del @tab Si no hay    @tab Después del
2913 @headitem de función              @tab de vector              @tab salto     @tab salto        @tab salto
2914
2915 @item @code{all-visible}             @tab @code{'#(#t #t #t)}     @tab sí     @tab sí       @tab sí
2916 @item @code{begin-of-line-visible}   @tab @code{'#(#f #f #t)}     @tab no     @tab no       @tab sí
2917 @item @code{center-visible}          @tab @code{'#(#f #t #f)}     @tab no     @tab sí       @tab no
2918 @item @code{end-of-line-visible}     @tab @code{'#(#t #f #f)}     @tab sí     @tab no       @tab no
2919 @item @code{begin-of-line-invisible} @tab @code{'#(#t #t #f)}     @tab sí     @tab sí       @tab no
2920 @item @code{center-invisible}        @tab @code{'#(#t #f #t)}     @tab sí     @tab no       @tab sí
2921 @item @code{end-of-line-invisible}   @tab @code{'#(#f #t #t)}     @tab no     @tab sí       @tab sí
2922 @item @code{all-invisible}           @tab @code{'#(#f #f #f)}     @tab no     @tab no       @tab no
2923 @end multitable
2924
2925 Los ajustes predeterminados de @code{break-visibility} dependen del
2926 objeto de presentación.  La tabla siguiente muestra todos los objetos
2927 de presentación de interés que resultan afectados por
2928 @code{break-visibility} y el ajuste predeterminado de esta propiedad:
2929
2930 @multitable @columnfractions .3 .3 .4
2931
2932 @headitem Objeto   @tab Contexto usual  @tab Valor predet.
2933
2934 @c omit Ambitus as it appears not to be affected by break-visibility -td
2935 @c @item @code{Ambitus}          @tab as specified   @tab @code{begin-of-line-visible}
2936 @item @code{BarLine}             @tab @code{Score}          @tab calculado
2937 @item @code{BarNumber}           @tab @code{Score}          @tab @code{begin-of-line-visible}
2938 @c omit the following item until it can be explained -td
2939 @c @item @code{BreakAlignGroup}  @tab @code{Score}          @tab calculado
2940 @item @code{BreathingSign}       @tab @code{Voice}          @tab @code{begin-of-line-invisible}
2941 @item @code{Clef}                @tab @code{Staff}          @tab @code{begin-of-line-visible}
2942 @item @code{Custos}              @tab @code{Staff}          @tab @code{end-of-line-visible}
2943 @item @code{DoublePercentRepeat} @tab @code{Voice}          @tab @code{begin-of-line-invisible}
2944 @c omit KeyCancellation until it can be explained -td
2945 @c @item @code{KeyCancellation}  @tab ??             @tab @code{begin-of-line-invisible}
2946 @item @code{KeySignature}        @tab @code{Staff}          @tab @code{begin-of-line-visible}
2947 @c omit LeftEdge until it can be explained -td
2948 @c @item @code{LeftEdge}         @tab @code{Score}          @tab @code{center-invisible}
2949 @item @code{OctavateEight}       @tab @code{Staff}          @tab @code{begin-of-line-visible}
2950 @item @code{RehearsalMark}       @tab @code{Score}          @tab @code{end-of-line-invisible}
2951 @item @code{TimeSignature}       @tab @code{Staff}          @tab @code{all-visible}
2952
2953 @end multitable
2954
2955 El ejemplo de abajo muestra el uso de la forma de vector para
2956 controlar la visibilidad de las líneas divisorias:
2957
2958 @lilypond[quote,verbatim,relative=1,ragged-right]
2959 f4 g a b
2960 f4 g a b
2961 % Remove bar line at the end of the current line
2962 \once \override Score.BarLine #'break-visibility = #'#(#f #t #t)
2963 \break
2964 f4 g a b
2965 f4 g a b
2966 @end lilypond
2967
2968 Aunque los tres componentes del vector utilizado para sobreescribir
2969 @code{break-visibility} deben estar presentes, no todos son efectivos
2970 para todos los objetos de presentación, y algunas combinaciones pueden
2971 incluso dar errores.  Son de aplicación las siguientes limitaciones:
2972
2973 @itemize @bullet
2974 @item Las líneas divisorias no se pueden imprimir al principio de la línea.
2975 @item No se puede imprimir el número de compás al principio de la primera
2976 línea a no ser que su valor establecido sea distinto de 1.
2977 @item Clave: véase más abajo
2978 @item Las repeticiones dobles de tipo porcentaje se imprimen completamente o
2979 se suprimen por completo.  Utilice begin-of line-invisible para
2980 imprimirlas y all-invisible para suprimirlas.
2981 @item Armadura: véase más abajo
2982 @item OctavateEight: véase más abajo
2983 @end itemize
2984
2985 @node Consideraciones especiales
2986 @unnumberedsubsubsec Consideraciones especiales
2987 @translationof Special considerations
2988
2989 @strong{@emph{Visibilidad después de un cambio explícito}}
2990
2991 @cindex armadura, visibilidad después de un cambio explícito
2992 @cindex explicitKeySignatureVisibility
2993 @cindex clave, visibilidad después de un cambio explícito
2994 @cindex explicitClefVisibility
2995
2996 La propiedad @code{break-visibility} controla la visibilidad de las
2997 armaduras y cambios de clave sólo al principio de las líneas, es
2998 decir, después de un salto.  No tiene ningún efecto sobre la
2999 visibilidad de la armadura o la clave después de un cambio explícito
3000 de tonalidad o de clave dentro o al final de una línea.  En el ejemplo
3001 siguiente la armadura que sigue al cambio explícito de tonalidad a Si
3002 bemol mayor es visible incluso con @code{all-invisible} establecido.
3003
3004 @lilypond[quote,verbatim,relative=1,ragged-right]
3005 \key g \major
3006 f4 g a b
3007 % Try to remove all key signatures
3008 \override Staff.KeySignature #'break-visibility = #all-invisible
3009 \key bes \major
3010 f4 g a b
3011 \break
3012 f4 g a b
3013 f4 g a b
3014 @end lilypond
3015
3016 La visibilidad de estos cambios explícitos de tonalidad y de clave se
3017 controla por medio de las propiedades
3018 @code{explicitKeySignatureVisibility} y @code{explicitClefVisibility}.
3019 Son los equivalentes de la propiedad @code{break-visibility} y las dos
3020 toman un vector de tres valores booleanos o las funciones predefinidas
3021 relacionadas anteriormente, exactamente igual que
3022 @code{break-visibility}.  Las dos son propiedades del contexto Staff,
3023 no de los propios objetos de presentación, y por tanto se establecen
3024 utilizando la instrucción @code{\set}.  Las dos están establecidas de
3025 forma predeterminada al valor @code{all-visible}.  Estas propiedades
3026 controlan sólo la visibilidad de las armaduras y las claves que
3027 resultan de los cambios explícitos y no afectan a las armaduras y
3028 tonalidades que están al principio de las líneas; para quitarlas, aún
3029 se debe sobreescribir la propiedad @code{break-visibility} en el
3030 objeto correspondiente.
3031
3032 @lilypond[quote,verbatim,relative=1,ragged-right]
3033 \key g \major
3034 f4 g a b
3035 \set Staff.explicitKeySignatureVisibility = #all-invisible
3036 \override Staff.KeySignature #'break-visibility = #all-invisible
3037 \key bes \major
3038 f4 g a b \break
3039 f4 g a b
3040 f4 g a b
3041 @end lilypond
3042
3043 @strong{@emph{Visibilidad de las alteraciones de precaución}}
3044
3045 Para eliminar las alteraciones de precaución que se imprimen en un
3046 cambio de tonalidad explícito, establezca la propiedad
3047 @code{printKeyCancellation} del contexto Staff a @code{#f}:
3048
3049 @lilypond[quote,verbatim,relative=1,ragged-right]
3050 \key g \major
3051 f4 g a b
3052 \set Staff.explicitKeySignatureVisibility = #all-invisible
3053 \set Staff.printKeyCancellation = ##f
3054 \override Staff.KeySignature #'break-visibility = #all-invisible
3055 \key bes \major
3056 f4 g a b \break
3057 f4 g a b
3058 f4 g a b
3059 @end lilypond
3060
3061 Con estas sobreescrituras solamente permanecen las alteraciones
3062 accidentales delante de las notas para indicar el cambio de tonalidad.
3063
3064 @c TODO Add visibility of cautionary accidentals before notes
3065
3066 @strong{@emph{Automatic bars}}
3067
3068 @cindex automaticBars
3069 @cindex líneas divisorias, eliminación
3070
3071 Como caso especial, la impresión de las líneas divisorias también se
3072 puede inhabilitar estableciendo la propiedad @code{automaticBars} en
3073 el contexto Score.  Si se fija a @code{#f}, las barras de compás no se
3074 imprimen automáticamente; se deben crear explícitamente con una
3075 instrucción @code{\bar}.  A diferencia de la instrucción predefinida
3076 @code{\cadenzaOn}, los compases se siguen contando.  La generación de
3077 compases continúa de acuerdo a esta cuenta si esta propiedad se
3078 establece posteriormente a @code{#t}.  Si se fija al valor @code{#f},
3079 sólo pueden producirse saltos de línea en instrucciones @code{\bar}
3080 explícitas.
3081
3082 @c TODO Add example
3083
3084 @strong{@emph{Octavated clefs}}
3085
3086 @cindex octavadas, visibilidad de las claves
3087 @cindex visibilidad de las claves octavadas
3088 @cindex claves, visibilidad de la octavación
3089
3090 El pequeño símbolo de octava sobre las claves en octava alta o baja se
3091 produce por parte del objeto @code{OctavateEight}.  Su visibilidad se
3092 hereda automáticamente de la del objeto @code{Clef}, así que no es
3093 necesario aplicar las sobreescrituras correspondientes
3094 @code{break-visibility} a los objetos
3095 @code{OctavateEight} para suprimir los símbolos de octavación
3096 para las claves invisibles.
3097
3098 Para los cambios de clave explícitos, la propiedad
3099 @code{explicitClefVisibility} controla tanto el símbolo de clave como
3100 el símbolo de octava asociado.
3101
3102
3103 @seealso
3104 Manual de aprendizaje:
3105 @rlearning{Visibilidad y color de los objetos}
3106
3107
3108 @node Estilos de línea
3109 @subsection Estilos de línea
3110 @translationof Line styles
3111
3112 Ciertas indicaciones de ejecución, p.ej., @i{rallentando},
3113 @i{accelerando} y los @i{trinos} se escriben como texto y se extienden
3114 sobre muchos compases mediante líneas, a veces punteadas u onduladas.
3115
3116 Todos ellos usan las mismas rutinas que el glissando para dibujar los
3117 textos y las líneas, y por ello el ajuste fino de su comportamiento se
3118 hace de la misma manera. Se hace con un spanner (un objeto de
3119 extensión), y la rutina responsable de dibujar los objetos de
3120 extensión es @code{ly:line-interface::print}. Esta rutina determina la
3121 colocación exacta de los dos @i{extremos del objeto de extensión} y
3122 dibuja una línea entre ellos, en el estilo solicitado.
3123
3124 He aquí un ejemplo de los distintos estilos de línea disponibles, y
3125 cómo aplicarles ajustes finos.
3126
3127 @lilypond[relative=2,ragged-right,verbatim,quote]
3128 d2 \glissando d'2
3129 \once \override Glissando #'style = #'dashed-line
3130 d,2 \glissando d'2
3131 \override Glissando #'style = #'dotted-line
3132 d,2 \glissando d'2
3133 \override Glissando #'style = #'zigzag
3134 d,2 \glissando d'2
3135 \override Glissando #'style = #'trill
3136 d,2 \glissando d'2
3137 @end lilypond
3138
3139 Las posiciones de los puntos extremos del objeto de extensión se
3140 computan al vuelo para cada uno de los objetos gráficos, pero es
3141 posible sobreescribirlos:
3142
3143 @c TODO Complete
3144 @lilypond[relative=2,ragged-right,verbatim,quote]
3145 e2 \glissando f
3146 \once \override Glissando #'(bound-details right Y) = #-2
3147 e2 \glissando f
3148 @end lilypond
3149
3150 El valor de @code{Y} está establecido a @w{@code{-2}} para el extremo
3151 derecho.  El lado izquierdo se puede ajustar de forma similar
3152 especificando @code{left} en vez de @code{right}.
3153
3154 Si no está establecido @code{Y}, el valor se computa a partir de la
3155 posición vertical de los puntos de anclaje izquierdo y derecho del
3156 extensor.
3157
3158 Son posibles otros ajustes de los extensores, para ver más detalles
3159 consulte @ref{Objetos de extensión}.
3160
3161
3162 @node Rotación de objetos
3163 @subsection Rotación de objetos
3164 @translationof Rotating objects
3165
3166 Tanto los objetos de presentación como los elementos de texto de
3167 marcado se pueden girar cualquier ángulo respecto a cualquier punto,
3168 pero difiere el método de hacerlo.
3169
3170 @menu
3171 * Rotación de objetos de presentación::
3172 * Rotación de elementos de marcado::
3173 @end menu
3174
3175 @node Rotación de objetos de presentación
3176 @unnumberedsubsubsec Rotación de objetos de presentación
3177 @translationof Rotating layout objects
3178
3179 @cindex rotating objects
3180 @cindex objects, rotating
3181
3182 Todos los objetos de presentación que contemplan el interface
3183 @code{grob-interface} se pueden rotar estableciendo su propiedad
3184 @code{rotation}.  Acepta una lista de tres elementos: el ángulo de la
3185 rotación en sentido antihorario, y las coordenadas x e y del punto con
3186 relación al punto de referencia del objeto, alrededor del que se va a
3187 realizar la rotación.  El ángulo de rotación se especifica en grados
3188 y las coordenadas en espacios de pentagrama.
3189
3190 El ángulo de rotación y las coordenadas del punto de rotación se deben
3191 determinar por ensayo y error.
3192
3193 @cindex reguladores en ángulo
3194 @cindex ángulo, reguladores en
3195
3196 Solamente en ciertas ocasiones es útil la rotación de objetos de
3197 presentación; el ejemplo siguiente muestra una situación en que puede
3198 serlo:
3199
3200 @lilypond[quote,verbatim,relative=1]
3201 g4\< e' d' f\!
3202 \override Hairpin #'rotation = #'(20 -1 0)
3203 g,,4\< e' d' f\!
3204 @end lilypond
3205
3206 @node Rotación de elementos de marcado
3207 @unnumberedsubsubsec Rotación de elementos de marcado
3208 @translationof Rotating markup
3209
3210 Todos los textos de marcado se pueden rotar para que se dispongan en
3211 cualquier ángulo precediéndolos de la instrucción @code{\rotate}.  La
3212 instrucción acepta dos argumentos: el ángulo de rotación en grados en
3213 sentido antihorario, y el texto que rotar.  Los límites que ocupa el
3214 texto no se rotan: toman su valor a partir de los extremos de las
3215 coordenadas x e y del texto rotado.  En el ejemplo siguiente la
3216 propiedad @code{outside-staff-priority} del texto se establece a
3217 @code{#f} para desactivar la evitación automática de colisiones, lo
3218 que empuja al texto a una posición muy alta.
3219
3220 @lilypond[quote,verbatim,relative=1]
3221 \override TextScript #'outside-staff-priority = ##f
3222 g4^\markup { \rotate #30 "a G" }
3223 b^\markup { \rotate #30 "a B" }
3224 des^\markup { \rotate #30 "a D-Flat" }
3225 fis^\markup { \rotate #30 "an F-Sharp" }
3226 @end lilypond
3227
3228 @node Trucos avanzados
3229 @section Trucos avanzados
3230 @translationof Advanced tweaks
3231
3232 Esta sección trata sobre distintos enfoques en la realización de
3233 ajustes finos a la apariencia de la partitura impresa.
3234
3235 @menu
3236 * Alineación de objetos::
3237 * Agrupación vertical de objetos gráficos::
3238 * Modificación de los sellos::
3239 * Modificación de las formas::
3240 @end menu
3241
3242
3243 @seealso
3244 Manual de aprendizaje:
3245 @rlearning{Trucar la salida},
3246 @rlearning{Otras fuentes de información}.
3247
3248 Referencia de la notación:
3249 @ref{Explicación del Manual de referencia de funcionamiento interno},
3250 @ref{Modificar las propiedades}.
3251
3252
3253 Archivos de inicio:
3254 @file{scm/define-grobs.scm}.
3255
3256 Fragmentos de código:
3257 @rlsr{Tweaks and overrides}.
3258
3259 Extender:
3260 @rextend{Interfaces para programadores}.
3261
3262 Referencia de funcionamiento interno:
3263 @rinternals{All layout objects}.
3264
3265
3266 @node Alineación de objetos
3267 @subsection Alineación de objetos
3268 @translationof Aligning objects
3269
3270 Los objetos gráficos que soportan el interface
3271 @code{self-alignment-interface} y/o el @code{side-position-interface}
3272 se pueden alinear contra un objeto colocado previamente, de diversas
3273 maneras.  Para ver una lista de estos objetos, consulte
3274 @rinternals{self-alignment-interface} y
3275 @rinternals{side-position-interface}.
3276
3277 Todos los objetos gráficos tienen un punto de referencia, una
3278 extensión horizontal y una extensión vertical.  La extensión
3279 horizontal es una pareja de números que dan los desplazamientos a
3280 partir del punto de referencia de los bordes izquierdo y derecho,
3281 siendo negativos los desplazamientos hacia la izquierda.  La extensión
3282 vertical es una pareja de números que dan el desplazamiento a partir
3283 del punto de referencia hasta los bordes inferior y superior, siendo
3284 negativos los desplazamientos hacia abajo.
3285
3286 La posición de un objeto sobre el pentagrama viene dada por los
3287 valores de las propiedades @code{X-offset} e @code{Y-offset}.  El
3288 valor de @code{X-offset} da el desplazamiento desde la coordenada X
3289 del punto de referencia del objeto padre, y el valor de
3290 @code{Y-offset} da el desplazamiento a partir de la línea central del
3291 pentagrama.  Los valores de @code{X-offset} y @code{Y-offset} se
3292 pueden establecer directamente o se puede dejar que se calculen por
3293 parte de procedimientos para conseguir una alineación con el objeto
3294 padre.
3295
3296 @warning{Muchos objetos tienen consideraciones de posicionamiento
3297 especiales que hacen que se ignore o se modifique cualquier ajuste
3298 realizado a @code{X-offset} o a @code{Y-offset}, a pesar de que el
3299 objeto contemple el interface @code{self-alignment-interface}.  La
3300 sobreescritura de las propiedades @code{X-offset} ó @code{Y-offset} a
3301 un valor fijo hace que se descarte la respectiva propiedad
3302 @code{self-alignment}.}
3303
3304 Por ejemplo, una alteración accidental se puede reposicionar
3305 verticalmente estableciendo @code{Y-offset} pero los cambios a
3306 @code{X-offset} no tienen ningún efecto.
3307
3308 Las letras de ensayo se pueden alinear con objetos divisibles como
3309 líneas divisorias, claves, armaduras e indicaciones de compás.  Hay
3310 propiedades especiales que se encuentran en
3311 @code{break-aligned-interface} para el posicionamiento de las letras
3312 de ensayo sobre dichos objetos.
3313
3314 @seealso
3315 @ref{Uso del break-alignable-interface},
3316 @rextend{Funciones de callback}.
3317
3318 @menu
3319 * Establecer directamente X-offset e Y-offset::
3320 * Uso del side-position-interface::
3321 * Uso del self-alignment-interface::
3322 * Uso del break-alignable-interface::
3323 @end menu
3324
3325 @node Establecer directamente X-offset e Y-offset
3326 @unnumberedsubsubsec Establecer directamente @code{X-offset} y @code{Y-offset}
3327 @translationof Setting X-offset and Y-offset directly
3328
3329 Se pueden dar valores numéricos a las propiedades @code{X-offset} y
3330 @code{Y-offset} de muchos objetos.  El ejemplo siguiente muestra tres
3331 notas con una digitación en su posición predeterminada y con los
3332 valores @code{X-offset} y @code{Y-offset} modificados.
3333
3334 @lilypond[verbatim,quote,relative=2]
3335 a-3
3336 a
3337 -\tweak #'X-offset #0
3338 -\tweak #'Y-offset #0
3339 -3
3340 a
3341 -\tweak #'X-offset #-1
3342 -\tweak #'Y-offset #1
3343 -3
3344 @end lilypond
3345
3346 @c TODO write more
3347
3348 @node Uso del side-position-interface
3349 @unnumberedsubsubsec Uso del @code{side-position-interface}
3350 @translationof Using the side-position-interface
3351
3352 Un objeto que contempla el @code{side-position-interface} se puede
3353 colocar junto a su objeto padre de forma que los bordes especificados
3354 de los dos objetos se toquen.  El objeto se puede situar encima,
3355 debajo, a la derecha o a la izquierda del objeto padre.  El padre no
3356 se puede especificar; viene determinado por el orden de los elementos
3357 en el flujo de entrada.  Casi todos los objetos tienen la cabeza de la
3358 nota asociada como padre.
3359
3360 Los valores de las propiedades @code{side-axis} y @code{direction}
3361 determinan dónde colocar el objeto, como sigue:
3362
3363 @c TODO add an example of each to the table
3364
3365 @multitable @columnfractions .3 .3 .3
3366 @headitem @code{side-axis}  @tab @code{direction}  @tab
3367 @headitem propiedad         @tab propiedad         @tab colocación
3368
3369 @item     @code{0}          @tab @w{@code{-1}}         @tab izquierda
3370 @item     @code{0}          @tab @code{1}          @tab derecha
3371 @item     @code{1}          @tab @w{@code{-1}}         @tab debajo
3372 @item     @code{1}          @tab @code{1}          @tab encima
3373
3374 @end multitable
3375
3376 Si @code{side-axis} es @code{0}, @code{X-offset} se debe establecer al
3377 procedimiento @code{ly:side-position-interface::x-aligned-side}.  Este
3378 procedimiento devuelve el calor correcto de @code{X-offset} para
3379 situar el objeto al lado izquierdo o derecho del padre de acuerdo con
3380 el valor de @code{direction}.
3381
3382 Si @code{side-axis} es @code{1}, @code{Y-offset} se debe establecer al
3383 procedimiento @code{ly:side-position-interface::y-aligned-side}.  Este
3384 procedimiento devuelve el valor correcto de @code{Y-offset} para
3385 situar el objeto encima o debajo del padre de acuerdo con el valor de
3386 @code{direction}.
3387
3388 @c TODO Add examples
3389
3390 @node Uso del self-alignment-interface
3391 @unnumberedsubsubsec Uso del @code{self-alignment-interface}
3392 @translationof Using the self-alignment-interface
3393
3394 @emph{Auto-alineación horizontal de los objetos}
3395
3396 La alineación horizontal de un objeto que contempla el interface
3397 @code{self-alignment-interface} está controlada por el valor de la
3398 propiedad @code{self-alignment-X}, siempre y cuando la propiedad
3399 @code{X-offset} de este objeto esté establecida a
3400 @code{ly:self-alignment-interface::x-aligned-on-self}.  Se le puede
3401 dar a @code{self-alignment-X} cualquier valor real, en unidades de la
3402 mitad de la extensión X total del objeto.  Los valores negativos
3403 mueven el objeto a la derecha, los positivos hacia la izquierda.  Un
3404 valor de @code{0} centra el objeto sobre el punto de referencia de su
3405 padre, un valor de @w{@code{-1}} alinea el borde izquierdo del objeto
3406 sobre el punto de referencia de su padre, y un valor de @code{1}
3407 alinea el borde derecho del objeto sobre el punto de referencia de su
3408 padre.  Se pueden usar los símbolos @code{LEFT}, @code{CENTER} y
3409 @code{RIGHT} en sustitución de los valores @w{@code{-1}}, @code{0} y @code{1},
3410 respectivamente.
3411
3412 Normalmente se usaría la instrucción @code{\override} para modificar
3413 el valor de @code{self-alignment-X}, pero se puede usar la instrucción
3414 @code{\tweak} para alinear varias anotaciones por separado sobre una
3415 sola nota:
3416
3417 @lilypond[quote,verbatim,relative=1]
3418 a'
3419 -\tweak #'self-alignment-X #-1
3420 ^"left-aligned"
3421 -\tweak #'self-alignment-X #0
3422 ^"center-aligned"
3423 -\tweak #'self-alignment-X #RIGHT
3424 ^"right-aligned"
3425 -\tweak #'self-alignment-X #-2.5
3426 ^"aligned further to the right"
3427 @end lilypond
3428
3429 @emph{Auto-alineación vertical de los objetos}
3430
3431 Los objetos se pueden alinear verticalmente en una forma análoga a la
3432 alineación horizontal si la propiedad @code{Y-offset} está establecida
3433 a @code{ly:self-alignment-interface::y-aligned-on-self}.  Sin embargo,
3434 a menudo se encuentran implicados otros mecanismos en la alineación
3435 vertical: el valor de @code{Y-offset} es tan sólo una variable que se
3436 tiene en cuenta.  Esto puede hacer que ajustar el valor de ciertos
3437 objetos sea una tarea dificultosa.  Las unidades son sólo la mitad de
3438 las dimensiones verticales del objeto, que suele ser bastante pequeño,
3439 por lo que pueden requerirse números bastante grandes.  Un valor de
3440 @w{@code{-1}} alinea el borde inferior del objeto con el punto de
3441 referencia del objeto padre, un valor de @code{0} alinea el centro del
3442 objeto con el punto de referencia del padre, y un valor de @code{1}
3443 alinea el borde superior del objeto con el punto de referencia del
3444 padre.  Se pueden usar los símbolos @code{DOWN}, @code{CENTER},
3445 @code{UP} en sustitución de @w{@code{-1}},
3446 @code{0} y @code{1}, respectivamente.
3447
3448 @emph{Auto-alineación de objetos en las dos direcciones}
3449
3450 Estableciendo tanto @code{X-offset} como @code{Y-offset}, se puede
3451 alinear un objeto en las dos direcciones simultáneamente.
3452
3453 El ejemplo siguiente muestra cómo ajustar una digitación de forma que
3454 se acerque a la cabeza de la nota.
3455
3456 @lilypond[quote,verbatim,relative=2]
3457 a
3458 -\tweak #'self-alignment-X #0.5  % move horizontally left
3459 -\tweak #'Y-offset #ly:self-alignment-interface::y-aligned-on-self
3460 -\tweak #'self-alignment-Y #-1  % move vertically up
3461 -3  % third finger
3462 @end lilypond
3463
3464 @ignore
3465 @unnumberedsubsubsec Uso de los procedimientos @code{aligned-on-parent}
3466
3467 @c Cannot document as they do not seem to operate consistently on all objects -td
3468 @c TODO investigate further
3469
3470 The @code{aligned-on-parent} procedures are used in the same way
3471 as the @code{aligned-on-self} procedures, they difference being
3472 that they permit an object to be aligned with the @emph{edges} of
3473 the parent rather than the parent's reference point.  The following
3474 example shows the difference:
3475
3476 @c TODO Add example
3477
3478 @lilypond[verbatim,quote]
3479 @end lilypond
3480
3481 @end ignore
3482
3483 @ignore
3484 @unnumberedsubsubsec Uso de los procedimientos @code{centered-on-parent}
3485
3486 @c Cannot document as they do not seem to operate consistently on all objects -td
3487 @c TODO investigate further
3488
3489 @end ignore
3490
3491 @c TODO The align-interface, BassFigureAlignment and VerticalAlignment
3492
3493
3494 @node Uso del break-alignable-interface
3495 @unnumberedsubsubsec Uso del @code{break-alignable-interface}
3496 @translationof Using the break-alignable-interface
3497
3498 @cindex alineación a objetos
3499 @cindex break-align-symbols
3500
3501 Las letras de ensayo se pueden alinear con objetos de notación
3502 distintos a las barras de compás.  Estos objetos son @code{ambitus},
3503 @code{breathing-sign}, @code{clef}, @code{custos}, @code{staff-bar},
3504 @code{left-edge}, @code{key-cancellation}, @code{key-signature} y
3505 @code{time-signature}.
3506
3507 De forma predeterminada, las letras de ensayo y los números de compás
3508 se centran horizontalmente sobre el objeto:
3509
3510 @lilypond[verbatim,quote,relative=1]
3511 % The rehearsal mark will be centered above the Clef
3512 \override Score.RehearsalMark #'break-align-symbols = #'(clef)
3513 \key a \major
3514 \clef treble
3515 \mark "↓"
3516 e1
3517 % The rehearsal mark will be centered above the Time Signature
3518 \override Score.RehearsalMark #'break-align-symbols = #'(time-signature)
3519 \key a \major
3520 \clef treble
3521 \time 3/4
3522 \mark "↓"
3523 e2.
3524 % The rehearsal mark will be centered above the Breath Mark
3525 \override Score.RehearsalMark #'break-align-symbols = #'(breathing-sign)
3526 \key a \major
3527 \clef treble
3528 \time 4/4
3529 e1
3530 \breathe
3531 \mark "↓"
3532 @end lilypond
3533
3534 Se puede especificar una lista de posibles objetos para la alineación.
3535 Si algunos de los objetos son invisibles en ese punto debido al valor
3536 de @code{break-visibility} o a valores de visibilidad explícitos para
3537 las armaduras y las claves, la letra de ensayo o número de compás se
3538 alinean con el primer objeto de la lista que sea visible.  Si ningún
3539 objeto de la lista es visible, el objeto se alinea con la línea
3540 divisoria.  Si la línea divisoria es invisible, el objeto se alinea
3541 con el punto en el que se encontraría la línea divisoria.
3542
3543 @lilypond[verbatim,quote,relative=1]
3544 % The rehearsal mark will be centered above the Key Signature
3545 \override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef)
3546 \key a \major
3547 \clef treble
3548 \mark "↓"
3549 e1
3550 % The rehearsal mark will be centered above the Clef
3551 \set Staff.explicitKeySignatureVisibility = #all-invisible
3552 \override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef)
3553 \key a \major
3554 \clef bass
3555 \mark "↓"
3556 gis,,1
3557 % The rehearsal mark will be centered above the Bar Line
3558 \set Staff.explicitKeySignatureVisibility = #all-invisible
3559 \set Staff.explicitClefVisibility = #all-invisible
3560 \override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef)
3561 \key a \major
3562 \clef treble
3563 \mark "↓"
3564 e''1
3565 @end lilypond
3566
3567 La alineación de la letra de ensayo con relación al objeto de notación
3568 se puede cambiar, como se ve en el ejemplo siguiente.  En una
3569 partitura con varios pentagramas, este ajuste se debe hacer para todos
3570 los pentagramas.
3571
3572 @lilypond[verbatim,quote,relative=1]
3573 % The RehearsalMark will be centered above the Key Signature
3574 \override Score.RehearsalMark #'break-align-symbols = #'(key-signature)
3575 \key a \major
3576 \clef treble
3577 \time 4/4
3578 \mark "↓"
3579 e1
3580 % The RehearsalMark will be aligned with the left edge of the Key Signature
3581 \once \override Score.KeySignature #'break-align-anchor-alignment = #LEFT
3582 \mark "↓"
3583 \key a \major
3584 e1
3585 % The RehearsalMark will be aligned with the right edge of the Key Signature
3586 \once \override Score.KeySignature #'break-align-anchor-alignment = #RIGHT
3587 \key a \major
3588 \mark "↓"
3589 e1
3590 @end lilypond
3591
3592 La letra de ensayo también se puede desplazar al borde derecho o
3593 izquierdo en una medida arbitraria.  Las unidades son espacios de
3594 pentagrama:
3595
3596 @lilypond[verbatim,quote,relative=1]
3597 % The RehearsalMark will be aligned with the left edge of the Key Signature
3598 % and then shifted right by 3.5 staff-spaces
3599 \override Score.RehearsalMark #'break-align-symbols = #'(key-signature)
3600 \once \override Score.KeySignature #'break-align-anchor = #3.5
3601 \key a \major
3602 \mark "↓"
3603 e1
3604 % The RehearsalMark will be aligned with the left edge of the Key Signature
3605 % and then shifted left by 2 staff-spaces
3606 \once \override Score.KeySignature #'break-align-anchor = #-2
3607 \key a \major
3608 \mark "↓"
3609 e1
3610 @end lilypond
3611
3612
3613 @node Agrupación vertical de objetos gráficos
3614 @subsection Agrupación vertical de objetos gráficos
3615 @translationof Vertical grouping of grobs
3616
3617 Los grobs (objetos gráficos) @code{VerticalAlignment} y
3618 @code{VerticalAxisGroup} trabajan de manera coordinada.
3619 @code{VerticalAxisGroup} agrupa distintos grobs como @code{Staff},
3620 @code{Lyrics}, etc.  Después, @code{VerticalAlignment} alinea los
3621 distintos grobs agrupados previamente por @code{VerticalAxisGroup}.
3622 Normalmente sólo existe un @code{VerticalAlignment} por cada
3623 partitura, pero cada @code{Staff}, @code{Lyrics}, etc. tiene su propio
3624 @code{VerticalAxisGroup}.
3625
3626
3627 @node Modificación de los sellos
3628 @subsection Modificación de los sellos
3629 @translationof Modifying stencils
3630
3631 Todos los objetos de presentación tienen una propiedad @code{stencil}
3632 que es parte del @code{grob-interface}.  De forma predeterminada, esta
3633 propiedad suele estar establecida a una función específica del objeto
3634 que está hecha a medida para disponer el símbolo que lo representa en
3635 la salida.  Por ejemplo, el ajuste estándar para la propiedad
3636 @code{stencil} del objeto @code{MultiMeasureRest} es
3637 @code{ly:multi-measure-rest::print}.
3638
3639 El símbolo estándar de cualquier objeto se puede sustituir modificando
3640 la propiedad @code{stencil} para que haga referencia a un
3641 procedimiento diferente escrito especialmente.  Esto requiere un alto
3642 nivel de conocimiento del funcionamiento interno de LilyPond, pero hay
3643 una forma más fácil que a menudo puede dar resultados adecuados.
3644
3645 El procedimiento es establecer la propiedad @code{stencil} al
3646 procedimiento que imprime texto (@code{ly:text-interface::print}) y
3647 añadir una propiedad @code{text} al objeto ajustada para que contenga
3648 el texto de marcado que produce el símbolo requerido.  Debido a la
3649 flexibilidad del marcado, se pueden conseguir muchas cosas; en
3650 particular, consulte @ref{Notación gráfica dentro de elementos de marcado}.
3651
3652 El ejemplo siguiente muestra esto cambiando el símbolo de la cabeza de
3653 la nota a unas aspas dentro de una circunferencia.
3654
3655 @lilypond[verbatim,quote]
3656 XinO = {
3657   \once \override NoteHead  #'stencil = #ly:text-interface::print
3658   \once \override NoteHead #'text = \markup {
3659     \combine
3660       \halign #-0.7 \draw-circle #0.85 #0.2 ##f
3661       \musicglyph #"noteheads.s2cross"
3662   }
3663 }
3664 \relative c'' {
3665   a a \XinO a a
3666 }
3667 @end lilypond
3668
3669 Cualquiera de los glifos de la fuente tipográfica Feta se puede pasar
3670 a la instrucción de marcado @code{\musicglyph}: véase @ref{La tipografía Feta}.
3671
3672 @c TODO Add inserting eps files or ref to later
3673
3674 @c TODO Add inserting Postscript or ref to later
3675
3676
3677 @seealso
3678 Referencia de la notación:
3679 @ref{Notación gráfica dentro de elementos de marcado},
3680 @ref{Formatear el texto},
3681 @ref{Text markup commands},
3682 @ref{La tipografía Feta}.
3683
3684
3685 @node Modificación de las formas
3686 @subsection Modificación de las formas
3687 @translationof Modifying shapes
3688
3689 @menu
3690 * Modificación de ligaduras de unión y de expresión::
3691 @end menu
3692
3693 @node Modificación de ligaduras de unión y de expresión
3694 @unnumberedsubsubsec Modificación de ligaduras de unión y de expresión
3695 @translationof Modifying ties and slurs
3696
3697 @cindex ligaduras de expresión, modificar
3698 @cindex ligaduras de unión, modificar
3699 @cindex Bézier, curvas de, puntos de control
3700 @cindex puntos de control en curvas de Bézier
3701
3702 Las ligaduras de unión, de expresión y de fraseo se trazan como curvas
3703 de Bézier de tercer orden.  Si la forma de la ligadura calculada
3704 automáticamente no resulta óptima, se puede modificar su forma
3705 manualmente mediante la especificación explícita de los cuatro puntos
3706 de control necesarios para definir una curva de Bézier de tercer
3707 orden.
3708
3709 Las curvas Bézier de tercer orden o cúbicas están definidas por cuatro
3710 puntos de control.  El primer y cuarto puntos de control son
3711 exactamente los puntos extremos de comienzo y de final de la curva.
3712 Los dos puntos de control intermedios definen la forma.  Se pueden
3713 encontrar en la web animaciones que muestran cómo se traza la curva,
3714 pero la descripción siguiente puede ser de ayuda.  La curva comienza a
3715 partir del primer punto de control dirigiéndose directamente hacia el
3716 segundo, curvándose progresivamente para dirigirse hacia el tercero y
3717 continuando la curva hacia el cuarto, llegando a éste en viaje directo
3718 desde el tercer punto de control.  La curva está contenida enteramente
3719 dentro del cuadrilátero definido por los cuatro puntos de control.
3720
3721 He aquí un ejemplo de un caso en que la ligadura no es óptima, y donde
3722 @code{\tieDown} no sirve de ayuda.
3723
3724 @lilypond[verbatim,quote,relative=1]
3725 <<
3726   { e1~ e }
3727 \\
3728   { r4 <g c,> <g c,> <g c,> }
3729 >>
3730 @end lilypond
3731
3732 Una forma de mejorar esta ligadura es modificar manualmente sus puntos
3733 de control como sigue.
3734
3735 Las coordenadas de los puntos de control de Bézier se especifican en
3736 unidades de espacios de pentagrama.  La coordenada@tie{}X está en
3737 relación con el punto de referencia de la nota a la que está unida la
3738 ligadura, y la coordenada@tie{}Y está en relación con la línea central
3739 del pentagrama.  Las coordenadas se introducen como una lista de
3740 cuatro parejas de números decimales (reales).  Un enfoque es estimar
3741 las coordenadas de los dos puntos extremos, y luego tratar de adivinar
3742 los dos puntos intermedios.  Los valores óptimos se encuentran por
3743 ensayo y error.
3744
3745 Es útil recordar que una curva simétrica necesita puntos de control
3746 simétricos, y que las curvas de Bézier tienen la útil propiedad de que
3747 las transformaciones de la curva tales como la traslación, rotación y
3748 escalado se pueden obtener aplicando la misma transformación a los
3749 puntos de control de la curva.
3750
3751 Para el ejemplo anterior, la sobreescritura siguiente da una ligadura
3752 satisfactoria.  Observe la colocación: debe ir inmediatamente antes de
3753 la nota a la que se asigna el comienzo de la ligadura de expresión o
3754 de unión.
3755
3756 @lilypond[verbatim,quote,relative=1]
3757 <<
3758   {
3759     \once \override Tie
3760       #'control-points = #'((1 . -1) (3 . 0.6) (12.5 . 0.6) (14.5 . -1))
3761      e1 ~ e
3762   }
3763 \\
3764   { r4 <g c,> <g c,> <g c,> }
3765 >>
3766 @end lilypond
3767
3768 @knownissues
3769 No es posible modificar la forma de las ligaduras de unión o de
3770 expresión cambiando la propiedad @code{control-points} si hay más de
3771 una en el mismo momento musical, ni siquiera usando la instrucción
3772 @code{\tweak}.  Sin embargo, se puede sobreescribir la propiedad @code{tie-configuration} de
3773 @code{TieColumn} para fijar la línea de inicio y la dirección según se requiera.
3774
3775 @seealso
3776 Referencia de funcionamiento interno:
3777 @rinternals{TieColumn}.
3778
3779
3780 @node Uso de las funciones musicales
3781 @section Uso de las funciones musicales
3782 @translationof Using music functions
3783
3784 @c TODO -- add @seealso, etc. to these subsections
3785
3786 Dondequiera que se necesite reutilizar trucos con distintas
3787 expresiones musicales, con frecuencia conviene hacer que el truco
3788 forme parte de una @emph{función musical}.  En esta sección
3789 estudiaremos solamente las funciones de @emph{sustitución}, en las que
3790 el objeto es sustituir una variable dentro de un fragmento de código
3791 de entrada de LilyPond.  Se describen otras funciones más complejas en
3792 @rextend{Funciones musicales}.
3793
3794 @menu
3795 * Sintaxis de las funciones de sustitución::
3796 * Ejemplos de funciones de sustitución::
3797 @end menu
3798
3799 @node Sintaxis de las funciones de sustitución
3800 @subsection Sintaxis de las funciones de sustitución
3801 @translationof Substitution function syntax
3802
3803 Es fácil hacer una función que sustituya una variable dentro de código
3804 de LilyPond.  La forma general de estas funciones es
3805
3806 @example
3807 funcion =
3808 #(define-music-function
3809      (parser location @var{arg1} @var{arg2} @dots{})
3810      (@var{type1?} @var{type2?} @dots{})
3811    #@{
3812      @var{@dots{}música@dots{}}
3813    #@})
3814 @end example
3815
3816 @noindent
3817 donde
3818
3819 @multitable @columnfractions .33 .66
3820 @item @code{@var{argN}}
3821 @tab @var{n}-ésimo argumento
3822
3823 @item @code{@var{typeN?}}
3824 @tab @emph{predicado de tipo} de Scheme para el que @code{@var{argN}}
3825 debe devolver @code{#t}.
3826
3827 @item @code{@var{@dots{}música@dots{}}}
3828 @tab entrada de LilyPond normal, que utiliza @code{$} para
3829 referenciar argumentos (p.ej. @samp{$arg1}).
3830 @end multitable
3831
3832
3833 Los argumentos @code{parser} y @code{location} son necesarios, y se
3834 utilizan en algunas situaciones avanzadas como se encuentra descrito
3835 en @rextend{Sintaxis de las funciones musicales}.  Para las funciones
3836 de sustitución, tan sólo hemos de asegurarnos de incluirlos.
3837
3838 También es necesaria la lista de predicados de tipo.  Algunos de los
3839 predicados de tipo más comunes que se utilizan en las funciones
3840 musicales son:
3841
3842 @example
3843 boolean?
3844 cheap-list?  @emph{(utilizar en lugar de }@q{list?}@emph{ para un procesado más rápido)}
3845 ly:music?
3846 markup?
3847 number?
3848 pair?
3849 string?
3850 symbol?
3851 @end example
3852
3853 @noindent
3854 Para ver una lista de los predicados de tipo disponibles, consulte
3855 @ref{Predicados de tipo predefinidos}.  También se permiten los
3856 predicados de tipo definidos por el usuario.
3857
3858
3859 @seealso
3860
3861 Referencia de la notación:
3862 @ref{Predicados de tipo predefinidos}.
3863
3864 Expansión de LilyPond:
3865 @rextend{Sintaxis de las funciones musicales}.
3866
3867 Archivos instalados:
3868 @file{lily/music-scheme.cc},
3869 @file{scm/c++.scm},
3870 @file{scm/lily.scm}.
3871
3872
3873 @node Ejemplos de funciones de sustitución
3874 @subsection Ejemplos de funciones de sustitución
3875 @translationof Substitution function examples
3876
3877 Esta sección presenta algunos ejemplos de funciones de sustitución.
3878 No pretenden ser exhaustivas, sino demostrar algunas de las
3879 posibilidades de las funciones de sustitución sencillas.
3880
3881 En el primer ejemplo se define una función que simplifica el ajuste
3882 del relleno de un elemento de inscripción de texto TextScript:
3883
3884 @lilypond[quote,verbatim,ragged-right]
3885 padText =
3886 #(define-music-function
3887      (parser location padding)
3888      (number?)
3889    #{
3890      \once \override TextScript #'padding = $padding
3891    #})
3892
3893 \relative c''' {
3894   c4^"piu mosso" b a b
3895   \padText #1.8
3896   c4^"piu mosso" d e f
3897   \padText #2.6
3898   c4^"piu mosso" fis a g
3899 }
3900 @end lilypond
3901
3902 Además de números, podemos usar expresiones musicales, como notas,
3903 para los argumentos de las funciones musicales:
3904
3905 @c TODO: use a better example (the music argument is redundant).
3906
3907 @lilypond[quote,verbatim,ragged-right]
3908 custosNote =
3909 #(define-music-function
3910      (parser location note)
3911      (ly:music?)
3912    #{
3913      \once \override Voice.NoteHead #'stencil =
3914        #ly:text-interface::print
3915      \once \override Voice.NoteHead #'text =
3916        \markup \musicglyph #"custodes.mensural.u0"
3917      \once \override Voice.Stem #'stencil = ##f
3918      $note
3919    #})
3920
3921 \relative c' { c4 d e f \custosNote g }
3922 @end lilypond
3923
3924 Se pueden definir funciones de sustitución con más de un argumento:
3925
3926 @lilypond[quote,verbatim,ragged-right]
3927 tempoPadded =
3928 #(define-music-function
3929      (parser location padding tempotext)
3930      (number? string?)
3931    #{
3932      \once \override Score.MetronomeMark #'padding = $padding
3933      \tempo \markup { \bold $tempotext }
3934    #})
3935
3936 \relative c'' {
3937   \tempo \markup { "Low tempo" }
3938   c4 d e f g1
3939   \tempoPadded #4.0 #"High tempo"
3940   g4 f e d c1
3941 }
3942 @end lilypond
3943
3944 @c TODO: add appropriate @@ref's here.