@c -*- coding: utf-8; mode: texinfo; -*- @c This file is part of lilypond.tely @ignore Translation of GIT committish: 338edaf1ad2b64605dcdeadb37b4cf17f98fc81a When revising a translation, copy the HEAD committish of the version that you are working on. See TRANSLATION for details. @end ignore @node Putting it all together @chapter Putting it all together Este capítulo trata de los conceptos generales de LilyPond y de cómo elaborar bloques @code{\score}. @menu * Extending the templates:: * How LilyPond files work:: * Score is a single musical expression:: * An orchestral part:: @end menu @node Extending the templates @section Extending the templates Ha leído el tutorial y ahora sabe escribir música. Pero ¿cómo puede poner los pentagramas que quiere? Las plantillas están muy bien, pero ¿qué ocurre si quiere algo que no está en una de ellas? Para empezar, tome la plantilla que le parezca más parecida a aquello que quiere conseguir. Digamos que quiere escribir algo para soprano y cello. En este caso comenzaríamos con la plantilla @q{Notas y letra} (para la parte de soprano). @example \version "2.11.38" melodia = \relative c' @{ \clef treble \key c \major \time 4/4 a4 b c d @} texto = \lyricmode @{ Aaa Bee Cee Dee @} \score@{ << \new Voice = "uno" @{ \autoBeamOff \melodia @} \new Lyrics \lyricsto "uno" \text >> \layout @{ @} \midi @{ @} @} @end example Ahora queremos añadir una parte de violoncello. Veamos el ejemplo @q{Sólo notas}: @example \version "2.11.38" melodia = \relative c' @{ \clef treble \key c \major \time 4/4 a4 b c d @} \score @{ \new Staff \melody \layout @{ @} \midi @{ @} @} @end example No necesitamos dos comandos @code{\version}. Vamos a necesitar la sección @code{melodia}. No queremos dos secciones @code{\score} (si tuviésemos dos @code{\score}s, acabaríamos con las dos particellas por separado. Queremos las dos juntas, como un dúo. Dentro de la sección @code{\score}, no nos hacen falta dos @code{\layout} ni dos @code{\midi}. Si nos limitásemos a copiar y pegar la sección @code{melodia}, acabaríamos con dos secciones @code{melodia} separadas, así que vamos a cambiarles el nombre. Llamaremos @code{musicaSoprano} a la sección de la soprano y @code{musicaCello} a la sección del violoncello. Al mismo tiempo cambiaremos el nombre de @code{texto} a @code{letraSoprano}. Recuerde cambiar el nombre a las dos apariciones de todos estos nombres -- tanto la definición inicial (la parte @code{melodia = relative c' @{ }) -- como el uso de ese nombre (en la sección @code{\score}). También aprovecharemos para cambiar el pentagrama de la parte del cello (los violoncellos se escriben normalmente en clave de Fa). Asimismo, cambiaremos algunas notas del cello. @example \version "2.11.38" musicaSoprano = \relative c' @{ \clef treble \key c \major \time 4/4 a4 b c d @} letraSoprano = \lyricmode @{ Aaa Bee Cee Dee @} musicaCello = \relative c @{ \clef bass \key c \major \time 4/4 d4 g fis8 e d4 @} \score@{ << \new Voice = "uno" @{ \autoBeamOff \sopranoMusic @} \new Lyrics \lyricsto "uno" \letraSoprano >> \layout @{ @} \midi @{ @} @} @end example Esto tiene una pinta prometedora, pero la parte del cello no sale en la partitura (no la hemos puesto en la sección @code{\score}). Si queremos que la parte del cello aparezca debajo de la de soprano, tenemos que añadir @example \new Staff \musicaCello @end example @noindent justo debajo de todo lo de la soprano. También tenemos que poner @code{<<} y @code{>>} antes y después de la música -- lo que indica a LilyPond que hay más de una cosa (en este caso, @code{Staff}) sucediendo al mismo tiempo -- . La @code{\score} se parecerá ahora a esto @example \score@{ << << \new Voice = "uno" @{ \autoBeamOff \sopranoMusic @} \new Lyrics \lyricsto "uno" \letraSoprano >> \new Staff \musicaCello >> \layout @{ @} \midi @{ @} @} @end example @noindent Esto parece un poco enrevesado; los márgenes están descuadrados. Esto tiene fácil solución. Presentamos aquí la plantilla completa para soprano y cello. @lilypond[quote,verbatim,ragged-right] \version "2.11.38" sopranoMusic = \relative c' { \clef treble \key c \major \time 4/4 a4 b c d } sopranoLyrics = \lyricmode { Aaa Bee Cee Dee } celloMusic = \relative c { \clef bass \key c \major \time 4/4 d4 g fis8 e d4 } \score{ << << \new Voice = "one" { \autoBeamOff \sopranoMusic } \new Lyrics \lyricsto "one" \sopranoLyrics >> \new Staff \celloMusic >> \layout { } \midi { } } @end lilypond @node How LilyPond files work @section How LilyPond files work El formato de entrada de LilyPond es bastante libre en su forma y concede a los usuarios con experiencia mucha flexibilidad para estructurar sus archivos de la forma que deseen. Sin embargo, toda esta flexibilidad puede hacer que las cosas se vuelvan confusas para los nuevos usuarios. Esta sección le va a explicar parte de esta estructura, pero puede obviar ciertos detalles en aras de la simplicidad. Para ver una descripción completa del formato de entrada, consulte @ruser{File structure}. Casi todos los ejemplos del presente manual con pequeños fragmentos de código. Por ejemplo @example c4 a b c @end example Como (esperamos) ya se habrá dado cuenta, esto no se puede compilar tal cual está. Estos ejemplos son sólo resúmenes de los ejemplos completos. Todos ellos necesitan, cuando menos, un par de llaves antes y después para que se puedan compilar @example @{ c4 a b c @} @end example Casi todos los ejemplos también usan el comando @code{\relative c'} (o @code{c''}). Esto no es necesario para conseguir que los ejemplos simplemente se puedan compilar, pero casi siempre la salida tendrá un aspecto muy extraño si omite el @code{\relative c'}. @lilypond[quote,fragment,ragged-right,verbatim] \relative c'' { c4 a b c } @end lilypond Ahora nos encontramos con el único tropiezo de verdad: la entrada de LilyPond en esta forma es realmente @emph{otra} abreviatura. Aunque se puede compilar y presenta la salida correcta, es una abreviatura de @example \score @{ \relative c'' @{ c4 a b c @} @} @end example Un @code{\score} debe comenzar con una única expresión musical. Recuerde que una expresión musical podía ser cualquier cosa desde una sola nota hasta todo un @example @{ \new GrandStaff << introduzca aquí la partitura completa de una ópera de Wagner >> @} @end example @noindent Ya que todo está dentro de @code{@{ ... @}}, cuenta como una sola expresión musical. La @code{\score} puede contener otras cosas como @example \score @{ @{ c'4 a b c' @} \layout @{ @} \midi @{ @} \header @{ @} @} @end example @noindent Hay personas que ponen algunos de estos comandos fuera del bloque @code{\score} (por ejemplo, @code{\header} se sitúa con frecuencia por encima del @code{\score}. Es tan sólo otra abreviatura que LilyPond acepta. @cindex variables @cindex identificadores Otro atajo genial es la posibilidad de definir variables. Todas las plantillas emplean lo siguiente: @example melodia = \relative c' @{ c4 a b c @} \score @{ @{ \melodia @} @} @end example Cuando LilyPond examina este archivo, toma el valor de @code{melodia} (todo lo que está después del signo igual) y lo inserta dondequiera que ve @code{\melodia}. No se requiere un cuidado especial con los nombres -- puede ser @code{melodia}, @code{global}, @code{manoderechadelpiano}, o @code{fulanomengano} --. Puede usar el nombre de variable que desee. Para ver más detalles, consulte @ruser{Saving typing with identifiers and functions}. Para ver una definición completa del formato de entrada, consulte @ruser{File structure}. @node Score is a single musical expression @section Score is a single musical expression En la sección anterior, @ruser{How LilyPond files work}, pudimos ver la organización general de los archivos de entrada de LilyPond. Pero parece que nos saltamos la parte más importante: ¿cómo averiguamos qué escribir después de @code{\score}? No nos hemos saltado nada en absoluto. El gran misterio es, sencillamente, que no hay @emph{ningún} misterio. La siguiente línea lo explica todo: @quotation @emph{Una @code{\score} debe comenzar con una única expresión musical.} @end quotation @noindent Quizá encuentre útil dar un repaso a @ruser{Music expressions explained}. En esta sección, vimos cómo elaborar grandes expresiones musicales a partir de pequeñas piezas -- comenzábamos con notas, luego acordes, etc. --. Ahora partiremos de una gran expresión musical y recorreremos el camino inverso hacia abajo. @example \score @{ @{ % esta llave da inicio a la expresión musical completa \new GrandStaff << introduzca aquí la partitura completa de una ópera de Wagner >> @} % esta llave da por terminada la expresión musical completa \layout @{ @} @} @end example Una ópera de Wagner completa puede ser fácilmente el doble de larga que este manual, por tanto vamos a hacer sólo un cantante y un piano. No necesitamos un @code{GrandStaff} para este conjunto, así que lo retiramos. Sin embargo, sí que @emph{necesitamos} un cantante y un piano. @example \score @{ @{ << \new Staff = "cantante" << >> \new PianoStaff = "piano" << >> >> @} \layout @{ @} @} @end example Recuerde que usamos @code{<<} y @code{>>} para presentar música simultánea. Y desde luego ¡queremos presentar las partes vocal y del piano al mismo tiempo! @example \score @{ @{ << \new Staff = "cantante" << \new Voice = "vocal" @{ @} >> \new Lyrics \lyricsto vocal \new Lyrics @{ @} \new PianoStaff = "piano" << \new Staff = "superior" @{ @} \new Staff = "inferior" @{ @} >> >> @} \layout @{ @} @} @end example Ahora tenemos muchos más detalles. Tenemos la pauta del cantante: contiene una @code{Voice} o voz (en LilyPond, este término hace referencia a un conjunto de notas, no necesariamente notas vocales -- por ejemplo, un violín generalmente toca una voz --) y el texto de la canción. También tenemos una pauta de piano: contiene un pentagrama superior (mano derecha) y un pentagrama inferior (mano izquierda). En este momento podríamos comenzar a meter las notas. Dentro de las llaves que siguen a @code{\new Voice = vocal}, podríamos empezar escribiendo @example \relative c'' @{ a4 b c d @} @end example Pero si lo hiciéramos, la sección @code{\score} se haría bastante larga y sería más difícil comprender lo que ocurre. En lugar de esto utilizaremos identificadores o variables. @example melodia = @{ @} texto = @{ @} superior = @{ @} inferior = @{ @} \score @{ @{ << \new Staff = "cantante" << \new Voice = "vocal" @{ \melodia @} >> \new Lyrics \lyricsto vocal \new Lyrics @{ \texto @} \new PianoStaff = "piano" << \new Staff = "superior" @{ \superior @} \new Staff = "inferior" @{ \inferior @} >> >> @} \layout @{ @} @} @end example @noindent Recuerde que puede usar casi cualquier nombre que se le antoje. Las limitaciones impuestas a los nombres de identificador se detallan en @ruser{File structure}. Cuando escriba una sección @code{\score} o cuando la esté leyendo, hágalo despacio y con cuidado. Comience por la capa exterior y luego trabaje sobre cada una de las capas interiores. Esto también sirve para ser estricto con los márgenes -- ¡asegúrese de que en su editor de texto cada elemento de la misma capa comienza en la misma posición horizontal! --. @node An orchestral part @section An orchestral part En música orquestal, todas las notas se imprimen dos veces. Una vez en las particellas para los músicos, y otra para la partitura del director. Los identificadores se pueden usar para evitar la duplicación del trabajo. La música se escribe una vez y se almacena en una variable. El contenido de dicha variable se usa después para generar tanto la particella como la partitura del director. Es muy conveniente definir las notas en un archivo especial. Por ejemplo, supongamos que el archivo @file{trompa.ly} contiene la siguiente parte de un dúo para trompa y fagot: @example notasTrompa = \relative c @{ \time 2/4 r4 f8 a cis4 f e d @} @end example @noindent Luego se hace una particella escribiendo en un archivo lo siguiente @example \include "trompa.ly" \header @{ instrument = "Trompa en Fa" @} @{ \transpose f c' \notasTrompa @} @end example La línea @example \include "trompa.ly" @end example @noindent sustituye el contenido de @file{trompa.ly} en esta posición dentro del archivo, así que @code{notasTrompa} se define con posterioridad. El comando @code{\transpose f@tie{}c'} indica que el argumento constituido por @code{\notasTrompa} se debe transponer una quinta hacia arriba. Lo que suena como @samp{f} se escribe como @code{c'}, lo que corresponde con el tono de afinación de una trompa normal en@tie{}Fa. La transposición se puede ver en la siguiente salida @lilypond[quote,ragged-right] \transpose f c' \relative c { \time 2/4 r4 f8 a cis4 f e d } @end lilypond En piezas para conjunto, con frecuencia una de las voces no suena durante muchos compases. Esto queda denotado por un silencio especial, el silencio multicompás. Se introduce con una @samp{R} mayúscula seguida de una duración (@code{1}@tie{}en el caso de la redonda, @code{2}@tie{}en el caso de una blanca, etc.). Multiplicando la duración se pueden construir silencios más largos. Por ejemplo, este silencio ocupa 3@tie{}compases de 2/4 @example R2*3 @end example Cuando se imprime la particella tienen que comprimirse los silencios multicompás. Esto se hace estableciendo una variable en tiempo de ejecución @example \set Score.skipBars = ##t @end example @noindent Este comando establece el valor de la propiedad @code{skipBars} en el contexto de @code{Score} a verdadero (@code{##t}). Anteponiendo el silencio y esta opción a la música anterior, llegamos al siguiente resultado @lilypond[quote,ragged-right] \transpose f c' \relative c { \time 2/4 \set Score.skipBars = ##t R2*3 r4 f8 a cis4 f e d } @end lilypond Esta partitura se hace combinando toda la música junta. Suponiendo que la otra voz se encuentra dentro de @code{notasFagot} en el archivo @file{fagot.ly}, la partitura se hace con @example \include "fagot.ly" \include "trompa.ly" << \new Staff \notasTrompa \new Staff \notasFagot >> @end example @noindent lo que nos lleva a @lilypond[quote,ragged-right] \relative c << \new Staff { \time 2/4 R2*3 r4 f8 a cis4 f e d } \new Staff { \clef bass r4 d,8 f | gis4 c | b bes | a8 e f4 | g d | gis f } >> @end lilypond Se puede encontrar una información más profunda sobre cómo preparar particellas y partituras en el manual de notación; consulte @ruser{Orchestral music}. El establecimiento de variables en tiempo de ejecución (@q{propiedades}) se trata en @ruser{Changing context properties on the fly}.