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