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