]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/es/user/working.itely
4c848bc6b320de132274bd68efbaa873d0b0c9f0
[lilypond.git] / Documentation / es / user / working.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: 0f35c951dfcd648c512d29848350ff7df3dc5853
5
6     When revising a translation, copy the HEAD committish of the
7     version that you are working on.  See TRANSLATION for details.
8 @end ignore
9
10 @c \version "2.12.0"
11
12 @node Working on LilyPond projects
13 @chapter Working on LilyPond projects
14
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.
19
20
21 @menu
22 * Suggestions for writing LilyPond files::
23 * When things don't work::
24 * Scores and parts::
25 @end menu
26
27
28 @node Suggestions for writing LilyPond files
29 @section Suggestions for writing LilyPond files
30
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
34 hacerlo?
35
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.
40
41 @itemize
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.
45
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.
50
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.
58
59 @end itemize
60
61 @menu
62 * General suggestions::
63 * Typesetting existing music::
64 * Large projects::
65 * Saving typing with variables and functions::
66 * Style sheets::
67 @end menu
68
69
70 @node General suggestions
71 @subsection General suggestions
72
73 Presentamos algunas sugerencias que le pueden servir de ayuda para evitar
74 o corregir problemas:
75
76 @itemize
77 @item @strong{Incluya los números de @code{\version} en todos los archivos}.  Dese cuenta de que todas las
78 plantillas contienen información sobre la @code{\version}.  Le
79 recomendamos mucho que siempre incluya la @code{\version}, sin
80 importar cuán pequeño pueda ser su archivo.  Desde la experiencia
81 personal podemos decirle que es bastante frustrante intentar recordar
82 el número de versión de LilyPond que estaba usando hace unos años.
83 @code{convert-ly} requiere que declare qué versión de LilyPond
84 utilizó.
85
86 @item @strong{Incluya comprobaciones}: @ruser{Bar and bar number checks},
87 @ruser{Octave checks}.  Si incluye comprobaciones de vez en cuando, en
88 caso de que cometa un error podrá localizarlo mucho más rápidamente.
89 ¿Con qué frecuencia es @q{de vez en cuando}?  Depende de la
90 complejidad de la música.  Para una música muy sencilla, quizá tan
91 sólo una o dos veces.  Para una música muy compleja, quizá a cada
92 compás.
93
94 @item @strong{Un compás por cada línea de texto}.  Si hay algo muy complicado, ya sea
95 en la propia música o en la salida que desea producir, a menudo
96 conviene escribir un solo compás por cada línea.  El ahorro en espacio
97 de pantalla que se obtiene al amontonar ocho compases por línea no
98 merece la pena si luego tiene que @q{depurar} los archivos.
99
100 @item @strong{Comente los archivos}.  Utilice o números de compás (de vez en cuando)
101 o referencias a temas musicales (@q{segundo tema de los violines,}
102 @q{cuarta variación,} etc.).  Puede que no necesite comentarios cuando
103 introduce una pieza por vez primera, pero si quiere volver a ella o
104 modificar algo al cabo de dos o tres años, y también si le pasa la
105 fuente a un amigo, será todo un desafío determinar sus intenciones o
106 de qué manera estaba estructurado el archivo si no le añadió los
107 comentarios.
108
109 @item @strong{Aplique márgenes a las llaves}.  Muchos problemas están causados por una
110 falta de equilibrio en el número de @code{@{} y @code{@}}.
111
112 @item @strong{Escriba las duraciones explícitamente} al comienzo de las secciones
113 e identificadores.  Si especifica @code{c4 d e} al principio de una
114 frase (en lugar de sólo @code{c d e}) se puede ahorrar problemas si
115 reelabora la música más tarde.
116
117 @item @strong{Separe los trucos} de las definiciones musicales.  Consulte
118 @ref{Saving typing with variables and functions} y
119 @ref{Style sheets}.
120
121 @end itemize
122
123
124 @node Typesetting existing music
125 @subsection Typesetting existing music
126
127 Si está introduciendo música a partir de una partitura existente (es
128 decir, tipografiando una hoja de música ya impresa),
129
130 @itemize
131
132 @item Introduzca un sistema del manuscrito (la copia física) cada vez (pero mantenga
133 la práctica de escribir un compás por línea de texto), y compruebe
134 cada sistema cuando lo haya terminado.  Puede usar las instrucciones
135 @code{showLastLength} o @code{showFirstLength} para acelerar el
136 proceso -- ver @ruser{Skipping corrected music} -- .
137
138 @item Defina @code{mBreak = @{ \break @}} e inserte @code{\mBreak}
139 dentro del archivo de entrada donde el manuscrito tenga un saldo de
140 línea.  De esta forma le resultará mucho más fácil comparar la música
141 de LilyPond con la original.  Cuando haya terminado de revisar su
142 partitura podrá definir @code{mBreak = @{ @}} para quitar todos esos
143 saltos de línea.  Así permitirá a LilyPond colocar los saltos donde
144 éste lo estime más oportuno.
145
146 @item Al escribir una parte para un instrumento transpositor dentro de una
147 variable, se recomienda que las notas estén envueltas dentro de
148
149 @example
150 \transpose c altura-natural @{...@}
151 @end example
152 (donde @code{altura-natural} es la afinación natural del instrumento)
153 de forma que la música dentro de la variable esté realmente en Do
154 mayor.  Después podemos volver a transportarlas en sentido inverso
155 cuando se utiliza la variable, si es necesario, pero quizá no queramos
156 hacerlo (p.ej., al imprimir una partitura en afinación de concierto,
157 al convertir una parte de trombón de clave de Sol a clave de Fa,
158 etc.).  Es menos probable cometer errores en los transportes si toda
159 la música que está dentro de las variables se encuentra en un tono
160 coherente.
161
162 Asimismo, haga los transportes exclusivamente hacia o desde Do mayor.
163 Esto significa que aparte de ésta, las únicas tonalidades que usaremos
164 serán los tonos de afinación de los instrumentos transpositores: bes
165 para una trompeta en Si bemol, aes para un clarinete en La bemol, etc.
166
167 @end itemize
168
169
170 @node Large projects
171 @subsection Large projects
172
173 Al trabajar en proyecto grande se hace esencial tener una estructura clara
174 en los archivos de LilyPond
175
176 @itemize
177
178 @item @strong{Utilice un identificador para cada voz}, con un mínimo de
179 estructura dentro de la definición.  La estructura de la sección
180 @code{\score} es la que cambiará con mayor probabilidad; por contra, es
181 extremadamente improbable que cambie la definición de @code{violin} en
182 versiones nuevas de LilyPond.
183
184 @example
185 violin = \relative c'' @{
186 g4 c'8. e16
187 @}
188 ...
189 \score @{
190   \new GrandStaff @{
191     \new Staff @{
192       \violin
193     @}
194   @}
195 @}
196 @end example
197
198 @item @strong{Separe los trucos de las definiciones musicales}.
199 Ya se mencionó con anterioridad, pero para proyectos grandes es vital.
200 Quizá tengamos que cambiar la definición de @code{fluegop}, pero en ese
201 caso sólo lo tendremos que hacer una vez, y aún podremos evitar tocar
202 nada dentro de @code{violin}.
203
204 @example
205 fluegop = _\markup@{
206   \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p @}
207 violin = \relative c'' @{
208 g4\fluegop c'8. e16
209 @}
210 @end example
211
212 @end itemize
213
214
215 @node Saving typing with variables and functions
216 @subsection Saving typing with variables and functions
217
218 @cindex variables
219 @cindex identificadores
220
221 Llegado a este punto, usted ha visto cosas de este tipo:
222
223 @lilypond[quote,verbatim,ragged-right]
224 hornNotes = \relative c'' { c4 b dis c }
225 \score {
226   {
227     \hornNotes
228   }
229 }
230 @end lilypond
231
232 Incluso se dará cuenta de que esto puede ser útil en música
233 minimalista:
234
235 @lilypond[quote,verbatim,ragged-right]
236 fragmentA = \relative c'' { a4 a8. b16 }
237 fragmentB = \relative c'' { a8. gis16 ees4 }
238 violin = \new Staff { \fragmentA \fragmentA \fragmentB \fragmentA }
239 \score {
240   {
241     \violin
242   }
243 }
244 @end lilypond
245
246 Sin embargo también puede usar estos identificadores (que también se
247 conocen como variables, macros o instrucciones definidas por el
248 usuario) para hacer trucos:
249
250 @lilypond[quote,verbatim,ragged-right]
251 dolce = \markup{ \italic \bold dolce }
252 padText = { \once \override TextScript #'padding = #5.0 }
253 fthenp=_\markup{ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p }
254 violin = \relative c'' {
255   \repeat volta 2 {
256     c4._\dolce b8 a8 g a b |
257     \padText
258     c4.^"hi there!" d8 e' f g d |
259     c,4.\fthenp b8 c4 c-. |
260   }
261 }
262 \score {
263   {
264     \violin
265   }
266 \layout{ragged-right=##t}
267 }
268 @end lilypond
269
270 Obviamente estos identificadores son útiles para ahorrar tecleo.  Pero
271 son dignos de tener en cuenta incluso si se van a utilizar una sola
272 vez: reducen la complejidad.  Examinemos el ejemplo anterior reescrito
273 sin ningún identificador.  Encontrará que es mucho más difícil de
274 leer, sobre todo la última línea.
275
276 @example
277 violin = \relative c'' @{
278   \repeat volta 2 @{
279     c4._\markup@{ \italic \bold dolce @} b8 a8 g a b |
280     \once \override TextScript #'padding = #5.0
281     c4.^"hi there!" d8 e' f g d |
282     c,4.\markup@{ \dynamic f \italic \small @{ 2nd @}
283       \hspace #0.1 \dynamic p @} b8 c4 c-. |
284   @}
285 @}
286 @end example
287
288 @c TODO Replace the following with a better example  -td
289 @c Skylining handles this correctly without padText
290
291 Hasta ahora hemos contemplado la sustitución estática: cuando LilyPond
292 se encuentra con @code{\padText}, lo sustituye con aquello que
293 hemos definido que sea (es decir, todo lo que está a la derecha de
294 @code{padtext=}).
295
296 LilyPond también puede manejar sustituciones no estáticas (piense en
297 ellas como en funciones).
298
299 @lilypond[quote,verbatim,ragged-right]
300 padText =
301 #(define-music-function (parser location padding) (number?)
302   #{
303     \once \override TextScript #'padding = #$padding
304   #})
305
306 \relative c''' {
307   c4^"piu mosso" b a b
308   \padText #1.8
309   c4^"piu mosso" d e f
310   \padText #2.6
311   c4^"piu mosso" fis a g
312 }
313 @end lilypond
314
315 La utilización de identificadores también es una buena forma de
316 reducir el trabajo si la sintaxis de entrada de LilyPond cambia (véase
317 @ref{Updating old files}).  Si tiene una sola definición (como
318 p.ej. @code{\dolce}) para todos sus archivos (ver @ref{Style sheets}),
319 y después la sintaxis se modifica, sólo tendrá que actualizar su
320 definición @code{\dolce} única, en lugar de tener que hacer cambios en
321 cada uno de los archivos @code{.ly}.
322
323
324 @node Style sheets
325 @subsection Style sheets
326
327 La salida que produce LilyPond se puede modificar profundamente;
328 consulte @ref{Tweaking output} para leer detalles sobre este asunto.
329 Pero ¿qué ocurre si tiene muchos archivos a los que les quiere aplicar
330 sus propios trucos?  O ¿qué ocurre si, sencillamente, quiere separar
331 los trucos de la propia música?  Todo esto es bastante fácil de
332 conseguir.
333
334 Veamos un ejemplo.  No se preocupe si no entiende
335 las partes que tienen todos los @code{#()}.  Esto se explicará en
336 @ref{Advanced tweaks with Scheme}.
337
338 @lilypond[quote,verbatim,ragged-right]
339 mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
340   #:line(#:dynamic "mp" #:text #:italic "dolce" )))
341
342 inst = #(define-music-function (parser location string) (string?)
343   (make-music
344     'TextScriptEvent
345     'direction UP
346     'text (markup #:bold (#:box string))))
347
348 \relative c'' {
349   \tempo 4=50
350   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
351   \inst "Clarinet"
352   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
353 }
354 @end lilypond
355
356 Existen varios problemas con la salida que se superpone; los
357 arreglaremos utilizando las técnicas descritas en @ref{Moving
358 objects}.  Pero también haremos algo respecto a las definiciones
359 @code{mpdolce} e @code{inst}.  Éstas producen la salida que deseamos,
360 pero quizá las querríamos utilizar en otra pieza.  Podríamos
361 simplemente copiarlas y pegarlas al principio de cada archivo, pero
362 sería bastante molesto.  También hace que se queden las definiciones a
363 la vista dentro de nuestros archivos de música, y yo personalmente
364 encuentro todos los @code{#()} bastante poco estéticos.  Los vamos a
365 esconder dentro de otro archivo:
366
367 @example
368 %%% guardar esto en un archivo de nombre "definiciones.ly"
369 mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
370   #:line(#:dynamic "mp" #:text #:italic "dolce" )))
371
372 inst = #(define-music-function (parser location string) (string?)
373   (make-music
374     'TextScriptEvent
375     'direction UP
376     'text (markup #:bold (#:box string))))
377 @end example
378
379 Ahora modificaremos la música (guardemos este archivo como @file{"musica.ly"}).
380
381 @c  We have to do this awkward example/lilypond-non-verbatim
382 @c  because we can't do the \include stuff in the manual.
383
384 @example
385 \include "definiciones.ly"
386
387 \relative c'' @{
388   \tempo 4=50
389   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
390   \inst "Clarinete"
391   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
392 @}
393 @end example
394
395 @lilypond[quote,ragged-right]
396 mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
397   #:line(#:dynamic "mp" #:text #:italic "dolce" )))
398
399 inst = #(define-music-function (parser location string) (string?)
400   (make-music
401     'TextScriptEvent
402     'direction UP
403     'text (markup #:bold (#:box string))))
404
405 \relative c'' {
406   \tempo 4=50
407   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
408   \inst "Clarinet"
409   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
410 }
411 @end lilypond
412
413 Eso tiene mejor aspecto, pero haremos algunos cambios más.  El glissando es difícil
414 de ver, así que lo haremos más grueso y lo acercaremos a las cabezas de las notas.  Pondremos
415 la indicación metronómica encima de la clave, en lugar de ir encima de la primera
416 nota.  Y por último, mi profesor de composición odia las indicaciones de compás @q{C},
417 así que la convertiremos en @q{4/4}.
418
419 Sin embargo, no debe cambiar el archivo @file{musica.ly}.  Sustituya nuestro archivo @file{definiciones.ly}
420 con éste:
421
422 @example
423 %%%  definiciones.ly
424 mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
425   #:line( #:dynamic "mp" #:text #:italic "dolce" )))
426
427 inst = #(define-music-function (parser location string) (string?)
428   (make-music
429     'TextScriptEvent
430     'direction UP
431     'text (markup #:bold (#:box string))))
432
433 \layout@{
434   \context @{ \Score
435     \override MetronomeMark #'extra-offset = #'(-9 . 0)
436     \override MetronomeMark #'padding = #'3
437   @}
438   \context @{ \Staff
439     \override TimeSignature #'style = #'numbered
440   @}
441   \context @{ \Voice
442     \override Glissando #'thickness = #3
443     \override Glissando #'gap = #0.1
444   @}
445 @}
446 @end example
447
448 @lilypond[quote,ragged-right]
449 mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
450   #:line( #:dynamic "mp" #:text #:italic "dolce" )))
451
452 inst = #(define-music-function (parser location string) (string?)
453   (make-music
454     'TextScriptEvent
455     'direction UP
456     'text (markup #:bold (#:box string))))
457
458 \layout{
459   \context { \Score
460     \override MetronomeMark #'extra-offset = #'(-9 . 0)
461     \override MetronomeMark #'padding = #'3
462   }
463   \context { \Staff
464     \override TimeSignature #'style = #'numbered
465   }
466   \context { \Voice
467     \override Glissando #'thickness = #3
468     \override Glissando #'gap = #0.1
469   }
470 }
471
472 \relative c'' {
473   \tempo 4=50
474   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
475   \inst "Clarinet"
476   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
477 }
478 @end lilypond
479
480 ¡Eso tiene un aspecto mucho mejor!  Ahora suponga que quiere publicar esta
481 pieza.  A mi profesor de composición no le gustan las indicaciones de compás @q{C},
482 pero yo les tengo cierto cariño.  Copiaremos el archivo
483 actual @file{definiciones.ly} a @file{publicar-web.ly} y modificaremos
484 éste.  Como el propósito de esta música es producir un PDF que va a mostrarse
485 en la pantalla, también vamos a aumentar el
486 tamaño general de la salida.
487
488 @example
489 %%%  definiciones.ly
490 mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
491   #:line( #:dynamic "mp" #:text #:italic "dolce" )))
492
493 inst = #(define-music-function (parser location string) (string?)
494   (make-music
495     'TextScriptEvent
496     'direction UP
497     'text (markup #:bold (#:box string))))
498
499 #(set-global-staff-size 23)
500 \layout@{
501   \context @{ \Score
502     \override MetronomeMark #'extra-offset = #'(-9 . 0)
503     \override MetronomeMark #'padding = #'3
504   @}
505   \context @{ \Staff
506   @}
507   \context @{ \Voice
508     \override Glissando #'thickness = #3
509     \override Glissando #'gap = #0.1
510   @}
511 @}
512 @end example
513
514 @lilypond[quote,ragged-right]
515 mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
516   #:line( #:dynamic "mp" #:text #:italic "dolce" )))
517
518 inst = #(define-music-function (parser location string) (string?)
519   (make-music
520     'TextScriptEvent
521     'direction UP
522     'text (markup #:bold (#:box string))))
523
524 #(set-global-staff-size 23)
525 \layout{
526   \context { \Score
527     \override MetronomeMark #'extra-offset = #'(-9 . 0)
528     \override MetronomeMark #'padding = #'3
529   }
530   \context { \Voice
531     \override Glissando #'thickness = #3
532     \override Glissando #'gap = #0.1
533   }
534 }
535
536 \relative c'' {
537   \tempo 4=50
538   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
539   \inst "Clarinet"
540   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
541 }
542 @end lilypond
543
544 Ahora, en la música, simplemente sustituyo @code{\include
545 "definiciones.ly"} por @code{\include "publicar-web.ly"}.  Por
546 supuesto, podríamos hacer esto aún más práctico.  Podríamos hacer un
547 archivo @file{definiciones.ly} que contuviera solamente las
548 definiciones de @code{mpdolce} y de @code{inst}, un archivo
549 @file{web-publish.ly} que contuviera solamente la sección
550 @code{\layout} que se mostró en el ejemplo, y un archivo
551 @file{universidad.ly} que contendría solamente los trucos para
552 producir la salida que le gusta a mi profesor.  La parte más alta de
553 @file{musica.ly} tendría entonces este aspecto:
554
555 @example
556 \include "definiciones.ly"
557
558 %%%  ¡Quitar el comentario de una sola de estas líneas!
559 \include "publicar-web.ly"
560 %\include "universidad.ly"
561 @end example
562
563 Este enfoque puede ser útil incluso si va a producir sólo un conjunto
564 de particellas.  Yo utilizo media docena de archivos de @q{hojas de
565 estilo} para mis proyectos.  Comienzo todos los archivos de música con
566 @code{\include "../global.ly"}, que contiene
567
568 @example
569 %%%   global.ly
570 \version @w{"@version{}"}
571 #(ly:set-option 'point-and-click #f)
572 \include "../iniciar/iniciar-definiciones.ly"
573 \include "../iniciar/iniciar-disposicion.ly"
574 \include "../iniciar/iniciar-cabeceras.ly"
575 \include "../iniciar/iniciar-papel.ly"
576 @end example
577
578
579 @node When things don't work
580 @section When things don't work
581
582 @menu
583 * Updating old files::
584 * Troubleshooting (taking it all apart)::
585 * Minimal examples::
586 @end menu
587
588 @node Updating old files
589 @subsection Updating old files
590
591 La sintaxis de la entrada de LilyPond cambia de manera ocasional.  A
592 medida que el propio LilyPond mejora, la sintaxis (el lenguaje de la
593 entrada) se modifica en consonancia.  A veces estos cambios se hacen
594 para conseguir que la entrada sea más fácil de leer y escribir, y
595 otras veces estos cambios son para dar cabida a nuevas funcionalidades
596 de LilyPond.
597
598 LilyPond lleva incorporado un archivo que facilita esta actualización:
599 @code{convert-ly}.  Para ver detalles sobre cómo ejecutar este
600 programa, consulte @rprogram{Updating files with convert-ly}.
601
602 Desgraciadamente @code{convert-ly} no puede tratar todos los cambios
603 en la entrada.  Se ocupa de los cambios sencillos de búsqueda y
604 sustitución (como @code{raggedright} que se convierte en
605 @code{ragged-right}), pero algunos cambios son demasiado complicados.
606 Los cambios de sintaxis que @code{convert-ly} es incapaz de manejar se
607 relacionan en @rprogram{Updating files with convert-ly}.
608
609 Por ejemplo, en la versión 2.4 y anteriores de LilyPond, los acentos y
610 las letras no inglesas se introducían utilizando LaTeX: por ejemplo,
611 @code{No\"el} (que significa @q{Navidad} en francés).  En LilyPond 2.6
612 y siguientes, el carácter especial @code{ë} debe introducirse
613 directamente en el archivo de LilyPond como un carácter UTF-8.
614 @code{convert-ly} no puede cambiar todos los caracteres especiales de
615 LaTeX a caracteres de UTF-8; tendrá que actualizar manualmente sus
616 archivos de LilyPond antiguos.
617
618
619 @node Troubleshooting (taking it all apart)
620 @subsection Troubleshooting (taking it all apart)
621
622 Antes o después escribirá un archivo que LilyPond no podrá compilar.
623 Los mensajes que LilyPond proporciona pueden ayudarle a encontrar el
624 error, pero en muchos casos tendrá que llevar a cabo algún tipo de
625 investigación para determinar el origen del problema.
626
627 Las herramientas más poderosas para este cometido son el comentario de
628 una sola línea (indicado por @code{%}) y el comentario de bloque
629 (indicado por @code{%@{ ... %@}}).  Si no sabe dónde está el problema,
630 comience convirtiendo grandes secciones del archivo de entrada en un
631 comentario.  Después de eliminar una sección convirtiéndola en un
632 comentario, pruebe a compilar el archivo otra vez.  Si funciona,
633 entonces el problema debía estar en la porción que había eliminado.
634 Si no funciona, continúe eliminando material (transformándolo en
635 comentarios) hasta que tenga algo que funcione.
636
637 En un caso extremo podría terminar con sólo
638
639 @example
640 \score @{
641   <<
642     % \melodia
643     % \armonia
644     % \bajo
645   >>
646   \layout@{@}
647 @}
648 @end example
649
650 @noindent
651 (en otras palabras: un archivo sin música)
652
653 Si ocurre esto, no abandone.  Descomente un trozo pequeño -- digamos
654 la parte del bajo -- y observe si funciona.  Si no es así, transforme
655 en comentarios toda la música del bajo (pero deje el @code{\bajo} de
656 la sección @code{\score} no comentado.
657
658 @example
659 bajo = \relative c' @{
660 %@{
661   c4 c c c
662   d d d d
663 %@}
664 @}
665 @end example
666
667 Ahora empiece poco a poco descomentando cada vez más fracciones de la
668 parte del @code{bajo} hasta que encuentre la línea del problema.
669
670 Otra técnica de depuración muy útil es la construcción de
671 @ref{Minimal examples}.
672
673
674 @node Minimal examples
675 @subsection Minimal examples
676
677 Un ejemplo mínimo es un ejemplo tan pequeño como sea posible.  Estos
678 ejemplos son mucho más fáciles de comprender que los ejemplos largos.
679 Los ejemplos mínimos se utilizan para
680
681 @itemize
682 @item Informes de fallo
683 @item Solicitudes de ayuda a las listas de correo
684 @item Añadir ejemplos al @uref{http://lsr@/.dsi@/.unimi@/.it/,Repositorio de Fragmentos de Código de LilyPond}
685 @end itemize
686
687
688 Para construir un ejemplo que sea lo más pequeño posible, la regla es
689 bastante simple: quite todo lo que no sea necesario.  Al tratar de
690 quitar partes innecesarias de un archivo, es una buena idea convertir
691 líneas en comentarios en vez de borrarlas.  De esta forma, si descubre
692 que en realidad sí @emph{necesitaba} algunas de estas líneas, podrá
693 descomentarlas y no tendrá que teclearlas de nuevo partiendo de cero.
694
695 Existen dos excepciones a la regla del @qq{lo más pequeño posible}:
696
697 @itemize
698 @item Incluya el número de @code{\version}.
699 @item Si puede, ponga @code{\paper@{ ragged-right=##t @}} al principio del ejemplo.
700 @end itemize
701
702
703 En resumen, el objetivo de un ejemplo mínimo es que sea fácil de leer:
704
705 @itemize
706 @item Evite usar notas, tonalidades o compases demasiado complicados, a no ser que quiera
707 demostrar algo sobre el comportamiento de estos elementos precisamente.
708 @item No use instrucciones @code{\override} a no ser que ése sea el propósito
709 del ejemplo.
710 @end itemize
711
712
713 @node Scores and parts
714 @section Scores and parts
715
716 En música orquestal, todas las notas se imprimen dos veces.  Una vez
717 en las particellas para los músicos, y otra para la partitura del
718 director.  Los identificadores se pueden usar para evitar la
719 duplicación del trabajo.  La música se escribe una vez y se almacena
720 en una variable.  El contenido de dicha variable se usa después para
721 generar tanto la particella como la partitura del director.
722
723 Es muy conveniente definir las notas en un archivo especial.  Por
724 ejemplo, supongamos que el archivo @file{trompa.ly} contiene la
725 siguiente parte de un dúo para trompa y fagot:
726
727 @example
728 notasTrompa = \relative c @{
729   \time 2/4
730   r4 f8 a cis4 f e d
731 @}
732 @end example
733
734 @noindent
735 Luego se hace una particella escribiendo en un archivo lo siguiente
736
737 @example
738 \include "trompa.ly"
739 \header @{
740   instrument = "Trompa en Fa"
741 @}
742
743 @{
744  \transpose f c' \notasTrompa
745 @}
746 @end example
747
748 La línea
749
750 @example
751 \include "trompa.ly"
752 @end example
753
754 @noindent
755 sustituye el contenido de @file{trompa.ly} en esta posición dentro del
756 archivo, así que @code{notasTrompa} se define con posterioridad.  La
757 instrucción @code{\transpose f@tie{}c'} indica que el argumento
758 constituido por @code{\notasTrompa} se debe transponer una quinta
759 hacia arriba.  Lo que suena como @code{f} se escribe como @code{c'},
760 lo que corresponde con el tono de afinación de una trompa normal
761 en@tie{}Fa.  La transposición se puede ver en la siguiente salida
762
763 @lilypond[quote,ragged-right]
764 \transpose f c' \relative c {
765   \time 2/4
766   r4 f8 a cis4 f e d
767 }
768 @end lilypond
769
770 En piezas para conjunto, con frecuencia una de las voces no suena
771 durante muchos compases.  Esto queda denotado por un silencio
772 especial, el silencio multicompás.  Se introduce con una @code{R}
773 mayúscula seguida de una duración (@code{1}@tie{}en el caso de la
774 redonda, @code{2}@tie{}en el caso de una blanca, etc.).  Multiplicando
775 la duración se pueden construir silencios más largos.  Por ejemplo,
776 este silencio ocupa 3@tie{}compases de 2/4
777
778 @example
779 R2*3
780 @end example
781
782 Cuando se imprime la particella tienen que comprimirse los silencios
783 multicompás.  Esto se hace estableciendo una variable en tiempo de
784 ejecución
785
786 @example
787 \set Score.skipBars = ##t
788 @end example
789
790 @noindent
791 Esta instrucción establece el valor de la propiedad @code{skipBars} en
792 el contexto de @code{Score} a verdadero (@code{##t}).  Anteponiendo el
793 silencio y esta opción a la música anterior, llegamos al siguiente
794 resultado
795
796 @lilypond[quote,ragged-right]
797 \transpose f c' \relative c {
798   \time 2/4
799   \set Score.skipBars = ##t
800   R2*3
801   r4 f8 a cis4 f e d
802 }
803 @end lilypond
804
805
806 Esta partitura se hace combinando toda la música junta.  Suponiendo
807 que la otra voz se encuentra dentro de @code{notasFagot} en el archivo
808 @file{fagot.ly}, la partitura se hace con
809
810 @example
811 \include "fagot.ly"
812 \include "trompa.ly"
813
814 <<
815   \new Staff \notasTrompa
816   \new Staff \notasFagot
817 >>
818 @end example
819
820 @noindent
821 lo que nos lleva a
822
823 @lilypond[quote,ragged-right]
824 \relative c <<
825   \new Staff {
826     \time 2/4 R2*3
827     r4 f8 a cis4 f e d
828   }
829   \new Staff {
830     \clef bass
831     r4 d,8 f | gis4 c | b bes |
832     a8 e f4 | g d | gis f
833   }
834 >>
835 @end lilypond