1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
2 @c This file is part of lilypond.tely
4 Translation of GIT committish: 90541cc59a99d0b53baccedc0327748b760fce68
6 When revising a translation, copy the HEAD committish of the
7 version that you are working on. See TRANSLATION for details.
10 @node Changing defaults
11 @chapter Changing defaults
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.
23 @cindex Program reference
25 Los controles disponibles para los ajustes finos se describen en un documento
28 el Manual de referencia del programa.
31 la @ref{Top,Referencia del programa,,lilypond-internals}.
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.
40 Hay cuatro áreas en las que se pueden cambiar los valores por defecto:
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.
48 Salida: cambiar el aspecto de los objetos individuales.
49 Por ejemplo, cambiar las direcciones de las plicas o la situación exacta de
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.
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}.
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.}
71 * Automatic notation::
72 * Interpretation contexts::
73 * The \override command::
77 @node Automatic notation
78 @section Automatic notation
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.
84 * Automatic accidentals::
85 * Setting automatic beam behavior::
88 @node Automatic accidentals
89 @subsection Automatic accidentals
90 @cindex Alteraciones accidentales automáticas
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
95 @funindex set-accidental-style
97 #(set-accidental-style 'ESTILO)
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
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
110 #(set-accidental-style 'ESTILO #('CONTEXTO#))
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}).
117 Están contemplados los siguientes estilos de alteraciones:
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.
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 | } >> }
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
137 << \context Staff = "up" {
138 %#(set-accidental-style 'default)
140 \context Staff = "down"{
141 %#(set-accidental-style 'default)
143 \header { piece = \markup {\fill-line { \fontsize #3 "'default" }}}
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
155 #(set-accidental-style 'voice)
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
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 | } >> }
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
176 << \context Staff = "up" {
177 #(set-accidental-style 'voice)
179 \context Staff = "down"{
180 #(set-accidental-style 'voice)
182 \header { piece = \markup {\fill-line { \fontsize #3 "'voice" }}}
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}.
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.
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 | } >> }
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
213 << \context Staff = "up" {
214 #(set-accidental-style 'modern)
216 \context Staff = "down"{
217 #(set-accidental-style 'modern)
219 \header { piece = \markup {\fill-line { \fontsize #3 "'modern" }}}
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}.
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 | } >> }
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
242 << \context Staff = "up" {
243 #(set-accidental-style 'modern-cautionary)
245 \context Staff = "down"{
246 #(set-accidental-style 'modern-cautionary)
248 \header { piece = \markup {\fill-line { \fontsize #3 "'modern-cautionary" }}}
252 @funindex 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}).
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 | } >> }
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
270 << \context Staff = "up" {
271 #(set-accidental-style 'modern-voice)
273 \context Staff = "down"{
274 #(set-accidental-style 'modern-voice)
276 \header { piece = \markup {\fill-line { \fontsize #3 "'modern-voice" }}}
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.
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 | } >> }
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
299 << \context Staff = "up" {
300 #(set-accidental-style 'modern-voice-cautionary)
302 \context Staff = "down"{
303 #(set-accidental-style 'modern-voice-cautionary)
305 \header { piece = \markup {\fill-line { \fontsize #3 "'modern-voice-cautionary" }}}
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:
315 \new GrandStaff @{ <<
316 \new Staff = "up" @{ <<
317 #(set-accidental-style 'piano)
320 \new Staff = "down"@{ <<
321 #(set-accidental-style 'piano)
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}.
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 | } >> }
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
343 << \context Staff = "up" {
344 #(set-accidental-style 'piano)
346 \context Staff = "down"{
347 #(set-accidental-style 'piano)
349 \header { piece = \markup {\fill-line { \fontsize #3 "'piano" }}}
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.
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 | } >> }
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
369 << \context Staff = "up" {
370 #(set-accidental-style 'piano-cautionary)
372 \context Staff = "down"{
373 #(set-accidental-style 'piano-cautionary)
375 \header { piece = \markup {\fill-line { \fontsize #3 "'piano-cautionary" }}}
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 | } >> }
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
394 << \context Staff = "up" {
395 #(set-accidental-style 'no-reset)
397 \context Staff = "down"{
398 #(set-accidental-style 'no-reset)
400 \header { piece = \markup {\fill-line { \fontsize #3 "'no-reset" }}}
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
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 | } >> }
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
421 << \context Staff = "up" {
422 #(set-accidental-style 'forget)
424 \context Staff = "down"{
425 #(set-accidental-style 'forget)
427 \header { piece = \markup {\fill-line { \fontsize #3 "'forget" }}}
435 Referencia del programa: @internalsref{Accidental_engraver},
436 @internalsref{Accidental}, @internalsref{AccidentalSuggestion} and @internalsref{AccidentalPlacement}.
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
451 @node Setting automatic beam behavior
452 @subsection Setting automatic beam behavior
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
460 @c [TODO: use \applyContext]
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}.
470 Para añadir una regla a la lista, utilice
472 #(override-auto-beam-setting '(be p q n m) a b [contexto])
477 @item @code{be} es "begin" (comienzo) o "end" (final).
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.
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.
488 @item @code{a/b} es la posición dentro del compás en la que debe comenzar o terminar
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)}.
498 Por ejemplo, si queremos que las barras automáticas siempre acaben sobre la primera
499 negra del compás, escriba
502 #(override-auto-beam-setting '(end * * * *) 1 4)
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
508 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
510 #(override-auto-beam-setting '(end 1 16 * *) 1 16)
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 |
517 Puede forzar los ajustes del barrado para que sólo afecten a ciertas indicaciones
520 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
522 #(override-auto-beam-setting '(end * * 5 8) 2 8)
530 También puede eliminar una regla de finalización de barra previamente establecida, usando
533 #(revert-auto-beam-setting '(be p q n m) a b [contexto])
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.
541 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
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
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.
551 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
553 #(override-auto-beam-setting '(end 1 16 1 4) 1 8)
555 #(revert-auto-beam-setting '(end 1 16 * *) 1 8) % this won't revert it!
557 #(revert-auto-beam-setting '(end 1 16 1 4) 1 8) % this will
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
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)
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
577 #(override-auto-beam-setting '(end * * * *) 3 8)
578 #(override-auto-beam-setting '(end * * * *) 1 2)
579 #(override-auto-beam-setting '(end * * * *) 7 8)
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
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
592 Por ejemplo, para tipografiar finales de barra de @code{(3 4 3 2)} corcheas en un 12/8, comience
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)
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)
607 @cindex automáticas, generación de las barras
609 @funindex autoBeaming
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}.
618 @funindex \autoBeamOff
620 @funindex \autoBeamOn
625 Los patrones de barrado se pueden alterar con la propiedad @code{beatGrouping},
627 @lilypond[quote,verbatim,relative=2,fragment,ragged-right]
629 \set beatGrouping = #'(2 3)
631 \set beatGrouping = #'(3 2)
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.
645 @node Interpretation contexts
646 @section Interpretation contexts
648 Esta sección explica qué son los contextos y cómo modificarlos.
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::
663 @node Contexts explained
664 @subsection Contexts explained
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:
669 @lilypond[quote,verbatim,relative=2,fragment]
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.
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}.
690 @image{context-example,5cm,,}
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}.
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}
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.
714 En la referencia del programa se encuentra una descripción completa de todos los contextos que están disponibles,
717 @internalsref{Contexts}.
720 Traducción @arrow{} Contexto.
723 @c [TODO: describe propagation]
726 @node Creating contexts
727 @subsection Creating contexts
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.
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
740 @cindex nuevos, contextos
741 @cindex Contexto, creación de
744 \new @var{tipo} @var{expresión_musical}
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.
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
756 @lilypond[quote,verbatim,relative=2,ragged-right,fragment]
763 La instrucción @code{\new} puede también dar nombre al contexto,
766 \new @var{tipo} = @var{identificador} @var{música}
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.
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
780 \context @var{tipo} = @var{identificador} @var{música}
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
790 \context Voice = "@b{tenor}" @var{música}
794 de forma que los textos se puedan alienar correctamente con sus notas,
797 \new Lyrics \lyricsto "@b{tenor}" @var{letra}
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,
808 decoracion = @{ s4-. s4-> @}
811 se combinan enviando los dos al mismo contexto @context{Voice},
815 \new Staff \context Voice = "A" \musica
816 \context Voice = "A" \decoracion
819 @lilypond[quote,ragged-right]
823 \new Staff \context Voice = "A" \music
824 \context Voice = "A" \arts
828 Con este mecanismo, es posible definir un Urtext (una edición
829 original), con la posibilidad de poner articulaciones distintas sobre las
832 @cindex crear contextos
835 La tercera instrucción para crear contextos es
837 \context @var{tipo} @var{música}
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.
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}
851 \applyOutput #'@var{contexto} #@var{función} % aplicar al contexto Voice
854 Para que se interprete dentro de los niveles de @context{Score} o @context{Staff}, utilice las siguientes
858 \applyOutput #'Score #@var{función}
859 \applyOutput #'Staff #@var{función}
865 @node Changing context properties on the fly
866 @subsection Changing context properties on the fly
870 @cindex changing properties
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,
877 \set @var{contexto}.@var{propiedad} = #@var{valor}
881 @lilypond[quote,verbatim,relative=2,fragment]
883 \set Score.skipBars = ##t
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.
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,
895 @lilypond[quote,verbatim,relative=2,fragment]
897 \set autoBeaming = ##f
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
909 @lilypond[quote,verbatim,relative=2,fragment]
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
923 También existe una instrucción @code{\unset},
925 \unset @var{contexto}.@var{propiedad}
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
933 \set Staff.autoBeaming = ##f
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,
941 \unset Voice.autoBeaming
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}
950 \unset Staff.autoBeaming
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
957 \set Voice.autoBeaming = ##t
958 \set autoBeaming = ##t
966 Los ajustes que se quieren aplicar a un paso de tiempo único se pueden escribir
967 con @code{\once}, por ejemplo en
969 @lilypond[quote,verbatim,relative=2,fragment]
971 \once \set fontSize = #4.7
976 la propiedad @code{fontSize} pierde su valor automáticamente después de la segunda
979 En la referencia del programa hay una descripción detallada de todas las propiedades de contexto disponibles,
982 @internalsref{Tunable context properties}.
985 Traducción @arrow{} propiedades de contexto ajustables.
989 @node Modifying context plug-ins
990 @subsection Modifying context plug-ins
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).
999 Para ver una descripción completa de cada uno de los añadidos, consulte
1001 @internalsref{Engravers}.
1004 Referencia del programa @arrow Traducción @arrow{} Grabadores.
1006 cada uno de los contextos descritos en
1008 @internalsref{Contexts}
1011 Referencia del programa @arrow Traducción @arrow{} Contexto.
1013 relaciona los grabadores utilizados para ese contexto.
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
1023 \new @var{contexto} \with @{
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},
1040 @lilypond[quote,relative=1,verbatim,fragment]
1046 \remove "Time_signature_engraver"
1047 \remove "Clef_engraver"
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 @rlearning{Common tweaks}.
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.
1068 @cindex polimétricas, partituras
1069 @cindex Indicaciones de compás, varias
1071 @lilypond[quote,relative=1,ragged-right,verbatim,fragment]
1073 \remove "Timing_translator"
1074 \remove "Default_bar_line_engraver"
1077 \consists "Timing_translator"
1078 \consists "Default_bar_line_engraver"
1084 \consists "Timing_translator"
1085 \consists "Default_bar_line_engraver"
1094 @node Layout tunings within contexts
1095 @subsection Layout tunings within contexts
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
1102 La sintaxis de esto es
1105 \override @var{contexto}.@var{nombre} #'@var{propiedad} = #@var{valor}
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.
1118 \override Staff.Stem #'thickness = #4.0
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:
1127 @lilypond[quote,verbatim,relative=2,fragment]
1129 \override Staff.Stem #'thickness = #4.0
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.
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.
1143 @lilypond[quote,fragment,verbatim,relative=2]
1145 \once \override Stem #'thickness = #4.0
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,
1155 @lilypond[quote,fragment,verbatim,relative=2]
1156 \override Slur #'thickness = #3.0
1158 \override Beam #'thickness = #0.6
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.
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.
1172 \override Voice.Stem #'thickness = #4.0
1173 \revert Staff.Stem #'thickness
1176 Algunas opciones trucables reciben el nombre de @q{subpropiedades} y residen dentro de las
1177 propiedades. Para trucarlas, utilice órdenes de la forma
1179 @c leave this as a long long
1181 \override @var{contexto}.@var{nombre} #'@var{propiedad} #'@var{subpropiedad} = #@var{valor}
1188 \override Stem #'details #'beamed-lengths = #'(4 4 3)
1194 Funcionamiento interno: @internalsref{OverrideProperty}, @internalsref{RevertProperty},
1195 @internalsref{PropertySet}, @internalsref{Backend} y
1196 @internalsref{All layout objects}.
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.
1206 @node Changing context default settings
1207 @subsection Changing context default settings
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},
1221 \override Stem #'thickness = #4.0
1222 \remove "Time_signature_engraver"
1227 La orden @code{\Staff} saca la definición existente del contexto de
1228 pentagrama de manera que pueda ser modificada.
1233 \override Stem #'thickness = #4.0
1234 \remove "Time_signature_engraver"
1238 afectan a todos los pentagramas de la partitura. Otros contextos se pueden modificar de forma
1241 La palabra clave @code{\set} es opcional dentro del bloque @code{\layout}, y así:
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.
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
1268 \RemoveEmptyStaffContext
1270 \override Stem #'thickness = #4.0
1276 @node Defining new contexts
1277 @subsection Defining new contexts
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.
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,
1288 @lilypond[quote,ragged-right]
1289 \layout { \context {
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
1301 \accepts "ImproVoice"
1305 a4 d8 bes8 \new ImproVoice { c4^"ad lib" c
1306 c4 c^"undress" c_"while playing :)" c }
1312 Estos ajustes se definen dentro de un bloque @code{\context} que a su vez está dentro de un bloque
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.
1326 En primer lugar es necesario definir un nombre para el nuevo contexto:
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},
1340 El contexto imprimirá notas y textos explicativos, por ello tenemos que añadir los
1341 grabadores que aportan esta funcionalidad,
1344 \consists Note_heads_engraver
1345 \consists Text_engraver
1348 Pero sólo necesitamos esto en la línea central,
1351 \consists Pitch_squash_engraver
1352 squashedPosition = #0
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},
1360 Las notas parecen barras inclinadas y no tienen plica,
1363 \override NoteHead #'style = #'slash
1364 \override Stem #'transparent = ##t
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},
1372 \type "Engraver_group"
1375 Al juntarlo todo, obtenemos
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
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),
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.
1408 Ponemos ambos dentro de un bloque @code{\layout}, como
1418 \accepts "ImproVoice"
1423 Así pues, la salida que aparece al comienzo de esta sub-sección se puede escribir como
1431 c c_"while playing :)"
1438 @node Aligning contexts
1439 @subsection Aligning contexts
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
1446 @findex alignAboveContext
1447 @findex alignBelowContext
1449 @lilypond[quote,ragged-right]
1450 ossia = { f4 f f f }
1452 \relative c' \new Staff = "main" {
1455 \new Staff \with {alignAboveContext=main} \ossia
1456 { d8 f d f d f d f }
1463 @node Vertical grouping of grobs
1464 @subsection Vertical grouping of grobs
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
1474 @node The \override command
1475 @section The @code{\override} command
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:
1483 \override @var{contexto}.@var{objeto_de_presentación} #'@var{propiedad_de_presentación} = #@var{valor}
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.
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::
1502 @node Constructing a tweak
1503 @subsection Constructing a tweak
1505 Las instrucciones que cambian la salida generalmente tienen la forma
1508 \override Voice.Stem #'thickness = #3.0
1512 Para construir este ajuste debemos primero averiguar estos datos:
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}.
1521 Ciertas opciones ajustables se llaman @q{subpropiedades} y residen en el interior
1522 de las propiedades. Para trucarlas, utilice órdenes de la forma
1525 \override Stem #'details #'beamed-lengths = #'(4 4 3)
1528 @cindex documentación interna
1529 @cindex buscar objetos gráficos
1530 @cindex gráficos, descripciones de los objetos
1533 @cindex interna, documentación
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.
1540 Explicaremos a continuación cómo extraer esta información del manual de notación y de la
1541 referencia del programa.
1546 @node Navigating the program reference
1547 @subsection Navigating the program reference
1549 Supongamos que queremos mover la indicación de digitación del fragmento
1552 @lilypond[quote,fragment,relative=2,verbatim]
1558 Si hace una visita a la documentación en busca de instrucciones de digitación (en
1559 @ref{Fingering instructions}), encontrará:
1564 Referencia del programa: @internalsref{Fingering}.
1569 @c outdated info; probably will delete.
1571 This fragment points to two parts of the program reference: a page
1572 on @code{FingerEvent} and one on @code{Fingering}.
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
1579 Accepted by: @internalsref{Fingering_engraver},
1583 That link brings us to the documentation for the Engraver, the
1587 This engraver creates the following layout objects: @internalsref{Fingering}.
1589 In other words, once the @code{FingerEvent}s are interpreted, the
1590 @code{Fingering_engraver} plug-in will process them.
1594 @c I can't figure out what this is supposed to mean. -gp
1596 The @code{Fingering_engraver} is also listed to create
1597 @internalsref{Fingering} objects,
1599 @c old info? it doesn't make any sense to me with our current docs.
1601 second bit of information listed under @b{See also} in the Notation
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
1613 Siga el enlace que lleva a @internalsref{Fingering}. Al principio de la página,
1617 Los objetos de digitación se crean por parte de: @internalsref{Fingering_engraver} y
1618 @internalsref{New_fingering_engraver}.
1621 Siguiendo los enlaces relacionados dentro de la referencia del programa, podemos seguir el
1622 flujo de información dentro del programa:
1626 @item @internalsref{Fingering}:
1627 los objetos @internalsref{Fingering} se crean por parte de:
1628 @internalsref{Fingering_engraver}
1630 @item @internalsref{Fingering_engraver}:
1631 Tipos de música aceptados: @internalsref{fingering-event}
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}
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.
1643 La referencia del programa también se puede examinar como un documento normal. Contiene
1644 capítulos que tratan de
1646 @internalsref{Music definitions},
1649 @code{Music definitions}
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
1656 @node Layout interfaces
1657 @subsection Layout interfaces
1659 @cindex interfaz de la presentación
1660 @cindex presentación, interfaz de la
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}.
1670 La página dedicada a @code{Fingering} relaciona las definiciones del objeto
1671 @code{Fingering}. Por ejemplo, la página dice
1674 @code{relleno} (dimensión, en espacios de pentagrama):
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.
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
1690 Su tamaño es independiente del espaciado horizontal, al contrario de las ligaduras o las barras de las figuras.
1693 Es un elemento de texto. Casi seguro que es un texto muy corto.
1696 este elemento de texto se tipografía con un tipo de letra, no como las ligaduras o las barras de las figuras.
1699 Horizontalmente, el centro del símbolo se debe alinear con el centro de la cabeza
1703 Verticalmente, el símbolo se coloca cerca de la nota y del pentagrama.
1706 La posición vertical también está coordinada con otros símbolos de superíndice
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}
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}.
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.
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 @rlearning{Default files})
1730 @file{scm/@/define@/-grobs@/.scm} muestra el alma del @q{objeto},
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
1748 text-script-interface
1750 side-position-interface
1751 self-alignment-interface
1752 item-interface))))))
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.
1761 @node Determining the grob property
1762 @subsection Determining the grob property
1764 Recordemos que queríamos cambiar la posición del @b{2} en
1766 @lilypond[quote,fragment,relative=2,verbatim]
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
1778 @code{side-position-interface}
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?)
1787 Debajo de esta descripción, la variable @code{padding} (relleno) se describe como
1792 (dimensión, en espacios de pentagrama)
1794 Añadir esta cantidad de espacio adicional entre objetos que están unos junto a otros.
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:
1803 \once \override Voice.Fingering #'padding = #3
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:
1809 @lilypond[quote,relative=2,fragment,verbatim]
1810 \once \override Voice.Fingering #'padding = #3
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
1822 El grabador Fingering_engraver es parte de los contextos: @dots{} @internalsref{Voice}
1826 @node Objects connected to the input
1827 @subsection Objects connected to the input
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
1835 @lilypond[relative=2,fragment,verbatim,ragged-right]
1838 \tweak #'color #red d
1840 \tweak #'duration-log #1 a
1841 >4-\tweak #'padding #10 -.
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
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
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
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).
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
1865 \tweak #'color #red c4
1869 no cambia el color. Consulte @ref{Displaying music expressions} para ver más
1873 @node Using Scheme code instead of \tweak
1874 @subsection Using Scheme code instead of @code{\tweak}
1876 La principal desventaja de @code{\tweak} es su inflexibilidad
1877 sintáctica. Por ejemplo, lo siguiente produce un error de sintaxis.
1880 F = \tweak #'font-size #-3 -\flageolet
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{_}.
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.
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)))
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}.
1919 @node \set versus \override
1920 @subsection @code{\set} vs. @code{\override}
1922 Hemos visto dos formas de cambiar las propiedades: @code{\set} y
1923 @code{\override}. De hecho, en realidad existen dos clases diferentes de
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}.
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}.
1943 Realmente, @code{\override} es un atajo;
1946 \override @var{contexto}.@var{nombre} #'@var{propiedad} = #@var{valor}
1950 es más o menos equivalente a
1952 @c leave this long line -gp
1954 \set @var{contexto}.@var{nombre} #'@var{propiedad} = #(cons (cons '@var{propiedad} @var{valor}) <valor previo de @var{contexto})
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.
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}).
1970 @node Difficult tweaks
1971 @subsection Difficult tweaks
1973 Hay ciertos tipos de ajustes difíciles.
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 saltos 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.
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.
1995 En el ejemplo siguiente, definimos un procedimiento
1996 @code{my-callback}. Este procedimiento
2000 determina si hemos sido divididos en un salto de línea
2002 si es así, recupera todos los objetos divididos
2004 comprueba si nosotros somos el último de los objetos divididos
2006 si es así, establece @code{extra-offset}.
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.
2012 @lilypond[quote,verbatim,ragged-right]
2013 #(define (my-callback grob)
2015 ; have we been split?
2016 (orig (ly:grob-original grob))
2018 ; if yes, get the split pieces (our siblings)
2019 (siblings (if (ly:grob? orig)
2020 (ly:spanner-broken-into orig) '() )))
2022 (if (and (>= (length siblings) 2)
2023 (eq? (car (last-pair siblings)) grob))
2024 (ly:grob-set-property! grob 'extra-offset '(-2 . 5)))))
2027 \override Tie #'after-line-breaking =
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}.
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.
2048 #"Score.NonMusicalPaperColumn" % Nombre del Grob u objeto gráfico
2049 #'line-break-system-details % Nombre de la propiedad
2050 #'((next-padding . 20)) % Valor
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}.