@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-

@ignore
    Translation of GIT committish: 41a35ee2dda003efc36f281de7160660fafd410b

    When revising a translation, copy the HEAD committish of the
    version that you are working on.  For details, see the Contributors'
    Guide, node Updating translation committishes..
@end ignore

@c \version "2.19.22"

@node Conceptos fundamentales
@chapter Conceptos fundamentales
@translationof Fundamental concepts

Ha podido ver en el tutorial cómo producir música bellamente
impresa a partir de un simple archivo de texto.  Esta sección
presenta los conceptos y técnicas que se requieren para producir
partituras igualmente bellas pero más complejas.

@menu
* Cómo funcionan los archivos de entrada de LilyPond::
* Las voces contienen música::
* Contextos y grabadores::
* Extender las plantillas::
@end menu


@node Cómo funcionan los archivos de entrada de LilyPond
@section Cómo funcionan los archivos de entrada de LilyPond
@translationof How LilyPond input 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{Estructura del archivo}.


@menu
* Introducción a la estructura de los archivos de LilyPond::
* La partitura es una (única) expresión musical compuesta::
* Anidado de expresiones musicales::
* Estructura de un elemento de nota::
* Acerca de la no anidabilidad de llaves y ligaduras::
@end menu

@node Introducción a la estructura de los archivos de LilyPond
@subsection Introducción a la estructura de los archivos de LilyPond
@translationof Introduction to the LilyPond file structure

@cindex entrada, formato de la
@cindex archivo, estructura del

Un ejemplo básico de archivo de entrada de LilyPond es el
siguiente:

@example
\version @w{"@version{}"}

\header @{ @}

\score @{
  @var{ @dots{} expresión musical compuesta @dots{} }  % toda la música va aquí
  \layout @{ @}
  \midi @{ @}
@}
@end example

@noindent
Existen muchas variaciones de este esquema básico, pero el
ejemplo constituye un útil punto de partida.

@funindex \book
@funindex \score
@cindex book (libro)
@cindex score (partitura)
@cindex libro
@cindex partitura

Hasta el momento, ninguno de los ejemplos que ha podido ver
utiliza la instrucción @code{\score@{@}}.  Esto es así a causa de
que LilyPond añade automáticamente las órdenes adicionales que se
requieren cuando le proporcionamos una entrada sencilla.
LilyPond trata una entrada como esta:

@example
\relative @{
  c''4 a b c
@}
@end example

@noindent
como una abreviatura de esta otra:

@example
\book @{
  \score @{
    \new Staff @{
      \new Voice @{
        \relative @{
          c''4 a b c
        @}
      @}
    @}
    \layout @{ @}
  @}
@}
@end example

En otras palabras, si la entrada consta de una única expresión
musical, LilyPond interpreta el archivo como si la expresión
musical estuviera rodeada por un envoltorio hecho por las
instrucciones que acabamos de ver.

@cindex contextos implícitos
@cindex implícitos, contextos

@strong{¡Advertencia!}  Muchos de los ejemplos que aparecen en la
documentación de LilyPond omiten las instrucciones @code{\new
Staff} y @code{\new Voice}, dejando que se creen de forma
implícita.  Esto funciona bien para ejemplos sencillos, pero para
ejemplos más complicados, especialmente cuando se usan
instrucciones adicionales, la creación implícita de los contextos
puede dar lugar a resultados inesperados, incluso en ocasiones
crear pentagramas no deseados.  La forma de crear contextos de
forma explícita se explica en @ref{Contextos y grabadores}.

@warning{Cuando se escriben más de unas pocas líneas de música,
se recomienda crear siempre los pentagramas y las voces de forma
explícita.}

De todas formas, por ahora vamos a volver al primer ejemplo para
examinar la instrucción @code{\score}, dejando las demás en su
forma predeterminada.

Un bloque @code{\score} siempre debe contener una expresión musical
única.  Recuerde que una expresión musical podía ser cualquier
cosa entre una sola nota hasta una enorme expresión compuesta como

@example
@{
  \new StaffGroup <<
    @var{ @dots{} inserte aquí la partitura completa de una ópera de Wagner @dots{} }
  >>
@}
@end example

@noindent
Puesto que todo se encuentra dentro de @code{@{ @dots{} @}},
cuenta como una expresión musical.

Como vimos anteriormente, el bloque @code{\score} puede contener
otras cosas, tales como

@example
\score @{
  @{ c'4 a b c' @}
  \header @{ @}
  \layout @{ @}
  \midi @{ @}
@}
@end example

@funindex \header
@funindex \layout
@funindex \midi
@cindex midi
@cindex cabecera
@cindex disposición

@noindent
Observe que estas tres instrucciones (@code{\header},
@code{\layout} y @code{\midi}) son especiales: a diferencia del
resto de las instrucciones que comienzan con una barra invertida
(@code{\}), @emph{no} son expresiones musicales y no forman parte
de ninguna expresión musical.  Por tanto, se pueden situar dentro
de un bloque @code{\score} o fuera de él.  De hecho, estas
instrucciones se sitúan por lo general fuera del bloque
@code{\score} (por ejemplo, @code{\header} se suele colocar antes
de la instrucción @code{\score}, como muestra el ejemplo que
aparece al principio de la sección.

Dos instrucciones más que no hemos visto aún son @code{\layout @{
@}} y @code{\midi @{ @}}.  Si aparecen tal y como se muestran
aquí, hacen que LilyPond produzca una salida impresa y una salida
MIDI, respectivamente.  Se describen con todo detalle en el
manual de Referencia de la notación, en @ruser{Disposición de la
partitura} y en @ruser{Creación de salida MIDI}.

@cindex partituras, varias
@cindex book, bloque implícito
@cindex implícito, bloque book
@funindex \book

Podemos escribir varios bloques @code{\score}.  Cada uno de ellos
recibirá el mismo tratamiento que una partitura independiente,
pero se combinarán todos juntos en un archivo de salida único.
No se necesita ninguna instrucción @code{\book}, se creará una
implícitamente.  Sin embargo, si quiere archivos de salida
separados a partir de un único archivo @file{.ly}, entonces es
necesario utilizar la instrucción @code{\book} para separar las
distintas secciones: cada bloque @code{\book} produce un archivo
de salida distinto.

En resumen:

Cada bloque @code{\book} crea un archivo de salida distinto (por
ejemplo, un archivo PDF).  Si no hemos escrito uno de forma
explícita, LilyPond envuelve todo nuestro código de entrada
dentro de un bloque @code{\book} de forma implícita.

Cada bloque @code{\score} es un trozo de música separado dentro
de un bloque @code{\book}.

@cindex layout, efecto de la situación del bloque

Cada bloque @code{\layout} afecta al bloque @code{\score} o
@code{\book} dentro del cual aparece (es decir, un bloque
@code{\layout} dentro de un bloque @code{\score} afecta solamente
a ese bloque @code{\score}, pero un bloque @code{\layout} fuera
de un bloque @code{\score} (que por ello está dentro de un bloque
@code{\book}, ya sea explícita o implícitamente) afecta a los
bloques @code{\score} que están dentro de ese @code{\book}.

Para ver más detalles, consulte
@ruser{Varias partituras en un libro}.

@cindex variables

Otro magnífico atajo es la posibilidad de definir variables como
se muestra en @ref{Organizar las piezas mediante variables}.
Todas las plantillas emplean lo siguiente:

@example
melodia = \relative @{
  c'4 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 el nombre (puede ser @code{melodia},
@code{global}, @code{CompasArmadura}, @code{manoderechadelpiano}
o @code{fulanomengano} o cualquier otro).  Recuerde que puede
usar casi cualquier nombre que se le ocurra, en la medida en que
contenga solamente caracteres alfabéticos y sea diferente de
cualquiera de los nombres de instrucción de LilyPond.  Para ver
más detalles, consulte
@ref{Ahorrar tecleo mediante variables y funciones}.  Las
limitaciones exactas que afectan a los nombres de variable se
detallan en @ruser{Estructura del archivo}.


@seealso
Para ver una definición completa del formato del código de
entrada, consulte @ruser{Estructura del archivo}.


@node La partitura es una (única) expresión musical compuesta
@subsection La partitura es una (única) expresión musical compuesta
@translationof Score is a (single) compound musical expression

@funindex \score
@cindex score
@cindex partitura
@cindex contenido del bloque score
@cindex score, contenido del bloque
@cindex compuesta, expresión musical
@cindex musical, expresión, compuesta
@cindex expresión musical compuesta
@funindex \score

En la sección anterior,
@ref{Introducción a la estructura de los archivos de LilyPond},
hemos podido 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{Un bloque @code{\score} debe contener exactamente una expresión musical.}
@end quotation

@noindent
Para comprender lo que se entiende por expresión musical, quizá
encuentre útil dar un repaso al tutorial,
@ref{Explicación de las expresiones musicales}.  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.  Por simplicidad, vamos a hacer sólo
un cantante y un piano.  No necesitamos un @code{StaffGroup} (que
simplemente agrupa un cierto número de pautas con un corchete a
la izquierda) para este conjunto, así que lo retiramos.  Sin
embargo, @emph{sí} necesitamos pentagramas para un cantante y un
piano.

@example
\score @{
  <<
    \new Staff = "cantante" <<
    >>
    \new PianoStaff = "piano" <<
    >>
  >>
  \layout @{ @}
@}
@end example

Aquí hemos asignado nombres a los pentagramas: @qq{cantante} y
@qq{piano}.  Esto no es esencial en este momento, pero es un
hábito que resulta útil cultivar de manera que podamos saber de
un vistazo para qué es cada pentagrama.

Recuerde que utilizamos @code{<< @dots{} >>} en lugar de @code{@{
@dots{} @}} para presentar la música simultánea.  Esto hace que
las partes vocal y del piano aparezcan una sobre la otra en la
partitura.  La construcción @code{<< @dots{} >>} no sería
necesaria para el pentagrama del cantante en el ejemplo de arriba
si contiene solamente una expresión musical secuencial, pero se
necesitarían los @code{<< @dots{} >>} en lugar de las llaves si
la música de ese pentagrama fuese a contener dos o más
expresiones simultáneas, p.ej. dos voces simultáneas, o una voz
con letra.  Vamos a tener una voz con letra, por lo que se
requieren los ángulos dobles.  Después añadiremos algo de música
real; por ahora limitémonos a poner unas cuantas notas y texto de
relleno.  Si ha olvidado cómo añadir la letra, puede releer la
sección @code{\addlyrics} de @ref{Elaborar canciones sencillas}.

@lilypond[verbatim,quote,ragged-right]
\score {
  <<
    \new Staff = "singer" <<
      \new Voice = "vocal" { c'1 }
      \addlyrics { And }
    >>
    \new PianoStaff = "piano" <<
      \new Staff = "upper" { c'1 }
      \new Staff = "lower" { c'1 }
    >>
  >>
  \layout { }
}
@end lilypond

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), aunque el pentagrama
inferior aún no tiene la clave de Fa.

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 @{
  r4 d''8\noBeam g, c4 r
@}
@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.  Recordará que las
vimos por primera vez en la sección anterior.

Para asegurarnos de que el contenido de la variable @code{text}
se interpreta como letra, lo precedemos por @code{\lyricmode}.
Como @code{\addlyrics}, esto activa el modo de entrada de letra.
Sin ello, LilyPond trataría de interpretar el contenido como
notas, lo que generaría errores (Existen algunos otros modos,
véase @ruser{Modos de entrada}).

Así pues, escribiendo algunas notas, y una clave de Fa para la
mano izquierda, ahora tenemos un fragmento musical de verdad:

@lilypond[verbatim,quote,ragged-right]
melody = \relative { r4 d''8\noBeam g, c4 r }
text   = \lyricmode { And God said, }
upper  = \relative { <g' d g,>2~ <g d g,> }
lower  = \relative { b,2 e }

\score {
  <<
    \new Staff = "singer" <<
      \new Voice = "vocal" { \melody }
      \addlyrics { \text }
    >>
    \new PianoStaff = "piano" <<
      \new Staff = "upper" { \upper }
      \new Staff = "lower" {
        \clef "bass"
        \lower
      }
    >>
  >>
  \layout { }
}
@end lilypond

Cuando escriba una sección @code{\score} o cuando la esté
leyendo, hágalo despacio y con cuidado.  Comience por el nivel
exterior y luego trabaje sobre cada uno de los niveles
interiores.  También es de gran ayuda ser muy estricto con los
márgenes (asegúrese de que en su editor de texto cada elemento
del mismo nivel comienza en la misma posición horizontal).


@seealso
Referencia de la notación:
@ruser{Estructura de una partitura}.


@node Anidado de expresiones musicales
@subsection Anidado de expresiones musicales
@translationof Nesting music expressions

@cindex pentagramas temporales
@cindex temporales, pentagramas
@cindex ossias

No es esencial declarar todos los pentagramas al comienzo; se
pueden crear temporalmente en cualquier momento.  Esto es de
especial utilidad para crear secciones de ossia (véase
@rglos{ossia}).  A continuación presentamos un ejemplo sencillo
que muestra cómo introducir temporalmente un pentagrama nuevo
mientras dura un fragmento de tres notas:

@lilypond[verbatim,quote,ragged-right]
\new Staff {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff {
        f8 f c
      }
    >>
    r4 |
  }
}
@end lilypond

@noindent
Advierta que el tamaño de la clave es igual al que se imprime en
un cambio de clave (ligeramente menor que la clave al principio
de una línea).  Esto es normal para cualquier clave que se
imprime en la mitad de una línea.

@cindex pentagrama, posicionado del

La sección ossia se puede colocar encima del pentagrama de la
manera siguiente:

@lilypond[verbatim,quote,ragged-right]
\new Staff = "main" {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "main"
      } { f8 f c }
    >>
    r4 |
  }
}
@end lilypond

Este ejemplo utiliza @code{\with}, que se explica en todo detalle
más adelante.  Es un medio de modificar el comportamiento
predeterminado de un solo pentagrama.  Aquí, dice que el
pentagrama nuevo se debe colocar por encima del pentagrama
llamado @qq{main} en vez de la posición predeterminada que sería
por debajo.


@seealso
Los fragmentos de ossia se escriben a menudo sin clave y sin
indicación de compás, y generalmente en un tipo más pequeño.
Esto necesitaría más instrucciones que aún no se han visto.
Véase @ref{Tamaño de los objetos} y @ruser{Pentagramas de Ossia}.

@node Estructura de un elemento de nota
@subsection Estructura de un elemento de nota
@translationof Structure of a note entry

Un elemento de nota en LilyPond consiste en una altura seguida de
una duración, y opcionalmente seguida de uno o más
@q{post-eventos}.  Los post-eventos de LilyPond añaden cosas como
articulaciones, digitaciones, números de cuerda, ligaduras de
unión y de expresión y textos explicativos.

La altura se puede definir explícitamente usando el lenguaje de
entrada de LilyPond en su forma actual, como se describe en la
sección @ruser{Nombres de las notas en otros idiomas}.  La altura
se puede omitir.  En el caso de que la altura se omita, la altura
de la nota será la misma que la de la nota anterior dentro del
código de entrada, véase @ruser{Duraciones}.  Observe que ni
@code{r} ni @code{s} son alturas.

La duración consiste en un número y, opcionalmente, uno o más
puntos ortográficos en el caso de las duraciones con puntillo. Si
una duración no está definida explícitamente, la duración de la
nota es la misma que la de la nota, acorde, silencio o silencio de
separación anteriores, véase @ruser{Duraciones}.

Los post-eventos siguen a la nota a la que están adjuntos.
Supongamos que queremos una nota Do corchea con una digitación de
un 1, además de una articulación de tenuto, una ligadura de
expresión que comienza en dicha nota, y una anotación textual.
Esto puede obtenerse tal y como se muestra a continuación.

@lilypond[verbatim,quote]
{ c'8-1--(~^\markup{"anotación textual"} c' d') }
@end lilypond

@seealso
Manual de aprendizaje:
@ref{Ligaduras de unión y de expresión},
@ref{Articulaciones y matices dinámicos},
@ref{Añadir texto}.

Referencia de la notación:
@ruser{Alturas},
@ruser{Duraciones},
@ruser{Expresiones}.

@node Acerca de la no anidabilidad de llaves y ligaduras
@subsection Acerca de la no anidabilidad de llaves y ligaduras
@translationof On the un-nestedness of brackets and ties

@cindex corchetes y paréntesis, anidado de
@cindex corchetes y paréntesis, tipos de
@cindex corchetes y paréntesis, encerrar frente a marcar
@cindex paréntesis y corchetes, anidado de
@cindex paréntesis y corchetes, tipos de
@cindex paréntesis y corchetes, encerrar frente a marcar

En la escritura del archivo de entrada de LilyPond, hemos podido
ver algunos tipos de paréntesis, llaves o ángulos de distintos
tipos.  Éstos obedecen a distintas reglas que al principio pueden
resultar confusas.  Antes de explicar estas reglas, demos un
repaso a las distintas clases de corchetes, llaves y paréntesis.

@c attempt to force this onto a new page
@need 50
@multitable @columnfractions .3 .7
@headitem Tipo de paréntesis
  @tab Función
@item @code{@{ @dots{} @}}
  @tab Encierra un fragmento secuencial de música
@item @code{< @dots{} >}
  @tab Encierra las notas de un acorde
@item @code{<< @dots{} >>}
  @tab Encierra expresiones musicales simultáneas
@item @code{( @dots{} )}
  @tab Marca el comienzo y el final de una ligadura de expresión
@item @code{\( @dots{} \)}
  @tab Marca el comienzo y el final de una ligadura de fraseo
@item @code{[ @dots{} ]}
  @tab Marca el comienzo y el final de un barrado manual
@end multitable

A las anteriores, debemos añadir otras construcciones que generan
líneas entre o a través de las notas: las ligaduras de unión
(marcadas con una tilde curva, @code{~}), los grupos especiales
que se escriben como @code{\tuplet x/y @{ @dots{} @}}, y las
notas de adorno, que se escriben como @code{\grace @{ @dots{}
@}}.

Fuera de LilyPond, el uso convencional de los paréntesis y otros
corchetes requiere que los distintos tipos se encuentren anidados
correctamente, como en: @code{<< [ @{ ( @dots{} ) @} ] >>}, de
manera que los paréntesis que se cierran deben encontrarse en el
orden exactamente opuesto al de los paréntesis que se abren.
Esto @strong{es} un requisito para los tres tipos de paréntesis
que se describen mediante la palabra @q{Encierra} en la tabla
anterior: se deben anidar correctamente.  Sin embargo, el resto
de las llaves y corchetes, que se encuentran descritos por la
palabra @q{Marca} en la misma tabla anterior, @strong{no} tienen
por qué anidarse estrictamente con ninguno de los otros
paréntesis.  De hecho, éstos no son paréntesis en el sentido de
que encierran algo: simplemente son marcadores que indican dónde
empieza o finaliza algo.

Así pues, por ejemplo, una ligadura de fraseo puede dar comienzo
antes de una barra insertada manualmente, y acabar antes de que
acabe la barra (algo que quizá no sea muy musical, pero es
posible):

@lilypond[quote,verbatim,ragged-right]
\relative { g'8\( a b[ c b\) a] g4 }
@end lilypond

En general, los distintos tipos de corchete, y los implicados en
grupos especiales, ligaduras de unión y notas de adorno, se
pueden mezclar con total libertad.  Este ejemplo muestra una
barra que se extiende hacia el interior de un grupo de valoración
especial (línea 1), una ligadura de expresión que se prolonga
hasta el interior de un grupo especial (línea 2), una barra y una
ligadura de expresión que se prolongan hasta el interior de un
grupo especial, una ligadura de unión que atraviesa dos grupos
especiales, y una ligadura de fraseo que sale del interior de un
grupo especial (líneas 3 y 4).

@lilypond[quote,verbatim,ragged-right]
\relative {
  r16[ g' \tuplet 3/2 { r16 e'8] }
  g,16( a \tuplet 3/2 { b16 d) e }
  g,8[( a \tuplet 3/2 { b8 d) e~] } |
  \tuplet 5/4 { e32\( a, b d e } a4.\)
}
@end lilypond


@node Las voces contienen música
@section Las voces contienen música
@translationof Voices contain music

Igual que los cantantes, LilyPond necesita voces para cantar.  En
realidad, la música para cualquier instrumento de una partitura
está siempre contenida dentro de una voz --el concepto de
LilyPond más fundamental de todos--.

@menu
* Oigo voces::
* Voces explícitas::
* Voces y música vocal::
@end menu

@node Oigo voces
@subsection Oigo voces
@translationof I'm hearing Voices

@cindex polifonía
@cindex capas
@cindex varias voces
@cindex voces, varias
@cindex Voice (voz), contexto de
@cindex contexto Voice (de voz)
@cindex simultánea, música
@cindex concurrente, música
@cindex voces frente a acordes
@cindex acordes frente a voces

De las capas más profundas de una partitura de LilyPond, las más
bajas y más fundamentales reciben el nombre de @q{Voice contexts}
(«contextos de voz») o, abreviadamente, @q{Voices} («voces»).
Las voces reciben a veces el nombre de @q{layers} («capas») en
otros programas de edición de partituras.

De hecho, una capa o contexto de voz es la única que puede
contener música.  Si un contexto de voz no se declara
explícitamente, se crea uno de forma automática, como vimos al
comienzo de este capítulo.  Ciertos instrumentos como el oboe
solamente pueden tocar una nota cada vez.  La música escrita para
estos instrumentos solamente requiere una voz.  Los instrumentos
que pueden tocar más de una nota a la vez, como el piano, con
frecuencia necesitarán varias voces para codificar las distintas
notas y ritmos concurrentes que son capaces de tocar.

Una sola voz puede contener muchas notas dentro de un acorde, por
supuesto; entonces ¿cuándo, exactamente, se necesitan varias
voces?  En primer lugar observe este ejemplo de cuatro acordes:

@lilypond[quote,verbatim,ragged-right]
\relative {
  \key g \major
  <d' g>4 <d fis> <d a'> <d g>
}
@end lilypond

Esto se puede expresar utilizando sólo símbolos de acorde con
ángulos simples, @code{< @dots{} >}, y para este propósito tan
sólo se necesita una voz.  Pero suponga que el Fa sostenido fuese
realmente una corchea seguida de un Sol corchea, una nota de paso
que conduce al La.  Ahora tenemos dos notas que empiezan en el
mismo momento pero tienen distintas duraciones: la negra Re, y la
corchea Fa sostenido. ¿Cómo se codifica esto? No se pueden
escribir como un acorde porque todas las notas de un acorde deben
tener la misma duración.  Y no se pueden escribir como dos notas
en secuencia porque tienen que empezar en el mismo momento.  Aquí
es donde se necesitan dos voces.

Veamos cómo se hace esto dentro de la sintaxis de entrada de
LilyPond.

@funindex << \\ >>
@funindex \\

La forma más fácil de introducir fragmentos con más de una voz en
un solo pentagrama es escribir cada voz como una secuencia (con
@code{@{ @dots{} @}}), y combinarlas simultáneamente con ángulos
dobles, @code{<< @dots{} >>}.  Los fragmentos también se deben
separar mediante una doble barra invertida, @code{\\}, para
situarlos en voces separadas.  Sin esto, las notas irían a una
sola voz, lo que normalmente produce errores.  Esta técnica se
adapta especialmente bien a piezas de música que son mayormente
homofónicas pero ocasionalmente tienen cortas secciones de
polifonía.

He aquí cómo dividimos los acordes anteriores en dos voces y
añadimos la nota de paso y la ligadura:

@lilypond[quote,verbatim,ragged-right]
\relative {
  \key g \major
  %    Voice = "1"             Voice = "2"
  << { g'4 fis8( g) a4 g } \\ { d4 d d d }  >>
}
@end lilypond

Observe cómo las plicas de la segunda voz ahora se dirigen hacia
abajo.

A continuación veamos otro ejemplo sencillo:

@lilypond[quote,verbatim,ragged-right]
\relative {
  \key d \minor
  %    Voice = "1"           Voice = "2"
  << { r4 g' g4. a8 }   \\ { d,2 d4 g }       >> |
  << { bes4 bes c bes } \\ { g4 g g8( a) g4 } >> |
  << { a2. r4 }         \\ { fis2. s4 }       >> |
}
@end lilypond

No es necesario usar una construcción @code{<< \\ >>} distinta
para cada compás. Para música que tenga unas pocas notas en cada
compás, esta disposición podría facilitar la legibilidad del
código, pero si hay muchas notas en cada compás podría ser mejor
dividirlo en dos voces separadas, de la siguiente manera:

@lilypond[quote,verbatim,ragged-right]
<<
  \key d \minor
  \relative { % Voice = "1"
    r4 g' g4. a8 |
    bes4 bes c bes |
    a2. r4 |
  } \\
  \relative { % Voice = "2"
    d'2 d4 g |
    g4 g g8( a) g4 |
    fis2. s4 |
  }
>>
@end lilypond

@cindex voces, nombrado de
@cindex voces que cruzan corchetes
@cindex ligaduras que cruzan corchetes

Este ejemplo tiene sólo dos voces, pero la misma construcción se
puede usar para codificar tres o más voces mediante la adición de
más separadores de barra invertida.

Los contextos de voz llevan los nombres de @code{"1"},
@code{"2"}, etc. Los primeros contextos establecen las voces
@emph{externas}, la voz aguda del contexto @code{"1"} y la voz
grave del contexto @code{"2"}.  Las voces interiores van en los
contextos @code{"3"} y @code{"4"}.  En cada uno de estos
contextos, la dirección vertical de las ligaduras, plicas,
matices dinámicos, etc., se ajusta de forma correcta.

@lilypond[quote,verbatim]
\new Staff \relative {
  % Main voice
  c'16 d e f
  %  Voice = "1"   Voice = "2"             Voice = "3"
  << { g4 f e } \\ { r8 e4 d c8~ } >> |
  << { d2 e }   \\ { c8 b16 a b8 g~ 2 } \\ { s4 b c2 } >> |
}
@end lilypond

@funindex \voices
Si prefiere introducir las voces en un orden distinto, como de
arriba a abajo, puede especificar los números de voz respectivos
delante de una construcción @code{<< @dots{} >>} usando la
instrucción @code{\voices} command, como por ejemplo:

@lilypond[quote,verbatim]
\new Staff \relative {
  % Main voice
  c'16 d e f
  %  Voice = "1"   Voice = "2"
  << { g4 f e } \\ { r8 e4 d c8~ } >> |
  \voices 1,3,2
  %  Voice = "1"   Voice = "3"    Voice = "2"
  << { d2 e }   \\ { s4 b c2 } \\ { c8 b16 a b8 g~ 2 } >> |
}
@end lilypond

Todas estas voces están separadas de la voz principal que
contiene las notas justo por fuera de la construcción @code{<<
@dots{} >>}.  Le llamaremos a esto la @emph{construcción
simultánea}.  Las ligaduras (de prolongación y de expresión)
solamente pueden conectar notas que estén dentro de la misma voz,
luego las ligaduras no pueden entrar o salir de una construcción
simultánea.  A la inversa, las voces paralelas de construcciones
simultáneas distintas sobre el mismo pentagrama, son la misma
voz.  Otras propiedades relativas a las voces también conllevan
construcciones simultáneas.  A continuación vemos el mismo
ejemplo, con colores y cabezas distintos para cada voz.  Observe
que los cambios en una voz no afectan a otras voces, pero
persisten más tarde dentro de la misma voz.  Observe también que
las notas ligadas se pueden dividir entre las mismas voces de dos
construcciones, como se indica aquí en la voz de triángulos
azules.

@lilypond[quote,verbatim]
\new Staff \relative {
  % Main voice
  c'16 d e f
  <<  % Bar 1
    {
      \voiceOneStyle
      g4 f e
    }
  \\
    {
      \voiceTwoStyle
      r8 e4 d c8~
    }
  >> |
  <<  % Bar 2
     % Voice 1 continues
    { d2 e }
  \\
     % Voice 2 continues
    { c8 b16 a b8 g~ 2 }
  \\
    {
      \voiceThreeStyle
      s4 b c2
    }
  >> |
}
@end lilypond

@funindex \voiceOneStyle
@funindex \voiceTwoStyle
@funindex \voiceThreeStyle
@funindex \voiceFourStyle
@funindex \voiceNeutralStyle

Las instrucciones @code{\voiceXXXStyle} están pensadas
principalmente para usarlas en documentos educativos como este
mismo.  Modifican el color de la cabeza, la plica y las barras, y
el estilo de la cabeza, de forma que las voces se puedan
distinguir fácilmente.  La voz uno está establecida a rombos
rojos, la voz dos a triángulos azules, la voz tres a círculos
verdes con aspas, y la voz cuatro (que no se utiliza aquí) a
aspas color magenta.  @code{\voiceNeutralStyle} (que tampoco se
usa aquí) devuelve todo al estilo predeterminado.  Veremos más
adelante cómo el usuario puede crear instrucciones como éstas.
Véase @ref{Visibilidad y color de los objetos} y @ref{Uso de
variables para los ajustes de disposición}.

@cindex polifonía y modo relativo
@cindex relativo, modo, polifonía y

La polifonía no cambia la relación de las notas dentro de un
bloque @code{\relative}.  La altura de cada nota aún se calcula
con relación a la nota que le precede inmediatamente, o a la
primera nota del acorde precedente.  Así, en

@example
\relative c' @{ notaA << < notaB notaC > \\ notaD >> notaE @}
@end example

@noindent
@code{notaB} es relativa a @code{notaA}                      @*
@code{notaC} es relativa a @code{notaB}, no a @code{notaA};   @*
@code{notaD} es relativa a @code{notaB}, no a @code{notaA} ni a
@code{notaC};                                                 @*
@code{notaE} es relativa a @code{notaD}, no a @code{notaA}.

Una forma alternativa, que podría ser más clara si las notas en las
voces están muy separadas, es colocar una instrucción @code{\relative}
al principio de cada voz:

@example
\relative @{ notaA @dots{} @}
<<
  \relative @{ < notaB notaC > @dots{} @}
\\
  \relative @{ notaD @dots{} @}
>>
\relative @{ notaE @dots{} @}
@end example

Finalmente, analicemos las voces en una pieza de música más
compleja.  He aquí las notas de los dos primeros compases del
segundo de los Dos Nocturnos de Chopin, Op 32.  Este ejemplo se
utilizará en fases posteriores dentro del presente capítulo y el
siguiente, para ilustrar varias técnicas para producir notación,
y por tanto le pedimos que ignore por ahora cualquier cosa en el
código subyacente que le parezca misterioso y tan sólo se
concentre en la música y las voces (todas las complicaciones se
explicarán en secciones posteriores).

@c The following should appear as music without code
@lilypond[quote,ragged-right]
\new Staff \relative {
  \key aes \major
  \voices 1,2,4    % No voice three
  <<  % Voice one
    { c''2 aes4. bes8 }
  \\  % Voice two
    {
      % Ignore these for now - they are explained in Ch 4
      \once \override NoteColumn.force-hshift = #0
      <ees, c>2
      \once \override NoteColumn.force-hshift = #0.5
      des2
    }
  \\  % Voice four
    {
      \override NoteColumn.force-hshift = #0
      aes'2 f4 fes
    }
  >> |
  <c ees aes c>1 |
}
@end lilypond

Con frecuencia, la dirección de las plicas se utiliza para
indicar la continuidad de dos líneas melódicas simultáneas.
Aquí, todas las plicas de las notas agudas se dirigen hacia
arriba y las de las notas graves hacia abajo.  Ésta es la primera
indicación de que se requiere más de una voz.

Pero la necesidad real de varias voces aflora cuando hay notas
que comienzan en el mismo tiempo pero tienen distintas
duraciones.  Observe las notas que comienzan en la tercera parte
del primer compás.  El La bemol es una negra con puntillo, el Fa
es una negra y el Re bemol es una blanca.  Estas notas no se
pueden escribir como un acorde porque todas las notas de un
acorde deben tener la misma duración.  Tampoco se pueden escribir
como notas secuenciales, pues deben comenzar al mismo tiempo.
Esta sección del compás requiere tres voces, y la práctica común
sería escribir todo el compás como tres voces como se muestra
abajo, donde hemos usado distintas cabezas y colores para las
tres voces.  Una vez más, el código que subyace a este ejemplo se
explicará más tarde, así pues ignore todo lo que no entienda.

@c The following should appear as music without code
@c The three voice styles should be defined in -init
@lilypond[quote,ragged-right]
\new Staff \relative {
  \key aes \major
  \voices 1,2,4  % No Voice three (we want stems down)
  <<
    {  % Voice one
      \voiceOneStyle
      c''2 aes4. bes8
    }
  \\  % Voice two
    { \voiceTwoStyle
      % Ignore these for now - they are explained in Ch 4
      \once \override NoteColumn.force-hshift = #0
      <ees, c>2
      \once \override NoteColumn.force-hshift = #0.5
      des2
    }
  \\  % Voice four
    { \voiceThreeStyle
      \override NoteColumn.force-hshift = #0
      aes'2 f4 fes
    }
  >> |
  <c ees aes c>1 |
}
@end lilypond


Vamos a intentar codificar esta música partiendo de cero.  Como
veremos, esto se topa con ciertas dificultades. Comenzamos tal y
como hemos aprendido, usando la construcción @code{<< \\ >>} para
introducir la música del primer compás en tres voces:

@lilypond[quote,verbatim,ragged-right]
\new Staff \relative {
  \key aes \major
  <<
    { c''2 aes4. bes8 } \\ { <ees, c>2 des } \\ { aes'2 f4 fes }
  >> |
  <c ees aes c>1 |
}
@end lilypond

@cindex plica abajo
@cindex voces y dirección de las plicas
@cindex plicas, voces y dirección de las
@cindex plica arriba

Las direcciones de las plicas se asignan automáticamente de forma
que las voces de numeración impar reciben las plicas hacia arriba
y las de numeración par hacia abajo.  Las plicas de las voces 1 y
2 están correctas, pero las plicas de la voz 3 debería ir hacia
abajo en este fragmento en particular.  Puede hacerse simplemente
añadiendo otro par de barras @code{\\}, pero en lugar de eso
usamosla instrucción @code{\voices} (que también nos permitiría
introducir las voces en un orden distinto, si quisiéramos):

@lilypond[quote,verbatim,ragged-right]
\new Staff \relative {
  \key aes \major
  \voices 1,2,4   % Omit Voice three
  <<  % Voice one
    { c''2 aes4. bes8 }
  \\  % Voice two
    { <ees, c>2 des }
  \\  % Voice four
    { aes'2 f4 fes }
  >> |
  <c ees aes c>1 |
}
@end lilypond

@noindent
Vemos que esto arregla la dirección de la plica, pero la
colocación horizontal de las notas no es la deseada.  LilyPond
desplaza las notas interiores cuando ellas o sus plicas de otro
modo colisionarían con las voces exteriores, pero esto no es lo
más adecuado para música de piano.  En otras situaciones, los
desplazamientos que LilyPond aplica pueden no eliminar las
colisiones.  LilyPond aporta varias formas de ajustar la
colocación horizontal de las notas.  Aún no estamos preparados
para ver cómo se corrige esto, por lo que dejaremos el problema
para una sección posterior (véase la propiedad
@code{force-hshift} en @ref{Arreglar notación con
superposiciones}).

@warning{No se pueden crear letras ni objetos de extensión (como
ligaduras, reguladores, etc.) @q{entre} voces distintas.}

@seealso
Referencia de la notación:
@ruser{Varias voces}.


@node Voces explícitas
@subsection Voces explícitas
@translationof Explicitly instantiating voices


@funindex \voiceOne
@funindex \voiceTwo
@funindex \voiceThree
@funindex \voiceFour
@funindex \oneVoice
@funindex \new Voice
@cindex contextos de voz, creación de

Los contextos de voz también se pueden crear manualmente dentro
de un bloque @code{<< >>} para crear música polifónica,
utilizando @code{\voiceOne} @dots{} @code{\voiceFour} para
indicar las direcciones requeridas de plicas, ligaduras, etc.  En
partituras más largas, este método es más claro porque permite
que las voces estén separadas y reciban nombres más descriptivos.

Concretamente, la construcción @code{<< \\ >>} que usamos en la
sección previa:

@example
\new Staff @{
  \relative @{
    << @{ e'4 f g a @} \\ @{ c,4 d e f @} >>
  @}
@}
@end example

@noindent
equivale a

@example
\new Staff <<
  \new Voice = "1" @{ \voiceOne \relative @{ e'4 f g a @} @}
  \new Voice = "2" @{ \voiceTwo \relative @{ c'4 d e f @} @}
>>
@end example

Los dos ejemplos anteriores producen:

@c The following example should not display the code
@lilypond[ragged-right,quote]
\new Staff <<
  \new Voice = "1" { \voiceOne \relative { e'4 f g a } }
  \new Voice = "2" { \voiceTwo \relative { c'4 d e f } }
>>
@end lilypond

@cindex voces, retorno a única
@cindex retorno a voz única

Las instrucciones @code{\voiceXXX} establecen la dirección de las
plicas, ligaduras de expresión, ligaduras de prolongación,
articulaciones, anotaciones de texto, puntillos y digitaciones.
@code{\voiceOne} y @code{\voiceThree} hacen que estos objetos
apunten hacia arriba, mientras que @code{\voiceTwo} y
@code{\voiceFour} los hacen apuntar hacia abajo.  Estas
instrucciones también producen un desplazamiento horizontal para
cada voz cuando es necesario para evitar choques entre las
cabezas.  La instrucción @code{\oneVoice} devuelve los ajustes de
nuevo a los valores normales para una sola voz.

Veamos en algunos ejemplos sencillos exactamente qué efecto
tienen @code{\oneVoice}, @code{\voiceOne} y @code{voiceTwo} sobre
el marcado, las ligaduras de unión y de expresión y las
indicaciones de dinámica:

@lilypond[quote,ragged-right,verbatim]
\relative {
  % Default behavior or behavior after \oneVoice
  c'4 d8~ 8 e4( f | g4 a) b-> c |
}
@end lilypond

@lilypond[quote,ragged-right,verbatim]
\relative {
  \voiceOne
  c'4 d8~ 8 e4( f | g4 a) b-> c |
  \oneVoice
  c,4 d8~ 8 e4( f | g4 a) b-> c |
}
@end lilypond

@lilypond[quote,ragged-right,verbatim]
\relative {
  \voiceTwo
  c'4 d8~ 8 e4( f | g4 a) b-> c |
  \oneVoice
  c,4 d8~ 8 e4( f | g4 a) b-> c |
}
@end lilypond

A continuación veremos cuatro formas distintas de componer la
notación del mismo pasaje polifónico, cada una de las cuales
tiene sus ventajas según la circunstancia, utilizando el ejemplo
de la sección anterior.

Una expresión que aparece directamente dentro de @code{<< >>}
pertenece a la voz principal (pero, observe, @strong{no} dentro
de una construcción @code{<< \\ >>}).  Esto es útil cuando
aparecen voces nuevas mientras la voz principal está sonando.  A
continuación podemos ver una realización más correcta del ejemplo
de la sección anterior.  Las notas rojas en forma de rombo
muestran que la melodía principal está ahora dentro de un
contexto de una sola voz, haciendo que se pueda trazar una
ligadura por encima de ellas.

@lilypond[quote,ragged-right,verbatim]
\new Staff \relative {
  \voiceOneStyle
  % This section is homophonic
  c'16^( d e f
  % Start simultaneous section of three voices
  <<
    % Continue the main voice in parallel
    { g4 f e | d2 e) | }
    % Initiate second voice
    \new Voice {
      % Set stems, etc., down
      \voiceTwo
      r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
    }
    % Initiate third voice
    \new Voice {
      % Set stems, etc, up
      \voiceThree
      s2. | s4 b c2 |
    }
  >>
}
@end lilypond

@cindex voices, continuas
@funindex \voices

La instrucción @code{\voices} se puede usar también para continuar
una voz principal dentro de la construcción de voces simultáneas:

@lilypond[quote,ragged-right,verbatim]
\new Staff \relative {
  \new Voice = "main" {
    \voiceOneStyle
    % This section is homophonic
    c'16^( d e f
    % Start simultaneous section of three voices
    \voices "main",2,3
    <<
      % Continue the main voice in parallel
      { g4 f e | d2 e) | }
      % Initiate second voice
    \\
      % Set stems, etc., down
      { r8 e4 d c8~ | 8 b16 a b8 g~ 2 | }
    \\
      % Initiate third voice
      % Set stems, etc, up
      { s2. | s4 b c2 | }
    >>
  }
}
@end lilypond


@cindex anidado de expresiones musicales
@cindex anidado de construcciones simultáneas
@cindex anidado de voces
@cindex voces temporales
@cindex voces, anidado de

Son posibles construcciones polifónicas anidadas más
profundamente, y si una voz aparece sólo brevemente podría haber
una forma más natural de tipografiar la música.

@lilypond[quote,ragged-right,verbatim]
\new Staff \relative {
  c'16^( d e f
  <<
    { g4 f e | d2 e) | }
    \new Voice {
      \voiceTwo
      r8 e4 d c8~ |
      <<
        { c8 b16 a b8 g~ 2 | }
        \new Voice {
          \voiceThree
          s4 b c2 |
        }
      >>
    }
  >>
}
@end lilypond

@cindex espaciadoras, notas

Este método de anidar voces nuevas brevemente es útil cuando sólo
hay secciones polifónicas pequeñas, pero cuando todo el
pentagrama es muy polifónico podría ser más claro usar varias
voces todo el tiempo, usando notas espaciadoras para pasar por
encima de las secciones en que una voz está en silencio, como
aquí:

@lilypond[quote,ragged-right,verbatim]
\new Staff \relative <<
  % Initiate first voice
  \new Voice {
    \voiceOne
    c'16^( d e f g4 f e | d2 e) |
  }
  % Initiate second voice
  \new Voice {
    % Set stems, etc, down
    \voiceTwo
    s4 r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
  }
  % Initiate third voice
  \new Voice {
    % Set stems, etc, up
    \voiceThree
    s1 | s4 b c2 |
  }
>>
@end lilypond

@subsubheading Columnas de notas

@cindex columna de notas
@cindex colisiones de notas
@cindex notas, colisiones de
@cindex desplazamiento, instrucciones de
@funindex \shiftOff
@funindex \shiftOn
@funindex \shiftOnn
@funindex \shiftOnnn

Las notas cercanas de un acorde, o las notas que se producen al
mismo tiempo en distintas voces, se disponen en dos (y
ocasionalmente más) columnas para evitar el solapamiento de las
cabezas.  Reciben el nombre de columnas de notas.  Hay columnas
distintas para cada voz, y el desplazamiento especificado en
curso dependiente de la voz se aplica a la columna de la nota si
en caso contrario se produjese una colisión.  Esto se puede ver
en el ejemplo anterior. En el compás 2 el Do en la voz dos está
desplazado a la derecha respecto del Re de la voz uno, y en el
último acorde el Do de la voz tres también está desplazado a la
derecha respecto de las otras notas.

Las instrucciones @code{\shiftOn}, @code{\shiftOnn},
@code{\shiftOnnn} y @code{\shiftOff} especifican el grado en que
se deben desplazar las notas y acordes de la voz si en caso
contrario ocurriese una colisión.  De forma predeterminada, las
voces exteriores (normalmente las voces uno y dos) llevan
especificado @code{\shiftOff}, mientras que las voces interiores
(tres y cuatro) tienen @code{\shiftOn} especificado.  Cuando se
aplica un desplazamiento, las voces uno y tres se desplazan hacia
la derecha y las voces dos y cuatro se desplazan hacia la
izquierda.

@code{\shiftOnn} y @code{\shiftOnnn} definen niveles adicionales
de desplazamiento que se pueden especificar temporalmente para
resolver colisiones en situaciones complejas (véase
@ref{Ejemplos reales de música}).

Una columna de notas puede contener sólo una nota (o acorde) de
una voz con las plicas hacia arriba y una not (o acorde) de una
voz con las plicas hacia abajo.  Si las notas de dos voces que
tienen las plicas en la misma dirección se sitúan en la misma
posición y las dos voces no tienen ningún desplazamiento o llevan
especificado el mismo desplazamiento, se producirá el mensaje de
error @qq{Esta voz requiere un ajuste de @code{@bs{}voiceXx} o
@code{@bs{}shiftXx}}.


@seealso
Manual de aprendizaje:
@ref{Mover objetos}.

Referencia de la notación:
@ruser{Varias voces}.


@node Voces y música vocal
@subsection Voces y música vocal
@translationof Voices and vocals


La música vocal presenta una dificultad especial: tenemos que
combinar dos expresiones, a saber, las notas y la letra.

@funindex \new Lyrics
@funindex \lyricsto
@funindex Lyrics
@cindex Lyrics, creación de un contexto
@cindex letra, creación de un contexto de
@cindex letra, enlazar con una voz

Ya ha visto la instrucción @code{\addlyrics@{@}}, que maneja bien
partituras sencillas.  Sin embargo esta técnica es algo limitada.
Para música de mayor complejidad, tenemos que introducir la letra
en un contexto @code{Lyrics} utilizando @code{\new Lyrics} y
enlazar explícitamente la letra y las notas mediante
@code{\lyricsto@{@}}, usando el nombre asignado a la voz.

@lilypond[quote,verbatim]
<<
  \new Voice = "one" {
    \relative {
      \autoBeamOff
      \time 2/4
      c''4 b8. a16 | g4. f8 | e4 d | c2 |
    }
  }
  \new Lyrics \lyricsto "one" {
    No more let | sins and | sor -- rows | grow. |
  }
>>
@end lilypond

Observe que la letra se debe enlazar a un contexto de
@code{Voice}, @emph{no} a un contexto de @code{Staff}.  Este es
un caso en que es necesario crear contextos de @code{Staff} y de
@code{Voice} explícitamente.

@cindex letra y barrado
@cindex barrado y letra
@funindex \autoBeamOff

El barrado automático que LilyPond usa de forma predeterminada
funciona bien para la música instrumental, pero no tan bien para
música con letra, donde o bien el barrado no se necesita en
absoluto, o bien se utiliza para indicar los melismas de la
letra.  En el ejemplo anterior hemos utilizado la instrucción
@code{\autoBeamOff} para desactivar el barrado automático.

@funindex \new ChoirStaff
@funindex ChoirStaff
@funindex \lyricmode
@cindex vocal, estructura de una partitura
@cindex coro, sistema de

Ahora vamos a reutilizar el ejemplo anterior de «Judas Macabeo»
para ilustrar esta técnica más flexible.  Primero la
reescribiremos para que use variables, de manera que la música y
la letra se puedan separar de la estructura de pentagramas.
También introduciremos una llave de grupo de ChoirStaff.  La
letra en sí se debe introducir con @code{\lyricmode} para estar
seguros de que se interpreta como letra y no como música.

@lilypond[quote,verbatim]
global = { \key f \major \time 6/8 \partial 8 }

SopOneMusic = \relative {
  c''8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ 4
}
SopOneLyrics = \lyricmode {
  Let | flee -- cy flocks the | hills a -- dorn, __
}
SopTwoMusic = \relative {
  r8 | r4. r4 c'8 | a'8([ g)] f f([ e)] d | e8([ d)] c bes'
}
SopTwoLyrics = \lyricmode {
  Let | flee -- cy flocks the | hills a -- dorn,
}

\score {
  \new ChoirStaff <<
    \new Staff <<
      \new Voice = "SopOne" {
        \global
        \SopOneMusic
      }
      \new Lyrics \lyricsto "SopOne" {
        \SopOneLyrics
      }
    >>
    \new Staff <<
      \new Voice = "SopTwo" {
        \global
        \SopTwoMusic
      }
      \new Lyrics \lyricsto "SopTwo" {
        \SopTwoLyrics
      }
    >>
  >>
}
@end lilypond

Ésta es la estructura básica de todas las partituras vocales.  Se
pueden añadir más pentagramas según se necesite, se pueden añadir
más voces a los pentagramas y más estrofas a la letra, y las
variables que contienen la música se pueden colocar fácilmente en
archivos separados cuando se hagan demasiado largos.

@cindex himno, estructura de
@cindex SATB, estructura de
@cindex vocal, partitura, varias estrofas
@cindex varias estrofas vocales
@cindex estrofas, varias, vocales

A continuación podemos ver un ejemplo final de la primera línea
de un himno con cuatro estrofas, para coro SATB.  En este caso la
letra de las cuatro partes es la misma.  Observe cómo utilizamos
variables para separar la notación musical de la estructura de
pentagramas.  Observe también cómo se utiliza una variable, para
la que hemos elegido el nombre @q{TimeKey} («compás y
tonalidad»), para que contenga varias instrucciones que se usarán
dentro de los dos pentagramas.  En otros ejemplos se le suele dar
el nombre de @q{global}.



@lilypond[quote,verbatim]
keyTime = { \key c \major \time 4/4 \partial 4 }

SopMusic   = \relative { c'4 | e4. e8 g4  g    | a4   a   g  }
AltoMusic  = \relative { c'4 | c4. c8 e4  e    | f4   f   e  }
TenorMusic = \relative  { e4 | g4. g8 c4.   b8 | a8 b c d e4 }
BassMusic  = \relative  { c4 | c4. c8 c4  c    | f8 g a b c4 }

VerseOne =
  \lyricmode { E -- | ter -- nal fa -- ther, | strong to save, }
VerseTwo   =
  \lyricmode { O | Christ, whose voice the | wa -- ters heard, }
VerseThree =
  \lyricmode { O | Ho -- ly Spi -- rit, | who didst brood }
VerseFour  =
  \lyricmode { O | Tri -- ni -- ty of | love and pow'r }

\score {
  \new ChoirStaff <<
    \new Staff <<
      \clef "treble"
      \new Voice = "Sop"  { \voiceOne \keyTime \SopMusic }
      \new Voice = "Alto" { \voiceTwo \AltoMusic }
      \new Lyrics \lyricsto "Sop" { \VerseOne   }
      \new Lyrics \lyricsto "Sop" { \VerseTwo   }
      \new Lyrics \lyricsto "Sop" { \VerseThree }
      \new Lyrics \lyricsto "Sop" { \VerseFour  }
    >>
    \new Staff <<
      \clef "bass"
      \new Voice = "Tenor" { \voiceOne \keyTime \TenorMusic }
      \new Voice = "Bass"  { \voiceTwo \BassMusic }
    >>
  >>
}
@end lilypond


@seealso
Referencia de la notación:
@ruser{Música vocal}.


@node Contextos y grabadores
@section Contextos y grabadores
@translationof Contexts and engravers

Los contextos y grabadores se han mencionado de manera informal
en secciones anteriores; ahora tan sólo vamos a ver estos
conceptos con más detalle, pues son importantes en el ajuste fino
de la salida de LilyPond.

@menu
* Explicación de los contextos::
* Crear contextos::
* Explicación de los grabadores::
* Modificar las propiedades de los contextos::
* Añadir y eliminar grabadores::
@end menu

@node Explicación de los contextos
@subsection Explicación de los contextos
@translationof Contexts explained

@cindex contextos, explicación de los

Cuando se imprime la música, se tienen que añadir a la salida una
gran cantidad de elementos notacionales que no aparecen
explícitamente en el archivo de entrada.  Por ejemplo, compare la
entrada y la salida del siguiente ejemplo:

@lilypond[quote,verbatim]
\relative { cis''4 cis2. | a4 a2. | }
@end lilypond

La entrada es bastante escueta, pero en la salida se han añadido
las líneas divisorias, las alteraciones, la clave y la armadura
de la tonalidad.  Cuando LilyPond @emph{interpreta} la entrada,
la información musical se analiza de izquierda a derecha de igual
forma que un intérprete lee la partitura.  Mientras se lee el
código de entrada, el programa recuerda dónde están los límites
de los compases, y qué alturas requieren alteraciones
accidentales explícitas.  Esta información se debe conservar a
varios niveles.  Por ejemplo, una alteración accidental afecta
solamente a un pentagrama, mientras que una línea divisoria debe
estar sincronizada a lo largo de todo el sistema.

Dentro de LilyPond, estas reglas y pequeñas porciones de
información se agrupan en @emph{Contexts}.  Ya hemos visto el
contexto de voz, @code{Voice}.  Otros ejemplos de contextos son
@code{Staff} (Pauta o pentagrama) y @code{Score} (Partitura).
Los contextos son jerárquicos, de forma que reflejan la
naturaleza jerárquica de una partitura musical.  Por ejemplo: un
contexto de @code{Staff} contener muchos contextos de
@code{Voice}, y un contexto de @code{Score} puede contener muchos
contextos de @code{Staff}.

@quotation
@sourceimage{context-example,5cm,,}
@end quotation

Cada contexto asume la responsabilidad de imponer algunas reglas
de notación, creando ciertos objetos de notación y manteniendo
las propiedades asociadas.  Por ejemplo, el contexto @code{Voice}
puede introducir una alteración accidental y entonces el contexto
@code{Staff} mantiene la regla de mostrar o suprimir la
alteración para el resto del compás.

Otro ejemplo lo constituye el hecho de que la sincronización de
las líneas divisorias se gestiona dentro del contexto de la
partitura, @code{Score}, de forma predeterminada.  Sin embargo,
en algunas músicas posiblemente no queramos que las líneas
divisorias estén sincronizadas (pensemos en una partitura
polimétrica en compases de 4/4 y de 3/4).  En tales casos,
debemos modificar los ajustes por omisión de los contextos
@code{Score} y @code{Staff}.

Para partituras muy sencillas, los contextos se crean
implícitamente y no debemos preocuparnos por ellos.  Para piezas
mayores, como por ejemplo cualquiera que tenga más de un
pentagrama, los contextos se deben crear explícitamente para
asegurarnos de que tendremos la cantidad exacta de pentagramas
que necesitamos, y que están en el orden correcto.  Para
tipografiar piezas con notación especializada, es frecuente la
modificación de contextos existentes o incluso definir unos
completamente nuevos.

Además de los contextos @code{Score,} @code{Staff} y
@code{Voice}, hay contextos que se sitúan entre los niveles de
partitura y de pentagrama para controlar los grupos de
pentagramas, como los contextos @code{PianoStaff} y
@code{ChoirStaff}.  También existen contextos alternativos de
pentagrama y de voz, y contextos para la letra, la percusión,
diagramas de trastes, bajo cifrado, etc.

Los nombres de todos los tipos de contextos se componen de una o
más palabras que comienzan con mayúscula y que están unidas unas
a otras sin guión ni barra baja, por ejemplo:
@code{GregorianTranscriptionStaff}.


@seealso
Referencia de la notación:
@ruser{Explicación de los contextos}.


@node Crear contextos
@subsection Crear contextos
@translationof Creating contexts

@funindex \new
@cindex nuevos contextos
@cindex creación de contextos
@cindex contextos, creación de

En un archivo de entrada, el bloque de partitura (que se presenta
precedido por la instrucción @code{\score}) contiene una sola
expresión musical; pero también puede contener
una definición de salida asociada: bien un
bloque @code{\layout} o bien un bloque @code{\midi}.  El
contexto @code{Score} se suele dejar que se cree automáticamente
cuando comienza la interpretación de esa expresión musical.

Para partituras que solamente tienen una voz y un pentagrama,
podemos también dejar que los contextos @code{Voice} y
@code{Staff} se creen automáticamente, pero para partituras más
complejas es necesario crearlos a mano.  La instrucción más
simple que hace esto es @code{\new}.  Se antepone a una expresión
musical, por ejemplo

@example
\new @var{tipo} @var{expresión_musical}
@end example

@noindent
donde @var{tipo} es el nombre de un contexto (como @code{Staff} o
@code{Voice}).  Esta instrucción crea un contexto nuevo, y
comienza a interpretar la @var{expresión_musical} que está dentro
de ese contexto.

@warning{No se debe usar @bs{}@code{new Score} porque el contexto
@code{Score} esencial del nivel superior ya se crea
automáticamente al interpretarse la expresión musical que está
dentro del bloque @bs{}@code{score}.  Los valores predeterminados
de propiedades de contexto válidos para toda la partitura se
pueden cambiar dentro del bloque @bs{}@code{layout}.  Véase
@ref{Modificar las propiedades de los contextos}.}

En las secciones anteriores ha podido ver muchos ejemplos
prácticos que creaban nuevos contextos de @code{Staff} y de
@code{Voice}, pero para recordarle cómo se emplean estas
instrucciones en la práctica, he aquí un ejemplo anotado de
música real:

@lilypond[quote,verbatim,ragged-right]
\score {  % start of single compound music expression
  <<  % start of simultaneous staves section
    \time 2/4
    \new Staff {  % create RH staff
      \clef "treble"
      \key g \minor
      \new Voice {  % create voice for RH notes
        \relative {  % start of RH notes
          d''4 ees16 c8. |
          d4 ees16 c8. |
        }  % end of RH notes
      }  % end of RH voice
    }  % end of RH staff
    \new Staff <<  % create LH staff; needs two simultaneous voices
      \clef "bass"
      \key g \minor
      \new Voice {  % create LH voice one
        \voiceOne
        \relative {  % start of LH voice one notes
          g8 <bes d> ees, <g c> |
          g8 <bes d> ees, <g c> |
        }  % end of LH voice one notes
      }  % end of LH voice one
      \new Voice {  % create LH voice two
        \voiceTwo
        \relative {  % start of LH voice two notes
          g4 ees |
          g4 ees |
        }  % end of LH voice two notes
      }  % end of LH voice two
    >>  % end of LH staff
  >>  % end of simultaneous staves section
}  % end of single compound music expression
@end lilypond

(Observe cómo todas las instrucciones que abren un bloque con una
llave curva, @code{@{}, o con ángulos dobles, @code{<<}, están
sangrados (tienen un margen adicional) con dos espacios
adicionales, y la llave de cierre correspondiente tiene un margen
exactamente igual.  Aunque no es necesario, la observancia de
esta práctica reducirá considerablemente el número de errores de
@q{paréntesis descompensados}, y se recomienda vivamente.
Permite apreciar de un solo vistazo la estructura de la música, y
cualquier paréntesis descompensado aparecerá con obviedad.
Observe también cómo el pentagrama de la MI se crea usando dobles
ángulos porque requiere dos voces, mientras que el pentagrama de
la MD se crea con una expresión musical única encerrada entre
llaves porque sólo requiere una voz.)


@cindex contextos, nombrado
@cindex nombrar contextos

La instrucción @code{\new} también puede otorgar un nombre
identificativo al contexto para distinguirlo de otros contextos
del mismo tipo:

@example
\new @var{tipo} = @var{identificador} @var{expresión_musical}
@end example

Observe la distinción entre el nombre del tipo de contexto,
@code{Staff}, @code{Voice}, etc., y el nombre identificativo de
una instancia en particular de ese tipo, que puede ser cualquier
secuencia de letras inventada por el usuario.  En el nombre
identificativo también se pueden utilizar dígitos y espacios,
pero en este caso aquél debe ir entre comillas p.ej. @code{\new
Staff = "MiPentagrama 1" @var{expresión_musical}}.  El nombre
identificativo se utiliza para referirnos más tarde a esa
instancia en particular de un contexto.  Hemos visto esto en la
sección acerca de la letra, en @ref{Voces y música vocal}.


@seealso
Referencia de la notación:
@ruser{Crear y referenciar contextos}.


@node Explicación de los grabadores
@subsection Explicación de los grabadores
@translationof Engravers explained

@cindex grabadores

Todas y cada una de las marcas de la salida impresa de una
partitura hecha con LilyPond está producida por un
@code{Engraver} (grabador).  Así, tenemos un grabador para
imprimir pentagramas, otro para imprimir las cabezas de las
notas, otro para las plicas, otro para las barras, etc, etc.  ¡En
total hay más de 120 grabadores!  Afortunadamente, para la mayor
parte de las partituras no es necesario conocer más que algunos,
y para partituras sencillas no tenemos que saber nada de ninguno
de ellos.

Los grabadores residen y operan dentro de Contextos.  Los
grabadores como el grabador de la indicación metronómica,
@code{Metronome_mark_engraver}, cuya acción y resultado se
aplican a la partitura como un todo, operan en el contexto del
nivel más alto: el contexto de partitura @code{Score}.

El grabador de la clave @code{Clef_engraver} y el de la armadura
@code{Key_engraver} se encuentran probablemente en todos los
contextos de pentagrama (@code{Staff}), pues los distintos
pentagramas podrían requerir diferentes claves y armaduras.

El grabador de las cabezas de nota @code{Note_heads_engraver} y
el de las plicas @code{Stem_engraver} viven en cada uno de los
contextos de voz @code{Voice}, el contexto de nivel más bajo de
todos.

Cada grabador procesa los objetos particulares asociados con su
función, y mantiene las propiedades que están relacionadas con
dicha función.  Estas propiedades, como las que están asociadas
con los contextos, se pueden modificar para cambiar el
funcionamiento del grabador o el aspecto de esos elementos en la
partitura impresa.

Todos los grabadores tienen nombres compuestos de varias palabras
que describen su función.  Sólo está en mayúsculas la inicial de
la primera palabra, y el resto se le une mediante guiones bajos.
Así, el grabador @code{Staff_symbol_engraver} es responsable de
la creación de las líneas del pentagrama, y el
@code{Clef_engraver} determina y establece la altura o el punto
de referencia sobre el pentagrama dibujando un símbolo de clave.

A continuación presentamos algunos de los grabadores más comunes,
junto a su función.  Podrá comprobar que es fácil adivinar la
función a partir del nombre (en inglés), y viceversa.

@multitable @columnfractions .3 .7
@headitem Grabador
  @tab Función
@item Accidental_engraver
  @tab Hace las alteraciones accidentales, de precaución y de sugerencia.
@item Beam_engraver
  @tab Graba las barras
@item Clef_engraver
  @tab Graba las claves
@item Completion_heads_engraver
  @tab Divide las notas que atraviesan una línea divisoria
@item Dynamic_engraver
  @tab Crea reguladores e indicaciones dinámicas textuales
@item Forbid_line_break_engraver
  @tab Evita los saltos de línea si queda algún elemento musical activo
@item Key_engraver
  @tab Crea la armadura de la tonalidad
@item Metronome_mark_engraver
  @tab Graba la indicación metronómica
@item Note_heads_engraver
  @tab Graba la cabeza de las notas
@item Rest_engraver
  @tab Graba los silencios
@item Staff_symbol_engraver
  @tab Graba las cinco líneas (de forma predeterminada) del pentagrama
@item Stem_engraver
  @tab Crea las plicas y los trémolos de una sola plica
@item Time_signature_engraver
  @tab Crea las indicaciones de compás
@end multitable

@smallspace

Más adelante veremos cómo la salida de LilyPond se puede cambiar
mediante la modificación del funcionamiento de los Grabadores.


@seealso
Referencia de funcionamiento interno:
@rinternals{Engravers and Performers}.


@node Modificar las propiedades de los contextos
@subsection Modificar las propiedades de los contextos
@translationof Modifying context properties

@cindex contexto, propiedades de
@cindex contexto, propiedades de, modificación
@cindex modificar las propiedades de contexto
@funindex \set
@funindex \unset

Los contextos se responsabilizan de mantener los valores de un
cierto número de @emph{properties} de contexto.  Muchas de ellas
se pueden cambiar para influir en la interpretación del código de
entrada y cambiar así la apariencia de la salida impresa.  Se
modifican mediante la instrucción @code{\set}.  Esta instrucción
toma la forma siguiente:

@example
\set @emph{NombreDelContexto}.@emph{nombreDeLaPropiedad} = #@emph{valor}
@end example

Donde el @emph{NombreDelContexto} es normalmente @code{Score},
@code{Staff} o @code{Voice}.  Se puede omitir, en cuyo caso se
supone que es el contexto en curso (normalmente @code{Voice}).

Los nombres de las propiedades de contexto consisten en palabras
unidas sin ningún guión o barra baja, y donde todas las palabras
excepto la primera empiezan en mayúscula.  A continuación podemos
ver algunos ejemplos de nombres de propiedades utilizadas con
frecuencia.  Hay muchas más que las que se muestran aquí.

@c attempt to force this onto a new page
@need 50
@multitable @columnfractions .25 .15 .45 .15
@headitem nombreDeLaPropiedad
  @tab Tipo
  @tab Función
  @tab Valor de ejemplo
@item extraNatural
  @tab Booleano
  @tab Si es verdadero, poner becuadros adicionales antes de las alteraciones
  @tab @code{#t}, @code{#f}
@item currentBarNumber
  @tab Entero
  @tab Ajustar el número del compás actual
  @tab @code{50}
@item doubleSlurs
  @tab Booleano
  @tab Si es verdadero, imprimir ligaduras de expresión por encima y por debajo de las notas
  @tab @code{#t}, @code{#f}
@item instrumentName
  @tab Texto
  @tab Establecer el nombre del pentagrama, situado a la izquierda
  @tab @code{"Cello I"}
@item fontSize
  @tab Real
  @tab Aumentar o disminuir el tamaño de la fuente tipográfica
  @tab @code{2.4}
@item stanza
  @tab Texto
  @tab Establecer el texto que se imprime antes del comienzo de una estrofa
  @tab @code{"2"}
@end multitable

@noindent
donde un valor Booleano es verdadero (@code{#t}, True) o falso
(@code{#f}, False), un Entero es un número entero positivo, un
número Real es un número decimal positivo o negativo, y el texto
se encierra entre comillas dobles.  Observe la aparición de
signos de cuadradillo, (@code{#}), en dos lugares diferentes:
como parte del valor Booleano antes de la @code{t} o la @code{f},
y antes del @emph{valor} dentro de la sentencia @code{\set}.  Así
pues, cuando se está escribiendo un valor Booleano, hay que
escribir dos signos de cuadradillo, por ejemplo: @code{##t}.

@cindex propiedades que funcionan en contextos
@cindex establecer propiedades en contextos

Antes de poder establecer cualquiera de estas propiedades,
tenemos que saber en qué contexto operan.  A veces es algo obvio,
pero en ocasiones puede ser algo enrevesado.  Si especificamos un
contexto equivocado, no se produce ningún mensaje de error, pero
el funcionamiento esperado no tendrá lugar.  Por ejemplo, la
propiedad @code{clefGlyph} (dibujo de la clave) vive
claramente dentro del contexto de @code{Staff}, puesto que es el
glifo de la clave del pentagrama lo que se quiere cambiar.
En este ejemplo, la primera clave del
pentagrama se imprime correctamente, pero no la segunda (que imprime
la clave predeterminada de Sol en lugar de la de Fa), porque hemos
omitido el nombre del contexto.

@lilypond[quote,verbatim,ragged-right]
<<
  \new Staff \relative {
    \set Staff.clefGlyph = "clefs.C"
    c''2 c
  }
  \new Staff \relative {
    \set clefGlyph = "clefs.F"  % Wrong!
    d'2 d
  }
>>
@end lilypond

Recuerde que el nombre del contexto predeterminado es
@code{Voice}, así que la segunda instrucción @code{\set}
establece la propiedad @code{clefGlyph} del contexto
@code{Voice} a @code{clefs.F}, pero como LilyPond no busca esta
propiedad en el contexto @code{Voice}, no se realiza ninguna
acción.  Esto no es un error, y no se registra ningún mensaje en
el archivo Log de registro de errores.

De forma parecida, si el nombre de la propiedad se escribe con
alguna falta, no se produce ningún mensaje de error, y claramente
la acción esperada no puede tener lugar.  De hecho, se puede
establecer cualquier @q{property} (ficticia) usando cualquier
nombre que queramos en cualquier contexto que exista, mediante el
uso de la instrucción @code{\set}.  Pero si el nombre no es
conocido para LilyPond, no producirá ninguna acción.  Algunos
editores de texto que apoyan a los archivos de entrada de
LilyPond de manera especial, documentan los nombres de
propiedades con viñetas cuando pasamos sobre ellos con el puntero
del ratón, como JEdit con la extensión LilyPondTool, o resaltan
los nombres de propiedades desconocidas de manera diferente, como
ConTEXT.  Si no se utiliza un editor con tales posibilidades, se
recomienda comprobar la corrección del nombre de la propiedad en
el manual de Referencia de funcionamiento interno: véase
@rinternals{Tunable context properties} o @rinternals{Contexts}.

La propiedad @code{clefGlyph} tendrá efecto solamente si se
establece dentro del contexto @code{Staff}, pero algunas
propiedades se pueden establecer en más de un contexto.  Por
ejemplo, la propiedad @code{extraNatural} está establecida por
defecto al valor @code{##t} (verdadero) para todos los
pentagramas.  Si se establece a @code{##f} (falso) en un contexto
de @code{Staff} determinado, se aplicará solamente a las
alteraciones de ese pentagrama.  Si se establece a falso en el
contexto de la partitura, @code{Score}, se aplicará a todos los
pentagramas.

Así, esto desactivará los becuadros adicionales en un pentagrama:

@lilypond[quote,verbatim,ragged-right]
<<
  \new Staff \relative {
    aeses'2 aes
  }
  \new Staff \relative {
    \set Staff.extraNatural = ##f
    aeses'2 aes
  }
>>
@end lilypond

@noindent
y esto los desactivará en todos los pentagramas:

@lilypond[quote,verbatim,ragged-right]
<<
  \new Staff \relative {
    aeses'2 aes
  }
  \new Staff \relative {
    \set Score.extraNatural = ##f
    aeses'2 aes
  }
>>
@end lilypond

Como un ejemplo más, si se establece @code{clefTransposition}
dentro del contexto de @code{Score}, éste cambia inmediatamente
el valor de la transposición en todos los pentagramas en curso y
establece un nuevo valor predeterminado que se aplicará a todos
los pentagramas.

La instrucción opuesta, @code{\unset}, tiene el efecto de
suprimir la propiedad del contexto, lo que ocasiona que la
mayoría de las propiedades vuelvan a su valor predeterminado.
Normalmente no es necesario el uso de @code{\unset}, pues una
nueva instrucción @code{\set} hará el ajuste deseado.

Las instrucciones @code{\set} y @code{\unset} pueden aparecer en
cualquier lugar del archivo de entrada y tendrán efecto a partir
del tiempo en que se encuentran y hasta el final de la partitura
o hasta que la propiedad se establezca de nuevo mediante
@code{\set} o @code{\unset}.  Probemos a modificar el tamaño de
la fuente tipográfica, lo que afecta al tamaño de las cabezas de
las notas (entre otras cosas) varias veces.  El cambio se toma a
partir del valor predeterminado, no el valor en curso.

@lilypond[quote,verbatim,ragged-right]
\relative {
  c'4 d
  % make note heads smaller
  \set fontSize = #-4
  e4 f |
  % make note heads larger
  \set fontSize = #2.5
  g4 a
  % return to default size
  \unset fontSize
  b4 c |
}
@end lilypond

Hemos podido ver cómo establecer los valores de diversos tipos de
propiedad diferentes.  Observe que los números enteros y reales
van siempre precedidos de un símbolo de cuadradillo, @code{#},
mientras que un valor booleano verdadero o falso se especifica
mediante @code{##t} y @code{##f}, con dos cuadradillos.  Una
propiedad de texto se debe encerrar entre comillas dobles, como
antes, aunque veremos más adelante que el texto realmente se
puede especificar de una forma mucho más general utilizando la
potentísima instrucción @code{markup}.

@subsubheading Cambiar las propiedades de un contexto con @code{\with}

@funindex \with
@cindex contexto, propiedades de, establecimiento con \with

El valor predeterminado de las propiedades de contexto se puede
establecer en el momento en que se crea el contexto.  A veces
esta forma de establecer el valor de una propiedad es mucho más
clara, si ha de quedar fijo durante todo el tiempo que dure el
contexto.  Cuando se crea un contexto con una instrucción
@code{\new} puede ir inmediatamente seguido de un bloque
@code{\with @{ @dots{} @}} en el que se establecen los valores
predeterminados de las propiedades.  Por ejemplo, si queremos
suprimir la impresión de becuadros adicionales para toda la
duración de un pentagrama, podemos escribir:

@example
\new Staff \with @{ extraNatural = ##f @}
@end example

@noindent
de la siguiente forma:

@lilypond[quote,verbatim,ragged-right]
<<
  \new Staff {
    \relative {
      gisis'4 gis aeses aes
    }
  }
  \new Staff \with { extraNatural = ##f } {
    \relative {
      gisis'4 gis aeses aes
    }
  }
>>
@end lilypond

Las propiedades ajustadas de esta manera aún pueden cambiarse
dinámicamente utilizando @code{\set} y ser devueltas al valor
predeterminados que se estableció en el bloque @code{\with}
mediante @code{\unset}.

@cindex fontSize (tamaño de la tipografía)
@cindex fuente, tamaño de la
@cindex tamaño de la fuente

Así pues, si la propiedad @code{fontSize} se ajusta dentro de una
cláusula @code{\with}, tiene el efecto de reiniciar el valor
predeterminado del tamaño de la fuente tipográfica.  Si más tarde
se modifica con @code{\set}, este nuevo valor predeterminado
puede restablecerse con la instrucción @code{\unset fontSize}.

@subsubheading Cambiar las propiedades de un contexto con @code{\context}

@cindex contextos, establecer propiedades de, con \context
@funindex \context

Los valores de propiedad de los contextos se pueden establecer
para @emph{todos} los contextos de un tipo determinado, como por
ejemplo todos los contextos de @code{Staff}, con una única
instrucción.  El tipo de contexto se identifica mediante la
utilización del nombre de su tipo, como @code{Staff}, precedido
de una barra invertida: @code{\Staff}.  El enunciado que
establece el valor de la propiedad es el mismo que el que está en
un bloque @code{\with}, presentado anteriormente.  Se coloca en
un bloque @code{\context} dentro de un bloque @code{\layout}.
Cada bloque @code{\context} afecta a todos los contextos del tipo
especificado a lo largo del bloque @code{\score} o @code{\book}
en el que aparece el bloque @code{\layout}.  A continuación
presentamos un ejemplo que muestra el formato:

@lilypond[verbatim,quote]
\score {
  \new Staff {
    \relative {
      cisis''4 e d cis
    }
  }
  \layout {
    \context {
      \Staff
      extraNatural = ##t
    }
  }
}
@end lilypond

Si se quiere aplicar la sobreescritura de propiedades a todos los
pentagramas de la partitura:

@lilypond[quote,verbatim]
\score {
  <<
    \new Staff {
      \relative {
        gisis'4 gis aeses aes
      }
    }
    \new Staff {
      \relative {
        gisis'4 gis aeses aes
      }
    }
  >>
  \layout {
    \context {
      \Score extraNatural = ##f
    }
  }
}
@end lilypond

@noindent
Las propiedades de contexto establecidas de esta forma se pueden
sobreescribir para ejemplares concretos de contextos mediante
enunciados dentro de un bloque @code{\with}, y mediante
instrucciones @code{\set} intercaladas dentro de enunciados
musicales.


@seealso
Referencia de la notación:
@ruser{Cambiar los valores por omisión de los contextos},
@c FIXME
@c uncomment when backslash-node-name issue is resolved -pm
@ruser{La instrucción set}.

Referencia de funcionamiento interno:
@rinternals{Contexts},
@rinternals{Tunable context properties}.


@node Añadir y eliminar grabadores
@subsection Añadir y eliminar grabadores
@translationof Adding and removing engravers

@cindex grabadores, adición
@cindex grabadores, eliminación
@cindex adición de grabadores
@cindex eliminación de grabadores

@funindex \consists
@funindex \remove

Hemos visto que cada uno de los contextos contiene varios
grabadores, cada uno de los cuales a su vez es responsable de la
producción de una fracción particular del resultado impreso, como
líneas divisorias, pentagramas, cabezas, plicas, etc.  Si un
grabador es eliminado de un contexto, ya no podrá producir su
salida impresa.  Es una forma algo radical de modificar la
salida, pero a veces puede ser útil.

@subsubheading Cambiar un solo contexto

Para eliminar un grabador de un contexto único, usamos la
instrucción @code{\with} situada inmediatamente después de la
instrucción que crea el contexto, como en la sección anterior.

Como ilustración, repitamos un ejemplo extraído de la sección
anterior con las líneas del pentagrama eliminadas.  Recuerde que
las líneas del pentagrama están dibujadas por el grabador
@code{Staff_symbol_engraver}.

@lilypond[quote,verbatim,ragged-right]
\new Staff \with {
  \remove "Staff_symbol_engraver"
}
\relative {
  c'4 d
  \set fontSize = #-4  % make note heads smaller
  e4 f |
  \set fontSize = #2.5  % make note heads larger
  g4 a
  \unset fontSize  % return to default size
  b4 c |
}
@end lilypond

@cindex ámbito, grabador del

Los grabadores también se pueden añadir a los contextos
individuales La instrucción que lo hace es

@code{\consists @var{Nombre_del_grabador}},

situada dentro de un bloque @code{\with}.  Ciertas partituras
vocales tienen una indicación de ámbito o tesitura situada al
principio del pentagrama para indicar el ámbito de notas en dicho
pentagrama, véase @rglos{ambitus}.  El ambitus se produce por
parte del grabador @code{Ambitus_engraver}, que normalmente no
está incluido en ningún contexto.  Si lo añadimos al contexto
@code{Voice}, calcula el rango a partir de esa única voz:

@lilypond[quote,verbatim,ragged-right]
\new Staff <<
  \new Voice \with {
    \consists "Ambitus_engraver"
  } {
    \relative {
      \voiceOne
      c''4 a b g
    }
  }
  \new Voice {
    \relative {
      \voiceTwo
      c'4 e d f
    }
  }
>>
@end lilypond

@noindent
pero si añadimos el grabador de ámbito al contexto de
@code{Staff}, calcula el rango de todas las notas en todas las
voces de ese pentagrama:

@lilypond[quote,verbatim,ragged-right]
\new Staff \with {
  \consists "Ambitus_engraver"
}
<<
  \new Voice {
    \relative {
      \voiceOne
      c''4 a b g
    }
  }
  \new Voice {
    \relative {
      \voiceTwo
      c'4 e d f
    }
  }
>>
@end lilypond

@subsubheading Cambiar todos los contextos del mismo tipo

@funindex \layout

Los ejemplos anteriores muestran la manera de eliminar o añadir
grabadores a los contextos individuales.  También es posible
eliminar o añadir grabadores a todos los contextos de un tipo
específico, situando las instrucciones en el contexto
correspondiente dentro de un bloque @code{\layout}.  Por ejemplo,
si queremos mostrar los rangos de tesitura para todos los
pentagramas de una partitura de cuatro pautas, podemos escribir

@lilypond[quote,verbatim,ragged-right]
\score {
  <<
    \new Staff {
      \relative {
        c''4 a b g
      }
    }
    \new Staff {
      \relative {
        c'4 a b g
      }
    }
    \new Staff {
      \clef "G_8"
      \relative {
        c'4 a b g
      }
    }
    \new Staff {
      \clef "bass"
      \relative {
        c4 a b g
      }
    }
  >>
  \layout {
    \context {
      \Staff
      \consists "Ambitus_engraver"
    }
  }
}
@end lilypond

@noindent
Los valores predeterminados de las propiedades de los contextos
también se pueden establecer para todos los contextos de un tipo
en particular incluyendo la instrucción @code{\set} dentro de un
bloque @code{\context} de la misma forma.


@seealso
Referencia de la notación:
@ruser{Modificar los complementos (plug-ins) de contexto},
@ruser{Cambiar los valores por omisión de los contextos}.

@knownissues
Los grabadores @code{Stem_engraver} y @code{Beam_engraver} (de
plica y de barra) adjuntan a la cabeza de las notas los objetos
que crean.  Si se suprime el grabador de cabezas de nota
@code{Note_heads_engraver}, no se produce ninguna cabeza y por
tanto no se crean tampoco plicas ni barras.


@node Extender las plantillas
@section Extender las plantillas
@translationof 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?  Bien, puede encontrar montañas de plantillas (véase
@ref{Plantillas}) que le pueden servir como punto de partida.
Pero ¿y si quiere algo que no está contemplado aquí? Continúe
leyendo.


@menu
* Soprano y violoncello::
* Partitura vocal a cuatro voces SATB::
* Crear una partitura partiendo de cero::
* Ahorrar tecleo mediante variables y funciones::
* Partituras y particellas::
@end menu

@node Soprano y violoncello
@subsection Soprano y violoncello
@translationof Soprano and cello

@cindex plantilla, modificar
@cindex modificar plantillas

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 @w{"@version{}"}
melodia = \relative @{
  \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" \texto
  >>
  \layout @{ @}
  \midi @{ @}
@}
@end example

Ahora queremos añadir una parte de violoncello.  Veamos el
ejemplo @q{Sólo notas}:

@example
\version @w{"@version{}"}
melodia = \relative @{
  \clef "treble"
  \key c \major
  \time 4/4
  a4 b c d
@}

\score @{
  \new Staff \melodia
  \layout @{ @}
  \midi @{ @}
@}
@end example

No necesitamos dos instrucciones @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 @{ }) -- 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 @w{"@version{}"}
musicaSoprano = \relative @{
  \clef "treble"
  \key c \major
  \time 4/4
  a4 b c d
@}

letraSoprano = \lyricmode @{
  Aaa Bee Cee Dee
@}

musicaCello = \relative @{
  \clef "bass"
  \key c \major
  \time 4/4
  d4 g fis8 e d4
@}

\score@{
  <<
    \new Voice = "uno" @{
      \autoBeamOff
      \musicaSoprano
    @}
    \new Lyrics \lyricsto "uno" \letraSoprano
  >>
  \layout @{ @}
  \midi @{ @}
@}
@end example

Esto tiene una apariencia 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:

@c Indentation in this example is deliberately poor
@example
\score @{
  <<
  <<
    \new Voice = "uno" @{
      \autoBeamOff
      \sopranoMusic
    @}
    \new Lyrics \lyricsto "uno" \letraSoprano
  >>
  \new Staff \musicaCello
  >>
  \layout @{ @}
  \midi @{ @}
@}
@end example

@noindent
Lo anterior 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,addversion]
sopranoMusic = \relative {
  \clef "treble"
  \key c \major
  \time 4/4
  a4 b c d
}

sopranoLyrics = \lyricmode {
  Aaa Bee Cee Dee
}

celloMusic = \relative {
  \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


@seealso
Las plantillas de inicio se pueden encontrar en el apéndice
@q{Plantillas}, véase @ref{Plantillas de pentagrama único}.


@node Partitura vocal a cuatro voces SATB
@subsection Partitura vocal a cuatro voces SATB
@translationof Four-part SATB vocal score

La mayor parte de las partituras vocales escritas para coro mixto
a cuatro voces con acompañamiento orquestal, como el «Elías» de
Mendelssohn o el «Mesías» de Haendel, tienen la música coral y la
letra en cuatro pentagramas para S, A, T y B, respectivamente,
con una reducción de piano del acompañamiento de orquesta, por
debajo. He aquí un ejemplo del «Mesías» de Haendel:

@c The following should appear as music without code
@lilypond[quote,ragged-right]
global = { \key d \major \time 4/4 }

sopranoMusic = \relative {
  \clef "treble"
  r4 d''2 a4 | d4. d8 a2 | cis4 d cis2 |
}
sopranoWords = \lyricmode {
  Wor -- thy | is the lamb | that was slain |
}

altoMusic = \relative {
  \clef "treble"
  r4 a'2 a4 | fis4. fis8 a2 | g4 fis e2 |
}
altoWords = \sopranoWords

tenorMusic = \relative {
  \clef "G_8"
  r4 fis'2 e4 | d4. d8 d2 | e4 a, cis2 |
}
tenorWords = \sopranoWords

bassMusic = \relative {
  \clef "bass"
  r4 d'2 cis4 | b4. b8 fis2 | e4 d a'2 |
}
bassWords = \sopranoWords

upper = \relative {
  \clef "treble"
  \global
  r4 <a' d fis>2 <a e' a>4 |
  <d fis d'>4. <d fis d'>8 <a d a'>2 |
  <g cis g'>4 <a d fis> <a cis e>2 |
}

lower = \relative {
  \clef "bass"
  \global
  <d, d'>4 <d d'>2 <cis cis'>4 |
  <b b'>4. <b' b'>8 <fis fis'>2 |
  <e e'>4 <d d'> <a' a'>2 |
}

\score {
  <<  % combine ChoirStaff and PianoStaff in parallel
    \new ChoirStaff <<
      \new Staff = "sopranos"
      \with { instrumentName = "Soprano" }
      <<
        \new Voice = "sopranos" {
          \global
          \sopranoMusic
        }
      >>
      \new Lyrics \lyricsto "sopranos" {
        \sopranoWords
      }
      \new Staff = "altos"
      \with { instrumentName = "Alto" }
      <<
        \new Voice = "altos" {
          \global
          \altoMusic
        }
      >>
      \new Lyrics \lyricsto "altos" {
        \altoWords
      }
      \new Staff = "tenors"
      \with { instrumentName = "Tenor" }
      <<
        \new Voice = "tenors" {
          \global
          \tenorMusic
        }
      >>
      \new Lyrics \lyricsto "tenors" {
        \tenorWords
      }
      \new Staff = "basses"
      \with { instrumentName = "Bass" }
      <<
        \new Voice = "basses" {
          \global
          \bassMusic
        }
      >>
      \new Lyrics \lyricsto "basses" {
        \bassWords
      }
    >>  % end ChoirStaff
    \new PianoStaff \with { instrumentName = "Piano" }
    <<
      \new Staff = "upper" \upper
      \new Staff = "lower" \lower
    >>
  >>
}
@end lilypond

@warning{Esta disposición se puede conseguir muy fácilmente
usando la plantilla incorporada: @code{satb.ly}, véase
@ref{Plantillas incorporadas}.  Pero para mayor facilidad de uso,
esta plantilla oculta deliberadamente la necesaria estructura de
contexto, proporcionándola automáticamente en vez de ello.  Así
pues, para nuestro objetivo de aprendizaje, veamos cómo construir
la estructura partiendo de cero.  Quizá necesite hacerlo cada vez
que la plantilla incorporada no cumpla sus necesidades
completamente.}

La plantilla (no incorporada: de copiar y editar) más parecida a
esta disposición es
@ref{Partitura vocal SATB y reducción para piano automática},
pero necesitamos cambiar la disposición y añadir un
acompañamiento de piano que no esté derivado automáticamente de
las partes vocales.  Las variables que contienen la música y la
letra de las partes vocales es adecuada, pero tendremos que
añadir variables para la reducción de piano.

El orden en que aparecen los contextos en el ChoirStaff de la
plantilla no se corresponde con el orden de la partitura vocal
que hemos mostrado más arriba.  Tenemos que reordenarlas para que
haya cuatro pentagramas con la letra escrita directamente bajo
las notas de cada parte.  Todas las voces deben ser
@code{\voiceOne}, que es la predeterminada, para que las
instrucciones @code{\voiceXXX} se puedan eliminar.  También
tenemos que especificar la clave de tenor (clave de sol octava
baja) en las partes de tenor.  Aún no hemos encontrado la forma
en que la letra se especifica en la plantilla, así que tenemos
que utilizar el método que nos resulta familiar.  También tenemos
que escribir los nombres de cada pentagrama.

Al hacerlo así obtenemos el ChoirStaff siguiente:

@example
\new ChoirStaff <<
  \new Staff = "sopranos"
  \with @{ instrumentName = "Soprano" @}
  <<
    \new Voice = "sopranos" @{
      \global
      \musicaSoprano
    @}
  >>
  \new Lyrics \lyricsto "sopranos" @{
    \letraSoprano
  @}
  \new Staff = "altos"
  \with @{ instrumentName = "Alto" @}
  <<
    \new Voice = "altos" @{
      \global
      \musicaAlto
    @}
  >>
  \new Lyrics \lyricsto "altos" @{
    \letraAlto
  @}
  \new Staff = "tenors"
  \with @{ instrumentName = "Tenor" @}
  <<
    \new Voice = "tenors" @{
      \global
      \musicaTenor
    @}
  >>
  \new Lyrics \lyricsto "tenors" @{
    \letraTenor
  @}
  \new Staff = "basses"
  \with @{ instrumentName = "Bass" @}
  <<
    \new Voice = "basses" @{
      \global
      \musicaBajo
    @}
  >>
  \new Lyrics \lyricsto "bajos" @{
    \letraBajo
  @}
>>  % fin del ChoirStaff
@end example

A continuación debemos trabajar sobre la parte de piano.  Es
fácil: tan sólo hay que sacar la parte de piano de la plantilla
de @q{Piano solista}:

@example
\new PianoStaff \with @{ instrumentName = "Piano  " @}
<<
  \new Staff = "superior" \superior
  \new Staff = "inferior" \inferior
>>
@end example

y escribir las definiciones de variable para @code{superior} e
@code{inferior}.

Los grupos ChoirStaff y PianoStaff se deben combinar utilizando
ángulos dobles, ya queremos apilarlos unos sobre otros:

@example
<<  % combinar los grupos ChoirStaff y PianoStaff uno sobre el otro
  \new ChoirStaff <<
    \new Staff = "sopranos" <<
      \new Voice = "sopranos" @{
        \global
        \musicaSoprano
      @}
    >>
    \new Lyrics \lyricsto "sopranos" @{
      \letraSoprano
     @}
    \new Staff = "altos" <<
      \new Voice = "altos" @{
        \global
        \musicaAlto
      @}
    >>
    \new Lyrics \lyricsto "altos" @{
      \letraAlto
    @}
    \new Staff = "tenores" <<
      \clef "G_8"  % clave de tenor
      \new Voice = "tenores" @{
        \global
        \musicaTenor
      @}
    >>
    \new Lyrics \lyricsto "tenores" @{
      \letraTenor
    @}
    \new Staff = "bajos" <<
      \clef "bass"
      \new Voice = "bajos" @{
        \global
        \musicaBajo
      @}
    >>
    \new Lyrics \lyricsto "bajos" @{
      \letraBajo
    @}
  >>  % fin del ChoirStaff

  \new PianoStaff \with @{ instrumentName = "Piano" @}
  <<
    \new Staff = "upper" \upper
    \new Staff = "lower" \lower
  >>
>>
@end example

Al combinar todo esto junto y escribir la música de los tres
compases del ejemplo anterior, obtenemos:

@lilypond[quote,verbatim,ragged-right,addversion]
global = { \key d \major \time 4/4 }
sopranoMusic = \relative {
  \clef "treble"
  r4 d''2 a4 | d4. d8 a2 | cis4 d cis2 |
}
sopranoWords = \lyricmode {
  Wor -- thy | is the lamb | that was slain |
}
altoMusic = \relative {
  \clef "treble"
  r4 a'2 a4 | fis4. fis8 a2 | g4 fis fis2 |
}
altoWords = \sopranoWords
tenorMusic = \relative {
  \clef "G_8"
  r4 fis'2 e4 | d4. d8 d2 | e4 a, cis2 |
}
tenorWords = \sopranoWords
bassMusic = \relative {
  \clef "bass"
  r4 d'2 cis4 | b4. b8 fis2 | e4 d a'2 |
}
bassWords = \sopranoWords
upper = \relative {
  \clef "treble"
  \global
  r4 <a' d fis>2 <a e' a>4 |
  <d fis d'>4. <d fis d'>8 <a d a'>2 |
  <g cis g'>4 <a d fis> <a cis e>2 |
}
lower = \relative {
  \clef "bass"
  \global
  <d, d'>4 <d d'>2 <cis cis'>4 |
  <b b'>4. <b' b'>8 <fis fis'>2 |
  <e e'>4 <d d'> <a' a'>2 |
}

\score {
  <<  % combine ChoirStaff and PianoStaff in parallel
    \new ChoirStaff <<
      \new Staff = "sopranos"
      \with { instrumentName = "Soprano" }
      <<
        \new Voice = "sopranos" {
          \global
          \sopranoMusic
        }
      >>
      \new Lyrics \lyricsto "sopranos" {
        \sopranoWords
      }
      \new Staff = "altos"
      \with { instrumentName = "Alto" }
      <<
        \new Voice = "altos" {
          \global
          \altoMusic
        }
      >>
      \new Lyrics \lyricsto "altos" {
        \altoWords
      }
      \new Staff = "tenors"
      \with { instrumentName = "Tenor" }
      <<
        \new Voice = "tenors" {
          \global
          \tenorMusic
        }
      >>
      \new Lyrics \lyricsto "tenors" {
        \tenorWords
      }
      \new Staff = "basses"
      \with { instrumentName = "Bass" }
      <<
        \new Voice = "basses" {
          \global
          \bassMusic
        }
      >>
      \new Lyrics \lyricsto "basses" {
        \bassWords
      }
    >>  % end ChoirStaff

    \new PianoStaff
    \with { instrumentName = "Piano  " }
    <<
      \new Staff = "upper" \upper
      \new Staff = "lower" \lower
    >>
  >>
}
@end lilypond


@node Crear una partitura partiendo de cero
@subsection Crear una partitura partiendo de cero
@translationof Building a score from scratch

@cindex plantilla, escribir su propia
@cindex ejemplo de escritura de una partitura
@cindex escribir una partitura, ejemplo
@cindex partitura, ejemplo de escritura

Después de adquirir algo de soltura en la escritura del código de
LilyPond, se dará cuenta de que es más fácil construir
completamente una partitura partiendo de cero, que modificar una
plantilla.  También puede desarrollar su propio estilo de forma
que se adapte al tipo de música que le apetezca.  Veamos a
continuación cómo confeccionar una partitura para un preludio de
órgano, como ejemplo.

Comenzamos con una sección para el encabezamiento.  Aquí es donde
van el título, nombre del compositor, etc., después van las
definiciones de las variables, y finalmente el bloque de
partitura.  Comencemos a verlas por encima y más tarde
completaremos los detalles.

Utilizaremos los dos primeros compases del preludio de Bach
basado en @emph{Jesu, meine Freude}, que está escrito para órgano
con dos manuales y pedal.  Tiene estos dos compases de música al
final de la sección.  La parte del manual superior tiene dos
voces, y el inferior y el pedal, una voz cada uno.  Así pues,
necesitamos cuatro definiciones para la música y una más para
definir el compás y la tonalidad:

@example
\version @w{"@version{}"}
\header @{
  title = "Jesu, meine Freude"
  composer = "J S Bach"
@}
keyTime = @{ \key c \minor \time 4/4 @}
MusicaManualUnoVozUno = @{ s1 @}
MusicaManualUnoVozDos = @{ s1 @}
MusicaManualDos = @{ s1 @}
MusicaPedal = @{ s1 @}

\score @{
@}
@end example

Por el momento hemos escrito tan sólo una nota espaciadora,
@code{s1}, en lugar de la música de verdad.  La añadiremos más
adelante.

A continuación veamos qué va en el bloque de partitura.
Sencillamente, reflejaremos la estructura de pentagramas que
deseemos.  La música de órgano se escribe por lo general en tres
pentagramas, uno para cada uno de los manuales y otro para el
pedal.  Los pentagramas de los manuales se abarcan con una llave,
así que los incluiremos en un grupo PianoStaff.  La primera parte
de manual tiene dos voces, y la segunda sólo una.

@example
\new PianoStaff <<
  \new Staff = "ManualUno" <<
    \new Voice @{
      \MusicaManualUnoVozUno
    @}
    \new Voice @{
      \MusicaManualUnoVozDos
    @}
  >>  % fin del contexto de Staff ManualUno
  \new Staff = "ManualDos" <<
    \new Voice @{
      \MusicaManualDos
    @}
  >>  % fin del contexto de Staff ManualDos
>>  % fin del contexto de PianoStaff
@end example

Después, tenemos que añadir un pentagrama para el órgano de
pedal.  Esto va por debajo del PianoStaff, pero debe ser
simultáneo con él, por lo que escribimos dobles ángulos rodeando
a los dos.  Si esto se nos olvida, se producirá un error en el
archivo log de registro.  ¡Es un error muy común que cometerá
antes o después!  Intente copiar el ejemplo final que aparece al
final de la sección, borre los dobles ángulos y procese el
archivo para ver qué error produce.

@example
<<  % el grupo PianoStaff y el pentagrama de Pedal son simultáneos
  \new PianoStaff <<
    \new Staff = "ManualUno" <<
      \new Voice @{
        \MusicaManualUnoVozUno
      @}
      \new Voice @{
        \MusicaManualUnoVozDos
      @}
    >>  % fin del contexto de Staff ManualUno
    \new Staff = "ManualDos" <<
      \new Voice @{
        \MusicaManualDos
      @}
    >>  % fin del contexto de Staff ManualDos
  >>  % fin del contexto de PianoStaff
  \new Staff = "OrganoPedal" <<
    \new Voice @{
      \MusicaOrganoPedal
    @}
  >>
>>
@end example

No es necesario utilizar la construcción simultánea @code{<<
@dots{} >>} para el pentagrama del manual dos y el pentagrama del
órgano de pedal, ya que contienen una única expresión, pero no
hace daño, y es una buena costumbre utilizar siempre dobles
ángulos después de @code{\new Staff} cuando hay varias voces.  Lo
opuesto es cierto para las voces: normalmente deben ir seguidas
de llaves @code{@{ @dots{} @}} en caso de que tengamos música
codificada como distintas variables que se deben situar
consecutivamente.

Añadamos esta estructura al bloque de partitura, y ajustemos el
sangrado de los márgenes.  También escribimos las claves
correspondientes, nos aseguramos de que las plicas y ligaduras de
unión y de expresión en cada una de las voces del pentagrama
superior apuntan en la dirección adecuada con @code{\voiceOne} y
@code{\voiceTwo} y escribimos el compás y la tonalidad en cada
uno de los pentagramas usando nuestra variable previamente
definida @code{\TimeKey}.

@example
\score @{
  <<  % el grupo PianoStaff y el pentagrama de Pedal son simultáneos
    \new PianoStaff <<
      \new Staff = "ManualUno" <<
        \keyTime  % establecer compás y tonalidad
        \clef "treble"
        \new Voice @{
          \voiceOne
          \MusicaManualUnoVozUno
        @}
        \new Voice @{
          \voiceTwo
          \MusicaManualUnoVozDos
        @}
      >>  % fin del contexto de Staff ManualUno
      \new Staff = "ManualDos" <<
        \keyTime
        \clef "bass"
        \new Voice @{
          \MusicaManualDos
        @}
      >>  % fin del contexto de Staff ManualDos
    >>  % fin del contexto de PianoStaff
    \new Staff = "OrganoPedal" <<
     \keyTime
      \clef "bass"
      \new Voice @{
        \MusicaOrganoPedal
      @}
    >>  % fin del pentagrama de OrganoPedal
  >>
@}  % fin del contexto Score
@end example

@cindex ampliabilidad de las pautas
@cindex pautas, ampliabilidad

La disposición anterior de los pentagramas de órgano es casi
perfecta; sin embargo, existe un ligero defecto que no es visible
cuando se observa un solo sistema: la distancia entre el
pentagrama de pedal y el de la mano izquierda debiera ser
aproximadamente la misma que la que existe entre los pentagramas
de las manos izquierda y derecha.  Concretamente, la
ampliabilidad de los pentagramas dentro de un contexto
@code{PianoStaff} es limitada (de forma que la distancia entre
los pentagramas de las manos izquierda y derecha nunca crezcan
excesivamente), y el pentagrama de los pedales debería
comportarse de una forma similar.

@cindex sub-propiedades
@cindex propiedades, sub-propiedades
@cindex objetos gráficos
@cindex gráficos, objetos
@cindex grobs

El grado de ampliabilidad o separabilidad de los pentagramas se
puede controlar con la propiedad @code{staff-staff-spacing} del
@q{objeto gráfico} @code{VerticalAxisGroup} (los objetos gráficos
reciben por lo general el nombre de @q{grob}s en la documentación
de lilypond); no se preocupe por el momento de los detalles, pues
esto se explica más tarde de forma exhaustiva.  Los más curiosos
pueden echar un vistazo a @ruser{Panorámica de la modificación de
las propiedades}.  En este caso, queremos modificar solamente la
sub-propiedad @code{stretchability}.  De nuevo, los curiosos
encontrarán los valores predeterminados para la propiedad
staff-staff-spacing en el archivo @file{scm/define-grobs.scm}
examinando la definición del grob @code{VerticalAxisGroup} grob.
El valor de @code{stretchability} se toma de la definición del
contexto @code{PianoStaff} (en el archivo
@file{ly/engraver-init.ly}) de forma que los valores sean
idénticos.

@example
\score @{
  <<  % el grupo PianoStaff y el pentagrama de Pedal son simultáneos
    \new PianoStaff <<
      \new Staff = "ManualUno" <<
        \keyTime  % establecer compás y tonalidad
        \clef "treble"
        \new Voice @{
          \voiceOne
          \MusicaManualUnoVozUno
        @}
        \new Voice @{
          \voiceTwo
          \MusicaManualUnoVozDos
        @}
      >>  % % fin del contexto de Staff ManualUno
      \new Staff = "ManualDos" \with @{
        \override VerticalAxisGroup.staff-staff-spacing.stretchability = 5
      @} <<
        \keyTime
        \clef "bass"
        \new Voice @{
          \MusicaManualDos
        @}
      >>  % fin del contexto de Staff ManualDos
    >>  % fin del contexto de PianoStaff
    \new Staff = "OrganoPedal" <<
      \keyTime
      \clef "bass"
      \new Voice @{
        \MusicaOrganoPedal
      @}
    >>  % fin del pentagrama de OrganoPedal
  >>
@}  % fin del contexto Score
@end example

Con esto se completa la estructura.  Toda música para órgano de
tres pentagramas tendrá una estructura similar, aunque el número
de voces puede variar.  Todo lo que nos queda es añadir la
música, y combinar todas las partes.

@lilypond[quote,verbatim,ragged-right,addversion]
\header {
  title = "Jesu, meine Freude"
  composer = "J S Bach"
}
keyTime = { \key c \minor \time 4/4 }
ManualOneVoiceOneMusic = \relative {
  g'4 g f ees |
  d2 c |
}
ManualOneVoiceTwoMusic = \relative {
  ees'16 d ees8~ 16 f ees d c8 d~ d c~ |
  8 c4 b8 c8. g16 c b c d |
}
ManualTwoMusic = \relative {
  c'16 b c8~ 16 b c g a8 g~ 16 g aes ees |
  f16 ees f d g aes g f ees d ees8~ 16 f ees d |
}
PedalOrganMusic = \relative {
  r8 c16 d ees d ees8~ 16 a, b g c b c8 |
  r16 g ees f g f g8 c,2 |
}

\score {
  <<  % PianoStaff and Pedal Staff must be simultaneous
    \new PianoStaff <<
      \new Staff = "ManualOne" <<
        \keyTime  % set key and time signature
        \clef "treble"
        \new Voice {
          \voiceOne
          \ManualOneVoiceOneMusic
        }
        \new Voice {
          \voiceTwo
          \ManualOneVoiceTwoMusic
        }
      >>  % end ManualOne Staff context
      \new Staff = "ManualTwo" \with {
        \override VerticalAxisGroup.staff-staff-spacing.stretchability = 5
      } <<
        \keyTime
        \clef "bass"
        \new Voice {
          \ManualTwoMusic
        }
      >>  % end ManualTwo Staff context
    >>  % end PianoStaff context
    \new Staff = "PedalOrgan" <<
      \keyTime
      \clef "bass"
      \new Voice {
        \PedalOrganMusic
      }
    >>  % end PedalOrgan Staff context
  >>
}  % end Score context
@end lilypond

@seealso
Glosario musical:
@rglos{system}.

@node Ahorrar tecleo mediante variables y funciones
@subsection Ahorrar tecleo mediante variables y funciones
@translationof Saving typing with variables and functions

@cindex variables
@cindex identificadores

Llegado a este punto, usted ha visto cosas de este tipo:

@lilypond[quote,verbatim,ragged-right]
hornNotes = \relative { c''4 b dis c }

\score {
  {
    \hornNotes
  }
}
@end lilypond

Incluso se dará cuenta de que esto puede ser útil en música
minimalista:

@lilypond[quote,verbatim,ragged-right]
fragmentA = \relative { a'4 a8. b16 }
fragmentB = \relative { a'8. gis16 ees4 }

violin = \new Staff {
  \fragmentA \fragmentA |
  \fragmentB \fragmentA |
}

\score {
  {
    \violin
  }
}
@end lilypond

Sin embargo también puede usar estos identificadores (que también
se conocen como variables, macros o instrucciones definidas por
el usuario) para hacer trucos:

@lilypond[quote,verbatim,ragged-right]
dolce = \markup { \italic \bold dolce }

centreText = { \once \override TextScript.self-alignment-X = #CENTER }

fthenp =_\markup {
  \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p
}

violin = \relative {
  \repeat volta 2 {
    c''4._\dolce b8 a8 g a b |
    \centreText
    c4.^"hi there!" d8 e f g d |
    c4.\fthenp b8 c4 c-. |
  }
}

\score {
  {
    \violin
  }
}
@end lilypond

Obviamente estos identificadores son útiles para ahorrar tecleo.
Pero son dignos de tener en cuenta incluso si se van a utilizar
una sola vez: reducen la complejidad.  Examinemos el ejemplo
anterior reescrito sin ningún identificador.  Encontrará que es
mucho más difícil de leer, sobre todo la última línea.

@example
violin = \relative @{
  \repeat volta 2 @{
    c''4._\markup @{ \italic \bold dolce @} b8 a8 g a b |
    \once \override TextScript.self-alignment-X = #CENTER
    c4.^"hi there!" d8 e f g d |
    c4._\markup @{
      \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p
    @}
    b8 c4 c-. |
  @}
@}
@end example

Hasta ahora hemos contemplado la sustitución estática: cuando
LilyPond se encuentra con @code{\centreText}, lo sustituye con
aquello que hemos definido que sea (es decir, todo lo que está a
la derecha de @code{centreText=}).

LilyPond también puede manejar sustituciones no estáticas (piense
en ellas como en funciones).

@lilypond[quote,verbatim,ragged-right]
padText =
#(define-music-function
     (padding)
     (number?)
   #{
     \once \override TextScript.padding = #padding
   #})

\relative {
  c''4^"piu mosso" b a b
  \padText #1.8
  c4^"piu mosso" b a b
  \padText #2.6
  c4^"piu mosso" b a b
}
@end lilypond

La utilización de identificadores también es una buena forma de
reducir el trabajo si la sintaxis de entrada de LilyPond cambia
(véase @rprogram{Actualizar ficheros con convert-ly}).  Si tiene
una sola definición (como p.ej. @code{\dolce}) para todos sus
archivos (ver @ref{Hojas de estilo}), y después la sintaxis se
modifica, sólo tendrá que actualizar su definición @code{\dolce}
única, en lugar de tener que hacer cambios en cada uno de los
archivos @file{.ly}.


@node Partituras y particellas
@subsection Partituras y particellas
@translationof Scores and parts

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 @{
  \time 2/4
  r4 f8 a | cis4 f | e4 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.  La instrucción @code{\transpose f@tie{}c'} indica
que el argumento constituido por @code{\notasTrompa} se debe
transponer una quinta hacia arriba.  Lo que suena como @code{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 {
  \time 2/4
  r4 f8 a | cis4 f | e4 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 @code{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.  Existe una función musical para hacerlo:

@example
\compressMMRests @{ ... @}
@end example

Applying this to @code{hornNotes} gives:

@lilypond[quote,ragged-right]
\compressMMRests \transpose f c' \relative {
  \time 2/4
  R2*3 |
  r4 f8 a | cis4 f | e4 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 <<
  \new Staff {
    \clef "treble"
    \time 2/4
    R2*3 |
    r4 f8 a | cis4 f | e4 d |
  }
  \new Staff {
    \clef "bass"
    \time 2/4
    r4 d,8 f | gis4 c | b4 bes |
    a8 e f4 | g4 d | gis4 f |
  }
>>
@end lilypond

@seealso
Manual de aprendizaje:
@ref{Organizar las piezas mediante variables}.

Referencia de la notación:
@ruser{Transposición},
@ruser{Escritura de las particellas},
@ruser{Silencios de compás completo},
@ruser{Inclusión de archivos de LilyPond}.
