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