1 @c -*- coding: utf-8; mode: texinfo; -*-
2 @c This file is part of lilypond.tely
4 Translation of GIT committish: 23542761090f167ad42dbff7ef11d44a9c1374ac
6 When revising a translation, copy the HEAD committish of the
7 version that you are working on. See TRANSLATION for details.
12 @node Working on LilyPond projects
13 @chapter Working on LilyPond projects
15 Esta sección explica cómo resolver o evitar ciertos problemas comunes.
16 Si tiene experiencia en programación muchos de estos
17 consejos pueden parecer obvios, pero aún así le recomendamos
18 que lea este capítulo.
22 * Suggestions for writing LilyPond files::
23 * When things don't work::
28 @node Suggestions for writing LilyPond files
29 @section Suggestions for writing LilyPond files
31 En este momento está preparado para comenzar a escribir archivos de
32 LilyPond más grandes -- no sólo los pequeños ejemplos que aparecen en
33 el tutorial, sino piezas completas --. Pero ¿cómo debe proceder para
36 En la medida en que LilyPond entienda sus archivos y produzca la
37 salida que usted pretendía, realmente no importa mucho qué aspecto
38 tengan sus archivos. Sin embargo existen algunas otras cosas a tener
39 en cuenta cuando se escriben archivos de LilyPond.
42 @item ¿Qué ocurre si comete un fallo? La estructura de un archivo
43 de LilyPond puede hacer que ciertos errores se hagan más fáciles (o
44 más difíciles) de encontrar.
46 @item ¿Qué ocurre si quiere compartir sus archivos con otras personas?
47 De hecho, ¿y si quiere alterar sus propios archivos después de algunos
48 años? Algunos archivos de LilyPond se comprenden a primera vista;
49 otros pueden tenerle rascándose la cabeza durante una hora.
51 @item ¿Qué ocurre si quiere actualizar su archivo de LilyPond para poderlo usar con
52 una versión más reciente del programa? La sintaxis de la entrada se
53 modifica de forma ocasional según LilyPond se va perfeccionando. Casi
54 todos los cambios se pueden hacer de forma automática con
55 @code{convert-ly}, pero algunos podrían necesitar de una ayuda manual.
56 Los archivos de LilyPond se pueden estructurar para que sean más
57 fáciles (o más difíciles) de actualizar.
61 * General suggestions::
62 * Typesetting existing music::
64 * Saving typing with variables and functions::
69 @node General suggestions
70 @subsection General suggestions
72 Presentamos algunas sugerencias que le pueden servir de ayuda para evitar
76 @item @strong{Incluya los números de @code{\version} en todos los archivos}. Dese cuenta de que todas las
77 plantillas contienen información sobre la @code{\version}. Le
78 recomendamos mucho que siempre incluya la @code{\version}, sin
79 importar cuán pequeño pueda ser su archivo. Desde la experiencia
80 personal podemos decirle que es bastante frustrante intentar recordar
81 el número de versión de LilyPond que estaba usando hace unos años.
82 @code{convert-ly} requiere que declare qué versión de LilyPond
85 @item @strong{Incluya comprobaciones}: @rglos{baritone},
86 @ruser{Absolute octave entry}. Si incluye comprobaciones de vez en cuando, en
87 caso de que cometa un error podrá localizarlo mucho más rápidamente.
88 ¿Con qué frecuencia es @q{de vez en cuando}? Depende de la
89 complejidad de la música. Para una música muy sencilla, quizá tan
90 sólo una o dos veces. Para una música muy compleja, quizá a cada
93 @item @strong{Un compás por cada línea de texto}. Si hay algo muy complicado, ya sea
95 o en la salida que desea producir, a menudo conviene escribir un solo compás
96 por cada línea. El ahorro en espacio de pantalla que se obtiene al amontonar ocho compases por línea no merece la pena
97 si luego tiene que @q{depurar} los archivos.
99 @item @strong{Comente los archivos}. Utilice o números de compás (de vez en cuando)
101 referencias a temas musicales (@q{segundo tema de los violines,} @q{cuarta
102 variación,} etc.). Puede que no necesite comentarios cuando introduce una pieza por vez primera,
103 pero si quiere volver a ella o modificar algo al cabo de dos o tres años,
104 y también si le pasa la fuente a un amigo,
106 determinar sus intenciones o de qué manera estaba estructurado el archivo
107 si no le añadió los comentarios.
109 @item @strong{Aplique márgenes a las llaves}. Muchos problemas están causados por una
111 en el número de @code{@{} y @code{@}}.
113 @item @strong{Escriba las duraciones explícitamente} al comienzo de las secciones
114 e identificadores. Si especifica @code{c4 d e} al principio de una frase
115 (en lugar de sólo @code{c d e}) se puede ahorrar problemas
116 si reelabora la música más tarde.
118 @item @strong{Separe los trucos} de las definiciones musicales. Consulte
119 @ref{Saving typing with variables and functions} y
125 @node Typesetting existing music
126 @subsection Typesetting existing music
128 Si está introduciendo música a partir de una partitura existente (es decir, tipografiando una hoja
129 de música ya impresa),
133 @item Introduzca un sistema del manuscrito (la copia física) cada vez (pero mantenga
134 la práctica de escribir un compás por línea de texto), y compruebe
135 cada sistema cuando lo haya terminado. Puede usar la instrucción
136 @code{showLastLength} para acelerar el proceso -- ver @ruser{Skipping
137 corrected music} -- .
139 @item Defina @code{mBreak = @{ \break @}} e inserte @code{\mBreak}
140 dentro del archivo de entrada donde el manuscrito tenga un saldo de línea. De esta forma
141 le resultará mucho más fácil comparar la música de LilyPond con la original.
142 Cuando haya terminado de revisar su partitura podrá
143 definir @code{mBreak = @{ @}} para quitar todos esos saltos de línea. Así
144 permitirá a LilyPond colocar los saltos donde éste lo estime
151 @subsection Large projects
153 Al trabajar en proyecto grande se hace esencial tener una estructura clara
154 en los archivos de LilyPond
158 @item @strong{Utilice un identificador para cada voz}, con un mínimo de
159 estructura dentro de la definición. La estructura de la sección
160 @code{\score} es la que cambiará con mayor probabilidad; por contra, es
161 extremadamente improbable que cambie la definición de @code{violin} en
162 versiones nuevas de LilyPond.
165 violin = \relative c'' @{
178 @item @strong{Separe los trucos de las definiciones musicales}.
179 Ya se mencionó con anterioridad, pero para proyectos grandes es vital.
180 Quizá tengamos que cambiar la definición de @code{fluegop}, pero en ese
181 caso sólo lo tendremos que hacer una vez, y aún podremos evitar tocar
182 nada dentro de @code{violin}.
186 \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p @}
187 violin = \relative c'' @{
195 @node Saving typing with variables and functions
196 @subsection Saving typing with variables and functions
199 @cindex identificadores
201 Llegado a este punto, usted ha visto cosas de este tipo:
203 @lilypond[quote,verbatim,ragged-right]
204 hornNotes = \relative c'' { c4 b dis c }
212 Incluso se dará cuenta de que esto puede ser útil en música minimalista:
214 @lilypond[quote,verbatim,ragged-right]
215 fragA = \relative c'' { a4 a8. b16 }
216 fragB = \relative c'' { a8. gis16 ees4 }
217 violin = \new Staff { \fragA \fragA \fragB \fragA }
225 Sin embargo también puede usar estos identificadores (que también se conocen como
226 variables, macros o instrucciones definidas por el usuario) para hacer trucos:
228 @lilypond[quote,verbatim,ragged-right]
229 dolce = \markup{ \italic \bold dolce }
230 padText = { \once \override TextScript #'padding = #5.0 }
231 fthenp=_\markup{ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p }
232 violin = \relative c'' {
234 c4._\dolce b8 a8 g a b |
236 c4.^"hi there!" d8 e' f g d |
237 c,4.\fthenp b8 c4 c-. |
244 \layout{ragged-right=##t}
248 Obviamente estos identificadores son útiles para ahorrar tecleo.
249 Pero son dignos de tener en cuenta incluso si se van a utilizar una sola vez:
250 reducen la complejidad. Examinemos
251 el ejemplo anterior reescrito sin ningún identificador.
252 Encontrará que es mucho más difícil de leer, sobre todo
256 violin = \relative c'' @{
258 c4._\markup@{ \italic \bold dolce @} b8 a8 g a b |
259 \once \override TextScript #'padding = #5.0
260 c4.^"hi there!" d8 e' f g d |
261 c,4.\markup@{ \dynamic f \italic \small @{ 2nd @}
262 \hspace #0.1 \dynamic p @} b8 c4 c-. |
267 Hasta ahora hemos contemplado la sustitución estática: cuando LilyPond
268 se encuentra con @code{\padText}, lo sustituye con aquello que
269 hemos definido que sea (es decir, todo lo que está a la derecha de
272 LilyPond también puede manejar sustituciones no estáticas (piense en ellas
275 @lilypond[quote,verbatim,ragged-right]
277 #(define-music-function (parser location padding) (number?)
279 \once \override TextScript #'padding = #$padding
287 c4^"piu mosso" fis a g
291 La utilización de identificadores también es una buena forma de reducir el trabajo si
292 la sintaxis de entrada de LilyPond cambia (véase @ref{Updating old files}). Si
293 tiene una sola definición (como p.ej. @code{\dolce}) para todos sus
294 archivos (ver @ref{Style sheets}), y después la sintaxis se modifica, sólo tendrá
295 que actualizar su definición @code{\dolce} única,
296 en lugar de tener que hacer cambios en cada uno de los archivos @code{.ly}.
300 @subsection Style sheets
302 La salida que produce LilyPond se puede modificar profundamente; consulte
303 @ref{Tweaking output} para leer detalles sobre este asunto. Pero ¿qué ocurre si tiene muchos
304 archivos a los que les quiere aplicar sus propios trucos? O ¿qué ocurre si, sencillamente,
305 quiere separar los trucos de la propia música? Todo esto
306 es bastante fácil de conseguir.
308 Veamos un ejemplo. No se preocupe si no entiende
309 las partes que tienen todos los @code{#()}. Esto se explicará en
310 @ref{Advanced tweaks with Scheme}.
312 @lilypond[quote,verbatim,ragged-right]
313 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
314 #:line(#:dynamic "mp" #:text #:italic "dolce" )))
315 tempoMark = #(define-music-function (parser location markp) (string?)
317 \once \override Score . RehearsalMark #'self-alignment-X = #left
318 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
319 \mark \markup { \bold $markp }
324 a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
325 \tempoMark "Poco piu mosso"
326 cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
330 Existen varios problemas con la salida que se superpone; los arreglaremos utilizando
331 las técnicas descritas en @ref{Moving objects}. Pero también haremos algo respecto a
332 las definiciones @code{mpdolce} y @code{tempoMark}. Éstas producen la salida que
333 deseamos, pero quizá las querríamos utilizar en otra pieza.
334 Podríamos simplemente copiarlas y pegarlas al principio de cada archivo,
335 pero sería bastante molesto. También hace que se queden las definiciones
336 a la vista dentro de nuestros archivos de música, y yo personalmente encuentro
337 todos los @code{#()} bastante poco estéticos. Los vamos a esconder dentro de otro archivo:
340 %%% guardar esto en un archivo de nombre "definiciones.ly"
341 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
342 #:line(#:dynamic "mp" #:text #:italic "dolce" )))
343 tempoMark = #(define-music-function (parser location markp) (string?)
345 \once \override Score . RehearsalMark #'self-alignment-X = #left
346 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
347 \mark \markup @{ \bold $markp @}
351 Ahora modificaremos la música (guardemos este archivo como @file{"musica.ly"}).
353 @c We have to do this awkward example/lilypond-non-verbatim
354 @c because we can't do the \include stuff in the manual.
357 \include "definiciones.ly"
361 a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
362 \once \override Score.RehearsalMark #'padding = #2.0
363 \tempoMark "Poco piu mosso"
364 cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
368 @lilypond[quote,ragged-right]
369 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
370 #:line(#:dynamic "mp" #:text #:italic "dolce" )))
371 tempoMark = #(define-music-function (parser location markp) (string?)
373 \once \override Score . RehearsalMark #'self-alignment-X = #left
374 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
375 \mark \markup { \bold $markp }
380 a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
381 \once \override Score.RehearsalMark #'padding = #2.0
382 \tempoMark "Poco piu mosso"
383 cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
387 Eso tiene mejor aspecto, pero haremos algunos cambios más. El glissando es difícil
388 de ver, así que lo haremos más grueso y lo acercaremos a las cabezas de las notas. Pondremos
389 la indicación metronómica encima de la clave, en lugar de ir encima de la primera
390 nota. Y por último, mi profesor de composición odia las indicaciones de compás @q{C},
391 así que la convertiremos en @q{4/4}.
393 Sin embargo, no debe cambiar el archivo @file{musica.ly}. Sustituya nuestro archivo @file{definiciones.ly}
398 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
399 #:line( #:dynamic "mp" #:text #:italic "dolce" )))
400 tempoMark = #(define-music-function (parser location markp) (string?)
402 \once \override Score . RehearsalMark #'self-alignment-X = #left
403 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
404 \mark \markup @{ \bold $markp @}
409 \override MetronomeMark #'extra-offset = #'(-9 . 0)
410 \override MetronomeMark #'padding = #'3
413 \override TimeSignature #'style = #'numbered
416 \override Glissando #'thickness = #3
417 \override Glissando #'gap = #0.1
422 @lilypond[quote,ragged-right]
423 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
424 #:line( #:dynamic "mp" #:text #:italic "dolce" )))
425 tempoMark = #(define-music-function (parser location markp) (string?)
427 \once \override Score . RehearsalMark #'self-alignment-X = #left
428 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
429 \mark \markup { \bold $markp }
434 \override MetronomeMark #'extra-offset = #'(-9 . 0)
435 \override MetronomeMark #'padding = #'3
438 \override TimeSignature #'style = #'numbered
441 \override Glissando #'thickness = #3
442 \override Glissando #'gap = #0.1
448 a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
449 \once \override Score.RehearsalMark #'padding = #2.0
450 \tempoMark "Poco piu mosso"
451 cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
455 ¡Eso tiene un aspecto mucho mejor! Ahora suponga que quiere publicar esta
456 pieza. A mi profesor de composición no le gustan las indicaciones de compás @q{C},
457 pero yo les tengo cierto cariño. Copiaremos el archivo
458 actual @file{definiciones.ly} a @file{publicar-web.ly} y modificaremos
459 éste. Como el propósito de esta música es producir un PDF que va a mostrarse
460 en la pantalla, también vamos a aumentar el
461 tamaño general de la salida.
465 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
466 #:line( #:dynamic "mp" #:text #:italic "dolce" )))
467 tempoMark = #(define-music-function (parser location markp) (string?)
469 \once \override Score . RehearsalMark #'self-alignment-X = #left
470 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
471 \mark \markup @{ \bold $markp @}
474 #(set-global-staff-size 23)
477 \override MetronomeMark #'extra-offset = #'(-9 . 0)
478 \override MetronomeMark #'padding = #'3
483 \override Glissando #'thickness = #3
484 \override Glissando #'gap = #0.1
489 @lilypond[quote,ragged-right]
490 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
491 #:line( #:dynamic "mp" #:text #:italic "dolce" )))
492 tempoMark = #(define-music-function (parser location markp) (string?)
494 \once \override Score . RehearsalMark #'self-alignment-X = #left
495 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
496 \mark \markup { \bold $markp }
499 #(set-global-staff-size 23)
502 \override MetronomeMark #'extra-offset = #'(-9 . 0)
503 \override MetronomeMark #'padding = #'3
506 \override Glissando #'thickness = #3
507 \override Glissando #'gap = #0.1
513 a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
514 \once \override Score.RehearsalMark #'padding = #2.0
515 \tempoMark "Poco piu mosso"
516 cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
520 Ahora, en la música, simplemente sustituyo
521 @code{\include "definiciones.ly"} por
522 @code{\include "publicar-web.ly"}. Por supuesto, podríamos hacer esto aún más
523 práctico. Podríamos hacer un archivo @file{definiciones.ly} que contuviera
524 solamente las definiciones de @code{mpdolce} y @code{tempoMark}, un archivo
525 @file{web-publish.ly} que contuviera solamente la sección @code{\layout}
526 que se mostró en el ejemplo, y un archivo @file{universidad.ly} que contendría
527 solamente los trucos para producir la salida que le gusta a mi
528 profesor. La parte más alta de @file{musica.ly} tendría entonces este aspecto:
531 \include "definiciones.ly"
533 %%% ¡Quitar el comentario de una sola de estas líneas!
534 \include "publicar-web.ly"
535 %\include "universidad.ly"
538 Este enfoque puede ser útil incluso si va a producir sólo un conjunto de particellas.
539 Yo utilizo media docena de archivos de
540 @q{hojas de estilo} para mis proyectos. Comienzo todos los archivos de música con
541 @code{\include "../global.ly"}, que contiene
545 \version @w{"@version{}"}
546 #(ly:set-option 'point-and-click #f)
547 \include "../iniciar/iniciar-definiciones.ly"
548 \include "../iniciar/iniciar-disposicion.ly"
549 \include "../iniciar/iniciar-cabeceras.ly"
550 \include "../iniciar/iniciar-papel.ly"
553 @node When things don't work
554 @section When things don't work
557 * Updating old files::
558 * Troubleshooting (taking it all apart)::
562 @node Updating old files
563 @subsection Updating old files
565 La sintaxis de la entrada de LilyPond cambia de manera ocasional. A medida que el propio
566 LilyPond mejora, la sintaxis (el lenguaje de la entrada) se modifica en consonancia. A
567 veces estos cambios se hacen para conseguir que la entrada sea más fácil de leer y escribir, y
568 otras veces estos cambios son para dar cabida a nuevas funcionalidades de LilyPond.
570 LilyPond lleva incorporado un archivo que facilita esta actualización:
571 @code{convert-ly}. Para ver detalles sobre cómo ejecutar este programa, consulte
572 @rprogram{Updating files with convert-ly}.
574 Desgraciadamente @code{convert-ly} no puede tratar todos los cambios en la entrada.
575 Se ocupa de los cambios sencillos de búsqueda y sustitución (como @code{raggedright}
576 que se convierte en @code{ragged-right}), pero algunos cambios son demasiado
577 complicados. Los cambios de sintaxis que @code{convert-ly} es incapaz de manejar
578 se relacionan en @rprogram{Updating files with convert-ly}.
580 Por ejemplo, en la versión 2.4 y anteriores de LilyPond,
581 los acentos y las letras no inglesas se introducían utilizando
582 LaTeX: por ejemplo, @code{No\"el} (que significa @q{Navidad} en francés).
583 En LilyPond 2.6 y siguientes, el carácter especial @code{ë}
584 debe introducirse directamente en el archivo de LilyPond como un carácter UTF-8.
585 @code{convert-ly} no puede cambiar todos los caracteres especiales
586 de LaTeX a caracteres de UTF-8; tendrá que actualizar manualmente
587 sus archivos de LilyPond antiguos.
590 @node Troubleshooting (taking it all apart)
591 @subsection Troubleshooting (taking it all apart)
593 Antes o después escribirá un archivo que LilyPond no podrá compilar.
594 Los mensajes que LilyPond proporciona pueden ayudarle a encontrar el
595 error, pero en muchos casos tendrá que llevar a cabo algún tipo de
596 investigación para determinar el origen del problema.
598 Las herramientas más poderosas para este cometido son el
599 comentario de una sola línea (indicado por @code{%}) y el comentario de bloque
600 (indicado por @code{%@{ ... %@}}). Si no sabe dónde está
601 el problema, comience convirtiendo grandes secciones del
602 archivo de entrada en un comentario. Después de eliminar una
603 sección convirtiéndola en un comentario, pruebe a compilar el
604 archivo otra vez. Si funciona, entonces el problema debía estar
605 en la porción que había eliminado. Si no funciona, continúe eliminando material
606 (transformándolo en comentarios) hasta que tenga algo que funcione.
608 En un caso extremo podría terminar con sólo
622 (en otras palabras: un archivo sin música)
624 Si ocurre esto, no abandone. Descomente un trozo pequeño -- digamos
625 la parte del bajo -- y observe si funciona. Si no es así,
626 transforme en comentarios toda la música del bajo (pero deje el
627 @code{\bajo} de la sección @code{\score} no comentado.
630 bajo = \relative c' @{
638 Ahora empiece poco a poco descomentando cada vez más fracciones de la
639 parte del @code{bajo} hasta que encuentre la línea del problema.
641 Otra técnica de depuración muy útil es la construcción de
642 @ref{Minimal examples}.
645 @node Minimal examples
646 @subsection Minimal examples
648 Un ejemplo mínimo es un ejemplo tan pequeño como sea posible. Estos
649 ejemplos son mucho más fáciles de comprender que los ejemplos largos. Los ejemplos
650 mínimos se utilizan para
653 @item Informes de fallo
654 @item Solicitudes de ayuda a las listas de correo
655 @item Añadir ejemplos al @uref{http://lsr@/.dsi@/.unimi@/.it/,Repositorio de Fragmentos de Código de LilyPond}
659 Para construir un ejemplo que sea lo más pequeño posible, la regla es
660 bastante simple: quite todo lo que no sea necesario. Al tratar de
661 quitar partes innecesarias de un archivo, es una buena idea convertir líneas en
662 comentarios en vez de borrarlas. De esta forma, si descubre que en realidad
663 sí @emph{necesitaba} algunas de estas líneas, podrá descomentarlas y no tendrá que
664 teclearlas de nuevo partiendo de cero.
666 Existen dos excepciones a la regla del @qq{lo más pequeño posible}:
669 @item Incluya el número de @code{\version}.
670 @item Si puede, ponga @code{\paper@{ ragged-right=##t @}} al principio del ejemplo.
674 En resumen, el objetivo de un ejemplo mínimo es que sea fácil de leer:
677 @item Evite usar notas, tonalidades o compases demasiado complicados, a no ser que quiera
678 demostrar algo sobre el comportamiento de estos elementos precisamente.
679 @item No use instrucciones @code{\override} a no ser que ése sea el propósito
684 @node Scores and parts
685 @section Scores and parts
687 En música orquestal, todas las notas se imprimen dos veces. Una vez
688 en las particellas para los músicos, y otra para la partitura del director.
689 Los identificadores se pueden usar para evitar la duplicación del trabajo.
690 La música se escribe una vez y se almacena en una variable.
691 El contenido de dicha variable se usa después para generar tanto la particella como la partitura del director.
693 Es muy conveniente definir las notas en un archivo especial. Por
694 ejemplo, supongamos que el archivo @file{trompa.ly} contiene la
695 siguiente parte de un dúo para trompa y fagot:
698 notasTrompa = \relative c @{
705 Luego se hace una particella escribiendo en un archivo lo siguiente
710 instrument = "Trompa en Fa"
714 \transpose f c' \notasTrompa
725 sustituye el contenido de @file{trompa.ly} en esta posición dentro del
726 archivo, así que @code{notasTrompa} se define con posterioridad. La
727 instrucción @code{\transpose f@tie{}c'} indica que el argumento
728 constituido por @code{\notasTrompa} se debe transponer una quinta
729 hacia arriba. Lo que suena como @code{f} se escribe como @code{c'},
730 lo que corresponde con el tono de afinación de una trompa normal
731 en@tie{}Fa. La transposición se puede ver en la siguiente salida
733 @lilypond[quote,ragged-right]
734 \transpose f c' \relative c {
740 En piezas para conjunto, con frecuencia una de las voces no suena durante muchos compases.
741 Esto queda denotado por un silencio especial, el silencio multicompás.
742 Se introduce con una @code{R} mayúscula seguida de una duración
743 (@code{1}@tie{}en el caso de la redonda, @code{2}@tie{}en el caso de una blanca,
744 etc.). Multiplicando la duración se pueden construir
745 silencios más largos. Por ejemplo, este silencio ocupa
746 3@tie{}compases de 2/4
752 Cuando se imprime la particella tienen que comprimirse los silencios
753 multicompás. Esto se hace estableciendo una variable en tiempo de ejecución
756 \set Score.skipBars = ##t
760 Esta instrucción establece el valor de la propiedad @code{skipBars} en el
761 contexto de @code{Score} a verdadero (@code{##t}). Anteponiendo el silencio y
762 esta opción a la música anterior, llegamos al siguiente resultado
764 @lilypond[quote,ragged-right]
765 \transpose f c' \relative c {
767 \set Score.skipBars = ##t
774 Esta partitura se hace combinando toda la música junta. Suponiendo
775 que la otra voz se encuentra dentro de @code{notasFagot} en el archivo
776 @file{fagot.ly}, la partitura se hace con
783 \new Staff \notasTrompa
784 \new Staff \notasFagot
791 @lilypond[quote,ragged-right]
799 r4 d,8 f | gis4 c | b bes |
800 a8 e f4 | g d | gis f