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