]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/es/user/changing-defaults.itely
Merge master into nested-bookparts
[lilypond.git] / Documentation / es / user / changing-defaults.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
2 @c This file is part of lilypond.tely
3 @ignore
4     Translation of GIT committish: dfae8d829c653d1c011f8823cd51d09c33400b66
5
6     When revising a translation, copy the HEAD committish of the
7     version that you are working on.  See TRANSLATION for details.
8 @end ignore
9
10 @c \version "2.11.61"
11
12 @node Changing defaults
13 @chapter Changing defaults
14
15
16 El objetivo del diseño de LilyPond es proporcionar por defecto la más
17 alta calidad de los resultados.  A pesar de ello, podría tener que
18 cambiar este resultado por defecto.  La disposición sobre el papel se
19 controla a través de un amplio número de proverbiales @q{botones e
20 interruptores}.  Este capítulo no relaciona todos y cada uno de los
21 botones.  Más bien da una visión de conjunto sobre qué grupos de
22 controles se encuentran disponibles y explica la forma de hallar el
23 botón exacto que se debe utilizar para conseguir un determinado
24 efecto.
25
26
27 @cindex Referencia de funcionamiento interno
28
29 Los controles disponibles para los ajustes finos se describen en un
30 documento separado,
31 @iftex
32 el Manual de referencia de funcionamiento interno.
33 @end iftex
34 @ifnottex
35 la @ref{Top,Referencia de funcionamiento interno,,lilypond-internals}.
36 @end ifnottex
37 Dicho manual relaciona todas las variables, funciones y opciones que
38 se encuentran disponibles en LilyPond.  Está escrito como un documento
39 HTML, que se puede encontrar en
40 @c leave the @uref as one long line.
41 @uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/user/@/lilypond@/-internals/,on@/-line},
42 pero que también va incluido en el paquete de la documentación de LilyPond.
43
44 Hay cuatro áreas en las que se pueden cambiar los valores por defecto:
45
46 @itemize
47 @item
48 Notación automática: cambiar la creación automática de los elementos
49 de notación.  Por ejemplo, cambiar las reglas de barrado de las
50 figuras.
51
52 @item
53 Salida: cambiar el aspecto de los objetos individuales.  Por ejemplo,
54 cambiar las direcciones de las plicas o la situación exacta de los
55 subíndices.
56
57 @item
58 Contexto: modificar aspectos de la traducción de los eventos musicales
59 en notación.  Por ejemplo, dar a cada pentagrama una indicación de
60 compás distinta.
61
62 @item
63 Disposición de la página: cambiar el aspecto visual del espaciado, los
64 saltos de línea y las dimensiones de la página.  Estas modificaciones
65 se discuten en @ref{General input and output} y @ref{Spacing issues}.
66 @end itemize
67
68 Internamente, LilyPond utiliza el lenguaje Scheme (un dialecto de
69 LISP) para aportar la infraestructura.  La sobreescritura de las
70 decisiones de disposición da acceso efectivo a las interioridades del
71 programa, lo que requiere código de Scheme como entrada.  Los
72 elementos de Scheme se inauguran dentro de un archivo @code{.ly} con
73 el símbolo de cuadradillo @code{#}.@footnote{@rlearning{Scheme
74 tutorial} contiene un breve tutorial sobre la introducción de números,
75 listas, cadenas y símbolos en Scheme.}
76
77
78 @menu
79 * Interpretation contexts::     
80 * Explaining the Internals Reference::  
81 * Modifying properties::        
82 * Useful concepts and properties::  
83 * Common properties::           
84 * Advanced tweaks::             
85 @end menu
86
87
88 @node Interpretation contexts
89 @section Interpretation contexts
90
91 Esta sección explica qué son los contextos y cómo modificarlos.
92
93 @menu
94 * Contexts explained::          
95 * Creating contexts::           
96 * Modifying context plug-ins::  
97 * Changing context default settings::  
98 * Defining new contexts::       
99 * Aligning contexts::           
100 @end menu
101
102
103 @node Contexts explained
104 @subsection Contexts explained
105
106 Cuando se imprime la música, se tienen que añadir a la salida una gran
107 cantidad de elementos notacionales.  Por ejemplo, compare la entrada y
108 la salida del siguiente ejemplo:
109
110 @lilypond[quote,verbatim,relative=2,fragment]
111 cis4 cis2. g4
112 @end lilypond
113
114 La entrada es bastante escueta, pero en la salida se añaden líneas
115 divisorias, alteraciones accidentales, la clave y la indicación de
116 compás.  LilyPond @emph{interpreta} la entrada.  En esta fase se
117 inspecciona la información musical en orden temporal, de forma
118 parecida a la lectura de una partitura de izquierda a
119 derecha. Mientras se lee la entrada, el programa recuerda dónde se
120 encuentran los límites de los compases, y qué notas requieren
121 alteraciones explícitas.  Esta información se puede presentar sobre
122 varios niveles.  Por ejemplo, el efecto de una alteración accidental
123 se encuentra limitada a un solo pentagrama, mientras que una barra
124 divisoria debe estar sincronizada a través de la partitura de arriba a
125 abajo.
126
127 Dentro de LilyPond, estas reglas y pequeñas porciones de información
128 se agrupan en @emph{Contexts}.  Algunos ejemplos de contextos son
129 @code{Voice} (Voz), @code{Staff} (Pauta o pentagrama) y @code{Score}
130 (Partitura).  Los contextos son jerárquicos, por ejemplo: un
131 @code{Staff} contener muchas @code{Voice}s, y una @code{Score} puede
132 contener muchos contextos de @code{Staff}.
133
134 @quotation
135 @sourceimage{context-example,5cm,,}
136 @end quotation
137
138 Cada contexto asume la responsabilidad de imponer algunas reglas de
139 notación, creando ciertos objetos de notación y manteniendo las
140 propiedades asociadas.  Por ejemplo, el contexto @code{Voice} puede
141 introducir una alteración accidental y entonces el contexto
142 @code{Staff} mantiene la regla de mostrar o suprimir la alteración
143 para el resto del compás.  La sincronización de las líneas divisorias
144 se gestiona dentro del contexto de la partitura, @code{Score}.
145
146 Sin embargo, en algunas músicas posiblemente no queramos que las
147 líneas divisorias estén sincronizada (pensemos en una partitura
148 polimétrica en compases de 4/4 y de 3/4).  En tales casos, debemos
149 modificar los ajustes por omisión de los contextos @code{Score} y
150 @code{Staff}.
151
152 Para partituras muy sencillas, los contextos se crean implícitamente y
153 no debemos preocuparnos por ellos.  Para piezas mayores, como por
154 ejemplo cualquiera que tenga más de un pentagrama, los contextos se
155 deben crear explícitamente para asegurarnos de que tendremos la
156 cantidad exacta de pentagramas que necesitamos, y que están en el
157 orden correcto.  Para tipografiar piezas con notación especializada,
158 puede ser útil modificar contextos existentes o definir unos nuevos.
159
160
161 En la referencia del programa se encuentra una descripción completa de
162 todos los contextos que están disponibles, consulte
163 @ifhtml
164 @rinternals{Contexts}.
165 @end ifhtml
166 @ifnothtml
167 Traducción @expansion{} Contexto.
168 @end ifnothtml
169
170 @node Creating contexts
171 @subsection Creating contexts
172
173 Para partituras que sólo tienen una voz y un pentagrama, los contextos
174 se crean automáticamente.  Para partituras más complejas, es necesario
175 crearlos a mano.  Existen tres instrucciones que hacen esto.
176
177 @itemize
178
179 @item
180 La instrucción más fácil es @code{\new}, y es también la más rápida de
181 escribir.  Se antepone a una expresión musical, por ejemplo
182
183 @funindex \new
184 @cindex nuevos, contextos
185 @cindex Contexto, creación de
186
187 @example
188 \new @var{tipo} @var{expresión_musical}
189 @end example
190
191 @noindent
192 donde @var{tipo} es el nombre de un contexto (como @code{Staff} o
193 @code{Voice}).  Esta instrucción crea un contexto nuevo, y empieza a
194 interpretar la @var{expresión_musical} con él.
195
196 Una aplicación práctica de @code{\new} es una partitura con muchos pentagramas.
197 Cada parte que debe ir en su propio pentagrama, va precedida de
198 @code{\new Staff}.
199
200 @lilypond[quote,verbatim,relative=2,ragged-right,fragment]
201 <<
202   \new Staff { c4 c }
203   \new Staff { d4 d }
204 >>
205 @end lilypond
206
207 La instrucción @code{\new} puede también dar nombre al contexto,
208
209 @example
210 \new @var{tipo} = @var{identificador} @var{música}
211 @end example
212 Sin embargo, este nombre especificado por el usuario sólo se utiliza
213 si no hay ya otro contexto anterior con el mismo nombre.
214
215
216 @funindex \context
217
218 @item
219 Como @code{\new}, la instrucción @code{\context} también dirige una
220 expresión musical a un objeto de contexto, pero da al contexto un
221 nombre explícito.  La sintaxis es
222
223 @example
224 \context @var{tipo} = @var{identificador} @var{música}
225 @end example
226
227 En esta forma, la instrucción buscará un contexto existente del
228 @var{tipo} especificado que tenga el nombre @var{identificador}.  Si
229 ese contexto aún no existe, se crea un contexto nuevo con el nombre
230 especificado.  Esto es útil si nos vamos a referir más tarde al
231 contexto.  Por ejemplo, cuando se escribe la letra, la melodía está
232 dentro de un contexto con nombre
233
234 @example
235 \context Voice = "@b{tenor}" @var{música}
236 @end example
237
238 @noindent
239 de forma que los textos se puedan alienar correctamente con sus notas,
240
241 @example
242 \new Lyrics \lyricsto "@b{tenor}" @var{letra}
243 @end example
244
245 @noindent
246
247 Otro uso posible de los contextos con nombre es la fusión de dos
248 expresiones musicales distintas en un solo contexto.  En el siguiente
249 ejemplo, se introducen por separado las articulaciones y las notas,
250
251 @example
252 musica = @{ c4 c4 @}
253 decoracion = @{ s4-. s4-> @}
254 @end example
255
256 se combinan enviando los dos al mismo contexto @code{Voice},
257
258 @example
259 <<
260   \new Staff \context Voice = "A" \musica
261   \context Voice = "A" \decoracion
262 >>
263 @end example
264 @lilypond[quote,ragged-right]
265 music = { c4 c4 }
266 arts = { s4-. s4-> }
267 \relative c'' <<
268   \new Staff \context Voice = "A" \music
269   \context Voice = "A" \arts
270 >>
271 @end lilypond
272
273 Con este mecanismo, es posible definir un Urtext (una edición
274 original), con la posibilidad de poner articulaciones distintas sobre
275 las mismas notas.
276
277 @cindex crear contextos
278
279 @item
280 La tercera instrucción para crear contextos es
281 @example
282 \context @var{tipo} @var{música}
283 @end example
284
285
286 @noindent
287 Esto es similar a @code{\context} con @code{= @var{identificador}},
288 pero se corresponde con cualquier contexto del tipo @var{tipo}, sin
289 importar qué nombre se le ha dado.
290
291 Esta variante se usa con expresiones musicales que se pueden
292 interpretar en varios niveles.  Por ejemplo, la instrucción
293 @code{\applyOutput} (véase @ref{Running a function on all layout
294 objects}).  Sin una instrucción @code{\context} explícita, normalmente
295 se aplicaría a @code{Voice}
296
297 @example
298 \applyOutput #'@var{contexto} #@var{función}   % aplicar al contexto Voice
299 @end example
300
301 Para que se interprete dentro de los niveles de @code{Score} o
302 @code{Staff}, utilice las siguientes formas:
303
304 @example
305 \applyOutput #'Score #@var{función}
306 \applyOutput #'Staff #@var{función}
307 @end example
308
309 @end itemize
310
311
312 @node Modifying context plug-ins
313 @subsection Modifying context plug-ins
314
315 Los contextos de notación (como @code{Score} y @code{Staff}) no sólo
316 almacenan propiedades, también contienen «plug-ins» o complementos
317 llamados @q{grabadores} que crean elementos de notación.  Por ejemplo,
318 el contexto @code{Voice} contiene un grabador
319 @code{Note_head_engraver} que crea las cabezas de nota y el contexto
320 @code{Staff} contiene un grabador @code{Key_signature_engraver} que
321 crea la indicación de compás.
322
323 Para ver una descripción completa de todos y cada uno de los
324 complementos, consulte
325 @ifhtml
326 @rinternals{Engravers and Performers}.
327 @end ifhtml
328 @ifnothtml
329 Referencia de funcionamiento interno @expansion{} Traducción @expansion{} Grabadores.
330 @end ifnothtml
331 Cada contexto que se describe en
332 @ifhtml
333 @rinternals{Contexts}
334 @end ifhtml
335 @ifnothtml
336 Referencia de funcionamiento interno @expansion{} Traducción @expansion{} Contexto.
337 @end ifnothtml
338 relaciona los grabadores que se usan para ese contexto.
339
340
341 Puede ser de utilidad jugar un poco con estos complementos.  Se hace
342 iniciando un contexto nuevo con @code{\new} o @code{\context} y
343 modificándolo:
344
345 @funindex \with
346
347 @example
348 \new @var{contexto} \with @{
349   \consists @dots{}
350   \consists @dots{}
351   \remove @dots{}
352   \remove @dots{}
353   @emph{etc.}
354 @}
355 @{
356   @emph{..música..}
357 @}
358 @end example
359
360 @noindent
361 donde los @dots{} debe ser el nombre de un grabador.  Aquí tenemos un
362 ejemplo sencillo que suprime los grabadores
363 @code{Time_signature_engraver} y @code{Clef_engraver} de un contexto
364 @code{Staff}:
365
366 @lilypond[quote,relative=1,verbatim,fragment]
367 <<
368   \new Staff {
369     f2 g
370   }
371   \new Staff \with {
372      \remove "Time_signature_engraver"
373      \remove "Clef_engraver"
374   } {
375     f2 g2
376   }
377 >>
378 @end lilypond
379
380 En el segundo pentagrama no hay indicación de compás ni clave.  Éste
381 es un método bastante rudimentario de hacer que desaparezcan los
382 objetos porque afecta a todo el pentagrama.  Este método también
383 afecta al espaciado, lo que puede ser deseable o no serlo.  Se
384 muestran métodos más sofisticados para quitar objetos en
385 @rlearning{Visibility and color of objects}.
386
387 EL ejemplo siguiente muestra una aplicación práctica.  Normalmente las
388 líneas divisorias y las indicaciones de compás están sincronizadas a
389 lo largo de toda la partitura.  Lo hacen los grabadores
390 @code{Timing_translator} y @code{Default_bar_line_engraver}.  Estos
391 complementos mantienen al día la administración de las indicaciones de
392 compás, posición dentro del compás, etc.  Moviendo estos grabadores
393 desde el contexto de @code{Score} al de @code{Staff}, podemos
394 conseguir una partitura en la que cada pentagrama tiene su propio
395 compás independiente.
396
397 @cindex polimétricas, partituras
398 @cindex compases distintos al mismo tiempo
399
400 @lilypond[quote,relative=1,ragged-right,verbatim,fragment]
401 \new Score \with {
402   \remove "Timing_translator"
403   \remove "Default_bar_line_engraver"
404 } <<
405   \new Staff \with {
406     \consists "Timing_translator"
407     \consists "Default_bar_line_engraver"
408   } {
409       \time 3/4
410       c4 c c c c c
411   }
412   \new Staff \with {
413     \consists "Timing_translator"
414     \consists "Default_bar_line_engraver"
415   } {
416        \time 2/4
417        c4 c c c c c
418   }
419 >>
420 @end lilypond
421
422
423 @node Changing context default settings
424 @subsection Changing context default settings
425
426 Los ajustes de las secciones previas ( @ref{The set command},
427 @ref{Modifying context plug-ins} y @ref{Overview of modifying
428 properties}) también se pueden escribir separados de la música dentro
429 del bloque @code{\layout}:
430
431 @example
432 \layout @{
433   @dots{}
434   \context @{
435     \Staff
436
437     \set fontSize = #-2
438     \override Stem #'thickness = #4.0
439     \remove "Time_signature_engraver"
440   @}
441 @}
442 @end example
443
444 La instrucción @code{\Staff} recupera la definición existente del
445 contexto de pentagrama de manera que se pueda modificar.
446
447 Los enunciados
448 @example
449 \set fontSize = #-2
450 \override Stem #'thickness = #4.0
451 \remove "Time_signature_engraver"
452 @end example
453
454 @noindent
455 afectan a todos los pentagramas de la partitura.  Otros contextos se
456 pueden modificar de forma análoga.
457
458 La palabra clave @code{\set} es opcional dentro del bloque
459 @code{\layout}, y así
460
461 @example
462 \context @{
463   @dots{}
464   fontSize = #-2
465 @}
466 @end example
467
468 @noindent
469 también funciona.
470
471
472
473 @knownissues
474
475 No es posible recolectar cambios de contexto dentro de una variable y
476 aplicarlos a una definición de @code{\context} por referencia a dicha
477 variable.
478
479 La instrucción @code{\RemoveEmptyStaffContext} sobreescribe nuestros
480 ajustes en curso para @code{\Staff}.  Si queremos cambiar los valores
481 predeterminados para un pentagrama que utilice
482 @code{\RemoveEmptyStaffContext}, debe hacerlo después de llamar a
483 @code{\RemoveEmptyStaffContext}, o sea
484
485 @example
486 \layout @{
487   \context @{
488     \RemoveEmptyStaffContext
489
490     \override Stem #'thickness = #4.0
491   @}
492 @}
493 @end example
494
495
496 @node Defining new contexts
497 @subsection Defining new contexts
498
499 Los contextos específicos, como @code{Staff} y @code{Voice}, están
500 construidos a base de bloques sencillos.  Es posible crear nuevos
501 tipos de contextos con combinaciones distintas de añadidos grabadores.
502
503 El siguiente ejemplo muestra cómo construir un tipo diferente de contexto de
504 @code{Voice} partiendo de cero.  Será parecido a
505 @code{Voice}, pero imprime solamente cabezas centradas en forma de barra inclinada.  Se puede usar
506 para indicar improvisación en piezas de jazz,
507
508 @c KEEP LY
509 @lilypond[quote,ragged-right]
510 \layout { \context {
511   \name ImproVoice
512   \type "Engraver_group"
513   \consists "Note_heads_engraver"
514   \consists "Text_engraver"
515   \consists Pitch_squash_engraver
516   squashedPosition = #0
517   \override NoteHead #'style = #'slash
518   \override Stem #'transparent = ##t
519   \alias Voice
520 }
521 \context { \Staff
522   \accepts "ImproVoice"
523 }}
524
525 \relative c'' {
526   a4 d8 bes8 \new ImproVoice { c4^"ad lib" c
527    c4 c^"desvístete" c_"mientras juegas :)" c }
528   a1
529 }
530 @end lilypond
531
532
533 Estos ajustes se definen dentro de un bloque @code{\context} que a su
534 vez está dentro de un bloque @code{\layout},
535
536 @example
537 \layout @{
538   \context @{
539     @dots{}
540   @}
541 @}
542 @end example
543
544 En el siguiente análisis, la entrada de ejemplo que se muestra debe ir
545 en el lugar de los puntos suspensivos @dots{} del fragmento anterior.
546
547 En primer lugar es necesario definir un nombre para el nuevo contexto:
548
549 @example
550 \name ImproVoice
551 @end example
552
553 Debido a que es parecido al contexto @code{Voice}, queremos órdenes
554 que funcionen sobre contextos de @code{Voice} (existentes) para que
555 siga funcionando.  Esto se consigue dando al contexto nuevo un alias
556 @code{Voice},
557
558 @example
559 \alias Voice
560 @end example
561
562 El contexto imprimirá notas y textos explicativos, por ello tenemos
563 que añadir los grabadores que aportan esta funcionalidad,
564
565 @example
566 \consists Note_heads_engraver
567 \consists Text_engraver
568 @end example
569
570 Pero sólo necesitamos esto en la línea central,
571
572 @example
573 \consists Pitch_squash_engraver
574 squashedPosition = #0
575 @end example
576
577 El grabador @rinternals{Pitch_squash_engraver} modifica las cabezas de
578 nota (creadas por el grabador @rinternals{Note_heads_engraver}) y
579 establece sus posiciones verticales al valor de
580 @code{squashedPosition}, en este caso@tie{}@code{0}, la línea central.
581
582 Las notas parecen barras inclinadas y no tienen plica,
583
584 @example
585 \override NoteHead #'style = #'slash
586 \override Stem #'transparent = ##t
587 @end example
588
589 Todos estos añadidos tienen que cooperar, y esto se consigue con un
590 añadido especial, que se debe marcar con la palabra clave
591 @code{\type}.  Este será siempre @code{Engraver_group},
592
593 @example
594 \type "Engraver_group"
595 @end example
596
597 Al juntarlo todo, obtenemos
598
599 @example
600 \context @{
601   \name ImproVoice
602   \type "Engraver_group"
603   \consists "Note_heads_engraver"
604   \consists "Text_engraver"
605   \consists Pitch_squash_engraver
606   squashedPosition = #0
607   \override NoteHead #'style = #'slash
608   \override Stem #'transparent = ##t
609   \alias Voice
610 @}
611 @end example
612
613 @funindex \accepts
614 Los contextos dan lugar a jerarquías.  Queremos colgar el contexto
615 @code{ImproVoice} bajo el contexto @code{Staff}, como simples
616 @code{Voice}s normales.  Por tanto, modificamos la definición de
617 @code{Staff} con la instrucción @code{\accepts} (acepta),
618
619 @example
620 \context @{
621   \Staff
622   \accepts ImproVoice
623 @}
624 @end example
625
626 @funindex \denies
627 Lo opuesto a @code{\accepts} (acepta) es @code{\denies} (deniega), lo
628 que a veces se necesita cuando se están reutilizando definiciones de
629 contexto existentes.
630
631 Ponemos ambos dentro de un bloque @code{\layout}, como
632
633 @example
634 \layout @{
635   \context @{
636     \name ImproVoice
637     @dots{}
638   @}
639   \context @{
640     \Staff
641     \accepts "ImproVoice"
642   @}
643 @}
644 @end example
645
646 Así pues, la salida que aparece al comienzo de esta sub-sección se
647 puede escribir como
648
649 @example
650 \relative c'' @{
651   a4 d8 bes8
652   \new ImproVoice @{
653     c4^"ad lib" c
654     c4 c^"undress"
655     c c_"while playing :)"
656   @}
657   a1
658 @}
659 @end example
660
661
662 @node Aligning contexts
663 @subsection Aligning contexts
664
665 Los contextos nuevos se pueden alinear por encima o por debajo de
666 otros contextos existentes.  Esto podría ser de utilidad al preparar
667 un pentagrama vocal (@rlearning{Vocal ensembles}) y un ossia,
668
669 @c ARREGLAR: esta sección no funciona en PDF. (¿?)
670
671 @cindex ossia
672 @findex alignAboveContext
673 @findex alignBelowContext
674
675 @lilypond[quote,ragged-right]
676 ossia = { f4 f f f }
677 \score{
678   \relative c' \new Staff = "main" {
679     c4 c c c
680     <<
681       \new Staff \with {alignAboveContext=main} \ossia
682       { d8 f d f d f d f }
683     >>
684   }
685 }
686 @end lilypond
687
688
689
690
691 @node Explaining the Internals Reference
692 @section Explaining the Internals Reference
693
694
695 @menu
696 * Navigating the program reference::  
697 * Layout interfaces::           
698 * Determining the grob property::  
699 * Naming conventions::          
700 @end menu
701
702
703
704 @node Navigating the program reference
705 @subsection Navigating the program reference
706
707 Supongamos que queremos mover la indicación de digitación del
708 fragmento siguiente:
709
710 @lilypond[quote,fragment,relative=2,verbatim]
711 c-2
712 \stemUp
713 f
714 @end lilypond
715
716 Si hace una visita a la documentación en busca de instrucciones de
717 digitación (en @ref{Fingering instructions}), encontrará:
718
719 @quotation
720 @seealso
721
722 Referencia de funcionamiento interno: @rinternals{Fingering}.
723
724 @end quotation
725
726 @ifnothtml
727 La referencia del programador se encuentra disponible en forma de
728 documento HTML.  Se recomienda mucho que lo lea en la forma HTML, bien
729 en línea o bien descargando los archivos de la documentación HTML.
730 Esta sección sería mucho más difícil de entender si está utilizando el
731 manual en formato PDF.
732 @end ifnothtml
733
734 Siga el enlace que lleva a @rinternals{Fingering}.  Al principio de la
735 página, puede ver
736
737 @quotation
738 Los objetos de digitación se crean por parte de:
739 @rinternals{Fingering_engraver} y @rinternals{New_fingering_engraver}.
740 @end quotation
741
742 Siguiendo los enlaces relacionados dentro de la referencia del
743 programa, podemos seguir el flujo de información dentro del programa:
744
745 @itemize
746
747 @item @rinternals{Fingering}:
748 los objetos @rinternals{Fingering} se crean por parte de:
749 @rinternals{Fingering_engraver}
750
751 @item @rinternals{Fingering_engraver}:
752 Tipos de música aceptados: @rinternals{fingering-event}
753
754 @item @rinternals{fingering-event}:
755 El tipo de evento musical @code{fingering-event} está descrito en
756 Expresiones musicales con el nombre de @rinternals{FingeringEvent}
757 @end itemize
758
759 Este camino se recorre en contra de la corriente de información del
760 programa: comienza por la salida y acaba en el evento de entrada.
761 También podríamos haber empezado por un evento de la entrada, y leído
762 siguiendo el flujo de información terminando en su caso en el objeto
763 (u objetos) de la salida.
764
765 La referencia del programa también se puede examinar como un documento
766 normal.  Contiene capítulos que tratan de
767 @ifhtml
768 @rinternals{Music definitions},
769 @end ifhtml
770 @ifnothtml
771 @code{Music definitions}
772 @end ifnothtml
773 de la @rinternals{Translation}, y del @rinternals{Backend}.  Cada uno
774 de los capítulos relaciona todas las definiciones utilizadas y todas
775 las propiedades que se pueden ajustar.
776
777
778 @node Layout interfaces
779 @subsection Layout interfaces
780
781 @cindex interfaz de la presentación
782 @cindex presentación, interfaz de la
783 @cindex grob
784
785 La página HTML que pudimos ver en la sección anterior describe el
786 objeto de presentación llamado @rinternals{Fingering}.  Dicho objeto
787 es un símbolo dentro de la partitura.  Tiene propiedades que guardan
788 números (como grosores y direcciones), pero también punteros a objetos
789 relacionados.  Un objeto de presentación también se llama un
790 @emph{Grob}, que es una abreviatura de Graphical Object (objeto
791 gráfico).  Para ver más detalles acerca de los objetos gráficos o
792 Grobs, consulte @rinternals{grob-interface}.
793
794 La página dedicada a @code{Fingering} relaciona las definiciones del
795 objeto @code{Fingering}.  Por ejemplo, la página dice
796
797 @quotation
798 @code{relleno} (dimensión, en espacios de pentagrama):
799
800 @code{0.5}
801 @end quotation
802
803 @noindent
804 lo que significa que el número se mantendrá a una distancia de al
805 menos 0.5 de la cabeza de la nota.
806
807
808 Cada objeto de presentación puede tener varias funciones como elemento
809 notacional o tipográfico.  Por ejemplo, el objeto de digitación
810 Fingering tiene los siguientes aspectos
811
812 @itemize
813 @item
814 Su tamaño es independiente del espaciado horizontal, al contrario de
815 las ligaduras o las barras de las figuras.
816
817 @item
818 Es un elemento de texto.  Casi seguro que es un texto muy corto.
819
820 @item
821 este elemento de texto se tipografía con un tipo de letra, no como las
822 ligaduras o las barras de las figuras.
823
824 @item
825 Horizontalmente, el centro del símbolo se debe alinear con el centro
826 de la cabeza de la nota.
827
828 @item
829 Verticalmente, el símbolo se coloca cerca de la nota y del pentagrama.
830
831 @item
832 La posición vertical también está coordinada con otros símbolos de
833 superíndice y de subíndice.
834 @end itemize
835
836 Cada uno de estos aspectos se capta en lo que se llaman
837 @emph{interface}s, que se relacionan al final de la página dedicada a
838 @rinternals{Fingering}
839
840 @quotation
841 Este objeto contempla los siguientes interfaces:
842 @rinternals{item-interface},
843 @rinternals{self-alignment-interface},
844 @rinternals{side-position-interface}, @rinternals{text-interface},
845 @rinternals{text-script-interface}, @rinternals{font-interface},
846 @rinternals{finger-interface} y @rinternals{grob-interface}.
847 @end quotation
848
849 Al pulsar sobre cualquiera de los enlaces nos desplazaremos a la
850 página del respectivo interfaz del objeto.  Cada interfaz tiene un
851 cierto número de propiedades.  Algunas de ellas no son para que el
852 usuario las pueda ajustar (@q{Propiedades internas}), pero otras sí se
853 pueden modificar.
854
855 Hemos estado hablando de @emph{el} objeto @code{Fingering}, pero
856 realmente esto no significa mucho.  El archivo de inicialización
857 (véase @ref{File structure}) @file{scm/@/define@/-grobs@/.scm} muestra
858 el alma del @q{objeto},
859
860 @example
861 (Fingering
862   . ((padding . 0.5)
863      (avoid-slur . around)
864      (slur-padding . 0.2)
865      (staff-padding . 0.5)
866      (self-alignment-X . 0)
867      (self-alignment-Y . 0)
868      (script-priority . 100)
869      (stencil . ,ly:text-interface::print)
870      (direction . ,ly:script-interface::calc-direction)
871      (font-encoding . fetaNumber)
872      (font-size . -5)           ; don't overlap when next to heads.
873      (meta . ((class . Item)
874      (interfaces . (finger-interface
875                     font-interface
876                     text-script-interface
877                     text-interface
878                     side-position-interface
879                     self-alignment-interface
880                     item-interface))))))
881 @end example
882
883 @noindent
884 Como podemos ver, el objeto @code{Fingering} no es más que un montón
885 de valores de variables, y la página web de la Referencia de
886 funcionamiento interno se genera directamente a partir de esta
887 definición.
888
889
890 @node Determining the grob property
891 @subsection Determining the grob property
892
893 Recordemos que queríamos cambiar la posición del @b{2} en
894
895 @lilypond[quote,fragment,relative=2,verbatim]
896 c-2
897 \stemUp
898 f
899 @end lilypond
900
901 Puesto que el @b{2} se encuentra colocado verticalmente sobre su nota,
902 tenemos que negociar con el interfaz asociado con esta colocación.
903 Esto se hace usando @code{side-position-interface}.  La página que
904 describe este interface dice:
905
906 @quotation
907 @code{side-position-interface}
908
909 Colocar un objeto víctima (este mismo) junto a otros objetos (el
910 soporte).  La propiedad @code{direction} significa dónde poner el
911 objeto víctima con relación al soporte (¿a la izquierda o a la
912 derecha, encima o debajo?)
913 @end quotation
914
915 @cindex relleno
916 @noindent
917 Debajo de esta descripción, la variable @code{padding} (relleno) se describe como
918
919 @quotation
920 @table @code
921 @item padding
922 (dimensión, en espacios de pentagrama)
923
924 Añadir esta cantidad de espacio adicional entre objetos que están unos
925 junto a otros.
926 @end table
927 @end quotation
928
929 Aumentando el valor de @code{padding}, podemos alejar la cifra de
930 digitación de la cabeza de la nota.  La siguiente orden inserta un
931 espacio en blanco de 3 espacios de pentagrama entre la nota y la
932 digitación:
933 @example
934 \once \override Voice.Fingering #'padding = #3
935 @end example
936
937 Al insertar esta instrucción antes de que se haya creado el objeto
938 Fingering, es decir, antes del @code{c2}, llegamos al siguiente
939 resultado:
940
941 @lilypond[quote,relative=2,fragment,verbatim]
942 \once \override Voice.Fingering #'padding = #3
943 c-2
944 \stemUp
945 f
946 @end lilypond
947
948
949 En este caso, el contexto de este truco es @code{Voice}.  Este hecho
950 se puede deducir también a partir de la referencia del programa, ya
951 que la página dedicada al añadido @rinternals{Fingering_engraver} dice
952
953 @quotation
954 El grabador Fingering_engraver es parte de los contextos: @dots{}
955 @rinternals{Voice}
956 @end quotation
957
958
959
960 @node Naming conventions
961 @subsection Naming conventions
962
963 @untranslated
964
965 @node Modifying properties
966 @section Modifying properties
967
968 @menu
969 * Overview of modifying properties::  
970 * The set command::             
971 * The override command::        
972 * set versus override::         
973 * The tweak command::           
974 @end menu
975
976
977 @node Overview of modifying properties
978 @subsection Overview of modifying properties
979
980 Cada contexto es responsable de la creación de ciertos tipos de
981 objetos gráficos.  Los ajustes que se usan para imprimir estos objetos
982 también se almacenan por contexto.  Mediante la modificación de estos
983 ajustes, se puede alterar la apariencia de los objetos.
984
985 La sintaxis de esto es
986
987 @example
988 \override @var{contexto}.@var{nombre} #'@var{propiedad} = #@var{valor}
989 @end example
990
991 Aquí @var{nombre} es el nombre de un objeto gráfico, como @code{Stem}
992 o @code{NoteHead}, y @var{propiedad} es una variable interna del
993 sistema de formateo (@q{propiedad del grob} o @q{propiedad de
994 disposición}).  Este último es un símbolo, y por ello debe ir
995 precedido de un apóstrofo.  La subsección @ref{Modifying properties}
996 explica cómo se deben cumplimentar los conceptos @var{nombre},
997 @var{propiedad} y @var{valor}.  Aquí sólo nos ocuparemos de la
998 funcionalidad des esta instrucción.
999
1000 La instrucción
1001
1002 @verbatim
1003 \override Staff.Stem #'thickness = #4.0
1004 @end verbatim
1005
1006 @noindent
1007 hace más gruesas las plicas (el valor predeterminado es 1.3, con el
1008 grosor de una línea del pentagrama como unidad).  Puesto que la
1009 instrucción especifica como contexto a @code{Staff}, sólo se aplica al
1010 pentagrama actual.  Otros pentagramas mantienen su aspecto normal.
1011 Aquí vemos la instrucción en pleno funcionamiento:
1012
1013 @lilypond[quote,verbatim,relative=2,fragment]
1014 c4
1015 \override Staff.Stem #'thickness = #4.0
1016 c4
1017 c4
1018 c4
1019 @end lilypond
1020
1021 La instrucción @code{\override} modifica la definición de la plica
1022 @code{Stem} dentro del pentagrama en curso @code{Staff}.  Después de
1023 que la instrucción se ha interpretado, todas las plicas se engrosan.
1024
1025 DE manera análoga a @code{\set}, el argumento @var{contexto} se puede
1026 omitir, ocasionando que se utilice el contexto predeterminado
1027 @code{Voice}.  Al añadir @code{\once} se aplica el cambio durante un
1028 solo paso de tiempo.
1029
1030 @lilypond[quote,fragment,verbatim,relative=2]
1031 c4
1032 \once \override Stem #'thickness = #4.0
1033 c4
1034 c4
1035 @end lilypond
1036
1037 El @code{\override} se debe hacer antes de que el objeto se inicia.
1038 Por tanto, al alterar objetos @emph{Spanner} «de extensión» como
1039 ligaduras o barras, la instrucción @code{\override} se debe ejecutar
1040 en el momento en que se crea el objeto.  En este ejemplo:
1041
1042 @lilypond[quote,fragment,verbatim,relative=2]
1043 \override Slur #'thickness = #3.0
1044 c8[( c
1045 \override Beam #'thickness = #0.6
1046 c8 c])
1047 @end lilypond
1048
1049 @noindent
1050 la ligadura es más gruesa pero la barra no lo es.  Esto es así porque
1051 la instrucción para @code{Beam}, la barra, va después de que la barra
1052 se ha iniciado, y por ello no tiene ningún efecto.
1053
1054 De forma análoga a @code{\unset}, la instrucción @code{\revert} para
1055 un contexto deshace una instrucción @code{\override}; como con
1056 @code{\unset}, solamente afecta a los ajustes que se hicieron dentro
1057 del mismo contexto.  En otras palabras, el @code{\revert} del
1058 siguiente ejemplo no hace nada.
1059
1060 @example
1061 \override Voice.Stem #'thickness = #4.0
1062 \revert Staff.Stem #'thickness
1063 @end example
1064
1065 Salgunas opciones «trucables» se llaman @q{subpropiedades} y residen
1066 dentro de las propiedades normales.  Para trucarlas, utilice
1067 instrucciones de la forma
1068
1069 @c leave this as a long long
1070 @example
1071 \override @var{context}.@var{name} #'@var{property} #'@var{subproperty} = #@var{value}
1072 @end example
1073
1074 @noindent
1075 tales como
1076
1077 @example
1078 \override Stem #'details #'beamed-lengths = #'(4 4 3)
1079 @end example
1080
1081
1082 @seealso
1083
1084 Referencia de funcionamiento interno:
1085 @rinternals{OverrideProperty},
1086 @rinternals{RevertProperty},
1087 @rinternals{PropertySet},
1088 @rinternals{Backend} y
1089 @rinternals{All layout objects}.
1090
1091
1092 @knownissues
1093
1094 El «back-end» o motor de salida no es muy estricto en la comprobación
1095 de tipos de las propiedades de objetos.  Las referencias cíclicas en
1096 valores Scheme de propiedades pueden producir cuelgues o salidas
1097 abruptas, o las dos cosas.
1098
1099
1100 @node The set command
1101 @subsection The @code{\set} command
1102
1103 @cindex propiedades
1104 @funindex \set
1105 @cindex cambiar propiedades
1106
1107 Cada contexto puede tener distintas @emph{propiedades}, variables
1108 contenidas dentro de ese contexto.  Se pueden cambiar mientras dura el
1109 paso de interpretación.  Se consigue insertando la instrucción
1110 @code{\set} dentro de la música:
1111
1112 @example
1113 \set @var{contexto}.@var{propiedad} = #@var{valor}
1114 @end example
1115
1116 Por ejemplo:
1117 @lilypond[quote,verbatim,relative=2,fragment]
1118 R1*2
1119 \set Score.skipBars = ##t
1120 R1*2
1121 @end lilypond
1122
1123 Estas instrucción salta los compases que no tienen notas.  El
1124 resultado es que los silencios multicompás se condensan.  El valor
1125 asignado es un objeto de Scheme.  En este caso, es @code{#t}, el valor
1126 booleano True o verdadero.
1127
1128 Si se omite el argumento @var{context}, entonces se utiliza el
1129 contexto actual de nivel más bajo (normalmente @code{ChordNames},
1130 @code{Voice} o @code{Lyrics}). En este ejemplo:
1131
1132 @lilypond[quote,verbatim,relative=2,fragment]
1133 c8 c c c
1134 \set autoBeaming = ##f
1135 c8 c c c
1136 @end lilypond
1137
1138 @noindent
1139 el argumento @var{contexto} de la instrucción @code{\set} se omite,
1140 así pues el barrado automático se desactiva en la voz actual.  Observe
1141 que el contexto de nivel más bajo no siempre contiene la propiedad que
1142 queremos cambiar (por ejemplo, no tendrá ningún efecto intentar
1143 establecer un valor para la propiedad @code{skipBars} del contexto de
1144 nivel más bajo, en este caso @code{Voice}).
1145
1146 @lilypond[quote,verbatim,relative=2,fragment]
1147 R1*2
1148 \set skipBars = ##t
1149 R1*2
1150 @end lilypond
1151
1152 Los contextos so jerárquicos, y si se ha especificado un contexto
1153 mayor, por ejemplo @code{Staff}, entonces el cambio se aplicaría
1154 también a todos los contextos @code{Voice} dentro del pentagrama
1155 actual.  El cambio se aplica @q{al vuelo}, durante la música, de
1156 manera que el ajuste sólo afecta al segundo grupo de corcheas.
1157
1158 @funindex \unset
1159
1160 También existe una instrucción @code{\unset}:
1161 @example
1162 \unset @var{contexto}.@var{propiedad}
1163 @end example
1164
1165 @noindent
1166 que elimina la definición de @var{propiedad}.  Esta instrucción
1167 elimina la definición solamente si está establecida dentro de
1168 @var{contexto}, de manera que
1169
1170 @example
1171 \set Staff.autoBeaming = ##f
1172 @end example
1173
1174 @noindent
1175 introduce un ajuste de la propiedad en el nivel de @code{Staff}.  El
1176 ajuste también se aplica a la @code{Voice} actual.  Sin embargo:
1177
1178 @example
1179 \unset Voice.autoBeaming
1180 @end example
1181
1182 @noindent
1183 no tiene ningúun efecto.  Para cancelar este ajuste, se debe
1184 especificar el @code{\unset} en el mismo nivel que el @code{\set}
1185 original.  Dicho de otra forma, para deshacer el efecto de
1186 @code{Staff.autoBeaming = ##f} se necesita
1187 @example
1188 \unset Staff.autoBeaming
1189 @end example
1190
1191 Como @code{\set}, el argumento @var{contexto} no se tiene que
1192 especificar para un contexto del nivel más bajo, por lo que los dos
1193 enunciados
1194
1195 @example
1196 \set Voice.autoBeaming = ##t
1197 \set autoBeaming = ##t
1198 @end example
1199
1200 @noindent
1201 son equivalentes.
1202
1203
1204 @cindex \once
1205 Los ajustes que se aplican solamente a un único paso de tiempo se
1206 pueden escribir con @code{\once}, por ejemplo en
1207
1208 @lilypond[quote,verbatim,relative=2,fragment]
1209 c4
1210 \once \set fontSize = #4.7
1211 c4
1212 c4
1213 @end lilypond
1214
1215 la propiedad @code{fontSize} se deshace automáticamente después de la
1216 segunda nota.
1217
1218 En el manual de Referencia de funcionamiento interno hay una
1219 descripción completa de todas las propiedades de contexto disponibles,
1220 consulte
1221 @ifhtml
1222 @rinternals{Tunable context properties}.
1223 @end ifhtml
1224 @ifnothtml
1225 Traducción @expansion{} Propiedades de contexto modificables por el
1226 usuario.
1227 @end ifnothtml
1228
1229
1230
1231 @node The override command
1232 @subsection The @code{\override} command
1233
1234 Las instrucciones que modifican la salida tienen por lo general un
1235 aspecto como
1236
1237 @example
1238 \override Voice.Stem #'thickness = #3.0
1239 @end example
1240
1241 @noindent
1242 Para construir este truco debemos determinar los siguientes datos:
1243
1244 @itemize
1245 @item el contexto: aquí @code{Voice}.
1246 @item el objeto de presentación: aquí @code{Stem}.
1247 @item la propiedad de presentación: aquí @code{thickness}.
1248 @item un valor adecuado: aquí @code{3.0}.
1249 @end itemize
1250
1251 Ciertas opciones ajustables se denominan @q{subpropiedades} y residen
1252 en el interior de las propiedades normales.  Para modificarlas utilice
1253 instrucciones de la forma
1254
1255 @example
1256 \override Stem #'details #'beamed-lengths = #'(4 4 3)
1257 @end example
1258
1259 @cindex documentación interna
1260 @cindex buscar objetos gráficos
1261 @cindex gráficos, descripción de los objetos
1262 @cindex trucos
1263 @funindex \override
1264 @cindex interna, documentación
1265
1266 Para muchas propiedades, independientemente del tipo de datos de la
1267 propiedad, si se establece el valor de la propiedad a falso
1268 (@code{##f}) se producirá su desactivación, ocasionando que LilyPond
1269 ignore por completo dicha propiedad.  Esto es especialmente útil para
1270 «apagar» propiedades de grobs (objetos gráficos) que de otra manera
1271 causarína problemas.
1272
1273 Mostraremos a continuación cómo localizar esta información en el
1274 manual de notación y en la referencia de funcionamiento interno.
1275
1276 @node set versus override
1277 @subsection @code{\set} vs. @code{\override}
1278
1279 Hemos visto dos formas de cambiar las propiedades: @code{\set} y
1280 @code{\override}.  De hecho, en realidad existen dos clases diferentes
1281 de propiedades.
1282
1283 Los contextos pueden tener propiedades, que por lo general reciben
1284 nombres en @code{mayúsculasDeCamello}.  Principalmente controlan la
1285 traducción de la música a la notación, p.ej. @code{localKeySignature}
1286 (para determinar si hay que imprimir las alteraciones accidentales),
1287 @code{measurePosition} (para determinar cuándo imprimir una línea
1288 divisoria).  Las propiedades de contexto pueden ver modificado su
1289 valor con el tiempo según se interpreta una pieza de música;
1290 @code{measurePosition} es un ejemplo obvio de esto.  Las propiedades
1291 de contexto se modifican con @code{\set}.
1292
1293 Hay un tipo especial de propiedad de contexto: la descripción del
1294 elemento.  Estas propiedades reciben nombres en
1295 @code{MayúsculasDeCamello} (comenzando en letra mayúscula).  Contienen
1296 los @q{ajustes por defecto} para dicho elemento gráfico como una lista
1297 asociativa.  Consulte @file{scm/@/define@/-grobs@/.scm} para ver qué
1298 tipos de ajustes hay.  Las descripciones de los elementos se pueden
1299 modificar con @code{\override}.
1300
1301 Realmente, @code{\override} es un atajo;
1302
1303 @example
1304 \override @var{contexto}.@var{nombre} #'@var{propiedad} = #@var{valor}
1305 @end example
1306
1307 @noindent
1308 es más o menos equivalente a
1309
1310 @c  leave this long line -gp
1311 @example
1312 \set @var{contexto}.@var{nombre} #'@var{propiedad} = #(cons (cons '@var{propiedad} @var{valor}) <valor previo de @var{contexto})
1313 @end example
1314
1315 El valor de @code{contexto} (la lista-a) se usa para da un valor
1316 inicial a las propiedades de los objetos gráficos individuales.  Los
1317 objetos gráficos también tienen propiedades, que reciben nombres en el
1318 estilo de Scheme, con @code{palabras-con-guiones}.  Los valores de las
1319 propiedades de objetos gráficos cambian durante el proceso de
1320 formateo: el formateo básicamente consiste en calcular las propiedades
1321 utilizando funciones de callback.
1322
1323 @code{fontSize} es una propiedad especial: equivale a escribir
1324 @code{\override ... #'font-size} para todos los objetos pertinentes.
1325 Al ser éste un cambio muy común, se creó la propiedad especial
1326 (modificada con @code{\set}).
1327
1328
1329 @node The tweak command
1330 @subsection The @code{\tweak} command
1331
1332 @funindex \tweak
1333
1334 En ocasiones es posible tomar un atajo para realizar el ajuste fino de
1335 los objetos gráficos.  Para objetos que reusultan directamente de un
1336 elemento de código de la entrada, puede usar la función @code{\tweak},
1337 por ejemplo
1338
1339 @lilypond[relative=2,fragment,verbatim,ragged-right]
1340 <
1341   c
1342   \tweak #'color #red d
1343   g
1344   \tweak #'duration-log #1  a
1345 >4-\tweak #'padding #10 -.
1346 @end lilypond
1347
1348 Como podemos ver, las propiedades se establecen directamente dentro de
1349 los objetos, sin hacer mención al nombre del grob ni al contexto en el
1350 que se tendría que aplicar.
1351
1352 Esta técnica sólo funciona para los objetos que están conectados
1353 directamente a un @rinternals{Event} (evento) del texto de entrada,
1354 por ejemplo
1355
1356 @itemize
1357 @item cabezas de nota, producidas por chord-pitch (p. ej.: las notas de un acorde)
1358 @item signos de articulación, producidos por instrucciones de articulación
1359 @end itemize
1360
1361 Posiblemente no funcione para plicas y alteraciones accidentales
1362 (éstos están producidos por parte de las cabezas de nota, no por los
1363 eventos musicales) ni para las claves (éstos no están producidos por
1364 ninguna entrada musical, sino más bien a causa de un cambio en el
1365 valor de una propiedad).
1366
1367 Existen muy pocos objetos que estén conectados @emph{directamente} al
1368 resultado de salida.  Una nota normal (como @code{c4}) no está
1369 conectada directamente a la salida, así que
1370
1371 @example
1372 \tweak #'color #red c4
1373 @end example
1374
1375 @noindent
1376 no cambia el color.  Consulte @ref{Displaying music expressions} para
1377 ver más detalles.
1378
1379 @node Useful concepts and properties
1380 @section Useful concepts and properties
1381
1382
1383 @menu
1384 * Input modes::                 
1385 * Direction and placement::     
1386 * Distances and measurements::  
1387 * Spanners::                    
1388 @end menu
1389
1390 @node Input modes
1391 @subsection Input modes
1392
1393 La forma en que se interpreta la notación conenida dentro de un
1394 archivo de entrada, está determinada por el modo de entrada en curso.
1395
1396 @strong{Modo de acordes}
1397
1398 Se activa con la instrucción @code{\chordmode} y produce que la
1399 entrada se interprete con al sintaxis de la notación de acordes, véase
1400 @ref{Chord notation}.  Los acordes se imprimen como notas sobre un
1401 pentagrama.
1402
1403 El modo de acordes se activa también con la instrucción
1404 @code{\chords}.  Esto crea también un contexto @code{ChordNames} nuevo
1405 y produce que el código que sigue se interprete conla sintaxis de la
1406 notación de acordes y se imprima como nombres de acorde dentro del
1407 contexto @code{ChordNames}, véase @ref{Printing chord names}.
1408
1409 @strong{Modo de percusión}
1410
1411 Se activa con la instrucción @code{\drummode} y produce que el código
1412 de entrada se interprete con la sintaxis de la notación de percusión,
1413 véase @ref{Basic percussion notation}.
1414
1415 EL modo de percusión también se activa con la instrucción
1416 @code{\drums}.  También crea un contexto @code{DrumStaff} nuevo y hace
1417 que el código que sigue se interprete con la sintaxis de la notación
1418 de percusión y se imprima como símbolos de percusión sobre un
1419 pentagrama de percusión, véase @ref{Basic percussion notation}.
1420
1421 @strong{Modo de cifras}
1422
1423 Se activa con la instrucción @code{\figuremode} y hace que el código
1424 de entrada se interprete con la sintaxis del bajo cifrado, véase
1425 @ref{Entering figured bass}.
1426
1427 El modo de cifrase también se activa con la instrucción
1428 @code{\figures}.  También crea un contexto de @code{FiguredBass} nuevo
1429 y hace que el código que viene a continuación se interprete con la
1430 sintaxis del bajo cifrado y se imprima como símbolos de bajo cifrado
1431 dentro del contexto @code{FiguredBass}, véase @ref{Introduction to
1432 figured bass}.
1433
1434 @strong{Modos de traste y tablatura}
1435
1436 No existen modos de entrada especiales para introducir símibolos de
1437 trastes y de tablatura.
1438
1439 Para crear diagramas de trastes, escriba las notas o acordes en el
1440 modo de notas e imprímalos dentro de un contexto @code{TabStaff},
1441 véase @ref{Default tablatures}.
1442
1443 Para crear diagramas de trastes encima de un pentagrama, escríbalos
1444 como elementos de marcado encima de las notas utilizando la
1445 instrucción @code{\fret-diagram}, véase @ref{Fret diagram markups}.
1446
1447 @strong{Modo de letra}
1448
1449 Se activa con la instrucción @code{\lyricmode}, y hace que la entrada
1450 se interprete como sílabas de la letra de la canción con duraciones
1451 opcionales y modificadores de letra asociados, véase @ref{Vocal
1452 music}.
1453
1454 El modo de letra también se habilita con la instrucción
1455 @code{\addlyrics}.  Esto también crea un contexto @code{Lyrics} nuevo
1456 y una instrucción @code{\lyricsto} implícita que asocia la letra que
1457 viene a continuación con la música precedente.
1458
1459 @strong{Modo de marcado}
1460
1461 Se activa con la instrucción @code{\markup}, y hace que la entrada se
1462 interprete con la sintaxis del marcado, véase @ref{Text markup
1463 commands}.
1464
1465 @c silly work-around for texinfo broken-ness
1466 @c (@strong{Note...} causes a spurious cross-reference in Info)
1467 @b{Modo de notas}
1468
1469 Es el modo predeterminado o se puede activar con la instrucción
1470 @code{\notemode}.  La entrada se interpreta como alturas, duraciones,
1471 marcado, etc. y se imprime como notación musical sobre un pentagrama.
1472
1473 Normalmente no es necesario especificar el modo de notas de forma
1474 explícita, pero puede ser útil hacerlo en ciertas situaciones, por
1475 ejemplo si estamos en el modo de letra, en el modo de acordes o en
1476 otro modo y queremos insertar algo que solamente se puede hacer con la
1477 sintaxis del modo de notas.
1478
1479 Por ejemplo, para insertar indicaciones dinámicas para las estrofas de
1480 una pieza coral es necesario entrar en el modo de notas para poder
1481 interpretar dichas indicaciones:
1482
1483 @lilypond[verbatim,relative=2,quote]
1484 { c4 c4 c4 c4 }
1485 \addlyrics {
1486   \notemode{\set stanza = \markup{ \dynamic f 1. } }
1487   To be sung loudly
1488 }
1489 \addlyrics {
1490   \notemode{\set stanza = \markup{ \dynamic p 2. } }
1491   To be sung quietly
1492 }
1493 @end lilypond
1494
1495
1496
1497 @node Direction and placement
1498 @subsection Direction and placement
1499
1500 Al tipografiar música, la dirección y colocación de muchos elementos
1501 es cuestión de elección.  Por ejemplo, las plicas de las notas se
1502 pueden dirigir hacia arriba o hacia abajo; la letra, las indicaciones
1503 dinámicas y otras marcas expresivas se pueden colocar encima o debajo
1504 del pentagrama; el texto se pude alinear a la izquierda, a la derecha
1505 o centrado; etc.  La mayoría de estas elecciones pueden dejarse que
1506 LilyPond las determine automáticamente, pero en ciertos casos puede
1507 ser deseable forzar una dirección o colocación concreta.
1508
1509 @strong{Acciones predeterminadas}
1510
1511 De forma predeterminada algunas direcciones siempre son hacia arriba o
1512 siempre hacia abajo (p. ej. los matices o el calderón), mientras que
1513 otras cosas pueden alternar entre arriba y abajo en función de la
1514 dirección de las plicas (como las ligaduras o los acentos).
1515
1516 @c TODO Add table showing these
1517
1518 @strong{Disposición de contexto}
1519
1520 Los contextos se colocan dentro de un sistema de arriba a abajo en el
1521 orden en que se encuentran.  Sin embargo, observe que se crea un
1522 contexto implícitamente si se encuentra una instrucción cuando no está
1523 disponible un contexto apropiado para contenerla.
1524
1525 @c TODO Add example ?
1526
1527 Se pude cambiar el orden predeterminado en que los contextos se
1528 presentan, véase @ref{Aligning contexts}
1529
1530 @strong{Indicadores de dirección de las articulaciones}
1531
1532 Al añadir articulaciones a notas se puede omitir normalmente el
1533 indicador de dirección, @code{^} (que significa @qq{arriba}), @code{_}
1534 (que significa @qq{abajo}) o @code{-} (que significa @qq{usar la
1535 dirección predeterminada}), en cuyo caso se supone el perdeterminado
1536 @code{-}.  Pero se necesita un indicador de dirección @strong{always}
1537 antes de:
1538
1539 @itemize
1540 @item las instrucciones @code{\tweak}
1541 @item las instrucciones @code{\markup}
1542 @item las instrucciones @code{\tag}
1543 @item los marcados de cadena, p.ej. -"cadena"
1544 @item las instrucciones de digitación, p.ej. @code{-1}
1545 @item las abreviaturas de articulación, p.ej. @code{-.}, @code{->}, @code{--}
1546 @end itemize
1547
1548 @strong{La propiedad de dirección}
1549
1550 La posición o dirección de muchos objetos de presentación está
1551 controlada por la propiedad @code{direction}.
1552
1553 El valor de la propiedad @code{direction} se puede establecer al valor
1554 @code{1}, con el significado de @qq{hacia arriba} o @qq{encima}, o a
1555 @code{-1}, con el significado de @qq{hacia abajo} o @qq{debajo}.  Se
1556 pueden usar los símbolos @code{UP} y @code{DOWN} en sustitución de
1557 @code{1} y @code{-1} respectivamente.  La dirección predeterminada se
1558 puede especificar estableciendo @code{direction} a @code{0} ó a
1559 @code{CENTER}.  De forma alternativa, en muchos casos existen
1560 instrucciones predefinidas para especificar la dirección.  Todas ellas
1561 son de la forma:
1562
1563 @noindent
1564 @code{\xxxUp}, @code{xxxDown}, @code{xxxNeutral}
1565
1566 @noindent
1567 donde @code{xxxNeutral} significa @qq{utilizar la dirección
1568 predeterminada}.  Véase @rlearning{Within-staff objects}.
1569
1570 En alguna que otra ocasión, con el único ejemplo usual del arpegio, el
1571 valor de la propiedad @code{direction} especifica si el objeto se debe
1572 colocar a la izquierda o a la derecha del objeto padre.  En este caso
1573 @code{-1} ó @code{LEFT} significan @qq{a la izquierda} y @code{1} ó
1574 @code{RIGHT} significan @qq{a la derecha}.  @code{0} ó @code{CENTER}
1575 significan @qq{utilizar la dirección predeterminada}, como antes.
1576
1577
1578 @node Distances and measurements
1579 @subsection Distances and measurements
1580
1581 @untranslated
1582
1583 @node Spanners
1584 @subsection Spanners
1585
1586 Muchos objetos de notación musical abarcan varias notas o incluso
1587 varios compases.  Son ejemplos los crescendi, trinos, corchetes de
1588 grupo especial y corchetes de primera y segunda vez.  Estos objetos se
1589 llaman @qq{spanners} u «objetos de extensión», y tienen propiedades
1590 especiales para controlar su apariencia y comportamiento.  Algunas de
1591 estas propiedades son comunes a todos los objetos de extensión; otras
1592 se limitan a un subconjunto de los extensores.
1593
1594
1595 @node Common properties
1596 @section Common properties
1597
1598 @menu
1599 * Controlling visibility of objects::  
1600 * Line styles::                 
1601 * Rotating objects::            
1602 * Aligning objects::            
1603 @end menu
1604
1605 @node Controlling visibility of objects
1606 @subsection Controlling visibility of objects
1607
1608
1609 @node Line styles
1610 @subsection Line styles
1611
1612 Ciertas indicaciones de ejecución, p.ej., @i{rallentando},
1613 @i{accelerando} y los @i{trinos} se escriben como texto y se extienden
1614 sobre muchos compases mediante líneas, a veces punteadas u onduladas.
1615
1616 Todos ellos usan las mismas rutinas que el glissando para dibujar los textos y las líneas,
1617 y por ello el ajuste fino de su comportamiento se hace de la
1618 misma manera. Se hace con un spanner (un objeto de extensión), y la rutina responsable
1619 de dibujar los objetos de extensión es @code{ly:line-interface::print}. Esta
1620 rutina determina la colocación exacta de los dos @i{extremos del
1621 objeto de extensión} y dibuja una línea entre ellos, en el estilo solicitado.
1622
1623 He aquí un ejemplo de los distintos estilos de línea disponibles, y cómo
1624 aplicarles ajustes finos.
1625
1626 @lilypond[relative=2,ragged-right,verbatim,fragment]
1627 d2 \glissando d'2
1628 \once \override Glissando #'style = #'dashed-line
1629 d,2 \glissando d'2
1630 \override Glissando #'style = #'dotted-line
1631 d,2 \glissando d'2
1632 \override Glissando #'style = #'zigzag
1633 d,2 \glissando d'2
1634 \override Glissando #'style = #'trill
1635 d,2 \glissando d'2
1636 @end lilypond
1637
1638 La información que determina los puntos extremos se calcula al vuelo
1639 para cada objeto gráfico, pero es posible sobreescribirlos.
1640
1641 @lilypond[relative=2,ragged-right,verbatim,fragment]
1642 e2 \glissando f
1643 \once \override Glissando #'bound-details #'right #'Y = #-2
1644 e2 \glissando f
1645 @end lilypond
1646
1647 El objeto @code{Glissando}, como cualquier otro que use la rutina
1648 @code{ly:line-interface::print}, conlleva una lista asociativa
1649 anidada. En la instrucción anterior, el valor de @code{Y}
1650 se establece a @code{-2} para la lista asociativa correspondiente al extremo final de la
1651 derecha. Por supuesto, también es posible ajustar el extremo de la izquierda con
1652 @code{left} en vez de @code{right}.
1653
1654 Si no se establece el valor de @code{Y}, se calcula a partir de la posición
1655 vertical del punto de anclaje derecho del objeto de extensión.
1656
1657 En el caso de un salto de línea, los valores de los puntos extremos se extienden
1658 con los contenidos de las sublistas @code{left-broken} y @code{right-broken},
1659 por ejemplo
1660
1661 @lilypond[relative=2,ragged-right,verbatim,fragment]
1662 \override Glissando #'breakable = ##T 
1663 \override Glissando #'bound-details #'right-broken #'Y = #-3
1664 c1 \glissando \break
1665 f1
1666 @end lilypond
1667
1668 Las siguientes propiedades se pueden usar para el ajuste fino de los objetos de extensión:
1669
1670 @table @code
1671 @item Y
1672 Establece la coordenada Y del punto extremo, en espacios de pentagrama.  Por
1673 omisión, es el centro del objeto con que enlaza.  Así, para un glissando
1674 apuntaría al centro vertical de la cabeza de la nota.
1675
1676 Para objetos de extensión horizontales, como el de texto y los trinos, tiene el valor
1677 fijo de cero.
1678
1679 @item attach-dir
1680 Determina el lugar donde la línea comienza y acaba en la dirección X,
1681 relativo al objeto al que se enlaza.  Así, un valor de @code{-1} (o
1682 @code{LEFT}) hace que la línea comience o acabe en el lado izquierdo de la cabeza de la nota
1683 a la que el objeto se encuentra adjuntado.
1684
1685 @item X
1686 Es la coordenada absoluta del extremo final. Normalmente
1687 se calcula al vuelo y no tiene mucho sentido sobreescribirlo.
1688
1689 @item stencil
1690 Los objetos extensores de línea pueden tener símbolos al principio o al final, que se encuentra contenido
1691 dentro de esta subpropiedad.  Es para uso interno y se recomienda
1692 usar @code{text}.
1693
1694 @item text
1695 Es un elemento de marcado que se evalúa para generar la propiedad stencil anterior. Se usa
1696 para poner @i{cresc.} y @i{tr} sobre los objetos de extensión horizontales.
1697
1698 @lilypond[quote,ragged-right,fragment,relative=2,verbatim]
1699 \override TextSpanner #'bound-details #'left #'text
1700    = \markup { \small \bold Slower }
1701 c2\startTextSpan b c a\stopTextSpan
1702 @end lilypond
1703
1704 @item stencil-align-dir-y
1705 @item stencil-offset
1706 Sin un valor establecido para esto, el stencil se coloca simplemente sobre el extremo del final,
1707 tal y como se encuentra definido por las subpropiedades @code{X} e @code{Y}.
1708 La asignación de un valor para @code{stencil-align-dir-y} o para @code{stencil-offset}
1709 desplaza el símbolo del extremo de forma relativa al extremo de la línea
1710
1711 @lilypond[relative=1,fragment,verbatim]
1712 \override TextSpanner #'bound-details #'left #'stencil-align-dir-y = #DOWN
1713 \override TextSpanner #'bound-details #'right #'stencil-align-dir-y = #UP
1714
1715 \override TextSpanner #'bound-details #'left #'text = #"gggg"
1716 \override TextSpanner #'bound-details #'right #'text = #"hhhh"
1717 c4^\startTextSpan c c c \stopTextSpan
1718 @end lilypond
1719
1720 @item arrow (flecha)
1721 El establecimiento de esta subpropiedad al valor de @code{#t} produce una cabeza de flecha al final de la
1722 línea.
1723
1724 @item padding (relleno)
1725 Esta subpropiedad controla el espacio entre el punto extremo de la línea especificado
1726 y el extremo real.  Sin relleno, un glissando empezaría
1727 y acabaría en el centro de las cabezas de las notas.
1728
1729 @end table
1730
1731 La función musical \endSpanners termina los objetos de extensión y los
1732 reguladores después de una nota exactamente.
1733
1734 @lilypond[verbatim,quote,ragged-right,relative=2,fragment]
1735 \endSpanners
1736 c2 \startTextSpan c2
1737 c2 \< c2
1738 @end lilypond
1739
1740 Al utilizar \endSpanners no es necesario cerrar \startTextSpan con
1741 \stopTextSpan, ni tampoco cerrar los reguladores con \!.
1742
1743 @seealso
1744
1745 Referencia del programa:
1746 @rinternals{TextSpanner},
1747 @rinternals{Glissando},
1748 @rinternals{VoiceFollower},
1749 @rinternals{TrillSpanner},
1750 @rinternals{line-spanner-interface}.
1751
1752
1753 @node Rotating objects
1754 @subsection Rotating objects
1755
1756 @node Aligning objects
1757 @subsection Aligning objects
1758
1759
1760 @node Advanced tweaks
1761 @section Advanced tweaks
1762
1763 @menu
1764 * Vertical grouping of grobs::  
1765 * Modifying ends of spanners::  
1766 * Modifying stencils::          
1767 @end menu
1768
1769
1770 @node Vertical grouping of grobs
1771 @subsection Vertical grouping of grobs
1772
1773 Los grobs (objetos gráficos) @code{VerticalAlignment} y
1774 @code{VerticalAxisGroup} trabajan de manera coordinada.
1775 @code{VerticalAxisGroup} agrupa distintos grobs como @code{Staff},
1776 @code{Lyrics}, etc.  Después, @code{VerticalAlignment} alinea los
1777 distintos grobs agrupados previamente por @code{VerticalAxisGroup}.
1778 Normalmente sólo existe un @code{VerticalAlignment} por cada
1779 partitura, pero cada @code{Staff}, @code{Lyrics}, etc. tiene su propio
1780 @code{VerticalAxisGroup}.
1781
1782
1783 @node Modifying ends of spanners
1784 @subsection Modifying ends of spanners
1785
1786 @untranslated
1787
1788
1789 @node Modifying stencils
1790 @subsection Modifying stencils
1791
1792 @untranslated