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