]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/es/user/changing-defaults.itely
es/changing-defaults
[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: 90541cc59a99d0b53baccedc0327748b760fce68
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 @node Changing defaults
11 @chapter Changing defaults
12
13
14 El objetivo del diseño de LilyPond es proporcionar por defecto la más alta
15 calidad de los resultados.  A pesar de ello, podría tener que cambiar
16 este resultado por defecto.  La disposición sobre el papel se controla a través de un amplio número
17 de proverbiales @q{botones e interruptores.}  Este capítulo no
18 relaciona todos y cada uno de los botones.  Más bien da una visión de conjunto sobre qué grupos de controles
19 se encuentran disponibles y explica la forma de hallar el botón exacto que se debe utilizar para conseguir
20 un determinado efecto.
21
22
23 @cindex Program reference
24
25 Los controles disponibles para los ajustes finos se describen en un documento
26 separado, 
27 @iftex
28 el Manual de referencia del programa.
29 @end iftex
30 @ifnottex
31 la @ref{Top,Referencia del programa,,lilypond-internals}.
32 @end ifnottex
33 Dicho manual
34 relaciona todas las variables, funciones y opciones que se encuentran disponibles en
35 LilyPond.  Está escrito como un documento HTML, que se puede encontrar en
36 @c leave the @uref as one long line.
37 @uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/user/@/lilypond@/-internals/,on@/-line},
38 pero que también va incluido en el paquete de la documentación de LilyPond.
39
40 Hay cuatro áreas en las que se pueden cambiar los valores por defecto:
41
42 @itemize @bullet
43 @item
44 Notación automática: cambiar la creación automática de los elementos de
45 notación.  Por ejemplo, cambiar las reglas de barrado de las figuras.
46
47 @item
48 Salida: cambiar el aspecto de los objetos individuales.
49 Por ejemplo, cambiar las direcciones de las plicas o la situación exacta de
50 los subíndices.
51
52 @item
53 Contexto: modificar aspectos de la traducción de los eventos musicales en
54 notación.  Por ejemplo, dar a cada pentagrama una indicación de compás distinta.
55
56 @item
57 Disposición de la página: cambiar el aspecto visual del espaciado, los saltos de
58 línea y las dimensiones de la página.  Estas modificaciones se discuten
59 en @ref{Non-musical notation} y @ref{Spacing issues}.
60 @end itemize
61
62 Internamente, LilyPond utiliza el lenguaje Scheme (un dialecto de LISP) para aportar
63 la infraestructura.  La sobreescritura de las decisiones de disposición da acceso efectivo a las interioridades
64 del programa, lo que requiere código de Scheme como entrada.  Los elementos de Scheme
65 se inauguran dentro de un archivo @code{.ly} con el símbolo de cuadradillo
66 @code{#}.@footnote{@ref{Scheme tutorial} contiene un breve tutorial
67 sobre la introducción de números, listas, cadenas y símbolos en Scheme.}
68
69
70 @menu
71 * Automatic notation::          
72 * Interpretation contexts::     
73 * The \override command::       
74 @end menu
75
76
77 @node Automatic notation
78 @section Automatic notation
79
80 Esta sección describe la manera de cambiar la forma en que se dibujan automáticamente las alteraciones accidentales y
81 las barras de las figuras.
82
83 @menu
84 * Automatic accidentals::       
85 * Setting automatic beam behavior::  
86 @end menu
87
88 @node Automatic accidentals
89 @subsection Automatic accidentals
90 @cindex Alteraciones accidentales automáticas
91
92 Las reglas más usuales para tipografiar las alteraciones se han colocado en una
93 función.  Esta función se invoca de la manera siguiente
94
95 @funindex set-accidental-style
96 @example
97 #(set-accidental-style 'ESTILO)
98 @end example
99
100 @c TODO: check the context stuff below
101 @c -does it *really* work?
102 @c -the default contexts as specified in
103 @c  scm/music-function.scm seem to be different -vv
104
105 Opcionalmente la función puede tomar dos argumentos: el nombre del estilo de las
106 alteraciones y un argumento opcional que denota el contexto que se desea
107 cambiar:
108
109 @example
110 #(set-accidental-style 'ESTILO #('CONTEXTO#))
111 @end example
112
113 Si no se da ningún nombre de contexto, @code{Staff} (pentagrama) es el valor predeterminado,
114 pero en lugar de esto puede aplicar el estilo de alteraciones a una sola
115 voz (contexto @code{Voice}).
116
117 Están contemplados los siguientes estilos de alteraciones:
118
119 @table @code
120 @item default
121 Es el comportamiento de composición tipográfica por omisión.  Corresponde
122 a la práctica común vigente en el s.XVIII: las alteraciones se
123 recuerdan hasta el final del compás en que aparecen
124 y sólo en la misma octava.
125
126 @lilypond[quote,ragged-right]
127 musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
128        \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
129
130 musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4 
131         \change Staff = up cis' \change Staff = down <fis, a>  
132         \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
133         <f a d>2 |  } }}
134
135 \score { 
136         \new PianoStaff {
137        << \context Staff = "up" {
138                %#(set-accidental-style 'default) 
139        \musicA }
140        \context Staff = "down"{
141                %#(set-accidental-style 'default)
142        \musicB } >> }
143        \header { piece = \markup {\fill-line { \fontsize #3  "'default" }}}
144 }
145 @end lilypond
146
147 @item voice
148 El comportamiento normal es recordar las alteraciones al nivel del
149 pentagrama.  Sin embargo, esta variable tipografía las alteraciones
150 para cada voz individual.  Aparte de esto, la regla es similar a
151 @code{default}.
152
153 @example
154  \new Staff <<
155         #(set-accidental-style 'voice)
156         @{ @dots{} @}
157         >>
158 @end example
159
160 Como resultado, las alteraciones de una voz no se cancelan en las otras voces,
161 lo que a menudo produce un resultado no deseado: en el ejemplo que aparece a continuación,
162 es difícil determinar si el segundo @samp{La} se debe tocar
163 natural o sostenido.
164
165 @lilypond[quote,ragged-right]
166 musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
167        \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
168
169 musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4 
170         \change Staff = up cis' \change Staff = down <fis, a>  
171         \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
172         <f a d>2 |  } }}
173
174 \score { 
175         \new PianoStaff {
176        << \context Staff = "up" {
177                #(set-accidental-style 'voice) 
178        \musicA }
179        \context Staff = "down"{
180                #(set-accidental-style 'voice)
181        \musicB } >> }
182        \header { piece = \markup {\fill-line { \fontsize #3  "'voice" }}}
183 }
184 @end lilypond
185
186 La opción @code{voice} se debe utilizar siempre que las voces
187 se vayan a leer independientemente por parte de músicos individuales.  Si el pentagrama se va a
188 usar por parte de un único músico (p.ej. un director), entonces
189 se deben utilizar los estilos
190 @code{modern} o @code{modern-cautionary}.
191
192
193 @item modern
194 @funindex modern style accidentals
195 Esta regla corresponde a la práctica común del s.XX.  Imprime
196 las mismas alteraciones que @code{default}, pero las alteraciones temporales
197 también se cancelan en octavas distintas.  Es más,
198 dentro de la misma octava, también se cancelan dentro del compás siguiente:
199 en el ejemplo que aparece a continuación, fíjese en los dos becuadros que aparecen
200 en el segundo compás del pentagrama superior.
201
202 @lilypond[quote,ragged-right]
203 musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
204        \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
205
206 musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4 
207         \change Staff = up cis' \change Staff = down <fis, a>  
208         \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
209         <f a d>2 |  } }}
210
211 \score { 
212         \new PianoStaff {
213        << \context Staff = "up" {
214                #(set-accidental-style 'modern) 
215        \musicA }
216        \context Staff = "down"{
217                #(set-accidental-style 'modern)
218        \musicB } >> }
219        \header { piece = \markup {\fill-line { \fontsize #3  "'modern" }}}
220 }
221 @end lilypond
222
223 @item @code{modern-cautionary}
224 @funindex modern-cautionary
225 Esta regla es parecida a @code{modern}, pero las alteraciones @q{adicionales}
226 (las que no se tipografían en el estilo @code{default}) se componen tipográficamente como alteraciones
227 de cortesía o precaución.  Se imprimen en un tamaño reducido o, por omisión,
228 con paréntesis (esto se puede establecer definiendo la propiedad @code{cautionary-style}
229 del objeto @internalsref{AccidentalSuggestion}.
230
231 @lilypond[quote,ragged-right]
232 musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
233        \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
234
235 musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4 
236         \change Staff = up cis' \change Staff = down <fis, a>  
237         \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
238         <f a d>2 |  } }}
239
240 \score { 
241         \new PianoStaff {
242        << \context Staff = "up" {
243                #(set-accidental-style 'modern-cautionary) 
244        \musicA }
245        \context Staff = "down"{
246                #(set-accidental-style 'modern-cautionary)
247        \musicB } >> }
248        \header { piece = \markup {\fill-line { \fontsize #3  "'modern-cautionary" }}}
249 }
250 @end lilypond
251
252 @funindex modern-voice
253 @item modern-voice
254 Esta regla se usa para alteraciones que afectan a varias voces y que se leerán tanto por parte de músicos
255 que tocan una sola voz como por músicos que tocan todas las voces.  Las alteraciones
256 se componen para cada voz, pero @emph{se cancelan} entre voces dentro del mismo
257 pentagrama (@internalsref{Staff}).
258
259 @lilypond[quote,ragged-right]
260 musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
261        \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
262
263 musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4 
264         \change Staff = up cis' \change Staff = down <fis, a>  
265         \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
266         <f a d>2 |  } }}
267
268 \score { 
269         \new PianoStaff {
270        << \context Staff = "up" {
271                #(set-accidental-style 'modern-voice) 
272        \musicA }
273        \context Staff = "down"{
274                #(set-accidental-style 'modern-voice)
275        \musicB } >> }
276        \header { piece = \markup {\fill-line { \fontsize #3  "'modern-voice" }}}
277 }
278 @end lilypond
279
280 @funindex modern-voice-cautionary
281 @item modern-voice-cautionary
282 Esta regla es la misma que @code{modern-voice}, pero con las alteraciones
283 adicionales (las que faltaban en el estilo @code{voice}) impresas
284 como de precaución.  Incluso aunque todas las alteraciones impresas por el estilo
285 @code{default} @emph{se imprimen} por esta variable,
286 algunas de ellas se imprimen como de precaución.
287
288 @lilypond[quote,ragged-right]
289 musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
290        \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
291
292 musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4 
293         \change Staff = up cis' \change Staff = down <fis, a>  
294         \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
295         <f a d>2 |  } }}
296
297 \score { 
298         \new PianoStaff {
299        << \context Staff = "up" {
300                #(set-accidental-style 'modern-voice-cautionary) 
301        \musicA }
302        \context Staff = "down"{
303                #(set-accidental-style 'modern-voice-cautionary)
304        \musicB } >> }
305        \header { piece = \markup {\fill-line { \fontsize #3  "'modern-voice-cautionary" }}}
306 }
307 @end lilypond
308
309 @item piano
310 @funindex piano accidentals
311 Este estilo de alteraciones tiene lugar dentro de un contexto de pentagramas de piano, GrandStaff. Sin embargo, tendrá
312 que establecerlo explícitamente para @emph{cada uno} de los pentagramas individuales del grupo GrandStaff:
313
314 @example
315 \new GrandStaff @{ <<
316   \new Staff = "up" @{ <<
317     #(set-accidental-style 'piano)
318     @{ @dots{} @}
319   >> @}
320   \new Staff = "down"@{ <<
321     #(set-accidental-style 'piano)
322   @{ @dots{} @}
323   >> @}
324 >> @}
325 @end example
326
327 Esta regla refleja la práctica del s.XX de notación para el piano.  Su comportamiento es muy
328 parecido al estilo @code{modern}, pero aquí las alteraciones también se cancelan
329 entre pentagramas dentro del mismo grupo de piano @internalsref{GrandStaff} o
330 @internalsref{PianoStaff}.
331
332 @lilypond[quote,ragged-right]
333 musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
334        \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
335
336 musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4 
337         \change Staff = up cis' \change Staff = down <fis, a>  
338         \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
339         <f a d>2 |  } }}
340
341 \score { 
342         \new PianoStaff {
343        << \context Staff = "up" {
344                #(set-accidental-style 'piano) 
345        \musicA }
346        \context Staff = "down"{
347                #(set-accidental-style 'piano)
348        \musicB } >> }
349        \header { piece = \markup {\fill-line { \fontsize #3  "'piano" }}}
350 }
351 @end lilypond
352
353 @item piano-cautionary
354 @funindex #(set-accidental-style 'piano-cautionary)
355 Igual que @code{#(set-accidental-style 'piano)} pero con las alteraciones adicionales
356 tipografiadas como de precaución.
357
358 @lilypond[quote,ragged-right]
359 musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
360        \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
361
362 musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4 
363         \change Staff = up cis' \change Staff = down <fis, a>  
364         \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
365         <f a d>2 |  } }}
366
367 \score { 
368         \new PianoStaff {
369        << \context Staff = "up" {
370                #(set-accidental-style 'piano-cautionary) 
371        \musicA }
372        \context Staff = "down"{
373                #(set-accidental-style 'piano-cautionary)
374        \musicB } >> }
375        \header { piece = \markup {\fill-line { \fontsize #3  "'piano-cautionary" }}}
376 }
377 @end lilypond
378
379 @item no-reset
380 @funindex no-reset accidental style
381 Éste es igual que @code{default} pero con alteraciones que duran
382 @q{para siempre} y no solamente hasta el siguiente compás:
383 @lilypond[quote,ragged-right]
384 musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
385        \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
386
387 musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4 
388         \change Staff = up cis' \change Staff = down <fis, a>  
389         \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
390         <f a d>2 |  } }}
391
392 \score { 
393         \new PianoStaff {
394        << \context Staff = "up" {
395                #(set-accidental-style 'no-reset) 
396        \musicA }
397        \context Staff = "down"{
398                #(set-accidental-style 'no-reset)
399        \musicB } >> }
400        \header { piece = \markup {\fill-line { \fontsize #3  "'no-reset" }}}
401 }
402 @end lilypond
403
404 @item forget
405 Es algo así como lo contrario de @code{no-reset}: las alteraciones
406 no se recuerdan en absoluto.  De aquí que todas las alteraciones
407 se componen tipográficamente como relativas a la armadura en vigor, sin que importe lo que haya aparecido en la música
408 anterior
409
410 @lilypond[quote,ragged-right]
411 musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
412        \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
413
414 musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4 
415         \change Staff = up cis' \change Staff = down <fis, a>  
416         \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
417         <f a d>2 |  } }}
418
419 \score { 
420         \new PianoStaff {
421        << \context Staff = "up" {
422                #(set-accidental-style 'forget) 
423        \musicA }
424        \context Staff = "down"{
425                #(set-accidental-style 'forget)
426        \musicB } >> }
427        \header { piece = \markup {\fill-line { \fontsize #3  "'forget" }}}
428 }
429 @end lilypond
430 @end table
431
432
433 @seealso
434
435 Referencia del programa: @internalsref{Accidental_engraver},
436 @internalsref{Accidental}, @internalsref{AccidentalSuggestion} and @internalsref{AccidentalPlacement}.
437
438
439 @refbugs
440
441 Las notas simultáneas se considera que están introducidas en modo
442 secuencial.  Esto significa que dentro de un acorde las alteraciones se componen como si
443 las notas del acorde ocurriesen una a una, en el orden en que aparecen en el código del archivo
444 de entrada.  Esto supone un problema cuando las alteraciones
445 de un acorde dependen unas de otras,
446 lo cual no sucede para el estilo de alteraciones por defecto.  El problema
447 se puede solucionar insertando manualmente @code{!} y @code{?} para las notas
448 problemáticas.
449
450
451 @node Setting automatic beam behavior
452 @subsection Setting automatic beam behavior
453
454 @funindex autoBeamSettings
455 @funindex (end * * * *)
456 @funindex (begin * * * *)
457 @cindex barras automáticas, ajuste fino
458 @cindex ajuste fino de las barras automáticas
459
460 @c [TODO: use \applyContext]
461
462 En compases normales, las barras de figura automáticas pueden comenzar en cualquier nota
463 pero sólo pueden acabar en ciertas posiciones dentro del compás: las barras pueden acabar sobre un pulso
464 o en duraciones especificadas por las propiedades que están dentro de
465 @code{autoBeamSettings}.  Las propiedades de @code{autoBeamSettings}
466 consisten en una lista de reglas sobre dónde pueden comenzar y acabar las barras.  Las
467 reglas por defecto de @code{autoBeamSettings} están definidas en el archivo
468 @file{scm/@/auto@/-beam@/.scm}.
469
470 Para añadir una regla a la lista, utilice
471 @example
472 #(override-auto-beam-setting '(be p q n m) a b [contexto])
473 @end example
474
475 @itemize @bullet
476
477 @item @code{be} es "begin" (comienzo) o "end" (final).
478
479 @item @code{p/q} es la duración de la figura para la que quiere añadir
480 una regla.  Se considera que una barra tiene la duración de su figura
481 más breve.  Establezca el valor de @code{p} y @code{q} a un asterisco @code{'*'} para
482 que se aplique a cualquier barra.
483
484 @item @code{n/m} es la indicación de compás para la que se aplica
485 esta regla.  Establezca el valor de @code{n} y @code{m} a un asterisco @code{'*'}
486 para que la regla se aplique a cualquier compás.
487
488 @item @code{a/b} es la posición dentro del compás en la que debe comenzar o terminar
489 la barra.
490
491 @item @code{contexto} es opcional, y especifica el contexto en el que
492 se debe hacer el cambio.  El valor por defecto es @code{'Voice}.
493 @code{#(score-override-auto-beam-setting '(A B C D) E F)} equivale a
494 @code{#(override-auto-beam-setting '(A B C D) E F 'Score)}.
495
496 @end itemize
497
498 Por ejemplo, si queremos que las barras automáticas siempre acaben sobre la primera
499 negra del compás, escriba
500
501 @example
502 #(override-auto-beam-setting '(end * * * *) 1 4)
503 @end example
504
505 Puede forzar los ajustes para las barras de forma que sólo afecten a las barras cuya figura
506 más breve sea una duración concreta
507
508 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
509 \time 2/4
510 #(override-auto-beam-setting '(end 1 16 * *) 1 16)
511 a16 a a a a a a a |
512 a32 a a a a16 a a a a a |
513 #(override-auto-beam-setting '(end 1 32 * *) 1 16)
514 a32 a a a a16 a a a a a |
515 @end lilypond
516
517 Puede forzar los ajustes del barrado para que sólo afecten a ciertas indicaciones
518 de compás
519
520 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
521 \time 5/8
522 #(override-auto-beam-setting '(end * * 5 8) 2 8)
523 c8 c d d d
524 \time 4/4
525 e8 e f f e e d d
526 \time 5/8
527 c8 c d d d
528 @end lilypond
529
530 También puede eliminar una regla de finalización de barra previamente establecida, usando
531
532 @example
533 #(revert-auto-beam-setting '(be p q n m) a b [contexto])
534 @end example
535
536 @noindent
537 be, p, q, n, m, a, b y contexto significan lo mismo que antes.  Fíjese en que las
538 reglas por defecto se describen en el archivo @file{scm/@/auto@/-beam@/.scm},
539 por tanto podrá recuperar las reglas que no haya creado explícitamente.
540
541 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
542 \time 4/4
543 a16 a a a a a a a a a a a a a a a
544 #(revert-auto-beam-setting '(end 1 16 4 4) 1 4)
545 a16 a a a a a a a a a a a a a a a
546 @end lilypond
547
548 La regla de una instrucción revert-auto-beam-setting debe corresponder exactamente con la
549 regla original.  Esto es: no se tiene en cuenta ninguna expansión de comodines.
550
551 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
552 \time 1/4
553 #(override-auto-beam-setting '(end 1 16 1 4) 1 8)
554 a16 a a a
555 #(revert-auto-beam-setting '(end 1 16 * *) 1 8) % this won't revert it!
556 a a a a
557 #(revert-auto-beam-setting '(end 1 16 1 4) 1 8) % this will
558 a a a a
559 @end lilypond
560
561
562
563 @c TODO:  old material -- not covered by above stuff, I think.
564 Si las barras automáticas han de terminar sobre las negras de un compás de 5/4, especifique toas las
565 terminaciones
566 @example
567 #(override-auto-beam-setting '(end * * * *) 1 4 'Staff)
568 #(override-auto-beam-setting '(end * * * *) 1 2 'Staff)
569 #(override-auto-beam-setting '(end * * * *) 3 4 'Staff)
570 #(override-auto-beam-setting '(end * * * *) 5 4 'Staff)
571 @dots{}
572 @end example
573
574 La misma sintaxis se puede usar para especificar los puntos de comienzo de las barras.  En este
575 ejemplo, las barras automáticas sólo pueden terminar sobre una negra con puntillo
576 @example
577 #(override-auto-beam-setting '(end * * * *) 3 8)
578 #(override-auto-beam-setting '(end * * * *) 1 2)
579 #(override-auto-beam-setting '(end * * * *) 7 8)
580 @end example
581 En el compás de 4/4, esto significa que las barras automáticas sólo pueden terminar sobre
582 3/8 y sobre el cuarto pulso del compás (después de haber transcurrido un 3/4, esto es, dos veces
583 3/8).
584
585 Si ocurre algún comportamiento inesperado de las barras, compruebe los ajustes del barrado automático
586 por defecto en el archivo @file{scm/@/auto@/-beam@/.scm}
587 en busca de un posible conflicto, ya que los finales de barra
588 definidos en este lugar se seguirán aplicando encima de sus propias sobreescrituras. Cualesquiera
589 finales no deseados dentro de los valores por defecto se deben contrarrestar específicamente para nuestro o nuestros
590 propios compases.
591
592 Por ejemplo, para tipografiar finales de barra de @code{(3 4 3 2)} corcheas en un 12/8, comience
593 con
594
595 @example
596 %%% contrarrestar los valores por defecto en scm/auto-beam.scm respecto al compás de 12/8
597 #(revert-auto-beam-setting '(end * * 12 8) 3 8)
598 #(revert-auto-beam-setting '(end * * 12 8) 3 4)
599 #(revert-auto-beam-setting '(end * * 12 8) 9 8)
600
601 %%% nuestros nuevos valores
602 #(override-auto-beam-setting '(end 1 8 12 8) 3 8)
603 #(override-auto-beam-setting '(end 1 8 12 8) 7 8)
604 #(override-auto-beam-setting '(end 1 8 12 8) 10 8)
605 @end example
606
607 @cindex automáticas, generación de las barras
608 @cindex autobarrado
609 @funindex autoBeaming
610 @cindex letra
611
612 Si se van a utilizar las barras para indicar los melismas de las canciones, entonces el barrado
613 automático se debe desactivar con @code{\autoBeamOff}.
614
615
616 @refcommands
617
618 @funindex \autoBeamOff
619 @code{\autoBeamOff},
620 @funindex \autoBeamOn
621 @code{\autoBeamOn}.
622
623 @commonprop
624
625 Los patrones de barrado se pueden alterar con la propiedad @code{beatGrouping},
626
627 @lilypond[quote,verbatim,relative=2,fragment,ragged-right]
628 \time 5/16
629 \set beatGrouping = #'(2 3)
630 c8[^"(2+3)" c16 c8]
631 \set beatGrouping = #'(3 2)
632 c8[^"(3+2)" c16 c8]
633 @end lilypond
634
635
636 @refbugs
637
638 Si una partitura termina con una barra automática sin finalizar y que aún
639 acepta más figuras, esta última barra no se imprimirá en absoluto.  Lo mismo vale para
640 las voces polifónicas, introducidas con @code{<< @dots{} \\ @dots{}
641 >>}.  Si una voz polifónica termina mientras una barra automática aún
642 acepta notas, entonces no aparece.
643
644
645 @node Interpretation contexts
646 @section Interpretation contexts
647
648 Esta sección explica qué son los contextos y cómo modificarlos.
649
650 @menu
651 * Contexts explained::          
652 * Creating contexts::           
653 * Changing context properties on the fly::  
654 * Modifying context plug-ins::  
655 * Layout tunings within contexts::  
656 * Changing context default settings::  
657 * Defining new contexts::       
658 * Aligning contexts::           
659 * Vertical grouping of grobs::  
660 @end menu
661
662
663 @node Contexts explained
664 @subsection Contexts explained
665
666 Cuando se imprime la música, se tienen que añadir a la salida una gran cantidad de elementos
667 notacionales.  Por ejemplo, compare la entrada y la salida del siguiente ejemplo:
668
669 @lilypond[quote,verbatim,relative=2,fragment]
670 cis4 cis2. g4
671 @end lilypond
672
673 La entrada es bastante escueta, pero en la salida se añaden líneas divisorias, alteraciones accidentales,
674 la clave y la indicación de compás.  LilyPond @emph{interpreta} la
675 entrada.  En esta fase se inspecciona la información musical en orden temporal,
676 de forma parecida a la lectura de una partitura de izquierda a derecha. Mientras se lee
677 la entrada, el programa recuerda dónde se encuentran los límites de los compases, y qué notas
678 requieren alteraciones explícitas.  Esta información se puede presentar sobre varios
679 niveles.  Por ejemplo, el efecto de una alteración accidental se encuentra limitada
680 a un solo pentagrama, mientras que una barra divisoria debe estar sincronizada a través
681 de la partitura de arriba a abajo.
682
683 Dentro de LilyPond, estas reglas y pequeñas porciones de información se agrupan en
684 @emph{Contexts}.  Algunos ejemplos de contextos son @context{Voice} (Voz),
685 @context{Staff} (Pauta o pentagrama) y @context{Score} (Partitura).  Los contextos son jerárquicos, por
686 ejemplo: un @context{Staff} contener muchas @context{Voice}s, y una
687 @context{Score} puede contener muchos contextos de @context{Staff}.
688
689 @quotation
690 @image{context-example,5cm,,}
691 @end quotation
692
693 Cada contexto asume la responsabilidad de imponer algunas reglas de notación,
694 creando ciertos objetos de notación y manteniendo las propiedades
695 asociadas.  Por ejemplo, el contexto @context{Voice} puede introducir una alteración
696 accidental y entonces el contexto @context{Staff} mantiene la regla de mostrar o
697 suprimir la alteración para el resto del compás.  La
698 sincronización de las líneas divisorias se gestiona dentro del contexto de la partitura, @context{Score}.
699
700 Sin embargo, en algunas músicas posiblemente no queramos que las líneas divisorias estén
701 sincronizada (pensemos en una partitura polimétrica en compases de 4/4 y de 3/4).  En tales casos,
702 debemos modificar los ajustes por omisión de los contextos @context{Score}
703 y @context{Staff}.
704
705 Para partituras muy sencillas, los contextos se crean implícitamente y no debemos
706 preocuparnos por ellos.  Para piezas mayores, como por ejemplo cualquiera que tenga más de un pentagrama,
707 los contextos se deben crear explícitamente para asegurarnos
708 de que tendremos la cantidad exacta de pentagramas que necesitamos,
709 y que están en el orden correcto.  Para tipografiar piezas
710 con notación especializada, puede ser útil modificar contextos existentes
711 o definir unos nuevos.
712
713
714 En la referencia del programa se encuentra una descripción completa de todos los contextos que están disponibles,
715 consulte
716 @ifhtml
717 @internalsref{Contexts}.
718 @end ifhtml
719 @ifnothtml
720 Traducción @arrow{} Contexto.
721 @end ifnothtml
722
723 @c [TODO: describe propagation]
724
725
726 @node Creating contexts
727 @subsection Creating contexts
728
729 Para partituras que sólo tienen una voz y un pentagrama, los contextos se
730 crean automáticamente.  Para partituras más complejas, es necesario crearlos
731 a mano.  Existen tres instrucciones que hacen esto.
732
733 @itemize @bullet
734
735 @item
736 La instrucción más fácil es @code{\new}, y es también la más rápida de escribir.
737 Se antepone a una expresión musical, por ejemplo
738
739 @funindex \new
740 @cindex nuevos, contextos
741 @cindex Contexto, creación de
742
743 @example
744 \new @var{tipo} @var{expresión_musical}
745 @end example
746
747 @noindent
748 donde @var{tipo} es el nombre de un contexto (como @code{Staff} o
749 @code{Voice}).  Esta instrucción crea un contexto nuevo, y empieza a
750 interpretar la @var{expresión_musical} con él.
751
752 Una aplicación práctica de @code{\new} es una partitura con muchos pentagramas.
753 Cada parte que debe ir en su propio pentagrama, va precedida de
754 @code{\new Staff}.
755
756 @lilypond[quote,verbatim,relative=2,ragged-right,fragment]
757 <<
758   \new Staff { c4 c }
759   \new Staff { d4 d }
760 >>
761 @end lilypond
762
763 La instrucción @code{\new} puede también dar nombre al contexto,
764
765 @example
766 \new @var{tipo} = @var{identificador} @var{música}
767 @end example
768 Sin embargo, este nombre especificado por el usuario sólo se utiliza si no hay ya otro contexto
769 anterior con el mismo nombre.
770
771
772 @funindex \context
773
774 @item
775 Como @code{\new}, la instrucción @code{\context} también dirige una expresión musical
776 a un objeto de contexto, pero da al contexto un nombre explícito.  La sintaxis
777 es
778
779 @example
780 \context @var{tipo} = @var{identificador} @var{música}
781 @end example
782
783 En esta forma, la instrucción buscará un contexto existente del @var{tipo} especificado
784 que tenga el nombre @var{identificador}.  Si ese contexto aún no existe, se crea
785 un contexto nuevo con el nombre especificado.  Esto es útil si nos vamos a referir
786 más tarde al contexto.  Por ejemplo, cuando
787 se escribe la letra, la melodía está dentro de un contexto con nombre
788
789 @example
790 \context Voice = "@b{tenor}" @var{música}
791 @end example
792
793 @noindent
794 de forma que los textos se puedan alienar correctamente con sus notas,
795
796 @example
797 \new Lyrics \lyricsto "@b{tenor}" @var{letra}
798 @end example
799
800 @noindent
801
802 Otro uso posible de los contextos con nombre es la fusión de dos expresiones musicales
803 distintas en un solo contexto.  En el siguiente ejemplo,
804 se introducen por separado las articulaciones y las notas,
805
806 @example
807 musica = @{ c4 c4 @}
808 decoracion = @{ s4-. s4-> @}
809 @end example
810
811 se combinan enviando los dos al mismo contexto @context{Voice},
812
813 @example
814 <<
815   \new Staff \context Voice = "A" \musica
816   \context Voice = "A" \decoracion
817 >>
818 @end example
819 @lilypond[quote,ragged-right]
820 music = { c4 c4 }
821 arts = { s4-. s4-> }
822 \relative c'' <<
823   \new Staff \context Voice = "A" \music
824   \context Voice = "A" \arts
825 >>
826 @end lilypond
827
828 Con este mecanismo, es posible definir un Urtext (una edición
829 original), con la posibilidad de poner articulaciones distintas sobre las
830 mismas notas.
831
832 @cindex crear contextos
833
834 @item
835 La tercera instrucción para crear contextos es
836 @example
837 \context @var{tipo} @var{música}
838 @end example
839
840
841 @noindent
842 Esto es similar a @code{\context} con @code{= @var{identificador}}, pero se corresponde con
843 cualquier contexto del tipo @var{tipo}, sin importar qué nombre se le ha dado.
844
845 Esta variante se usa con expresiones musicales que se pueden interpretar en
846 varios niveles.  Por ejemplo, la instrucción @code{\applyOutput} (véase
847 @ref{Running a function on all layout objects}).  Sin una instrucción
848 @code{\context} explícita, normalmente se aplicaría a @context{Voice}
849
850 @example
851 \applyOutput #'@var{contexto} #@var{función}   % aplicar al contexto Voice
852 @end example
853
854 Para que se interprete dentro de los niveles de @context{Score} o @context{Staff}, utilice las siguientes
855 formas:
856
857 @example
858 \applyOutput #'Score #@var{función}
859 \applyOutput #'Staff #@var{función}
860 @end example
861
862 @end itemize
863
864
865 @node Changing context properties on the fly
866 @subsection Changing context properties on the fly
867
868 @cindex properties
869 @funindex \set
870 @cindex changing properties
871
872 Cada contexto puede tener diferentes @emph{propiedades} o variables contenidas
873 en dicho contexto.  Se pueden cambiar mientras se desarrolla la fase de interpretación.
874 Esto se consigue insertando la instrucción @code{\set} en la música,
875
876 @example
877 \set @var{contexto}.@var{propiedad} = #@var{valor}
878 @end example
879
880 Por ejemplo,
881 @lilypond[quote,verbatim,relative=2,fragment]
882 R1*2
883 \set Score.skipBars = ##t
884 R1*2
885 @end lilypond
886
887 Esta instrucción hace que se salten los compases que no tienen ninguna nota.  El resultado es que
888 los silencios multicompás se comprimen.  El valor asignado es un objeto del lenguaje Scheme.  En
889 este caso, es @code{#t}, el valor booleano Verdadero.
890
891 Si el argumento @var{contexto} se deja en blanco, entonces se utiliza el contexto actual más bajo
892 (normalmente @context{ChordNames}, @context{Voice} o
893 @context{Lyrics}).  En este ejemplo,
894
895 @lilypond[quote,verbatim,relative=2,fragment]
896 c8 c c c
897 \set autoBeaming = ##f
898 c8 c c c
899 @end lilypond
900
901 @noindent
902 el argumento @var{contexto} para la instrucción @code{\set} está omitido, por tanto
903 el barrado automático está desactivado en la @internalsref{Voice} (voz) actual.  Fíjese en que
904 el contexto más bajo no siempre contiene la propiedad que quiere
905 cambiar. Por ejemplo, si intenta establecer la propiedad @code{skipBars}
906 (del contexto más bajo, en este caso @code{Voice}) no se producirá ningún
907 efecto.
908
909 @lilypond[quote,verbatim,relative=2,fragment]
910 R1*2
911 \set skipBars = ##t
912 R1*2
913 @end lilypond
914
915 Los contextos son jerárquicos, de forma que si se especificó un contexto mayor, por
916 ejemplo @context{Staff}, entonces el cambio también se aplicaría a todos los
917 @context{Voice}s o contextos de voz en el pentagrama actual.  El cambio se aplica
918 @q{al vuelo}, mientras transcurre la música, de manera que el ajuste sólo afecta al segundo
919 grupo de corcheas.
920
921 @funindex \unset
922
923 También existe una instrucción @code{\unset},
924 @example
925 \unset @var{contexto}.@var{propiedad}
926 @end example
927
928 @noindent
929 que quita la definición de la @var{propiedad}.  Esta instrucción quita
930 la definición solamente si está establecida dentro del @var{contexto} especificado, por lo que
931
932 @example
933 \set Staff.autoBeaming = ##f
934 @end example
935
936 @noindent
937 introduce un ajuste de propiedad en el nivel del contexto @code{Staff}.  El ajuste también se aplica
938 a la @code{Voice} actual.  Sin embargo,
939
940 @example
941 \unset Voice.autoBeaming
942 @end example
943
944 @noindent
945 no tiene ningún efecto.  Para cancelar este ajuste, el @code{\unset}
946 se debe especificar en el mismo nivel que el @code{\set} original.  En
947 otras palabras, deshacer el efecto de @code{Staff.autoBeaming = ##f}
948 requiere
949 @example
950 \unset Staff.autoBeaming
951 @end example
952
953 Igual que @code{\set}, el argumento @var{contexto} no tiene que especificarse para un contexto
954 que está en la parte más baja, por lo que las dos instrucciones
955
956 @example
957 \set Voice.autoBeaming = ##t
958 \set autoBeaming = ##t
959 @end example
960
961 @noindent
962 son equivalentes.
963
964
965 @cindex \once
966 Los ajustes que se quieren aplicar a un paso de tiempo único se pueden escribir
967 con @code{\once}, por ejemplo en
968
969 @lilypond[quote,verbatim,relative=2,fragment]
970 c4
971 \once \set fontSize = #4.7
972 c4
973 c4
974 @end lilypond
975
976 la propiedad @code{fontSize} pierde su valor automáticamente después de la segunda
977 nota.
978
979 En la referencia del programa hay una descripción detallada de todas las propiedades de contexto disponibles,
980 véase
981 @ifhtml
982 @internalsref{Tunable context properties}.
983 @end ifhtml
984 @ifnothtml
985 Traducción @arrow{} propiedades de contexto ajustables.
986 @end ifnothtml
987
988
989 @node Modifying context plug-ins
990 @subsection Modifying context plug-ins
991
992 Los contextos de notación (como @code{Score} y @code{Staff}) no sólo
993 almacenan propiedades,
994 también contienen plug-ins o añadidos llamados @q{engravers} (grabadores) que crean elementos
995 de notación.  Por ejemplo, el contexto @code{Voice} contiene un
996 @code{Note_head_engraver} (grabador de las cabezas de nota) y el contexto @code{Staff} contiene un
997 @code{Key_signature_engraver} (grabador de la armadura).
998
999 Para ver una descripción completa de cada uno de los añadidos, consulte
1000 @ifhtml
1001 @internalsref{Engravers}.
1002 @end ifhtml
1003 @ifnothtml
1004 Referencia del programa @arrow Traducción @arrow{} Grabadores.
1005 @end ifnothtml
1006 cada uno de los contextos descritos en
1007 @ifhtml
1008 @internalsref{Contexts}
1009 @end ifhtml
1010 @ifnothtml
1011 Referencia del programa @arrow Traducción @arrow{} Contexto.
1012 @end ifnothtml
1013 relaciona los grabadores utilizados para ese contexto.
1014
1015
1016 Puede ser útil poner o quitar estos añadidos.  Esto se hace
1017 iniciando un contexto nuevo con @code{\new} o @code{\context} y
1018 modificándolo,
1019
1020 @funindex \with
1021
1022 @example
1023 \new @var{contexto} \with @{
1024   \consists @dots{}
1025   \consists @dots{}
1026   \remove @dots{}
1027   \remove @dots{}
1028   @emph{etc.}
1029 @}
1030 @{
1031   @emph{..música..}
1032 @}
1033 @end example
1034
1035 @noindent
1036 donde los @dots{} serían el nombre de un grabador.  A continuación se presenta un ejemplo sencillo
1037 que quita los grabadores @code{Time_signature_engraver} y
1038 @code{Clef_engraver} de un contexto @code{Staff},
1039
1040 @lilypond[quote,relative=1,verbatim,fragment]
1041 <<
1042   \new Staff {
1043     f2 g
1044   }
1045   \new Staff \with {
1046      \remove "Time_signature_engraver"
1047      \remove "Clef_engraver"
1048   } {
1049     f2 g2
1050   }
1051 >>
1052 @end lilypond
1053
1054 En el segundo pentagrama no hay indicación de compás ni clave.  Ésta es
1055 una forma un poco fuerte de hacer desaparecer objetos, porque afectará
1056 al pentagrama completo.  Este método también influye en el espaciado, lo que podría ser
1057 deseable o no.  Un método más
1058 sofisticado de borrar objetos se muestra en @ref{Common tweaks}.
1059
1060 El ejemplo siguiente muestra una aplicación práctica.  Las líneas divisorias y las indicaciones
1061 de compás están normalmente sincronizadas en toda la partitura.  Esto se hace
1062 por parte del @code{Timing_translator} y el grabador @code{Default_bar_line_engraver}.
1063 Este añadido mantiene al día la administración de la indicación de compás, colocación
1064 dentro del compás, etc.  Moviendo el grabador desde el contexto @code{Score} al
1065 contexto @code{Staff}, podemos tener una partitura donde cada pentagrama tiene su propia
1066 indicación de compás.
1067
1068 @cindex polimétricas, partituras
1069 @cindex Indicaciones de compás, varias
1070
1071 @lilypond[quote,relative=1,ragged-right,verbatim,fragment]
1072 \new Score \with {
1073   \remove "Timing_translator"
1074   \remove "Default_bar_line_engraver"
1075 } <<
1076   \new Staff \with {
1077     \consists "Timing_translator"
1078     \consists "Default_bar_line_engraver"
1079   } {
1080       \time 3/4
1081       c4 c c c c c
1082   }
1083   \new Staff \with {
1084     \consists "Timing_translator"
1085     \consists "Default_bar_line_engraver"
1086   } {
1087        \time 2/4
1088        c4 c c c c c
1089   }
1090 >>
1091 @end lilypond
1092
1093
1094 @node Layout tunings within contexts
1095 @subsection Layout tunings within contexts
1096
1097 Cada contexto es responsable de crear ciertos tipos de objetos
1098 gráficos.  Los ajustes utilizados para imprimir estos objetos también se almacenan en cada contexto.
1099 Cambiando estos ajustes se puede alterar la apariencia visual de los
1100 objetos.
1101
1102 La sintaxis de esto es
1103
1104 @example
1105 \override @var{contexto}.@var{nombre} #'@var{propiedad} = #@var{valor}
1106 @end example
1107
1108 Aquí @var{nombre} es el nombre de un objeto gráfico, como @code{Stem} (plica) o
1109 @code{NoteHead} (cabeza de nota), y @var{propiedad} es una variable interna del sistema
1110 de formateo (@q{propiedad del objeto gráfico o grob} o @q{propiedad de la disposición o layout}).  El último es un
1111 símbolo, por ello debe ir entre comillas.  La subsección @ref{Constructing a
1112 tweak} explica qué datos hay que cumplimentar para las variables @var{nombre}, @var{propiedad} y
1113 @var{valor}.  Aquí discutiremos solamente la funcionalidad de esta instrucción.
1114
1115 La instrucción
1116
1117 @verbatim
1118 \override Staff.Stem #'thickness = #4.0
1119 @end verbatim
1120
1121 @noindent
1122 hace las plicas más gruesas (el valor por defecto es 1.3, tomando como unidad el grosor de las líneas del
1123 pentagrama).  Puesto que la orden especifica @context{Staff} como contexto, sólo se
1124 aplica al pentagrama en curso.  Otros pentagramas conservarán su apariencia visual
1125 normal.  Aquí podemos ver la orden en acción:
1126
1127 @lilypond[quote,verbatim,relative=2,fragment]
1128 c4
1129 \override Staff.Stem #'thickness = #4.0
1130 c4
1131 c4
1132 c4
1133 @end lilypond
1134
1135 La instrucción @code{\override} cambia la definición de la @code{Stem} (plica)
1136 dentro del pentagrama @context{Staff} en curso.  Después de que la orden se ha interpretado,
1137 todas las plicas quedan engrosadas.
1138
1139 Análogo a @code{\set}, el argumento @var{contexto} se puede dejar en blanco,
1140 haciendo que se utilice el contexto por defecto, @context{Voice}.  Al añadir
1141 @code{\once} se aplicará el cambio solamente durante un paso de tiempo.
1142
1143 @lilypond[quote,fragment,verbatim,relative=2]
1144 c4
1145 \once \override Stem #'thickness = #4.0
1146 c4
1147 c4
1148 @end lilypond
1149
1150 El @code{\override} debe hacerse antes de que el objeto haya
1151 comenzado.  Por ello, al alterar objetos de extensión o @emph{Spanner} tales como ligaduras
1152 o barras de figuras, la instrucción @code{\override} debe ejecutarse en el momento en que se
1153 crea el objeto.  En este ejemplo,
1154
1155 @lilypond[quote,fragment,verbatim,relative=2]
1156 \override Slur #'thickness = #3.0
1157 c8[( c
1158 \override Beam #'thickness = #0.6
1159 c8 c])
1160 @end lilypond
1161
1162 @noindent
1163 la ligadura es más gruesa, no así la barra.  Esto es así porque la orden para la barra
1164 @code{Beam} va después de que la barra Beam ha comenzado, así que no tiene ningún efecto.
1165
1166 De forma análoga a @code{\unset}, la orden @code{\revert} para un contexto
1167 deshace una orden @code{\override}; como con @code{\unset}, afecta solamente
1168 los ajustes que se hayan hecho dentro del mismo contexto.  En otras palabras, el
1169 @code{\revert} del siguiente ejemplo no hace nada en absoluto.
1170
1171 @example
1172 \override Voice.Stem #'thickness = #4.0
1173 \revert Staff.Stem #'thickness
1174 @end example
1175
1176 Algunas opciones trucables reciben el nombre de @q{subpropiedades} y residen dentro de las
1177 propiedades.  Para trucarlas, utilice órdenes de la forma
1178
1179 @c leave this as a long long
1180 @example
1181 \override @var{contexto}.@var{nombre} #'@var{propiedad} #'@var{subpropiedad} = #@var{valor}
1182 @end example
1183
1184 @noindent
1185 tal y como
1186
1187 @example
1188 \override Stem #'details #'beamed-lengths = #'(4 4 3)
1189 @end example
1190
1191
1192 @seealso
1193
1194 Funcionamiento interno: @internalsref{OverrideProperty}, @internalsref{RevertProperty},
1195 @internalsref{PropertySet}, @internalsref{Backend} y
1196 @internalsref{All layout objects}.
1197
1198
1199 @refbugs
1200
1201 El back-end o parte profunda del programa no es muy estricta cuando se trata de la comprobación de tipos de las propiedades de los objetos.
1202 Las referencias circulares en los valores de Scheme para las propiedades pueden causar cuelgues o
1203 terminaciones abruptas, o las dos cosas.
1204
1205
1206 @node Changing context default settings
1207 @subsection Changing context default settings
1208
1209 Los ajustes de las subsecciones previas (@ref{Changing context
1210 properties on the fly}, @ref{Modifying context plug-ins} y
1211 @ref{Layout tunings within contexts}) también se pueden escribir separados de la  música
1212 dentro del bloque @code{\layout},
1213
1214 @example
1215 \layout @{
1216   @dots{}
1217   \context @{
1218     \Staff
1219
1220     \set fontSize = #-2
1221     \override Stem #'thickness = #4.0
1222     \remove "Time_signature_engraver"
1223   @}
1224 @}
1225 @end example
1226
1227 La orden @code{\Staff} saca la definición existente del contexto de
1228 pentagrama de manera que pueda ser modificada.
1229
1230 Las instrucciones
1231 @example
1232 \set fontSize = #-2
1233 \override Stem #'thickness = #4.0
1234 \remove "Time_signature_engraver"
1235 @end example
1236
1237 @noindent
1238 afectan a todos los pentagramas de la partitura.  Otros contextos se pueden modificar de forma
1239 análoga.
1240
1241 La palabra clave @code{\set} es opcional dentro del bloque @code{\layout}, y así:
1242
1243 @example
1244 \context @{
1245   @dots{}
1246   fontSize = #-2
1247 @}
1248 @end example
1249
1250 @noindent
1251 también funciona.
1252
1253
1254
1255 @refbugs
1256
1257 No es posible recolectar cambios de contexto en una variable y aplicarlos
1258 a una definición @code{\context} mediante la referencia a esa variable.
1259
1260 El @code{\RemoveEmptyStaffContext} sobreescribirá sus ajustes actuales
1261 de @code{\Staff}.  Si quiere cambiar los valores por defecto para un pentagrama que usa
1262 @code{\RemoveEmptyStaffContext}, tendrá que hacerlo después de
1263 llamar a @code{\RemoveemptyStaffContext}, es decir
1264
1265 @example
1266 \layout @{
1267   \context @{
1268     \RemoveEmptyStaffContext
1269
1270     \override Stem #'thickness = #4.0
1271   @}
1272 @}
1273 @end example
1274
1275
1276 @node Defining new contexts
1277 @subsection Defining new contexts
1278
1279 Los contextos específicos, como @context{Staff} y @code{Voice}, están construidos a base de
1280 bloques sencillos.  Es posible crear nuevos tipos de
1281 contextos con combinaciones distintas de añadidos grabadores.
1282
1283 El siguiente ejemplo muestra cómo construir un tipo diferente de contexto de
1284 @context{Voice} partiendo de cero.  Será parecido a
1285 @code{Voice}, pero imprime solamente cabezas centradas en forma de barra inclinada.  Se puede usar
1286 para indicar improvisación en piezas de jazz,
1287
1288 @lilypond[quote,ragged-right]
1289 \layout { \context {
1290   \name ImproVoice
1291   \type "Engraver_group"
1292   \consists "Note_heads_engraver"
1293   \consists "Text_engraver"
1294   \consists Pitch_squash_engraver
1295   squashedPosition = #0
1296   \override NoteHead #'style = #'slash
1297   \override Stem #'transparent = ##t
1298   \alias Voice
1299 }
1300 \context { \Staff
1301   \accepts "ImproVoice"
1302 }}
1303
1304 \relative c'' {
1305   a4 d8 bes8 \new ImproVoice { c4^"ad lib" c
1306    c4 c^"undress" c_"while playing :)" c }
1307   a1
1308 }
1309 @end lilypond
1310
1311
1312 Estos ajustes se definen dentro de un bloque @code{\context} que a su vez está dentro de un bloque
1313 @code{\layout},
1314
1315 @example
1316 \layout @{
1317   \context @{
1318     @dots{}
1319   @}
1320 @}
1321 @end example
1322
1323 En el siguiente análisis, la entrada de ejemplo que se muestra debe ir en el lugar de
1324 los puntos suspensivos @dots{} del fragmento anterior.
1325
1326 En primer lugar es necesario definir un nombre para el nuevo contexto:
1327
1328 @example
1329 \name ImproVoice
1330 @end example
1331
1332 Debido a que es parecido al contexto @context{Voice}, queremos órdenes que funcionen sobre
1333 contextos de @context{Voice} (existentes) para que siga funcionando.  Esto se consigue dando al
1334 contexto nuevo un alias @context{Voice},
1335
1336 @example
1337 \alias Voice
1338 @end example
1339
1340 El contexto imprimirá notas y textos explicativos, por ello tenemos que añadir los
1341 grabadores que aportan esta funcionalidad,
1342
1343 @example
1344 \consists Note_heads_engraver
1345 \consists Text_engraver
1346 @end example
1347
1348 Pero sólo necesitamos esto en la línea central,
1349
1350 @example
1351 \consists Pitch_squash_engraver
1352 squashedPosition = #0
1353 @end example
1354
1355 El grabador @internalsref{Pitch_squash_engraver} modifica las cabezas de nota (creadas
1356 por el grabador @internalsref{Note_heads_engraver}) y establece sus posiciones verticales
1357 al valor de @code{squashedPosition}, en este caso@tie{}@code{0},
1358 la línea central.
1359
1360 Las notas parecen barras inclinadas y no tienen plica,
1361
1362 @example
1363 \override NoteHead #'style = #'slash
1364 \override Stem #'transparent = ##t
1365 @end example
1366
1367 Todos estos añadidos tienen que cooperar, y esto se consigue con un añadido especial,
1368 que se debe marcar con la palabra clave @code{\type}.
1369 Este será siempre @internalsref{Engraver_group},
1370
1371 @example
1372 \type "Engraver_group"
1373 @end example
1374
1375 Al juntarlo todo, obtenemos
1376
1377 @example
1378 \context @{
1379   \name ImproVoice
1380   \type "Engraver_group"
1381   \consists "Note_heads_engraver"
1382   \consists "Text_engraver"
1383   \consists Pitch_squash_engraver
1384   squashedPosition = #0
1385   \override NoteHead #'style = #'slash
1386   \override Stem #'transparent = ##t
1387   \alias Voice
1388 @}
1389 @end example
1390
1391 @funindex \accepts
1392 Los contextos dan lugar a jerarquías.  Queremos colgar el contexto @context{ImproVoice}
1393 bajo el contexto @context{Staff}, como simples @code{Voice}s normales.  Por tanto, modificamos
1394 la definición de @code{Staff} con la instrucción
1395 @code{\accepts} (acepta),
1396
1397 @example
1398 \context @{
1399   \Staff
1400   \accepts ImproVoice
1401 @}
1402 @end example
1403
1404 @funindex \denies
1405 Lo opuesto a @code{\accepts} (acepta) es @code{\denies} (deniega),
1406 lo que a veces se necesita cuando se están reutilizando definiciones de contexto existentes.
1407
1408 Ponemos ambos dentro de un bloque @code{\layout}, como
1409
1410 @example
1411 \layout @{
1412   \context @{
1413     \name ImproVoice
1414     @dots{}
1415   @}
1416   \context @{
1417     \Staff
1418     \accepts "ImproVoice"
1419   @}
1420 @}
1421 @end example
1422
1423 Así pues, la salida que aparece al comienzo de esta sub-sección se puede escribir como
1424
1425 @example
1426 \relative c'' @{
1427   a4 d8 bes8
1428   \new ImproVoice @{
1429     c4^"ad lib" c
1430     c4 c^"undress"
1431     c c_"while playing :)"
1432   @}
1433   a1
1434 @}
1435 @end example
1436
1437
1438 @node Aligning contexts
1439 @subsection Aligning contexts
1440
1441 Los contextos nuevos se pueden alinear por encima o por debajo de otros contextos existentes.  Esto
1442 podría ser de utilidad al preparar un pentagrama vocal (@ref{Vocal ensembles}) y
1443 un ossia,
1444
1445 @cindex ossia
1446 @findex alignAboveContext
1447 @findex alignBelowContext
1448
1449 @lilypond[quote,ragged-right]
1450 ossia = { f4 f f f }
1451 \score{
1452   \relative c' \new Staff = "main" {
1453     c4 c c c
1454     <<
1455       \new Staff \with {alignAboveContext=main} \ossia
1456       { d8 f d f d f d f }
1457     >>
1458   }
1459 }
1460 @end lilypond
1461
1462
1463 @node Vertical grouping of grobs
1464 @subsection Vertical grouping of grobs
1465
1466 Los grobs (objetos gráficos) VerticalAlignment y VerticalAxisGroup funcionan juntos.
1467 VerticalAxisGroup agrupa distintos objetos gráficos como Staff, Lyrics,
1468 etc. VerticalAlignment por su parte alinea verticalmente los diferentes objetos gráficos
1469 agrupados por VerticalAxisGroup. Normalmente hay solamente un
1470 VerticalAlignment por cada partitura, pero cada Staff, Lyrics, etc. tiene su propio
1471 VerticalAxisGroup. 
1472
1473
1474 @node The \override command
1475 @section The @code{\override} command
1476
1477 En la sección anterior ya hemos tocado una orden que
1478 modifica los detalles de la presentación: la instrucción @code{\override}.  En esta sección
1479 observaremos con mayor detalle la manera de usar esta orden en la práctica.  La
1480 sintaxis general de esta orden es:
1481
1482 @example
1483 \override @var{contexto}.@var{objeto_de_presentación} #'@var{propiedad_de_presentación} = #@var{valor}
1484 @end example
1485
1486 Así establecemos la @var{propiedad_de_presentación} del @var{objeto_de_presentación} especificado,
1487 que es miembro del @var{contexto}, al @var{valor} que se indica.
1488
1489 @menu
1490 * Constructing a tweak::        
1491 * Navigating the program reference::  
1492 * Layout interfaces::           
1493 * Determining the grob property::  
1494 * Objects connected to the input::  
1495 * Using Scheme code instead of \tweak::  
1496 * \set versus \override::       
1497 * Difficult tweaks::            
1498 @end menu
1499
1500
1501
1502 @node Constructing a tweak
1503 @subsection Constructing a tweak
1504
1505 Las instrucciones que cambian la salida generalmente tienen la forma
1506
1507 @example
1508 \override Voice.Stem #'thickness = #3.0
1509 @end example
1510
1511 @noindent
1512 Para construir este ajuste debemos primero averiguar estos datos:
1513
1514 @itemize
1515 @item el contexto: aquí @context{Voice} (voz).
1516 @item el objeto de presentación: aquí @code{Stem} (plica).
1517 @item la propiedad de presentación: aquí @code{thickness} (grosor).
1518 @item un valor: aquí @code{3.0}.
1519 @end itemize
1520
1521 Ciertas opciones ajustables se llaman @q{subpropiedades} y residen en el interior
1522 de las propiedades.  Para trucarlas, utilice órdenes de la forma
1523
1524 @example
1525 \override Stem #'details #'beamed-lengths = #'(4 4 3)
1526 @end example
1527
1528 @cindex documentación interna
1529 @cindex buscar objetos gráficos
1530 @cindex gráficos, descripciones de los objetos
1531 @cindex trucar
1532 @funindex \override
1533 @cindex interna, documentación
1534
1535 Para muchas propiedades, independientemente del tipo de datos de la propiedad, el establecimiento del valor de la
1536 propiedad a Falso ( @code{##f} ) dará como resultado su apagado o desactivación, haciendo que
1537 Lilypond ignore por completo dicha propiedad.  Esto es especialmente útil para
1538 desactivar propiedades de objetos gráficos que, de otro modo, podrían causar problemas.
1539
1540 Explicaremos a continuación cómo extraer esta información del manual de notación y de la
1541 referencia del programa.
1542
1543
1544
1545
1546 @node Navigating the program reference
1547 @subsection Navigating the program reference
1548
1549 Supongamos que queremos mover la indicación de digitación del fragmento
1550 siguiente:
1551
1552 @lilypond[quote,fragment,relative=2,verbatim]
1553 c-2
1554 \stemUp
1555 f
1556 @end lilypond
1557
1558 Si hace una visita a la documentación en busca de instrucciones de digitación (en
1559 @ref{Fingering instructions}), encontrará:
1560
1561 @quotation
1562 @seealso
1563
1564 Referencia del programa: @internalsref{Fingering}.
1565
1566 @end quotation
1567
1568
1569 @c  outdated info; probably will delete.
1570 @ignore
1571 This fragment points to two parts of the program reference: a page
1572 on @code{FingerEvent} and one on @code{Fingering}.
1573
1574 The page on @code{FingerEvent} describes the properties of the music
1575 expression for the input @code{-2}.  The page contains many links
1576 forward.  For example, it says
1577
1578 @quotation
1579 Accepted by: @internalsref{Fingering_engraver},
1580 @end quotation
1581
1582 @noindent
1583 That link brings us to the documentation for the Engraver, the
1584 plug-in, which says
1585
1586 @quotation
1587 This engraver creates the following layout objects: @internalsref{Fingering}.
1588 @end quotation
1589 In other words, once the @code{FingerEvent}s are interpreted, the
1590 @code{Fingering_engraver} plug-in will process them.
1591 @end ignore
1592
1593 @ignore
1594 @c  I can't figure out what this is supposed to mean.  -gp
1595
1596 The @code{Fingering_engraver} is also listed to create
1597 @internalsref{Fingering} objects,
1598
1599 @c  old info?  it doesn't make any sense to me with our current docs.
1600 This is also the
1601 second bit of information listed under @b{See also} in the Notation
1602 manual.
1603 @end ignore
1604
1605 @ifnothtml
1606 La referencia del programador se encuentra disponible en forma de documento HTML.  Se recomienda
1607 mucho que lo lea en la forma HTML, bien en línea o bien
1608 descargando los archivos de la documentación HTML.  Esta sección sería mucho más difícil de entender
1609 si está utilizando el manual en
1610 formato PDF.
1611 @end ifnothtml
1612
1613 Siga el enlace que lleva a @internalsref{Fingering}.  Al principio de la página,
1614 puede ver
1615
1616 @quotation
1617 Los objetos de digitación se crean por parte de: @internalsref{Fingering_engraver} y
1618 @internalsref{New_fingering_engraver}.
1619 @end quotation
1620
1621 Siguiendo los enlaces relacionados dentro de la referencia del programa, podemos seguir el
1622 flujo de información dentro del programa:
1623
1624 @itemize @bullet
1625
1626 @item @internalsref{Fingering}:
1627 los objetos @internalsref{Fingering} se crean por parte de:
1628 @internalsref{Fingering_engraver}
1629
1630 @item @internalsref{Fingering_engraver}:
1631 Tipos de música aceptados: @internalsref{fingering-event}
1632
1633 @item @internalsref{fingering-event}:
1634 El tipo de evento musical @code{fingering-event} está descrito en Expresiones musicales con el nombre de
1635 @internalsref{FingerEvent}
1636 @end itemize
1637
1638 Este camino se recorre en contra de la corriente de información del programa: comienza
1639 por la salida y acaba en el evento de entrada.  También podríamos haber
1640 empezado por un evento de la entrada, y leído siguiendo el flujo de información
1641 terminando en su caso en el objeto (u objetos) de la salida.
1642
1643 La referencia del programa también se puede examinar como un documento normal.  Contiene
1644 capítulos que tratan de
1645 @ifhtml
1646 @internalsref{Music definitions},
1647 @end ifhtml
1648 @ifnothtml
1649 @code{Music definitions}
1650 @end ifnothtml
1651 de la @internalsref{Translation}, y del @internalsref{Backend}.  Cada uno de los capítulos
1652 relaciona todas las definiciones utilizadas y todas las propiedades que se pueden
1653 ajustar.
1654
1655
1656 @node Layout interfaces
1657 @subsection Layout interfaces
1658
1659 @cindex interfaz de la presentación
1660 @cindex presentación, interfaz de la
1661 @cindex grob
1662
1663 La página HTML que pudimos ver en la sección anterior describe el
1664 objeto de presentación llamado @internalsref{Fingering}.  Dicho objeto es un
1665 símbolo dentro de la partitura.  Tiene propiedades que guardan números (como
1666 grosores y direcciones), pero también punteros a objetos relacionados.  Un
1667 objeto de presentación también se llama un @emph{Grob}, que es una abreviatura de Graphical
1668 Object (objeto gráfico).  Para ver más detalles acerca de los objetos gráficos o Grobs, consulte @internalsref{grob-interface}.
1669
1670 La página dedicada a @code{Fingering} relaciona las definiciones del objeto
1671 @code{Fingering}.  Por ejemplo, la página dice
1672
1673 @quotation
1674 @code{relleno} (dimensión, en espacios de pentagrama):
1675
1676 @code{0.5}
1677 @end quotation
1678
1679 @noindent
1680 lo que significa que el número se mantendrá a una distancia de al menos 0.5
1681 de la cabeza de la nota.
1682
1683
1684 Cada objeto de presentación puede tener varias funciones como elemento notacional o
1685 tipográfico.  Por ejemplo, el objeto de digitación Fingering tiene
1686 los siguientes aspectos
1687
1688 @itemize @bullet
1689 @item
1690 Su tamaño es independiente del espaciado horizontal, al contrario de las ligaduras o las barras de las figuras.
1691
1692 @item
1693 Es un elemento de texto.  Casi seguro que es un texto muy corto.
1694
1695 @item
1696 este elemento de texto se tipografía con un tipo de letra, no como las ligaduras o las barras de las figuras.
1697
1698 @item
1699 Horizontalmente, el centro del símbolo se debe alinear con el centro de la cabeza
1700 de la nota.
1701
1702 @item
1703 Verticalmente, el símbolo se coloca cerca de la nota y del pentagrama.
1704
1705 @item
1706 La posición vertical también está coordinada con otros símbolos de superíndice
1707 y de subíndice.
1708 @end itemize
1709
1710 Cada uno de estos aspectos se capta en lo que se llaman @emph{interface}s,
1711 que se relacionan al final de la página dedicada a @internalsref{Fingering}
1712
1713 @quotation
1714 Este objeto contempla los siguientes interfaces:
1715 @internalsref{item-interface},
1716 @internalsref{self-alignment-interface},
1717 @internalsref{side-position-interface}, @internalsref{text-interface},
1718 @internalsref{text-script-interface}, @internalsref{font-interface},
1719 @internalsref{finger-interface} y @internalsref{grob-interface}.
1720 @end quotation
1721
1722 Al pulsar sobre cualquiera de los enlaces nos desplazaremos a la página del respectivo interfaz del
1723 objeto.  Cada interfaz tiene un cierto número de propiedades.  Algunas de ellas
1724 no son para que el usuario las pueda ajustar (@q{Propiedades internas}), pero otras
1725 sí se pueden modificar.
1726
1727 Hemos estado hablando de @emph{el} objeto @code{Fingering}, pero realmente esto no significa
1728 mucho.  El archivo de inicialización (véase
1729 @ref{Default files})
1730 @file{scm/@/define@/-grobs@/.scm} muestra el alma del @q{objeto},
1731
1732 @example
1733 (Fingering
1734   . ((padding . 0.5)
1735      (avoid-slur . around)
1736      (slur-padding . 0.2)
1737      (staff-padding . 0.5)
1738      (self-alignment-X . 0)
1739      (self-alignment-Y . 0)
1740      (script-priority . 100)
1741      (stencil . ,ly:text-interface::print)
1742      (direction . ,ly:script-interface::calc-direction)
1743      (font-encoding . fetaNumber)
1744      (font-size . -5)           ; don't overlap when next to heads.
1745      (meta . ((class . Item)
1746      (interfaces . (finger-interface
1747                     font-interface
1748                     text-script-interface
1749                     text-interface
1750                     side-position-interface
1751                     self-alignment-interface
1752                     item-interface))))))
1753 @end example
1754
1755 @noindent
1756 Como podemos ver, el objeto @code{Fingering} no es más que un montón de
1757 valores de variables, y la página web de la Referencia del programa
1758 se genera directamente a partir de esta definición.
1759
1760
1761 @node Determining the grob property
1762 @subsection Determining the grob property
1763
1764 Recordemos que queríamos cambiar la posición del @b{2} en
1765
1766 @lilypond[quote,fragment,relative=2,verbatim]
1767 c-2
1768 \stemUp
1769 f
1770 @end lilypond
1771
1772 Puesto que el @b{2} se encuentra colocado verticalmente sobre su nota, tenemos que
1773 negociar con el interfaz asociado con esta colocación.  Esto se
1774 hace usando @code{side-position-interface}.  La página que describe este interface
1775 dice:
1776
1777 @quotation
1778 @code{side-position-interface}
1779
1780 Colocar un objeto víctima (este mismo) junto a otros objetos (el
1781 soporte).  La propiedad @code{direction} significa dónde poner el objeto
1782 víctima con relación al soporte (¿a la izquierda o a la derecha, encima o debajo?)
1783 @end quotation
1784
1785 @cindex relleno
1786 @noindent
1787 Debajo de esta descripción, la variable @code{padding} (relleno) se describe como
1788
1789 @quotation
1790 @table @code
1791 @item padding
1792 (dimensión, en espacios de pentagrama)
1793
1794 Añadir esta cantidad de espacio adicional entre objetos que están unos junto a otros.
1795 @end table
1796 @end quotation
1797
1798 Aumentando el valor de @code{padding}, podemos alejar
1799 la cifra de digitación de la cabeza de la nota.  La siguiente orden inserta
1800 un espacio en blanco de 3 espacios de pentagrama
1801 entre la nota y la digitación:
1802 @example
1803 \once \override Voice.Fingering #'padding = #3
1804 @end example
1805
1806 Al insertar esta instrucción antes de que se haya creado el objeto Fingering,
1807 es decir, antes del @code{c2}, llegamos al siguiente resultado:
1808
1809 @lilypond[quote,relative=2,fragment,verbatim]
1810 \once \override Voice.Fingering #'padding = #3
1811 c-2
1812 \stemUp
1813 f
1814 @end lilypond
1815
1816
1817 En este caso, el contexto de este truco es @context{Voice}.  Este
1818 hecho se puede deducir también a partir de la referencia del programa, ya que la página dedicada al
1819 añadido @internalsref{Fingering_engraver} dice
1820
1821 @quotation
1822 El grabador Fingering_engraver es parte de los contextos: @dots{} @internalsref{Voice}
1823 @end quotation
1824
1825
1826 @node Objects connected to the input
1827 @subsection Objects connected to the input
1828
1829 @funindex \tweak
1830
1831 En ocasiones es posible tomar un atajo para realizar el ajuste fino de los objetos
1832 gráficos.  Para objetos que reusultan directamente de un elemento de código de la entrada,
1833 puede usar la función @code{\tweak}, por ejemplo
1834
1835 @lilypond[relative=2,fragment,verbatim,ragged-right]
1836 <
1837   c
1838   \tweak #'color #red d
1839   g
1840   \tweak #'duration-log #1  a
1841 >4-\tweak #'padding #10 -.
1842 @end lilypond
1843
1844 Como podemos ver, las propiedades se establecen directamente dentro de los objetos,
1845 sin hacer mención al nombre del grob ni al contexto en el que se tendría que
1846 aplicar.
1847
1848 Esta técnica sólo funciona para los objetos que están conectados directamente a
1849 un @internalsref{Event} (evento) del texto de entrada, por ejemplo
1850
1851 @itemize @bullet
1852 @item cabezas de nota, producidas por chord-pitch (p. ej.: las notas de un acorde)
1853 @item signos de articulación, producidos por instrucciones de articulación
1854 @end itemize
1855
1856 Posiblemente no funcione para plicas y alteraciones accidentales (éstos están producidos
1857 por parte de las cabezas de nota, no por los eventos musicales) ni para las claves (éstos no están producidos por
1858 ninguna entrada musical, sino más bien a causa de un cambio en el valor de una propiedad).
1859
1860 Existen muy pocos objetos que estén conectados @emph{directamente} al
1861 resultado de salida.  Una nota normal (como @code{c4}) no está conectada directamente
1862 a la salida, así que
1863
1864 @example
1865 \tweak #'color #red c4
1866 @end example
1867
1868 @noindent
1869 no cambia el color.  Consulte @ref{Displaying music expressions} para ver más
1870 detalles.
1871
1872
1873 @node Using Scheme code instead of \tweak
1874 @subsection Using Scheme code instead of @code{\tweak}
1875
1876 La principal desventaja de @code{\tweak} es su inflexibilidad
1877 sintáctica.  Por ejemplo, lo siguiente produce un error de sintaxis.
1878
1879 @example
1880 F = \tweak #'font-size #-3 -\flageolet
1881
1882 \relative c'' @{
1883   c4^\F c4_\F
1884 @}
1885 @end example
1886
1887 @noindent
1888 En otras palabras, @code{\tweak} no se comporta como una articulación en lo que respecta a la
1889 sintaxis; en concreto, no se puede adjuntar mediante
1890 @samp{^} y @samp{_}.
1891
1892 Utilizando el lenguaje Scheme, se puede dar un rodeo a este problema.  La ruta hacia el resultado
1893 se da en @ref{Adding articulation to notes (example)},
1894 especialmente cómo usar @code{\displayMusic} como guía de ayuda.
1895
1896 @example
1897 F = #(let ((m (make-music 'ArticulationEvent
1898                           'articulation-type "flageolet")))
1899        (set! (ly:music-property m 'tweaks)
1900              (acons 'font-size -3
1901                     (ly:music-property m 'tweaks)))
1902        m)
1903  
1904 \relative c'' @{
1905   c4^\F c4_\F
1906 @}
1907 @end example
1908
1909 @noindent
1910 Aquí las propiedades @code{tweaks} del objeto de flageolet
1911 @samp{m} (creado con @code{make-music}) se extraen con
1912 @code{ly:music-property}, un nuevo par clave-valor para cambiar el
1913 tamaño de la tipografía se antepone a la lista de propiedades con la función de Scheme
1914 @code{acons}, y el resultado finalmente se escribe
1915 de nuevo con @code{set!}.  El último elemento del bloque
1916 @code{let} es el valor devuelto, el propio @samp{m}.
1917
1918
1919 @node \set versus \override
1920 @subsection @code{\set} vs. @code{\override}
1921
1922 Hemos visto dos formas de cambiar las propiedades: @code{\set} y
1923 @code{\override}.  De hecho, en realidad existen dos clases diferentes de
1924 propiedades.
1925
1926 Los contextos pueden tener propiedades, que por lo general reciben nombres en
1927 @code{mayúsculasDeCamello}.  Principalmente controlan la traducción
1928 de la música a la notación, p.ej. @code{localKeySignature} (para determinar
1929 si hay que imprimir las alteraciones accidentales), @code{measurePosition} (para
1930 determinar cuándo imprimir una línea divisoria).  Las propiedades de contexto pueden
1931 ver modificado su valor con el tiempo según se interpreta una pieza de música;
1932 @code{measurePosition} es un ejemplo obvio de esto.
1933 Las propiedades de contexto se modifican con @code{\set}.
1934
1935 Hay un tipo especial de propiedad de contexto: la descripción del
1936 elemento. Estas propiedades reciben nombres en @code{MayúsculasDeCamello}
1937 (comenzando en letra mayúscula).  Contienen los
1938 @q{ajustes por defecto} para dicho elemento gráfico como una lista
1939 asociativa.  Consulte @file{scm/@/define@/-grobs@/.scm}
1940 para ver qué tipos de ajustes hay.  Las descripciones de los elementos
1941 se pueden modificar con @code{\override}.
1942
1943 Realmente, @code{\override} es un atajo;
1944
1945 @example
1946 \override @var{contexto}.@var{nombre} #'@var{propiedad} = #@var{valor}
1947 @end example
1948
1949 @noindent
1950 es más o menos equivalente a
1951
1952 @c  leave this long line -gp
1953 @example
1954 \set @var{contexto}.@var{nombre} #'@var{propiedad} = #(cons (cons '@var{propiedad} @var{valor}) <valor previo de @var{contexto})
1955 @end example
1956
1957 El valor de @code{contexto} (la lista-a) se usa para da un valor inicial
1958 a las propiedades de los objetos gráficos individuales.  Los objetos gráficos también tienen
1959 propiedades, que reciben nombres en el estilo de Scheme, con
1960 @code{palabras-con-guiones}.  Los valores de las propiedades de objetos gráficos cambian
1961 durante el proceso de formateo: el formateo básicamente consiste en
1962 calcular las propiedades utilizando funciones de callback.
1963
1964 @code{fontSize} es una propiedad especial: equivale a
1965 escribir @code{\override ... #'font-size} para todos los objetos
1966 pertinentes.  Al ser éste un cambio muy común, se creó la propiedad especial
1967 (modificada con @code{\set}).
1968
1969
1970 @node Difficult tweaks
1971 @subsection Difficult tweaks
1972
1973 Hay ciertos tipos de ajustes difíciles.
1974
1975 @itemize @bullet
1976
1977
1978 @item
1979 Un tipo de ajuste difícil es la apariencia visual de los objetos de extensión,
1980 como las ligaduras de expresión y de unión.  Inicialmente sólo se crea uno de estos objetos,
1981 y se pueden ajustar a través del mecanismo normal.  Sin embargo, en ocasiones
1982 los objetos de extensión atraviesan los altos de línea.  Si esto ocurre, estos objetos
1983 se clonan.  Se crea un objeto separado para cada grupo de pentagramas en el que está.
1984 Son clones del objeto original y heredan todas las
1985 propiedades, incluyendo los @code{\override}s.
1986
1987
1988 En otras palabras, un @code{\override} siempre afecta a todas las piezas de un elemento de
1989 extensión roto.  Para cambiar sólo una parte del elemento de extensión  en un salto de línea,
1990 es necesario implicarse en el proceso de formateo.  La función de callback
1991 @code{after-line-breaking} contiene el procedimiento de Scheme que
1992 se llama después de que se han determinado los saltos de línea, y de que los objetos de
1993 presentación se han dividido sobre los diferentes sistemas o grupos de pentagramas.
1994
1995 En el ejemplo siguiente, definimos un procedimiento
1996 @code{my-callback}.  Este procedimiento
1997
1998 @itemize @bullet
1999 @item
2000 determina si hemos sido divididos en un salto de línea
2001 @item
2002 si es así, recupera todos los objetos divididos
2003 @item
2004 comprueba si nosotros somos el último de los objetos divididos
2005 @item
2006 si es así, establece @code{extra-offset}.
2007 @end itemize
2008
2009 Este procedimiento se instala dentro de @internalsref{Tie} (ligadura de unión), de forma que la última parte
2010 de la ligadura dividida se traslada hacia arriba.
2011
2012 @lilypond[quote,verbatim,ragged-right]
2013 #(define (my-callback grob)
2014   (let* (
2015          ; have we been split?
2016          (orig (ly:grob-original grob))
2017
2018          ; if yes, get the split pieces (our siblings)
2019          (siblings (if (ly:grob? orig)
2020                      (ly:spanner-broken-into orig) '() )))
2021
2022    (if (and (>= (length siblings) 2)
2023              (eq? (car (last-pair siblings)) grob))
2024      (ly:grob-set-property! grob 'extra-offset '(-2 . 5)))))
2025
2026 \relative c'' {
2027   \override Tie #'after-line-breaking =
2028   #my-callback
2029   c1 ~ \break c2 ~ c
2030 }
2031 @end lilypond
2032
2033 @noindent
2034 Cuando aplicamos este truco, la nueva función de callback @code{after-line-breaking}
2035 también debe llamar a la antigua @code{after-line-breaking}, si existe.
2036 Por ejemplo, si se utiliza con @code{Hairpin} (regulador),
2037 también se debe llamar a @code{ly:hairpin::after-line-breaking}.
2038
2039
2040 @item Algunos objetos no se pueden cambiar con @code{\override} por razones
2041 técnicas.  Ejemplo de ello son @code{NonMusicalPaperColumn}
2042 y @code{PaperColumn}.  Se pueden cambiar con la función
2043 @code{\overrideProperty}, que funciona de forma parecida a @code{\once
2044 \override}, pero usa una sintaxis diferente.
2045
2046 @example
2047 \overrideProperty
2048 #"Score.NonMusicalPaperColumn"  % Nombre del Grob u objeto gráfico
2049 #'line-break-system-details     % Nombre de la propiedad
2050 #'((next-padding . 20))         % Valor
2051 @end example
2052
2053 Fíjese, sin embargo, en que @code{\override}, aplicado a
2054 @code{NoteMusicalPaperColumn} y a @code{PaperColumn}, aún funciona tal y como se espera
2055 dentro de los bloques @code{\context}.
2056
2057 @end itemize
2058