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

@ignore
    Translation of GIT committish: 18f6f13f39b25f28679fe2073763151008ca3366

    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.17.6"

@node Entrada y salida generales
@chapter Entrada y salida generales
@translationof General input and output

Esta sección trata de asuntos relacionados con la entrada y salida
generales de LilyPond, más que con la notación específica.

@menu
* Estructura del código de entrada::
* Títulos y encabezamientos::
* Trabajar sobre los archivos de entrada::
* Controlar la salida::
* Salida MIDI::
* Extraer información musical::
@end menu


@node Estructura del código de entrada
@section Estructura del código de entrada
@translationof Input structure

El formato principal de entrada para LilyPond son archivos de texto.
Por convenio, el nombre de estos archivos termina en @file{.ly}.

@menu
* Estructura de una partitura::
* Varias partituras en un libro::
* Varios archivos de salida a partir de uno de entrada::
* Nombres de los archivos de salida::
* Estructura del archivo::
@end menu


@node Estructura de una partitura
@subsection Estructura de una partitura
@translationof Structure of a score

@funindex \score

Un bloque @code{\score} debe contener una expresión musical única
delimitada por un par de llaves:

@example
\score @{
  @dots{}
@}
@end example

@c outer?
@warning{Sólo puede haber @strong{una} expresión musical dentro del
bloque @code{\score}, y @strong{debe} estar encerrada entre llaves.}

Esta expresión musical única puede tener cualquier tamaño, y puede
contener otras expresiones musicales hasta cualquier grado de
complejidad.  Todos los siguientes ejemplos son expresiones musicales:

@example
@{ c'4 c' c' c' @}
@end example

@lilypond[verbatim,quote]
{
  { c'4 c' c' c' }
  { d'4 d' d' d' }
}
@end lilypond

@lilypond[verbatim,quote]
<<
  \new Staff { c'4 c' c' c' }
  \new Staff { d'4 d' d' d' }
>>
@end lilypond

@example
@{
  \new GrandStaff <<
    \new StaffGroup <<
      \new Staff @{ \flute @}
      \new Staff @{ \oboe @}
    >>
    \new StaffGroup <<
      \new Staff @{ \violinI @}
      \new Staff @{ \violinII @}
    >>
  >>
@}
@end example

Los comentarios son una excepción a esta regla general (para ver otras
excepciones, consulte @ref{Estructura del archivo}).  Tanto los comentarios de
una línea como los que están delimitados por @code{%@{ @dots{} %@}} se
pueden escribir en cualquier lugar dentro del archivo de entrada.  Se
pueden escribir dentro o fuera del bloque @code{\score}, y dentro o
fuera de la expresión musical única dentro del bloque @code{\score}.

Recuerde que incluso dentro de un archivo que contenga solamente un
bloque @code{\score}, éste se encuentra incluido implícitamente dentro
de un bloque @code{\book}.  Un bloque @code{\book} dentro de un
archivo fuente produce al menos un archivo de salida, y de forma
predeterminada el nombre del archivo de salida que se produce está
derivado del nombre del archivo de entrada, de forma que
@file{fandangoforelephants.ly} da como resultado
@file{fandangoforelephants.pdf}.

(Para ver más detalles acerca de los bloques @code{\book}, consulte
@ref{Varias partituras en un libro}, @ref{Varios archivos de salida a
partir de uno de entrada} y @ref{Estructura del archivo}.)

@seealso
Manual de aprendizaje:
@rlearning{Trabajar sobre los archivos de entrada},
@rlearning{Explicación de las expresiones musicales},
@rlearning{La partitura es una (única) expresión musical compuesta}.


@node Varias partituras en un libro
@subsection Varias partituras en un libro
@translationof Multiple scores in a book

@funindex \book
@cindex movimientos, varios

Un documento puede contener varias piezas de música y texto.  Son
ejemplos un libro de estudios o una parte orquestal con varios
movimientos.  Cada movimiento se introduce con un bloque
@code{\score}:

@example
\score @{
  @var{@dots{}música@dots{}}
@}
@end example

y los textos se introducen con un bloque @code{\markup}:

@example
\markup @{
  @var{@dots{}texto@dots{}}
@}
@end example

@funindex \book

Todos los movimientos y textos que aparecen en el mismo archivo
@file{.ly} se tipografían normalmente en la forma de un solo archivo
de salida.

@example
\score @{
  @var{@dots{}}
@}
\markup @{
  @var{@dots{}}
@}
\score @{
  @var{@dots{}}
@}
@end example

Una excepción importante se da dentro de los documentos de
lilypond-book, en los que tenemos que escribir explícitamente un
bloque @code{\book}, pues en caso contrario sólo aparecerá en la
salida el primer @code{\score} o @code{\markup}.

El encabezamiento de cada pieza se puede poner dentro del bloque
@code{\score}.  Antes de cada movimiento, se imprime el nombre de la
pieza (@code{piece}) extraído del encabezamiento.  El título del libro
entero se puede poner dentro del bloque @code{\book}, pero si no está
presente se inserta el encabezamiento @code{\header} que está al
principio del archivo.

@example
\header @{
  title = "Ocho miniaturas"
  composer = "Igor Stravinsky"
@}
\score @{
  @dots{}
  \header @{ piece = "Romanze" @}
@}
\markup @{
   @dots{}texto de la segunda estrofa@dots{}
@}
\markup @{
   @dots{}texto de la tercera estrofa@dots{}
@}
\score @{
  @dots{}
  \header @{ piece = "Menuetto" @}
@}
@end example

@funindex \bookpart

Se pueden agrupar distintas piezas de música en partes de un libro
utilizando bloques @code{\bookpart}.  Las partes de libro se separan
por medio de saltos de página, y pueden dar comienzo con un título,
como el libro propiamente dicho, mediante la especificación del bloque
@code{\header}.

@example
\bookpart @{
  \header @{
    title = "Título del libro"
    subtitle = "Primera parte"
  @}
  \score @{ @dots{} @}
  @dots{}
@}
\bookpart @{
  \header @{
    subtitle = "Segunda parte"
  @}
  \score @{ @dots{} @}
  @dots{}
@}
@end example


@node Varios archivos de salida a partir de uno de entrada
@subsection Varios archivos de salida a partir de uno de entrada
@translationof Multiple output files from one input file

Si queremos varios archivos de salida a partir del mismo archivo
@file{.ly}, podemos escribir varios bloques @code{\book}, donde cada
uno de estos bloques @code{\book} dará como resultado un archivo de
salida distinto.  Si no especificamos ningún bloque @code{\book} en el
archivo, LilyPond trata implícitamente todo el archivo como un solo
bloque @code{\book}, véase @ref{Estructura del archivo}.

Al producir varios archivos a partir de un solo archivo fuente,
Lilypond se asegura de que ninguno de los archivos de salida de ningún
bloque @code{\book} sobreescribe el archivo de salida producido por un
@code{\book} anterior del mismo archivo de entrada.

Lo hace añadiendo un sufijo al nombre de la salida para cada libro
@code{\book} que utiliza el nombre del archivo de salida
predeterminado, derivado del archivo fuente de entrada.

El comportamiento predeterminado es añadir un sufijo con el número de
versión para cada nombre que pueda coincidir; así:

@example
\book @{
  \score @{ @dots{} @}
  \paper @{ @dots{} @}
@}
\book @{
  \score @{ @dots{} @}
  \paper @{ @dots{} @}
@}
\book @{
  \score @{ @dots{} @}
  \paper @{ @dots{} @}
@}
@end example

en el archivo fuente @file{eightminiatures.ly}, produce

@itemize
@item
@file{eightminiatures.pdf},
@item
@file{eightminiatures-1.pdf} y
@item
@file{eightminiatures-2.pdf}.
@end itemize


@node Nombres de los archivos de salida
@subsection Nombres de los archivos de salida
@translationof Output file names

@funindex \bookOutputSuffix
@funindex \bookOutputName

Lilypond le ofrece unos mecanismos que le permiten controlar los
nombres de archivo que se utilizan por parte de los diversos motores
finales al producir los archivos de salida.

En la sección anterior vimos cómo Lilypond evita las coincidencias de
nombres al producir varias salidas a partir de un único archivo fuente
de entrada.  También podemos especificar nuestros propios sufijos para
cada bloque @code{\book}, de manera que podemos producir, por ejemplo,
archivos con los nombres @file{eightminiatures-Romanze.pdf},
@file{eightminiatures-Menuetto.pdf} y
@file{eightminiatures-Nocturne.pdf} añadiendo una declaración
@code{\bookOutputSuffix} dentro de cada bloque @code{\book}.

@example
\book @{
  \bookOutputSuffix "Romanze"
  \score @{ @dots{} @}
  \paper @{ @dots{} @}
@}
\book @{
  \bookOutputSuffix "Menuetto"
  \score @{ @dots{} @}
  \paper @{ @dots{} @}
@}
\book @{
  \bookOutputSuffix "Nocturne"
  \score @{ @dots{} @}
  \paper @{ @dots{} @}
@}
@end example

También podemos especificar un nombre de archivo de salida diferente
para cada bloque @code{book}, mediante la utilización de declaraciones
@code{\bookOutputName}:

@example
\book @{
  \bookOutputName "Romanze"
  \score @{ @dots{} @}
  \paper @{ @dots{} @}
@}
\book @{
  \bookOutputName "Menuetto"
  \score @{ @dots{} @}
  \paper @{ @dots{} @}
@}
\book @{
  \bookOutputName "Nocturne"
  \score @{ @dots{} @}
  \paper @{ @dots{} @}
@}
@end example

El código anterior produce los siguientes archivos de salida:

@itemize
@item
@file{Romanze.pdf},
@item
@file{Menuetto.pdf} y
@item
@file{Nocturne.pdf}.
@end itemize


@node Estructura del archivo
@subsection Estructura del archivo
@translationof File structure

@funindex \paper
@funindex \midi
@funindex \layout
@funindex \header
@funindex \score
@funindex \book
@funindex \bookpart

Un archivo @file{.ly} puede contener cualquier número de expresiones
del nivel superior, donde una expresión del nivel superior es una de
las siguientes posibilidades:

@itemize
@item
Una definición de salida, como @code{\paper}, @code{\midi} y
@code{\layout}.  Tal definición en el nivel más alto cambia los
ajustes predeterminados para todo el libro.  Si se introduce más de
una de estas definiciones del mismo tipo en el nivel más alto, las
definiciones se combinan, pero en situaciones de conflicto las
definiciones más tardías tienen preferencia.  Para ver los detalles
sobre cómo afecta al bloque @code{\layout}, consulte
@ref{El bloque layout,,El bloque @code{@bs{}layout}}.

@item
Una expresión directa de Scheme, como
@code{#(set-default-paper-size "a7" 'landscape)} o
@code{#(ly:set-option 'point-and-click #f)}.

@item
Un bloque @code{\header}.  Esto establece el bloque de encabezamiento
global (es decir, al principio del archivo).  Es el bloque que
contiene los ajustes predeterminados de los campos de encabezamientos
como el compositor, título, etc. para todos los libros que están
dentro del archivo (véase @ref{Explicación de los títulos}).

@item
Un bloque @code{\score}.  Esta partitura se reúne con otras partituras
del nivel superior, y se combina con ellas formando un @code{\book}
(libro) único.  Este comportamiento se puede cambiar estableciendo el
valor de la variable @code{toplevel-score-handler} en el nivel
superior.  El @emph{handler} predeterminado se define en el archivo de
inicio @file{../scm/lily.scm}.

@item
Un bloque @code{\book} combina lógicamente varios movimientos (es
decir, varios bloques @code{\score}) en un solo documento.  Si hay
varias partituras @code{\score}, se crea un solo archivo de salida
para cada bloque @code{\book}, en el que se concatenan todos los
movimientos correspondientes.  La única razón para especificar
explícitamente bloques @code{\book} en un archivo de entrada
@file{.ly} es si queremos crear varios archivos de salida a partir de
un único archivo de entrada.  Una excepción se da dentro de los
documentos de lilypond-book, en los que tenemos que escribir
explícitamente un bloque @code{\book} si queremos tener más de una
única partitura @code{\score} o marcado @code{\markup} en el mismo
ejemplo.  Se puede cambiar este comportamiento estableciendo el valor
de la variable @code{toplevel-book-handler} en el nivel superior.  El
@emph{handler} predeterminado se define en el archivo de inicio
@file{../scm/lily.scm}.

@item
Un bloque @code{\bookpart}.  Un libro puede dividirse en varias
partes, utilizando bloques @code{\bookpart}, con objeto de facilitar
la inserción de saltos de página o usar distintos ajustes de
@code{\paper} en las distintas partes.

@item
Una expresión musical compuesta, como
@example
@{ c'4 d' e'2 @}
@end example

Esto añade la pieza al @code{\score} y la conforma dentro de un libro
único junto a todas las demás partituras @code{\score} y expresiones
musicales del nivel superior.  En otras palabras, un archivo que
contiene sólo la expresión musical anterior se traduce a

@example
\book @{
  \score @{
    \new Staff @{
      \new Voice @{
        @{ c'4 d' e'2 @}
      @}
    @}
    \layout @{ @}
  @}
  \paper @{ @}
  \header @{ @}
@}
@end example

Se puede cambiar este comportamiento estableciendo el valor de la
variable @code{toplevel-music-handler} en el nivel más alto.  El
@emph{handler} predeterminado se define en el archivo de inicio
@file{../scm/lily.scm}.

@item
Un texto de marcado, por ejemplo una estrofa
@example
\markup @{
   2.  Estrofa dos, línea uno
@}
@end example

Los textos de marcado se colocan encima, en medio o debajo de las
partituras o expresiones musicales, según donde aparezcan escritos.

@cindex variables

@item
Una variable, como
@example
fulano = @{ c4 d e d @}
@end example

Esto se puede utilizar más tarde en el archivo escribiendo
@code{\fulano}.  El nombre de las variables ha de ser exclusivamente
alfabético; sin números, guiones ni barras bajas.

@end itemize

El ejemplo siguiente muestra tres cosas que se pueden introducir en el
nivel superior:

@example
\layout @{
  % No justificar la salida
  ragged-right = ##t
@}

\header @{
   title = "Do-re-mi"
@}

@{ c'4 d' e2 @}
@end example

En cualquier punto del archivo se pueden introducir cualquiera de las
instrucciones léxicas siguientes:

@itemize
@item @code{\version}
@item @code{\include}
@item @code{\sourcefilename}
@item @code{\sourcefileline}
@item
Un comentario de una línea, determinado por un símbolo @code{%} al principio.

@item
Un comentario de varias líneas, delimitado por @code{%@{ @dots{} %@}}.

@end itemize

@cindex espacios en blanco

Por lo general se ignoran los espacios entre elementos del flujo de
entrada, y se pueden omitir o aumentar tranquilamente para mejorar la
legibilidad.  Sin embargo, los espacios se deben utilizar siempre para
evitar errores, en las siguientes situaciones:

@itemize

@item Alrededor de todas y cada una de las llaves curvas
de apertura y cierre.

@item A continuación de las instrucciones y variables, es decir,
todos los elementos que comienzan con un signo @code{\} de barra
invertida.

@item A continuación de todo elemento que se deba interpretar
como expresión de Scheme, es decir, todo elemento que comience por
un signo@tie{}@code{#}.

@item Para separar los elementos de una expresión de Scheme.

@item Dentro de @code{lyricmode} antes y después de las instrucciones
@code{\set} y @code{\override}.

@end itemize

@seealso
Manual de aprendizaje:
@rlearning{Cómo funcionan los archivos de entrada de LilyPond}.

Referencia de la notación:
@ref{Explicación de los títulos},
@ref{El bloque layout,,El bloque @code{@bs{}layout}}.


@node Títulos y encabezamientos
@section Títulos y encabezamientos
@translationof Titles and headers

Casi toda la música impresa tiene un título y el nombre del
compositor; ciertas piezas tienen mucha más información.

@menu
* Crear títulos encabezamientos y pies de página::
* Títulos encabezamientos y pies de página personalizados::
* Crear notas al pie::
* Referencia a números de página::
* Índice general::
@end menu


@node Crear títulos encabezamientos y pies de página
@subsection Crear títulos, encabezamientos y pies de página
@translationof Creating titles headers and footers

@menu
* Explicación de los títulos::
* Presentación predeterminada de los títulos de partes de libro y partitura::
* Disposición predeterminada de las cabeceras y pies de página::
@end menu


@node Explicación de los títulos
@unnumberedsubsubsec Explicación de los títulos
@translationof Titles explained

Cada bloque @code{\book} de un solo archivo de entrada produce un
archivo de salida distinto, véase @ref{Estructura del archivo}.
Dentro de cada archivo de salida están disponibles tres tipos de zonas
para títulos: @emph{Títulos de libro} al principio de cada libro,
@emph{Títulos de parte de libro} al principio de cada
parte de un libro y @emph{Títulos de partitura} al comienzo de una
partitura.

Los valores de los campos para encabezamientos tales como @code{title}
(para el título) y @code{composer} (para el autor) se establecen en
bloques @code{\header} (para ver la sintaxis de los bloques
@code{\header} y una lista completa de los campos disponibles de forma
predeterminada, consulte @ref{Presentación predeterminada de los
títulos de partes de libro y partitura}).  Tanto los títulos de libro como
los títulos de parte de libro y los títulos de partitura pueden
contener los mismos
campos, aunque de forma predeterminada los campos de los títulos de
partitura se limitan a @code{piece} (pieza) y @code{opus}.

Los bloques @code{\header} se pueden situar en cuatro lugares
distintos para formar una jerarquía descendente de bloques
@code{\header}:

@itemize

@item
Al principio del archivo de entrada, antes de cualquier otro bloque
@code{\book}, @code{\bookpart} o @code{\score}.

@item
Dentro de un bloque @code{\book} pero fuera de los bloques
@code{\bookpart} y @code{\score} que están dentro de ese libro.

@item
Dentro de un bloque @code{\bookpart} pero fuera de cualquier bloque
@code{\score} dentro de dicha parte de libro.

@item
Después de la expresión musical de un bloque @code{\score}.

@end itemize

Los valores de los campos se fitran a través de esta jerarquía,
persistiendo aquellos que se establecen más arriba a no ser que se
sobreescriban por un valor establecido más abajo en la jerarquía, y
así:

@itemize

@item
El título de un libro deriva de los campos establecidos al
principio del archivo de entrada, modificado por campos
establecidos en el bloque @code{\book}.  Los campos resultantes se
usan para imprimir el título de libro para dicho libro, siempre y
cuando haya otro material que genere una página al comienzo del
libro, antes de la primera parte de libro.  Es suficiente una sola
instrucción @code{\pageBreak}.

@item
Un título de parte de libro se deriva de los campos fijados al
principio del archivo de entrada, modificado por los campos
establecidos dentro del bloque @code{\book}, y posteriormente
modificado por los campos que se fijan dentro del bloque
@code{\bookpart}.  Los valores resultantes se usan para imprimir el
título de parte de libro para esa parte.

@item
Un título de partitura se deriva de los campos que se fijan al
principio del archivo de entrada, modificados por los campos fijados
dentro del bloque @code{\book}, posteriormente modificados por los
campos que se fijan dentro del bloque @code{\bookpart} y finalmente
modificados por los campos establecidos dentro del bloque
@code{\score}.  Los valores restulantes se utilizan para imprimir el
título de partitura.  Observe, sin embargo, que de forma
predeterminada solamente se imprimen los campos @code{piece} y
@code{opus} en los títulos de partitura a no ser que la variable de
@code{\paper}, @code{print-all-headers}, tenga el valor @code{#t}.

@end itemize

@warning{Recuerde que al poner un bloque @bs{}@code{header} dentro de
un bloque @bs{}@code{score}, la expresión musical debe aparecer antes
del bloque @bs{}@code{header}.}

No es necesario aportar bloques @code{\header} en los cuatro lugares:
cualquiera de ellos o incluso todos pueden omitirse.  De forma
similar, los archivos de entrada sencillos pueden omitir los bloques
@code{\book} y @code{\bookpart}, dejando que se creen de forma
implícita.

Si el lobro solamente tiene una partitura, el bloque @code{\header}
debiera situarse normalmente al principio del archivo de forma que
solamente se produce una zona de título de parte de libro, haciendo
que estén disponibles para su uso todos los títulos de
encabezamientos.

Si el libro tiene varias partituras, son posibles distintas
combinaciones de bloques @code{\header}, según los distintos tipos de
publicaciones musicales.  Por ejemplo, si la publicación contiene
varias piezas del mismo autor, un bloque @code{\header} colocado al
principio del archivo que especifique el título del libro y el autor,
con bloques @code{\header} en cada bloque @code{\score} que
especifique la @code{piece} y/o el @code{opus} sería lo más adecuado,
como aquí:

@lilypond[papersize=a5,quote,verbatim,noragged-right]
\header {
  title = "SUITE I."
  composer = "J. S. Bach."
}

\score {
  \new Staff \relative g, {
    \clef bass
    \key g \major
    \repeat unfold 2 { g16( d' b') a b d, b' d, } |
    \repeat unfold 2 { g,16( e' c') b c e, c' e, } |
  }
  \header {
    piece = "Prélude."
  }
}

\score {
  \new Staff \relative b {
    \clef bass
    \key g \major
    \partial 16 b16 |
    <g, d' b'~>4 b'16 a( g fis) g( d e fis) g( a b c) |
    d16( b g fis) g( e d c) b(c d e) fis( g a b) |
  }
  \header {
    piece = "Allemande."
  }
}
@end lilypond

Son posibles disposiciones más complejas.  Por ejemplo, los campos de
texto extraídos del bloque @code{\header} de un libro se pueden
imprimir en todos los títulos de partitura, con ciertos campos
sobreescritos y otros suprimidos manualmente:

@lilypond[papersize=a5,quote,verbatim,noragged-right]
\book {
  \paper {
    print-all-headers = ##t
  }
  \header {
    title = "DAS WOHLTEMPERIRTE CLAVIER"
    subtitle = "TEIL I"
    % Do not display the tagline for this book
    tagline = ##f
  }
  \markup { \vspace #1 }
  \score {
    \new PianoStaff <<
      \new Staff { s1 }
      \new Staff { \clef "bass" s1 }
    >>
    \header {
      title = "PRAELUDIUM I"
      opus = "BWV 846"
      % Do not display the subtitle for this score
      subtitle = ##f
    }
  }
  \score {
    \new PianoStaff <<
      \new Staff { s1 }
      \new Staff { \clef "bass" s1 }
    >>
    \header {
      title = "FUGA I"
      subsubtitle = "A 4 VOCI"
      opus = "BWV 846"
      % Do not display the subtitle for this score
      subtitle = ##f
    }
  }
}
@end lilypond

@seealso
Referencia de la notación:
@ref{Estructura del archivo},
@ref{Presentación predeterminada de los títulos de partes de libro y partitura},
@ref{Personalización de los títulos}.


@node Presentación predeterminada de los títulos de partes de libro y partitura
@unnumberedsubsubsec Presentación predeterminada de los títulos de partes de libro y partitura
@translationof Default layout of bookpart and score titles

Este ejemplo muestra todas las variables de @code{\header}:

@c KEEP LY
@lilypond[papersize=a6landscape,quote,verbatim,noragged-right]
\book {
  \header {
      % Los siguientes campos están centrados
    dedication = "Dedication (dedicatoria)"
    title = "Title (título)"
    subtitle = "Subtitle (subtítulo)"
    subsubtitle = "Subsubtitle (sub-subtítulo)"
      % Los siguientes campos se distribuyen regularmente sobre una línea
      % el campo "instrument" también aparece en las siguientes páginas
    instrument = \markup \with-color #green "Instrument (instrumento)"
    poet = "Poet (poeta)"
    composer = "Composer (autor)"
      % Los siguientes campos se sitúan en los extremos opuestos de la misma línea
    meter = "Meter (metro)"
    arranger = "Arranger (arreglista)"
      % Los siguientes campos están centrados en la parte inferior
    tagline = "la tagline o línea de etiqueta va al final de la úitlma página"
    copyright = "el copyright va al final de la primera página"
  }
  \score {
    { s1 }
    \header {
        % Los siguientes campos se colocan en los extremos de una línea
      piece = "Piece (pieza) 1"
      opus = "Opus 1"
    }
  }
  \score {
    { s1 }
    \header {
        % Los siguientes campos se sitúan en los extremos de una línea
      piece = "Piece (pieza) 2 en la misma página"
      opus = "Opus 2"
    }
  }
  \pageBreak
  \score {
    { s1 }
    \header {
        % Los siguientes campos se sitúan en los extremos de una línea
      piece = "Piece (pieza) 3 en una página nueva"
      opus = "Opus 3"
    }
  }
}
@end lilypond

Observe que

@itemize
@item
El nombre de instrumento se repite en todas las páginas.

@item
Solamente @code{piece} (la pieza) y @code{opus} se imprimen en una
@code{\score} cuando la variable de papel @code{print-all-headers} se
establece a @code{##f} (el valor predeterminado).

@item
@c Is the bit about \null markups true? -mp
Los campos de texto que se dejan sin establecer dentro de un bloque
@code{\header} se sustituyen por elementos de marcado nulos
@code{\null} de manera que no ocupen espacio innecesariamente.

@item
Los ajustes predeterminados para @code{scoreTitleMarkup} sitúan los
campos de texto @code{piece} y @code{opus} en extremos opuestos de la
misma línea.

@end itemize

Para cambiar la disposición predeterminada, véase
@ref{Personalización de los títulos}.

@cindex breakbefore

Si un bloque @code{\book} comienza inmediatamente con un bloque
@code{\bookpart}, no se imprime ningún título de libro, pues no
existe ninguna página en que imprimirlo.  Si es necesario un
título de libro, inicie el bloque @code{\book} con algún material
de marcado o con una instrucción @code{\pageBreak}.

Utilice la variable @code{breakbefore} dentro de un bloque
@code{\header} que está propiamente dentro de un bloque @code{\score}
para hacer que los títulos del bloque @code{\header} del nivel
superior aparezcan ocupando toda la primera página, empezando la
música (definida en el bloque @code{\score}) en la página siguiente.

@c KEEP LY
@lilypond[papersize=c7landscape,verbatim,noragged-right]
\book {
  \header {
    title = "Este es mi Title (título)"
    subtitle = "Este es mi Subtitle (subtítulo)"
    copyright = "Este es el final de la primera página"
  }
  \score {
    \repeat unfold 4 { e'' e'' e'' e'' }
    \header {
      piece = "Esto es la música"
      breakbefore = ##t
    }
  }
}
@end lilypond

@seealso
Manual de aprendizaje:
@rlearning{Cómo funcionan los archivos de entrada de LilyPond}

Referencia de la notación:
@ref{Personalización de los títulos},
@ref{Estructura del archivo}.

Archivos de inicio:
@file{ly/titling-init.ly}.


@node Disposición predeterminada de las cabeceras y pies de página
@unnumberedsubsubsec Disposición predeterminada de las cabeceras y pies de página
@translationof Default layout of headers and footers

Las @emph{cabeceras} y los @emph{pies} de página son líneas de texto
que aparecen en la parte más alta y en la más baja de las páginas
separadas del texto principal de un libro.  Se controlan mediante las
siguientes variables de @code{\paper}:

@itemize
@item @code{oddHeaderMarkup} (marcado de cabecera impar)
@item @code{evenHeaderMarkup} (marcado de cabecera par)
@item @code{oddFooterMarkup} (marcado de pie impar)
@item @code{evenFooterMarkup} (marcado de pie par)
@end itemize

Estas variables de marcado sólo pueden acceder a los campos de texto
extraídos de bloques @code{\header} del nivel superior (que se aplican
a todas las partituras del libro) y se definen en el archivo
@file{ly/titling-init.ly}.  De forma predeterminada:

@itemize

@item
los números de página se sitúan automáticamente en el extremo superior
izquierdo (si es par) o superior derecho (si es impar), a partir de la
segunda página.

@item
el campo de texto @code{instrument} se sitúa en el centro en cada
página, a partir de la segunda página.

@item
el texto de @code{copyright} se centra en la parte baja de la primera
página.

@item
la línea @code{tagline} se centra al final de la última página, y
debajo del texto de @code{copyright} si sólo hay una página.

@end itemize

La línea de etiqueta tagline predeterminada se puede cambiar añadiendo un campo
@code{tagline} en el bloque @code{\header} del nivel superior.

@lilypond[papersize=a8landscape,verbatim]
\book {
  \header {
    tagline = "... music notation for Everyone"
  }
  \score {
    \relative c' {
      c4 d e f
    }
  }
}
@end lilypond

Para eliminar la línea @code{tagline}, establezca su valor a
@code{##f}.


@node Títulos encabezamientos y pies de página personalizados
@subsection Títulos, encabezamientos y pies de página personalizados
@translationof Custom titles headers and footers

@c TODO: somewhere put a link to header spacing info
@c       (you'll have to explain it more in NR 4).

@menu
* Formateo personalizado del texto de los títulos::
* Personalización de los títulos::
* Disposición personalizada de cabeceras y pies de página::
@end menu


@node Formateo personalizado del texto de los títulos
@unnumberedsubsubsec Formateo personalizado del texto de los bloques de título
@translationof Custom text formatting for titles

Se pueden usar instrucciones @code{\markup} estándar para personalizar
el texto de cualquier cabecera, pie o título dentro del bloque
@code{\header}.

@lilypond[quote,verbatim,noragged-right]
\score {
  { s1 }
  \header {
    piece = \markup { \fontsize #4 \bold "PRAELUDIUM I" }
    opus = \markup { \italic "BWV 846" }
  }
}
@end lilypond

@seealso
Referencia de la notación:
@ref{Formatear el texto}.


@node Personalización de los títulos
@unnumberedsubsubsec Personalización de los títulos
@translationof Custom layout for titles

@cindex bookTitleMarkup
@cindex scoreTitleMarkup
@funindex bookTitleMarkup
@funindex scoreTitleMarkup

Las instrucciones @code{\markup} dentro del bloque @code{\header} son
útiles para dar un formato simple al texto, pero no permiten un
control preciso sobre la colocación de los títulos.  Para personalizar
la colocación de los campos de texto, cambie una o las dos variables de
@code{\paper} siguientes:

@itemize
@item @code{bookTitleMarkup} (marcado de título del libro)
@item @code{scoreTitleMarkup} (marcado de título de la partitura)
@end itemize

La colocación de los títulos cuando se utilizan los valores
predeterminados de estas variables de @code{\markup} se muestra en los
ejemplos de
@ref{Presentación predeterminada de los títulos de partes de libro y partitura}.

Los ajustes predeterminados para @code{scoreTitleMarkup} tal y como
están definidos en el archivo @file{ly/titling-init.ly} son:

@example
scoreTitleMarkup = \markup @{ \column @{
  \on-the-fly \print-all-headers @{ \bookTitleMarkup \hspace #1 @}
  \fill-line @{
    \fromproperty #'header:piece
    \fromproperty #'header:opus
  @}
@}
@}
@end example

Esto sitúa los campos de texto @code{piece} y @code{opus} en extremos
opuestos de la misma línea:

@lilypond[quote,verbatim,noragged-right]
\score {
  { s1 }
  \header {
    piece = "PRAELUDIUM I"
    opus = "BWV 846"
  }
}
@end lilypond

Este ejemplo redefine @code{scoreTitleMarkup} de manera que el campo
de texto @code{piece} aparece centrado y en un tipo de letra grande y
en negrita.

@lilypond[papersize=a5,quote,verbatim,noragged-right]
\book {
  \paper {
    indent = 0\mm
    scoreTitleMarkup = \markup {
      \fill-line {
        \null
        \fontsize #4 \bold \fromproperty #'header:piece
        \fromproperty #'header:opus
      }
    }
  }
  \header { tagline = ##f }
  \score {
    { s1 }
    \header {
      piece = "PRAELUDIUM I"
      opus = "BWV 846"
    }
  }
}
@end lilypond

Los campos de texto que normalmente no son efectivos
dentro de los bloques @code{\header} de una partitura
se pueden imprimir el la zona del Título de la partitura
si se coloca @code{print-all-headers} dentro del bloque @code{\paper}.
Una desventaja de la
utilización de este método es que los campos de texto que están
orientados específicamente para la zona del título de parte de libro
han de suprimirse manualmente en cada uno de los bloques
@code{\score}.  Véase @ref{Explicación de los títulos}.

Para evitarlo, añada el campo de texto deseado a la definición de
@code{scoreTitleMarkup}.  En el ejemplo siguiente, el campo de texto
@code{composer} (asociado normalmente con @code{bookTitleMarkup}) se
añade a @code{scoreTitleMarkup}, permitiendo que cada partitura
muestre un compositor diferente:

@lilypond[papersize=a5,quote,verbatim,noragged-right]
\book {
  \paper {
    indent = 0\mm
    scoreTitleMarkup = \markup {
      \fill-line {
        \null
        \fontsize #4 \bold \fromproperty #'header:piece
        \fromproperty #'header:composer
      }
    }
  }
  \header { tagline = ##f }
  \score {
    { s1 }
    \header {
      piece = "MENUET"
      composer = "Christian Petzold"
    }
  }
  \score {
    { s1 }
    \header {
      piece = "RONDEAU"
      composer = "François Couperin"
    }
  }
}
@end lilypond

También podemos crear nuestros propios campos de texto personalizados,
y referirnos a ellos en la definición del elemento de marcado.

@lilypond[papersize=a5,quote,verbatim,noragged-right]
\book {
  \paper {
    indent = 0\mm
    scoreTitleMarkup = \markup {
      \fill-line {
        \null
        \override #`(direction . ,UP) {
          \dir-column {
            \center-align \fontsize #-1 \bold
              \fromproperty #'header:mycustomtext %% User-defined field
            \center-align \fontsize #4 \bold
              \fromproperty #'header:piece
          }
        }
        \fromproperty #'header:opus
      }
    }
  }
  \header { tagline = ##f }
  \score {
    { s1 }
    \header {
      piece = "FUGA I"
      mycustomtext = "A 4 VOCI" %% User-defined field
      opus = "BWV 846"
    }
  }
}
@end lilypond

@seealso
Referencia de la notación:
@ref{Explicación de los títulos}.


@node Disposición personalizada de cabeceras y pies de página
@unnumberedsubsubsec Disposición personalizada de cabeceras y pies de página
@translationof Custom layout for headers and footers

@c can make-header and make-footer be removed from
@c paper-defaults-init.ly? -mp

Las instrucciones @code{\markup} dentro del bloque @code{\header} son
de utilidad para dar formato al texto de una manera sencilla, pero no
permiten un control preciso sobre la colocación de las cabeceras y los
pies de página.  Para personalizar la colocación de los campos de
texto, use una o más de las siguientes variables de @code{\paper}:

@itemize
@item @code{oddHeaderMarkup} (marcado de encabezamiento impar)
@item @code{evenHeaderMarkup} (marcado de encabezamiento par)
@item @code{oddFooterMarkup} (marcado de pie de página impar)
@item @code{evenFooterMarkup} (marcado de pie de página par)
@end itemize

@cindex marcado condicional
@cindex on-the-fly
@funindex \on-the-fly

La instrucción de marcado @code{\on-the-fly} se puede utilizar para
añadir elementos de forma condicional al texto de encabezamiento y pie
de página definido dentro del bloque @code{\paper}, usando la sintaxis
siguiente:

@example
@code{variable} = @code{\markup} @{
  @dots{}
  @code{\on-the-fly}  \@var{procedimiento}  @var{marcado}
  @dots{}
@}
@end example

El @var{procedimiento} se llama cada vez que se evalúa la instrucción
@code{\markup} en que ésta aparece.  El @var{procedimiento} debería
comprobar si se cumple una condición determinada e interpretar (es
decir: imprimir) el argumento @var{marcado} si, y sólo si, la
condición es verdadera.

Se proveen un cierto número de procedimientos ya hechos para la
comprobación de diversas condiciones:

@quotation
@multitable {print-page-number-check-first-----} {¿es el núm. de páginas en la parte de libro > 1?-----}

@headitem  Nombre del procedimiento @tab  Condición que se comprueba

@item print-page-number-check-first @tab  ¿debería imprimirse esta página?
@item create-page-number-stencil    @tab  ¿es print-page-numbers verdadero?
@item print-all-headers             @tab  ¿es print-all-headers verdadero?
@item first-page                    @tab  ¿es la primera página del libro?
@item (on-page nmbr)                @tab  ¿es el número de página = nmbr?
@item last-page                     @tab  ¿es la última página del libro?
@item not-first-page                @tab  ¿no es la primera página del libro?
@item part-first-page               @tab  ¿es la primera página de la parte de libro?
@item part-last-page                @tab  ¿es la última página de la parte de libro?
@item not-single-page               @tab  ¿es el núm. de páginas en la parte de libro > 1?

@end multitable
@end quotation

El ejemplo siguiente centra los números de página en la parte baja de
las páginas.  En primer lugar, los ajustes predeterminados para
@code{oddHeaderMarkup} y @code{evenHeaderMarkup} se eliminan
definiéndolos como un marcado @emph{nulo}.  Después de esto, se
redefine @code{oddFooterMarkup} con el número de página centrado.
Finalmente, @code{evenFooterMarkup} recibe la misma disposición
definiéndola como @code{\oddFooterMarkup}:

@lilypond[papersize=a8,quote,verbatim,noragged-right]
\book {
  \paper {
    print-page-number = ##t
    print-first-page-number = ##t
    oddHeaderMarkup = \markup \null
    evenHeaderMarkup = \markup \null
    oddFooterMarkup = \markup {
      \fill-line {
        \on-the-fly \print-page-number-check-first
        \fromproperty #'page:page-number-string
      }
    }
    evenFooterMarkup = \oddFooterMarkup
  }
  \score {
    \new Staff { s1 \break s1 \break s1 }
  }
}
@end lilypond

Se pueden combinar varias condiciones de @code{\on-the-fly} con un
operador @q{and}, por ejemplo:

@example
  @code{\on-the-fly \first-page}
  @code{\on-the-fly \last-page}
  @code{@{ \markup @dots{} \fromproperty #'header: @dots{} @}}
@end example

determina si la salida es una sola página.

@seealso
Referencia de la notación:
@ref{Explicación de los títulos},
@ref{Presentación predeterminada de los títulos de partes de libro y partitura}.

Archivos instalados:
@file{../ly/titling-init.ly}.


@node Crear notas al pie
@subsection Crear notas al pie
@translationof Creating footnotes

@cindex notas al pie

Se pueden crear dos tipos de notas al pie: automáticas y manuales.

@menu
* Notas al pie dentro de expresiones musicales::
* Notas al pie en texto independiente::
@end menu

@node Notas al pie dentro de expresiones musicales
@unnumberedsubsubsec Notas al pie dentro de expresiones musicales
@translationof Footnotes in music expressions

@cindex notas al pie dentro de expresiones musicales
@funindex \footnote

@subsubsubheading Panorámica de las notas al pie

Las notas al pie dentro de expresiones musicales caen dentro de dos
categorías:

@table @emph
@item Notas al pie basadas en eventos
Se adjuntan a un evento en particular.  Son ejemplos de tales eventos
las notas sueltas, las articulaciones (como indicaciones de digitación,
acentos, indicaciones dinámicas) y los post-eventos (como las ligaduras de expresión
y las barras de corchea manuales).  La forma general de las notas
al pie basadas en eventos es como sigue:

@example
[@var{dirección}] \footnote [@var{marca}] @var{desplazamiento} @var{texto-de-la-nota} @var{música}
@end example

@item Notas al pie basadas en tiempo
Se ligan a un punto temporal determinado, dentro de un contexto
musical.  Algunas instrucciones como @code{\time} y @code{\clef} en
realidad no usan eventos para crear objetos como la indicación de
compás y la clave.  Un acorde tampoco crea un evento por sí mismo: su
plica o corchete se crea al final de un paso de tiempo (nominalmente,
a través de uno de los eventos de nota que contiene).  Una nota al pie
basada en tiempo permite anotar tales objetos de presentación sin
referirse a ningún evento.

Una nota al pie basada en tiempo permite que tales objetos de
presentación se puedan anotar sin hacer referencia a un evento.
La forma general para las notas al pie basadas en tiempo es:

@example
\footnote [@var{marca}] @var{desplazamiento} @var{texto-de-la-nota} [@var{Contexto}].@var{Nombre-del-Grob}
@end example

@end table

Los elementos para las dos formas son como sigue:

@table @var

@item dirección
Si (y sólo si) el @code{\footnote} se está aplicando a un post-evento
o articulación, debe ir precedida de un indicador de dirección
(@code{-, _, ^}) con el objeto de adjuntar la @var{música} (con una
marca de nota al pie) a la nota o silencio precedente.

@item marca
es un elemento de marcado o cadena de caracteres que especifica la
marca de nota al pie que se usa para marcar tanto el punto de
referencia como la propia nota al pie en la parte inferior de la
página.  Se puede omitir (o, de forma equivalente, sustituirse por
@code{\default}) en cuyo caso se genera un número secuencialmente de
forma automática.  Tales secuencias numéricas se reinician en cada
página que contiene una nota al pie.

@item desplazamiento
es una pareja de números tal como @samp{#(2 . 1)} que especifica los
desplazamientos en X y en Y en unidades de espacios de pentagrama a
partir del límite del objeto en que se desea situar la marca.  Los
valores de desplazamiento positivos se toman a partir del borde
superior derecho, los valores negativos a partir del borde inferior
izquierdo y cero implica que la marca se centra sobre el borde.

@item Contexto
es el contexto en que se crea el grob que recibe la nota al pie.
Se puede omitir si el grob está en un contexto del nivel inferior,
p.ej un contexto @code{Voice}.

@item Nombre-del-Grob
especifica un tipo de grob que marcar (como @samp{Flag} para el
corchete).  Si se da, la nota al pie no se adjunta a una expresión
musical en particular, sino a todos los grobs del tipo
especificado que ocurren en dicho momento de tiempo musical.

@item texto-de-la-nota
es el elemento de marccado o cadena de caracteres que especifica el
texto de la nota al pie que utilizar en la parte baja de la página.

@item música
es el evento musical, post-evento o articulación que se
está anotando.

@end table

@subsubsubheading Notas al pie basadas en eventos

@cindex Notas al pie, basadas en eventos

Una nota al pie se adjunta a un objeto de presentación causado
directamente por el evento que corresponde a @var{música}, con la
sintaxis siguiente:

@example
\footnote [@var{marca}] @var{desplazamiento} @var{texto-de-la-nota} @var{música}
@end example

@c KEEP LY
@lilypond[quote,verbatim,papersize=a8landscape]
\book {
  \header { tagline = ##f }
  \relative c'' {
    \footnote #'(-1 . 3) "Una nota" a4
    a4
    \footnote #'(2 . 2) "Un silencio" r4
    a4
  }
}
@end lilypond

No es posible marcar un acrode @emph{completo} con una nota al pie
basada en evento: un acorde, incluso aquel que contiene una sola
nota, no produce un verdadero evento por sí mismo.  Sin embargo,
las notas individuales que están @emph{dentro} del acorde sí se
pueden marcar:

@c KEEP LY
@lilypond[quote,verbatim,papersize=a8landscape]
\book {
  \header { tagline = ##f }
  \relative c'' {
    \footnote #'(2 . 3) "No funciona" <a-3>2
    <\footnote #'(-2 . -3) "Funciona" a-3>4
    <a-3 \footnote #'(3 . 1/2) "También funciona" c-5>4
  }
}
@end lilypond

Si se desea que la nota al pie se adjunte a un post-evento o
articulación, la instrucción @code{\footnote} @emph{debe} ir
precedida por un indicador de dirección, @code{-, _, ^}, y seguida
por el post-evento o articulación que se desea anotar como
argumento @var{música}.  En esta forma, la @code{\footnote} se
puede considerar como una simple copia de su último argumento con
una marca de nota al pie adjunta.  La sintaxis es:

@example
@var{dirección} \footnote [@var{marca}] @var{desplazamiento} @var{texto-de-la-nota} @var{música}
@end example

@c KEEP LY
@lilypond[quote,verbatim,papersize=a8landscape]
\book {
  \header { tagline = ##f }
  \relative c'' {
    a4_\footnote #'(0 . -1) "Ligadura forzada hacia abajo" (
    b8^\footnote #'(1 . 0.5) "Barra manual forzada hacia arriba" [
    b8 ]
    c4 )
    c-\footnote #'(1 . 1) "Tenuto" --
  }
}
@end lilypond

@subsubsubheading notas al pie basadas en tiempo

@cindex notas al pie, basadas en tiempo

Si el objeto de presentación que recibe la nota al pie está
causado @emph{indirectamente} por un evento (como un objeto
@code{Accidental}, alteración, o @code{Stem}, plica, causados por
un evento @code{NoteHead}, cabeza de nota), el nombre del grob
@var{GrobName} del objeto de presentación es necesario después del
texto de la nota al pie, en lugar de @var{música}:

@c KEEP LY
@lilypond[quote,verbatim,papersize=a8landscape]
\book {
  \header { tagline = ##f }
  \relative c'' {
    \footnote #'(-1 . -3) "Un bemol" Accidental
    aes4 c
    \footnote #'(-1 . 0.5) "Otro bemol" Accidental
    ees
    \footnote #'(1 . -2) "Una plica" Stem
    aes
  }
}
@end lilypond

Sin embargo, observe que cuando se especifica el nombre de un
grob, se adjunta una nota al pie a todos los grobs de ese tipo
dentro del instante de tiempo actual:

@c KEEP LY
@lilypond[quote,verbatim,papersize=a8landscape]
\book {
  \header { tagline = ##f }
  \relative c' {
    \footnote #'(-1 . 3) "Un bemol" Accidental
    <ees ges bes>4
    \footnote #'(2 . 0.5) "Articulación" Script
    c'->-.
  }
}
@end lilypond

Una nota dentro de un acorde puede recibir una nota al pie
individual, basada en evento.  El único grob causado directamente
por una nota de un acorde es @samp{NoteHead}, por lo que la
instrucción de nota al pie basada en evento @emph{solamente} es
apta para añadir una nota al pie a la @samp{NoteHead} dentro de un
acorde.  Todos los demás grobs de notas de acorde están causados
indirectamente. La propia instrucción @code{\footnote} no ofrece
ninguna sintaxis para especificar al mismo tiempo un tipo concreto
de grob @emph{y también} un evento concreto al que adjuntar la
nota.  Sin embargo, se puede usat una instrucción @code{\footnote}
basada en tiempo para especificar el tipo de grob, y luego añadir
la instrucción @code{\single} como prefijo, con el objeto de que
se aplique solamente al evento siguiente:

@c KEEP LY
@lilypond[quote,verbatim,papersize=a8landscape]
\book {
  \header { tagline = ##f }
  \relative c'' {
    < \footnote #'(1 . -2) "An A" a
      \single \footnote #'(-1 . -1) "Un sostenido" Accidental
      cis
      \single \footnote #'(0.5 . 0.5) "Un bemol" Accidental
      ees fis
    >2
  }
}
@end lilypond

@warning {Cuando las notas al pie se adjuntan a varios elementos musicales que
están dentro del mismo momento musical, como ocurre en el ejemplo
anterior, las notas al pie se numeran desde los elementos más
altos a los más bajos tal y como aparecen en la salida impresa, no
en el orden en que se escriben en el flujo de entrada.}

Los objetos de presentación como las claves y las armaduras de
cambio de tonalidad están, más bien, causadas por propiedades que
cambian, y no por eventos.  Otros, como las líneas divisorias y
los números de compás, son una consecuencia directa del paso del
tiempo.  Por esta razón, las notas al pie sobre tales objetos
tienen que basarse en su tiempo musical.  Las notas al pie basadas
en tiempo so preferibles también cuando se marcan cosas como las
plicas y las barras de corchea en @emph{acordes}: dado que estas
funcionalidades de cada acorde individual están asignadas
normalmente a @emph{un solo} evento dentro del acorde, sería
imprudente descansar en una elección particular.

En las notas al pie basadas en tiempo, siempre se debe especificar
explícitamente el objeto de presentación en cuestión, y si el grob
se crea dentro de un contexto distinto al de nivel más bajo, debe
especificarse el contexto apropiado.

@c KEEP LY
@lilypond[quote,verbatim,papersize=a8landscape]
\book {
  \header { tagline = ##f }
  \relative c'' {
    r1 |
    \footnote #'(-0.5 . -1) "Cambio de compás" Staff.TimeSignature
    \time 3/4
    \footnote #'(1 . -1) "Plica de acorde" Stem
    <c e g>4 q q
    \footnote #'(-0.5 . 1) "Línea divisoria" Staff.BarLine
    q q
    \footnote #'(0.5 . -1) "Cambio de tonalidad" Staff.KeySignature
    \key c\minor
    q
  }
}
@end lilypond

Se pueden usar marcas personalizadas como alternativas a las
marcas numéricas, y se puede suprimir la línea de anotación que
une el objeto marcado con su marca:

@c KEEP LY
@lilypond[quote,verbatim,papersize=a8landscape]
\book {
  \header { tagline = ##f }
  \relative c' {
    \footnote "*" #'(0.5 . -2) \markup { \italic "* La primera nota" } a'4
    b8
    \footnote \markup { \super "$" } #'(0.5 . 1)
      \markup { \super "$" \italic " La segunda nota" } e
    c4
    \once \override Score.FootnoteItem.annotation-line = ##f
    b-\footnote \markup \tiny "+" #'(0.1 . 0.1)
      \markup { \super "+" \italic " Editorial" } \p
  }
}
@end lilypond

Se muestran más ejemplos de marcas personalizadas en
@ref{Notas al pie en texto independiente}.


@node Notas al pie en texto independiente
@unnumberedsubsubsec Notas al pie en texto independiente
@translationof Footnotes in stand-alone text

@cindex notas al pie en texto independiente

Se utilizan dentro de un elemento de marcado fuera de cualquier
expresión musical.  No se traza una líne hasta el punto de referencia:
la marca simplemente sigue al elemento de marcado que se referencia.
Se pueden insertar las marcas automáticamente, en cuyo caso son
numéricas.  De forma alternativa, se pueden aportar manualmente marcas
personalizadas.

Las notas al pie para texto independiente con marcas automáticas y
personalizadas se crean de distintas formas.

@subsubsubheading Notas al pie en texto independiente con marcas automáticas

La sintaxis de una nota al pue sobre texto independiente con marcas
automáticas es

@example
\markup @{ @dots{} \auto-footnote @var{texto} @var{nota} @dots{} @}
@end example

Los elementos son:

@table @var

@item texto
es el elemento de marcado o cadena de caracteres que se desea anotar.

@item nota
es el elemento de marcado o cadena de caracteres que especifica el
texto de la nota al pie que utilizar en la parte baja de la página.

@end table

Por ejemplo:

@lilypond[verbatim,quote,ragged-right,papersize=a8]
\book {
  \header { tagline = ##f }
  \markup {
    "A simple"
    \auto-footnote "tune" \italic " By me"
    "is shown below.  It is a"
    \auto-footnote "recent" \italic " Aug 2012"
    "composition."
  }
  \relative c' {
    a'4 b8 e c4 d
  }
}
@end lilypond

@subsubsubheading Notas al pie sobre texto independiente con marcas personalizadas

La sintaxis de una nota al pie sobre texto independiente con marcas
personalizadas es

@example
\markup @{ @dots{} \footnote @var{marca} @var{nota} @dots{} @}
@end example

Los elementos son:

@table @var

@item marca
es un elemento de marcado o cadena de caracteres que especifica la
marca que se usa para señalar el punto de referencia.  Observe que
esta marca @emph{no} se inserta automáticamente antes de la propia
nota al pie.

@item nota
es el elemento de marcado o cadena de caracteres que especifica el
texto de la nota que aparece en la parte baja de la página, precedida
por la @var{marca} especificada.

@end table

Se puede usar como marca un carácter fácil de teclear, como * ó +,
según se muestra en @ref{Notas al pie dentro de expresiones musicales}.
De forma alternativa, se pueden usar alias en ASCII (véase
@ref{Alias de ASCII}):

@lilypond[verbatim,quote,ragged-right,papersize=a8]
\book {
  \paper { #(include-special-characters) }
  \header { tagline = ##f }
  \markup {
    "A simple tune"
    \footnote "*" \italic "* By me"
    "is shown below.  It is a recent"
    \footnote \super &dagger; \concat {
      \super &dagger; \italic " Aug 2012"
    }
    "composition."
  }
  \relative c' {
    a'4 b8 e c4 d
  }
}
@end lilypond

También pueden utilizarse códigos de caracteres Unicode para
especificar las marcas (véase @ref{Unicode}):

@lilypond[verbatim,quote,ragged-right,papersize=a8]
\book {
  \header { tagline = ##f }
  \markup {
    "A simple tune"
    \footnote \super \char##x00a7 \concat {
      \super \char##x00a7 \italic " By me"
    }
    "is shown below.  It is a recent"
    \footnote \super \char##x00b6 \concat {
      \super \char##x00b6 \italic " Aug 2012"
    }
    "composition."
  }
  \relative c' {
    a'4 b8 e c4 d
  }
}
@end lilypond

@seealso
Manual de aprendizaje:
@rlearning{Objetos e interfaces}.

Referencia de la notación:
@ref{ASCII aliases},
@ref{Globos de ayuda},
@ref{List of special characters},
@ref{Indicaciones de texto},
@ref{Guiones de texto},
@ref{Unicode}.

Referencia de funcionamiento interno:
@rinternals{FootnoteEvent},
@rinternals{FootnoteItem},
@rinternals{FootnoteSpanner},
@rinternals{Footnote_engraver}.

@knownissues
Varias notas al pie en la misma página solo pueden ir apiladas unas
sobre otras; no se pueden imprimir en la misma línea.

Las notas al pie no se pueden adjuntar a @code{MultiMeasureRests}
(silencios multicompás), a barras de corchea automáticas ni a la
letra de las canciones.

Las notas al pie pueden colisionar con las pautas, objetos
@code{\markup}, otras marcas de notas al pie y líneas de
anotación.


@node Referencia a números de página
@subsection Referencia a números de página
@translationof Reference to page numbers

Un lugar determinado de una partitura puede señalizarse usando la
instrucción @code{\label} (etiqueta), ya sea en el nivel superior o
dentro de la música.  Podemos referirnos a esta etiqueta más tarde
dentro de un elemento de marcado, para obtener el número de la página
en la que se sitúa el punto señalizado, usando la instrucción de
marcado @code{\page-ref}.

@c KEEP LY
@lilypond[verbatim,papersize=a8landscape]
\header { tagline = ##f }
\book {
  \label #'firstScore
  \score {
    {
      c'1
      \pageBreak \mark A \label #'markA
      c'1
    }
  }
  \markup { La primera partitura comienza en la página \page-ref #'firstScore "0" "?" }
  \markup { La marca A está en la página \page-ref #'markA "0" "?" }
}
@end lilypond

La instrucción de marcado @code{\page-ref} toma tres argumentos:
@enumerate
@item la etiqueta, un símbolo de scheme, p.ej. @code{#'firstScore};
@item un elemento de marcado que se usará como medidor para estimar las dimensiones del marcado;
@item un elemento de marcado que se utilizará en sustitución del número de página si la etiqueta es desconocida.
@end enumerate

El motivo de que se necesite un medidor es que en el momento en que se
están interpretando los marcados, los saltos de página aún no se han
producido y por tanto los números de página no se conocen todavía.
Para sortear este inconveniente, la interpretación real del marcado se
retrasa hasta un momento posterior; sin embargo, las dimensiones del
marcado se tienen que conocer de antemano, así que se usa el medidor
para decidir estas dimensiones.  Si el libro tiene entre 10 y 99
páginas, el medidor puede ser "00", es decir, un número de dos
dígitos.

@predefined
@funindex \label
@code{\label},
@funindex \page-ref
@code{\page-ref}.
@endpredefined


@node Índice general
@subsection Índice general
@translationof Table of contents

Se puede insertar un índice general o tabla de contenidos utilizando
la instrucción @code{\markuplist \table-of-contents}.  Los elementos
que deben aparecer en la tabla de contenidos se introducen con la
instrucción @code{\tocItem}, que se puede usar en el nivel más alto de
la jerarquía del código, o dentro de una expresión musical.

@verbatim
\markuplist \table-of-contents
\pageBreak

\tocItem \markup "Primera partitura"
\score {
  {
    c'4  % ...
    \tocItem \markup "Un punto concreto dentro de la primera partitura"
    d'4  % ...
  }
}

\tocItem \markup "Segunda partitura"
\score {
  {
    e'4 % ...
  }
}
@end verbatim

Los elementos de marcado que se usan para dar formato al índice
general se encuentran definidos dentro del bloque @code{\paper}.  Los
elementos predeterminados son @code{tocTitleMarkup}, para dar formato
al título de la tabla, y @code{tocItemMarkup}, para aplicar formato a
los elementos del índice, que consisten en el título del elemento y el
número de página.  Estas variables se pueden cambiar por parte del
usuario:

@verbatim
\paper {
  %% Traducir el título del índice al español:
  tocTitleMarkup = \markup \huge \column {
    \fill-line { \null "Índice general" \null }
    \hspace #1
  }
  %% usar una fuente mayor
  tocItemMarkup = \markup \large \fill-line {
    \fromproperty #'toc:text \fromproperty #'toc:page
  }
}
@end verbatim

Observe la forma en que nos referimos al texto y al número de página
del elemento de índice, dentro de la definición @code{tocItemMarkup}.

También se pueden definir nuevas instrucciones y elementos de
marcado para crear índices generales más elaborados:
@itemize
@item en primer lugar, defina una variable de marcado nueva dentro del bloque @code{\paper}
@item luego defina una función de música cuyo propósito es añadir un elemento al índice general
utilizando esta variable de marcado del bloque @code{\paper}.
@end itemize

En el ejemplo siguiente se define un estilo nuevo para introducir los
nombres de los actos de una ópera en el índice general:

@verbatim
\paper {
  tocActMarkup = \markup \large \column {
    \hspace #1
    \fill-line { \null \italic \fromproperty #'toc:text \null }
    \hspace #1
  }
}

tocAct =
#(define-music-function (parser location text) (markup?)
   (add-toc-item! 'tocActMarkup text))
@end verbatim

@lilypond[line-width=10.0\cm]
\header { tagline = ##f }
\paper {
  tocActMarkup = \markup \large \column {
    \hspace #1
    \fill-line { \null \italic \fromproperty #'toc:text \null }
    \hspace #1
  }
}

tocAct =
#(define-music-function (parser location text) (markup?)
   (add-toc-item! 'tocActMarkup text))

\book {
  \markuplist \table-of-contents
  \tocAct \markup { Atto Primo }
  \tocItem \markup { Coro. Viva il nostro Alcide }
  \tocItem \markup { Cesare. Presti omai l'Egizzia terra }
  \tocAct \markup { Atto Secondo }
  \tocItem \markup { Sinfonia }
  \tocItem \markup { Cleopatra. V'adoro, pupille, saette d'Amore }
  \markup \null
}
@end lilypond

Se pueden añadir puntos de relleno entre un elemento y su número de página:

@lilypond[verbatim,line-width=10.0\cm]
\header { tagline = ##f }
\paper {
  tocItemMarkup = \tocItemWithDotsMarkup
}

\book {
  \markuplist \table-of-contents
  \tocItem \markup { Allegro }
  \tocItem \markup { Largo }
  \markup \null
}
@end lilypond

@seealso
Archivos de inicio:
@file{ly/toc-init.ly}.

@predefined
@funindex \table-of-contents
@code{\table-of-contents},
@funindex \tocItem
@code{\tocItem}.
@endpredefined


@node Trabajar sobre los archivos de entrada
@section Trabajar sobre los archivos de entrada
@translationof Working with input files

@menu
* Inclusión de archivos de LilyPond::
* Distintas ediciones a partir de una misma fuente::
* Caracteres especiales::
@end menu


@node Inclusión de archivos de LilyPond
@subsection Inclusión de archivos de LilyPond
@translationof Including LilyPond files

@funindex \include
@cindex including files

Un proyecto grande se puede dividir en varios archivos.  Para
referirse a otro archivo, utilice

@example
\include "otroarchivo.ly"
@end example

La línea @code{\include "otroarchivo.ly"} equivale a pegar todo el
contenido de @file{otroarchivo.ly} en el archivo actual en el lugar en
que aparece el @code{\include}.  Por ejemplo, en un proyecto grande
podríamos querer archivos distintos para cada parte instrumental y
crear un archivo de @qq{partitura completa} que reúne los archivos
individuales de los instrumentos.  Normalmente el archivo incluido
define un cierto número de variables que a partir de entonces quedan
disponibles para poderlas utilizar en el archivo de la partitura
completa.  En los archivos incluidos se pueden marcar las secciones
etiquetadas para ayudar a hacerlas utilizables en distintos lugares de
la partitura, véase @ref{Distintas ediciones a partir de una misma fuente}.

Los archivos que están en el directorio de trabajo actual se pueden
referenciar simplemente especificando el nombre después de la
instrucción @code{\include}.  Los archivos en otros lugares se pueden
incluir proporcionando una referencia de ruta completa o una ruta
relativa (pero utilice la barra inclinada normal del UNIX, /, no la
barra invertida de DOS/Windows, \, como separador de directorio).  Por
ejemplo, si @file{material.ly} está situado un directorio por encima
del directorio de trabajo actual, utilice

@example
\include "../material.ly"
@end example

@noindent
o si los archivos de las partes orquestales incluidas están todos
situados en un subdirectorio llamado @file{partes} dentro del
directorio actual, use

@example
\include "partes/VI.ly"
\include "partes/VII.ly"
@dots{} etc.
@end example

Los archivos de inclusión también pueden contener enunciados
@code{\include} a su vez.  De forma predeterminada, estos enunciados
@code{\include} de segundo nivel no se interpretan hasta que se
incorporan al archivo principal, por lo que los nombres de archivo que
especifican deben ser relativos al directorio que contiene el archivo
principal, no al directorio que contiene el archivo incluido.  Sin
embargo, este comportamiento se puede modificar globalmente pasando la
opción @option{-drelative-includes} en la línea de órdenes (o mediante
la adición de @code{#(ly:set-option 'relative-includes #t)} al
principio del archivo principal de entrada).

Cuando @code{relative-includes} está establecido al valor @code{#t},
la ruta de cada instrucción @code{\include} se considera relativa al
archivo que contiene dicha instrucción.  Este comportamiento es el
recomendado y se convertirá en el comportamiento predeterminado en una
versión futura de lilypond.

Tanto los archivos relativos al directorio principal como los archivos
relativos a algún otro directorio se pueden @code{\include}ar mediante
el establecimiento de @code{relative-includes} al valor @code{#t} o a
@code{#f} en los lugares apropiados dentro de los archivos.  Por
ejemplo, si se ha creado una biblioteca genérica, libA, que a su vez
utiliza sub-archivos que se @code{\include}an por medio del archivo de
entrada de dicha biblioteca, esas instrucciones @code{\include}
tendrán que venir precedidas por @code{#(ly:set-option
#relative-includes #t)} de manera que se interpreten correctamente al
construir el archivo de entrada @code{.ly} principal, de esta forma:

@example
libA/
  libA.ly
  A1.ly
  A2.ly
  @dots{}
@end example

@noindent
entonces el archivo de entrada, @code{libA.ly}, contiene

@example
#(ly:set-option 'relative-includes #t)
\include "A1.ly"
\include "A2.ly"
@dots{}
% vuelta al ajuste predeterminado
#(ly:set-option 'relative-includes #f)
@end example

Cualquier archivo @file{.ly} puede entonces incluir la biblioteca
completa, simplemente con

@example
\include "~/libA/libA.ly"
@end example

Se pueden usar estructuras de archivo más complejas instando los
cambios en los lugares adecuados.

También se pueden incluir archivos de un directorio que está en una
ruta de búsqueda especificada como opción al invocar a LilyPond desde
la línea de órdenes.  Los archivos incluidos se especifican usando
solamente su nombre de archivo.  Por ejemplo, para compilar mediante
este método un archivo @file{principal.ly} que incluye archivos
situados en un subdirectorio llamado @file{partes}, cambie al
directorio que contiene @file{principal.ly} e introduzca

@example
lilypond --include=partes principal.ly
@end example

y en @file{principal.ly} escriba

@example
\include "VI.ly"
\include "VII.ly"
@dots{} etc.
@end example

Los archivos que se incluyen en muchas partituras se pueden poner en
el directorio de LilyPond @file{../ly} (la localización de este
directorio depende de la instalación: véase
@rlearning{Otras fuentes de información}).  Estos archivos se pueden
incluir sencillamente por su nombre en un enunciado @code{\include}.
De esta forma se incluyen los archivos dependientes del idioma como
@file{espanol.ly}.

LilyPond incluye de forma predeterminada ciertos archivos cuando se
inicia el programa.  Estas inclusiones no son visibles para el
usuario, pero los archivos se pueden identificar ejecutando
@code{lilypond --verbose} desde la línea de órdenes.  Esto presentará
una lista de rutas y archivos que utiliza LilyPond, junto a muchas
otras indicaciones.  De forma alternativa, pueden verse explicaciones
sobre los archivos más importantes de este conjunto en
@rlearning{Otras fuentes de información}.  Estos archivos se pueden
editar, pero los cambios realizados sobre ellos se perderán al
instalar una nueva versión de LilyPond.

Pueden verse ejemplos sencillos sobre el uso de @code{\include} en
@rlearning{Partituras y particellas}.

@seealso
Manual de aprendizaje:
@rlearning{Otras fuentes de información},
@rlearning{Partituras y particellas}.

@knownissues
Si un archivo incluido recibe un nombre igual al de uno de los
archivos de instalación de LilyPond, el archivo que tiene prioridad es
el de los archivos de instalación de LilyPond.


@node Distintas ediciones a partir de una misma fuente
@subsection Distintas ediciones a partir de una misma fuente
@translationof Different editions from one source

Se pueden usar varios métodos para generar la producción de distintas
versiones de una partitura a partir de la misma fuente musical.  Las
variables son quizá el más útil para combinar secciones extensas de
música y/o anotaciones.  Las etiquetas son más útiles para seleccionar
una sección de entre varias secciones de música alternativas, más
cortas, y se pueden usar también para dividir piezas de música en
distintos trozos.

Cualquiera que sea el método utilizado, la separación de la notación
de la estructura de la partitura hará que sea más fácil cambiar la
estructura dejando intacta la notación.

@menu
* Uso de las variables::
* Uso de etiquetas::
* Uso de ajustes globales::
@end menu

@node Uso de las variables
@unnumberedsubsubsec Uso de las variables
@translationof Using variables

@cindex variables, uso de las

Si las secciones de la música se definen dentro de variables, se
pueden reutilizar en distintas partes de la partitura, véase
@rlearning{Organizar las piezas mediante variables}.  Por ejemplo, una
partitura vocal @notation{a cappella} con frecuencia incluye una
reducción de piano de las partes para ensayar que es idéntica a la
música vocal, por lo que ésta sólo se tiene que escribir una vez.  Se
puede combinar sobre un solo pentagrama la música de dos variables,
véase @ref{Combinación automática de las partes}.  He aquí un ejemplo:

@lilypond[verbatim,quote]
sopranoMusic = \relative c'' { a4 b c b8( a) }
altoMusic = \relative g' { e4 e e f }
tenorMusic = \relative c' { c4 b e d8( c) }
bassMusic = \relative c' { a4 gis a d, }
allLyrics = \lyricmode {King of glo -- ry }
<<
  \new Staff = "Soprano" \sopranoMusic
  \new Lyrics \allLyrics
  \new Staff = "Alto" \altoMusic
  \new Lyrics \allLyrics
  \new Staff = "Tenor" {
    \clef "treble_8"
    \tenorMusic
  }
  \new Lyrics \allLyrics
  \new Staff = "Bass" {
    \clef "bass"
    \bassMusic
  }
  \new Lyrics \allLyrics
  \new PianoStaff <<
    \new Staff = "RH" {
      \set Staff.printPartCombineTexts = ##f
      \partcombine
      \sopranoMusic
      \altoMusic
    }
    \new Staff = "LH" {
      \set Staff.printPartCombineTexts = ##f
      \clef "bass"
      \partcombine
      \tenorMusic
      \bassMusic
    }
  >>
>>
@end lilypond

Se pueden producir partituras distintas que presenten sólo las partes
vocales o sólo la parte de piano, cambiando solamente los enunciados
estructurales, sin modificar la notación musical.

Para partituras extensas, las definiciones de variable se pueden poner
en archivos separados que se incluyen más tarde, véase @ref{Inclusión de archivos de LilyPond}.


@node Uso de etiquetas
@unnumberedsubsubsec Uso de etiquetas
@translationof Using tags

@funindex \tag
@funindex \keepWithTag
@funindex \removeWithTag
@funindex \pushToTag
@funindex \appendToTag
@cindex etiqueta
@cindex mantener música etiquetada
@cindex quitar música etiquetada
@cindex división en música etiquetada

La instrucción @code{\tag #'@var{parteA}} marca una expresión musical
con el nombre @var{parteA}.  Las expresiones etiquetadas de esta
manera se pueden seleccionar o filtrar más tarde por su nombre, usando
bien @code{\keepWithTag #'@var{nombre}} o bien @code{\removeWithTag
#'@var{nombre}}.  El resultado de la aplicación de estos filtros a la
música etiquetada es como sigue:

@multitable @columnfractions .5 .5
@headitem Filtro
  @tab Resultado
@item
Música etiquetada precedida de @code{\keepWithTag #'@var{nombre}}
o de @code{\keepWithTag #'(@var{nombre1} @var{nombre2}@dots{})}
@tab Se incluye la música no etiquetada y la música etiquetada con
el nombre o nombres de etiqueta dados; se excluye la música
etiquetada con cualquier otro nombre de etiqueta.
@item
Música etiquetada precedida de 
@code{\removeWithTag #'@var{nombre}} o 
@code{\removeWithTag #'(@var{nombre1} @var{nombre2}@dots{})}
@tab
Se incluye la música no etiquetada y la música que no está
etiquetada con ninguno de los nombres de etiqueta dados; se
excluye la música etiquetada con los nombres de etiqueta dados.
@item
Música etiquetada no precedida de @code{\keepWithTag} ni de
@code{\removeWithTag}
@tab Se incluye toda la música etiquetada y no etiquetada.
@end multitable

Los argumentos de las instrucciones @code{\tag}, @code{\keepWithTag} y
@code{\removeWithTag} deben ser un símbolo (como @code{#'partitura} o
@code{#'parte}), seguido de una expresión musical.

En el ejemplo siguiente vemos dos versiones de una pieza musical, una
que muestra trinos con la notación usual y otra con los trinos
expandidos explícitamente:

@lilypond[verbatim,quote]
music = \relative g' {
  g8. c32 d
  \tag #'trills { d8.\trill }
  \tag #'expand { \repeat unfold 3 { e32 d } }
  c32 d
 }

\score {
  \keepWithTag #'trills \music
}
\score {
  \keepWithTag #'expand \music
}
@end lilypond

@noindent
De forma alternativa, a veces es más fácil excluir secciones de música:

@lilypond[verbatim,quote]
music = \relative g' {
  g8. c32 d
  \tag #'trills { d8.\trill }
  \tag #'expand {\repeat unfold 3 { e32 d } }
  c32 d
 }

\score {
  \removeWithTag #'expand
  \music
}
\score {
  \removeWithTag #'trills
  \music
}
@end lilypond

El filtrado con etiquetas se puede aplicar a articulaciones, textos,
etc. anteponiendo

@example
-\tag #'@var{mi-etiqueta}
@end example

a una articulación.  Por ejemplo, esto define una nota con una
indicación opcional de digitación y una nota con una anotación
condicional:

@example
c1-\tag #'finger ^4
c1-\tag #'warn ^"¡Ojo!"
@end example

Se pueden poner varias etiquetas sobre expresiones con varias entradas
de @code{\tag}, o combinando varias etiquetas en una lista de símbolos:

@lilypond[quote,verbatim]
music = \relative c'' {
  \tag #'a \tag #'both { a4 a a a }
  \tag #'(b both) { b4 b b b }
}
<<
\keepWithTag #'a \music
\keepWithTag #'b \music
\keepWithTag #'both \music
>>
@end lilypond

Se pueden aplicar varios filtros @code{\removeWithTag} a una sola
expresión musical para quitar varias secciones etiquetadas con
nombres distintos.  De forma alternativa, podemos usar una sola
instrucción @code{\removeWithTag} con una lista de etiquetas.

@lilypond[verbatim,quote]
music = \relative c'' {
  \tag #'A { a4 a a a }
  \tag #'B { b4 b b b }
  \tag #'C { c4 c c c }
  \tag #'D { d4 d d d }
}
\new Voice {
  \removeWithTag #'B
  \removeWithTag #'C
  \music
  \removeWithTag #'(B C)
  \music
}
@end lilypond

Dos o más filtros @code{\keepWithTag} aplicados a una sola
expresión musical producen la eliminación de @emph{todas} las
secciones etiquetadas, porque el primer filtro quita todas las
secciones etiquetadas excepto la que se nombra, y el segundo
filtro elimina incluso esa sección etiquetada.  Por lo general,
querrá usar una sola instrucción @code{\keepWithTag} con una lista
de varias etiquetas: de esta forma solamente se suprimirán las
secciones etiquetadas que no aparezcan en @emph{ninguna} de las
etiquetas.

A veces podemos desear dividir la música en un determinado lugar
dentro de una expresión musical existente.  Podemos usar
@code{\pushToTag} y @code{\appendToTag} para añadir material
delante o al final de los @code{elements} de una construcción
musical existente.  No toda construcción musical tiene la parte
@code{elements}, pero las músicas secuenciaes y simultáneas son
dos apuestas seguras:

@lilypond[verbatim,quote]
test = { \tag #'here { \tag #'here <<c''>> } }

{
  \pushToTag #'here c'
  \pushToTag #'here e'
  \pushToTag #'here g' \test
  \appendToTag #'here c'
  \appendToTag #'here e'
  \appendToTag #'here g' \test
}
@end lilypond

Las dos instrucciones admiten una etiqueta, el material que dividir en
cada ocurrencia de la etiqueta, y la expresión etiquetada.  Las
instrucciones aseguran que se copia todo lo que cambian, de forma que
el código original @code{\test} retiene su significado.

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

Referencia de la notación:
@ref{Combinación automática de las partes},
@ref{Inclusión de archivos de LilyPond}.

@knownissues
Al llamar a @code{\relative} sobre una expresión musical obtenida
mediante el filtrado de música con las instrucciones
@code{\keepWithTag} o @code{\removeWithTag}, podría ocurrir que
cambiaran las relaciones de octava, dado que solo se tendrán en
cuenta las alturas de las notas que efectivamente permanecen en la
expresión filtrada.  La aplicación de @code{\relative} en primer
lugar, antes de @code{\keepWithTag} o de @code{\removeWithTag},
evita este peligro porque en este caso @code{\relative} actúa
sobre todas las notas tal y como se introducen.


@node Uso de ajustes globales
@unnumberedsubsubsec Uso de ajustes globales
@translationof Using global settings

@cindex include-settings

Se pueden incluir ajustes globales a partir de un archivo distinto:

@example
lilypond -dinclude-settings=MIS_AJUSTES.ly MI_PARTITURA.ly
@end example

En archivos diferentes se pueden almacenar  grupos de ajustes como
el tamaño de la página o las fuentes tipográficas.  Ello permite
hacer diferentes ediciones de la mism a partitura así como aplicar
ajustes estándar a muchas partituras, simplemente por medio de la
especificación del archivo de ajustes adecuado.

Esta técnica también funciona bien con el uso de hojas de estilo,
como se estudia en @rlearning{Hojas de estilo}.

@seealso
Manual de aprendizaje:
@rlearning{Organizar las piezas mediante variables},
@rlearning{Hojas de estilo}.

Referencia de la notación:
@ref{Inclusión de archivos de LilyPond}.


@node Caracteres especiales
@subsection Caracteres especiales
@translationof Special characters

@cindex caracteres especiales
@cindex caracteres no ASCII

@menu
* Codificación del texto::
* Unicode::
* Alias de ASCII::
@end menu


@node Codificación del texto
@unnumberedsubsubsec Codificación del texto
@translationof Text encoding

@cindex UTF-8

LilyPond usa el conjunto de caracteres definido por el consorcio
Unicode y la norma ISO/IEC 10646.  Define un nombre único y un código
para los conjuntos de caracteres que se utilizan en prácticamente
todos los idiomas modernos y también en muchos otros.  Unicode se
puede implementar utilizando varios esquemas de codificación
distintos.  LilyPond usa la codificación UTF-8 (UTF son las siglas de
@emph{Unicode Transformation Format}, o formato de transformación de
Unicode) que representa todos los caracteres comunes de Latin en un
solo byte, y representa otros caracteres usando un formato de longitud
variable de hasta cuatro bytes.

El aspecto visual real de los caracteres viene determinado por los
glifos que se definen en las fuentes tipográficas concretas que se
tengan disponibles: una fuente tipográfica define la asignación de un
subconjunto de los códigos de Unicode a glifos.  LilyPond usa la
biblioteca Pango para representar y disponer tipográficamente textos
multilingües.

LilyPond no realiza ninguna conversión en la codificación de la
entrada.  Esto significa que cualquier text, ya sea el título, la
letra de la canción o una instrucción musical que contenga caracteres
distintos a los del conjunto ASCII, se deben codificar en UTF-8.  La
forma más fácil de escribir dicho texto es utilizar un editor
preparado para Unicode y guardar el archivo con la codificación UTF-8.
Casi todos los editores modernos populares contemplan el UTF-8, por
ejemplo lo hacen vim, Emacs, jEdit, y GEdit.  Todos los sistemas MS
Windows posteriores a NT usan Unicode como codificación de caracteres
nativa, de manera que incluso el accesorio Bloc de Notas (Notepad)
puede editar y guardar un archivo en el formato UTF-8.  Una
alternativa más funcional para Windows es BabelPad.

Si un archivo de entrada que contiene un carácter que no es ASCII, no
se guarda en el formato UTF-8, se genera el mensaje de error

@example
FT_Get_Glyph_Name () error: argumento inválido
@end example

He aquí un ejemplo que muestra texto cirílico, hebreo y portugués:

@lilypond[quote]
%c No verbatim here as the code does not display correctly in PDF
% Cyrillic
bulgarian = \lyricmode {
  Жълтата дюля беше щастлива, че пухът, който цъфна, замръзна като гьон.
}

% Hebrew
hebrew = \lyricmode {
  זה כיף סתם לשמוע איך תנצח קרפד עץ טוב בגן.
}

% Portuguese
portuguese = \lyricmode {
  à vo -- cê uma can -- ção legal
}

\relative c' {
  c2 d e f g f e
}
\addlyrics { \bulgarian }
\addlyrics { \hebrew }
\addlyrics { \portuguese }
@end lilypond


@node Unicode
@unnumberedsubsubsec Unicode
@translationof Unicode

@cindex Unicode

Para introducir un carácter aislado para el que se conoce el punto de
código Unicode pero no está disponible en el editor que se está
usando, use @code{\char ##xhhhh} o bien @code{\char #dddd} dentro de
un bloque @code{\markup}, donde @code{hhhh} es el código hexadecimal
del carácter en cuestión y @code{dddd} es su valor decimal
correspondiente.  Pueden omitirse los ceros iniciales, pero es
costumbre indicar los cuatro caracteres en la representación
hexadecimal (observe que @emph{no} debe utilizarse la codificación
UTF-8 del punto de código Unicode después de @code{\char}, pues la
codificación UTF-8 contiene bits adicionales que indican el número de
octetos).  Hay tablas de códigos Unicode y un índice de nombres de
caracteres que da el punto de código en hexadecimal para cualquier
carácter en el portal del Consorcio Unicode,
@uref{http://www.unicode.org/}.

Por ejemplo, tanto @code{\char ##x03BE} como @code{\char #958}
insertan el carácter Unicode U+03BE, que tiene el nombre Unicode
@qq{Letra griega Xi pequeña}.

Se puede escribir de esta forma cualquier punto de código Unicode, y
si todos los caracteres especiales se escriben en este formato no es
necesario guardar el archivo de entrada en formato UTF-8.  Por
supuesto, debe estar instalada y estar disponible para LilyPond una
fuente tipográfica que contenga codificados todos estos caracteres.

El ejemplo siguiente muestra valores hexadecimales Unicode que se usan
en cuatro lugares: en una llamada de ensayo, como texto de
articulación, en la letra y como texto independiente bajo la
partitura:

@lilypond[quote,verbatim]
\score {
  \relative c'' {
    c1 \mark \markup { \char ##x03EE }
    c1_\markup { \tiny { \char ##x03B1 " to " \char ##x03C9 } }
  }
  \addlyrics { O \markup { \concat { Ph \char ##x0153 be! } } }
}
\markup { "Copyright 2008--2012" \char ##x00A9 }
@end lilypond

@cindex copyright, símbolo de

Para escribir el símbolo de copyright en la nota de créditos, utilice:

@example
\header @{
  copyright = \markup @{ \char ##x00A9 "2008" @}
@}
@end example


@node Alias de ASCII
@unnumberedsubsubsec Alias de ASCII
@translationof ASCII aliases

Se puede incluir una lista de alias de ASCII para caracteres
especiales:

@lilypond[quote,verbatim]
\paper {
  #(include-special-characters)
}

\markup "&flqq; &ndash; &OE;uvre incomplète&hellip; &frqq;"

\score {
  \new Staff { \repeat unfold 9 a'4 }
  \addlyrics {
    This is al -- so wor -- kin'~in ly -- rics: &ndash;_&OE;&hellip;
  }
}

\markup \column {
  "The replacement can be disabled:"
  "&ndash; &OE; &hellip;"
  \override #'(replacement-alist . ()) "&ndash; &OE; &hellip;"
}
@end lilypond

También podemos hacer nuestros propios alias, ya sea de forma global:

@lilypond[quote,verbatim]
\paper {
  #(add-text-replacements!
    '(("100" . "hundred")
      ("dpi" . "dots per inch")))
}
\markup "A 100 dpi."
@end lilypond

o local:

@lilypond[quote,verbatim]
\markup \replace #'(("100" . "hundred")
                    ("dpi" . "dots per inch")) "A 100 dpi."
@end lilypond

@seealso
Referencia de la notación:
@ref{Lista de caracteres especiales}.

Archivos instalados:
@file{ly/text-replacements.ly}.


@node Controlar la salida
@section Controlar la salida
@translationof Controlling output

@menu
* Extracción de fragmentos de música::
* Saltar la música corregida::
* Formatos de salida alternativos::
* Sustituir la tipografía de la notación::
@end menu


@node Extracción de fragmentos de música
@subsection Extracción de fragmentos de música
@translationof Extracting fragments of music

Es posible citar pequeños fragmentos de una partitura grande
directamente a partir de la salida.  Puede compararse con la
separación de una pieza de una partitura, recortándola con tijeras.

Esto se hace definiendo los compases que se deben recortar.  Por
ejemplo, la inclusión de la siguiente definición

@verbatim
\layout {
  clip-regions
  = #(list
      (cons
       (make-rhythmic-location 5 1 2)
       (make-rhythmic-location 7 3 4)))
}
@end verbatim

@noindent
extrae un fragmento empezando por la mitad del quinto compás y
finalizando en el séptimo compás.  El significado de @code{5 1 2} es:
después de una blanca (1/2) en el compás 5, y el de @code{7 3 4}
después de tres negras del compás 7.

Se pueden definir más zonas de recorte añadiendo más parejas de
definición de tiempo rhythmic-location a la lista.

Para poder utilizar esta funcionalidad, LilyPond se debe invocar con
la opción @option{-dclip-systems}.  Los recortes aparecen en la salida
como archivos EPS, y se convierten en PDF y PNG si estos formatos
también están activados.

Para ver más información sobre los formatos de salida, consulte
@rprogram{Invocar a LilyPond}.


@node Saltar la música corregida
@subsection Saltar la música corregida
@translationof Skipping corrected music

@funindex skipTypesetting
@funindex showFirstLength
@funindex showLastLength

Al escribir o copiar música, normalmente sólo es interesante de ver y
corregir la música cercana al final (donde estamos añadiendo las
notas).  Para acelerar este proceso de corrección, es posible saltar
la composición tipográfica de todos excepto unos pocos de los últimos
compases.  Esto se consigue poniendo

@example
showLastLength = R1*5
\score @{ @dots{} @}
@end example

@noindent
en nuestro archivo fuente.  Esto hará que se tracen sólo los últimos
cinco compases (suponiendo un compás de 4/4) de cada una de las
partituras @code{\score} del archivo de entrada.  Para piezas largas,
el tipografiado de únicamente una parte pequeña es con frecuencia un
orden de magnitud más rápido que el de la obra completa.  Si estamos
trabajando sobre el principio de una partitura que ya hemos
tipografiado (p.ej., para añadir una parte instrumental nueva),
también puede ser útil la propiedad @code{showFirstLength}.

Este mecanismo de pasar por alto partes de un partitura se puede
controlar con un grano más fino mediante la propiedad
@code{Score.skipTypesetting}.  Cuando su valor está establecido, no se
lleva a cabo ningún tipografiado en absoluto.

Esta propiedad se usa también para controlar la salida al archivo
MIDI.  Observe que pasa por alto todos los eventos, incluidos el tempo
y los cambios de instrumento.  Está usted advertido.

@lilypond[quote,relative=2,ragged-right,verbatim]
c8 d
\set Score.skipTypesetting = ##t
e8 e e e e e e e
\set Score.skipTypesetting = ##f
c8 d b bes a g c2
@end lilypond

En música polifónica, @code{Score.skipTypesetting} afecta a todas las
voces y pentagramas, ahorrando más tiempo incluso.


@node Formatos de salida alternativos
@subsection Formatos de salida alternativos
@translationof Alternative output formats

@cindex salida de gráficos de vector escalables
@cindex SVG, salida
@cindex salida de PostScript encapsulado
@cindex EPS, salida
@cindex PostScript encapsulado, salida de

Los formatos de salida predeterminados para la partitura impresa son
el formato de documento portátil (PDF) y PostScript (PS).  Los
formatos de salida Gráficos de vector escalables (SVG), PostScript
encapsulado (EPS) y Gráficos de red portátiles (PNG) también están
disponibles a través de opciones de la línea de órdenes, véase
@rprogram{Opciones básicas de la línea de órdenes para LilyPond}.


@node Sustituir la tipografía de la notación
@subsection Sustituir la tipografía de la notación
@translationof Replacing the notation font

Gonville es una alternativa a la tipografía Feta que se utiliza en
LilyPond y se puede descargar de:
@example
@uref{http://www.chiark.greenend.org.uk/~sgtatham/gonville/ ,http://www.chiark.greenend.org.uk/~sgtatham/gonville/}
@end example

Aquí presentamos algunos compases de muestra tipografiados con la
fuente Gonville:

@c NOTE: these images are a bit big, but that's important
@c       for the font comparison.  -gp
@sourceimage{Gonville_after,15cm,,}

Aquí hay unos compases de muestra tipografiados en la fuente Feta de
LilyPond:

@sourceimage{Gonville_before,15cm,,}

@subsubheading Instrucciones de instalación para MacOS

Descargue y extraiga el archivo zip. Copie la carpeta @code{lilyfonts}
a @file{@var{SHARE_DIR}/lilypond/current}; para más información,
consulte @rlearning{Otras fuentes de información}.  Renombre la carpeta
@code{fonts} existente a @code{fonts_orig} y la carpeta
@code{lilyfonts} a @code{fonts}.  Para volver a la fuente Feta,
invierta el proceso.

@seealso
Manual de aprendizaje:
@rlearning{Otras fuentes de información}.

@knownissues

Gonville no se puede usar para tipografiar notación de @q{Música
Antigua} y es probable que cualquier nuevo glifo en versiones
posteriores de LilyPond no existan en la familia
tipográfica Gonville.  Diríjase a la página web del autor para obtener más
información sobre éste y otros asuntos, entre ellos el régimen de
licencias de Gonville.


@node Salida MIDI
@section Salida MIDI
@translationof MIDI output

@cindex sonido
@cindex MIDI

El MIDI (Musical Instrument Digital Interface, Interfase Digital para
Instrumentos Musicales) es un estándar para interconectar y controlar
instrumentos musicales electrónicos.  Un archivo o secuencia MIDI es
una serie de notas dentro de un conjunto de pistas.  No es un archivo
de sonidos reales; se necesita un programa reproductor especial para
traducir la serie de notas en sonidos de verdad.

Cualquier música se puede convertir a archivos MIDI, de manera que
podamos escuchar lo que hayamos introducido.  Esto es muy conveniente
para comprobar la corrección de la música; las octavas equivocadas o
las alteraciones erróneas se ponen de relieve muy claramente al
escuchar la salida MIDI.

La salida estándar de MIDI es un poco primitiva; de forma opcional, se
encuentra disponible una salida MIDI mejorada y mucho más realista,
por medio de @ref{El script Articulate}.

La salida MIDI reserva un canal por cada pentagrama, y reserva
el canal 10 para la percusión.  Sólo hay 16 canales MIDI por cada
dispositivo, por lo que si la partitura tiene más de 15 pautas, los
canales MIDI se reutilizarán.

@menu
* Crear archivos MIDI::
* Instrumentos MIDI::
* ¿Qué sale por el MIDI?::
* Repeticiones y MIDI::
* Control de los matices en el MIDI::
* Percusión en MIDI::
* El script Articulate::
@end menu

@node Crear archivos MIDI
@subsection Crear archivos MIDI
@translationof Creating MIDI files

@cindex MIDI, bloque
Para crear un MIDI a partir de un archivo de LilyPond, inserte un
bloque @code{\midi} dentro de un bloque @code{\score};

@example
\score @{
  @var{@dots{}música@dots{}}
  \layout @{ @}
  \midi @{ @}
@}
@end example

Si hay @emph{solamente} un bloque @code{\midi} dentro de un
@code{\score} (es decir, sin ningún bloque @code{\layout}),
entonces @emph{solamente} se producirá MIDI.  No se produce
ninguna salida impresa de notación musical.

@example
\score @{
  @var{@dots{}música@dots{}}
  \midi @{ @}
@}
@end example

Se traducen correctamente a la salida MIDI la altura y duración de
las notas, las ligaduras de unión, matices y cambios de tempo. Las
@q{marcas} dinámicas se traducen a niveles de volumen con una
@q{fracción fija} del rango de volumen MIDI disponible; Los
crescendi y decrescendi hacen que el volumen varíe linealmente
entre sus dos extremos.

Se reflejan en la salida de MIDI todas las indicaciones de
@code{\tempo}, incluidos todos los cambios de tempo siguientes,
especificados dentro de la notación musical.

Por lo general basta con dejar vacío el bloque @code{\midi}, pero
puede contener disposiciones distintas de los contextos,
definiciones de contexto nuevas o código que establezca valores
para propiedades.  En el ejemplo que aparece a continuación se
fija el tempo a 72 negras por minuto, pero @emph{solamente} para
la reproducción de audio a través de MIDI.

@example
\score @{
  @var{@dots{}music@dots{}}
  \midi @{
    \tempo 4 = 72
  @}
@}
@end example

Observe que @code{\tempo} es en realidad una instrucción para
establecer valores para propiedades durante la interpretación de
la música, y en el contexto de las definiciones de salida, como un
bloque @code{\midi}, se reinterpreta como si fuese una
modificación de contexto.

@cindex MIDI, definiciones de contexto

Las definiciones de contexto siguen la misma sintaxis que las de
un bloque @code{\layout};

@example
\score @{
  @var{@dots{}música@dots{}}
  \midi @{
    \context @{
      \Voice
      \remove "Dynamic_performer"
    @}
  @}
@}
@end example

elimina de la salida MIDI el efecto de los matices dinámicos.  Los
módulos de traducción para el sonido se llaman @q{performers}
(intérpretes).

@snippets

@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
{changing-midi-output-to-one-channel-per-voice.ly}

@knownissues

Algunos sistemas operativos requieren una extensión de archivo
@emph{específica} para los archivos MIDI.  Si se prefiere una
extensión distinta, inserte la línea siguiente en el nivel
superior del archivo de entrada, antes del comienzo de cualquier
bloque @code{\book}, @code{\bookpart} o @code{\score};

@example
#(ly:set-option 'midi-extension "mid")
@end example

De esta manera quedará establecida la extensión predeterminada
para los archivos MIDI a @code{.mid}.

De forma alternativa, se puede proporcionar una opción en la línea
de órdenes de la consola:

@example
lilypond -dmidi-extension=mid MiArchivo.ly
@end example

Los cambios del volumen MIDI sólo tienen lugar al principio de la
nota, por lo que los crescendi y decrescendi no pueden afectar al
volumen de una sola nota.

Puede que algunos propgramas reproductores de MIDI no siempre
manejen correctamente los cambios de tempo en la salida MIDI.

@seealso
Archivos instalados:
@file{../ly/performer-init.ly}.

Manual de aprendizaje:
@rlearning{Otras fuentes de información}.


@node Instrumentos MIDI
@subsection Instrumentos MIDI
@translationof MIDI Instruments

@cindex instrumento, nombres de
@funindex Staff.midiInstrument

El instrumento MIDI que se quiere utilizar se establece fijando la
propiedad @code{Staff.midiInstrument} al nombre del instrumento.
El nombre se debe elegir de entre los que están en la lista que
aparece en @ref{instrumentos MIDI}.

@example
\new Staff @{
  \set Staff.midiInstrument = #"glockenspiel"
  @var{@dots{}notas@dots{}}
@}
@end example

@example
\new Staff \with @{midiInstrument = #"cello"@} @{
  @var{@dots{}notas@dots{}}
@}
@end example

Si el instrumento elegido no coincide exactamente con uno de los
instrumentos de la lista de instrumentos MIDI, se usará el
instrumento Piano de Cola (@code{"acoustic grand"}).


@node ¿Qué sale por el MIDI?
@subsection ¿Qué sale por el MIDI?
@translationof What goes into the MIDI output?

@menu
* Contemplado en el MIDI::
* No contemplado en el MIDI::
@end menu

@node Contemplado en el MIDI
@unnumberedsubsubsec Contemplado en el MIDI
@translationof Supported in MIDI

@cindex alturas en MIDI
@cindex MIDI, alturas
@cindex cuartos de tono en MIDI
@cindex MIDI, cuartos de tono
@cindex microtonos en MIDI
@cindex MIDI, microtonos
@cindex acordes, nombres de, en MIDI
@cindex MIDI, nombres de
@cindex duraciones en MIDI
@cindex MIDI, duraciones
@cindex Articlulate, scripts
@cindex MIDI, articulaciones
@cindex articulaciones en MIDI
@cindex trinos en MIDI
@cindex grupetos en MIDI
@cindex rallentando en MIDI
@cindex accelerando en MIDI
@c TODO etc

Los siguientes elementos de notación se reflejan en la salida MIDI:

@itemize
@item Alturas
@item Microtonos (véase @ref{Alteraciones accidentales}. La reproducción necesita un reproductor que contemple la curvatura de tono o @emph{pitch bend}.)
@item Acordes escritos como nombres de acorde
@item Ritmos escritos como duraciones de las notas, incluidos los grupos de valoración especial
@item Trémolos escritos sin @q{@code{:}[@var{número}]}
@item Ligaduras de unión
@item Matices o indicaciones de dinámica
@item Crescendi y decrescendi sobre varias notas
@item Cambios de tempo insertados con una marca metronómica
@item Letra de las canciones
@end itemize

Utilizando @ref{El script Articulate}, a la lista anterior se añaden
una serie de elementos:

@itemize
@item Articulaciones (ligaduras de expresión, picados, etc)
@item Trinos, mordentes circulares
@item Rallentando y accelerando
@end itemize


@node No contemplado en el MIDI
@unnumberedsubsubsec No contemplado en el MIDI
@translationof Unsupported in MIDI

@c TODO index as above

Los siguientes elementos de notación no tienen ningún efecto sobre la
salida MIDI, a no ser que utilicemos @ref{El script Articulate}:

@itemize
@item Duraciones escritas como anotaciones, p.ej. el swing
@item Cambios de tempo escritos como anotaciones sin marca de tempo
@item Staccato y otras articulaciones y ornamentos
@item Ligaduras de expresión y de fraseo
@item Crescendi y decrescendi sobre una nota única
@item Trémolos introducidos con @q{@code{:}[@var{número}]}
@item Bajo cifrado
@item Acordes microtonales
@end itemize


@node Repeticiones y MIDI
@subsection Repeticiones y MIDI
@translationof Repeats in MIDI

@cindex repeticiones, expandir
@funindex \unfoldRepeats

Con un poco de trucaje, se puede hacer que cualquier tipo de
repetición esté presente en la salida MIDI.  Esto se consigue mediante
la aplicación de la función musical @code{\unfoldRepeats}.  Esta
función cambia todas las repeticiones a repeticiones desplegadas.

@lilypond[quote,verbatim]
\unfoldRepeats {
  \repeat tremolo 8 { c'32 e' }
  \repeat percent 2 { c''8 d'' }
  \repeat volta 2 { c'4 d' e' f' }
  \alternative {
    { g' a' a' g' }
    { f' e' d' c' }
  }
}
\bar "|."
@end lilypond

En partituras con varias voces, el desplegado de las repeticiones en
la salida MIDI solo se produce correctamente si @emph{todas y cada
una} de las voces incluye las repeticiones de manera completa y
explícita.

Al crear un archivo de partitura que use @code{\unfoldRepeats} para el
MIDI, es necesario hacer dos bloques @code{\score}: uno para el MIDI
(con repeticiones desplegadas) y otro para la notación impresa (con
repeticiones de volta --primera y segunda vez--, tremolo --trémolo--,
y percent --repetición de compases--).  Por ejemplo,

@example
\score @{
  @var{@dots{}música@dots{}}
  \layout @{ @dots{} @}
@}
\score @{
  \unfoldRepeats @var{@dots{}música@dots{}}
  \midi @{ @dots{} @}
@}
@end example


@node Control de los matices en el MIDI
@subsection Control de los matices en el MIDI
@translationof Controlling MIDI dynamics

La dinámica en el MIDI está implementada por medio del intérprete
Dynamic_performer que reside de forma predeterminada dentro del
contexto Voice.  Es posible controlar el volumen MIDI general, el
volumen relativo de los matices dinámicos y el volumen relativo de los
distintos instrumentos.

@menu
* Indicaciones dinámicas::
* Volumen maestro MIDI::
* Balance entre instrumentos (i)::
* Balance entre instrumentos (ii)::
@end menu

@node Indicaciones dinámicas
@unnumberedsubsubsec Indicaciones dinámicas
@translationof Dynamic marks

Los matices o indicaciones de dinámica se traducen a una fracción
fija del rango de volumen MIDI disponible.  Las fracciones
predeterminadas se extienden desde 0.25 para @notation{ppppp}
hasta 0.95 para @notation{fffff}.  El conjunto de indicaciones
dinámicas y las fracciones asociadas pueden verse en
@file{../scm/midi.scm}, véase @rlearning{Otras fuentes de
información}.  Este conjunto de fracciones se puede cambiar o
extender proporcionando una función que toma como argumento una
indicación dinámica y devuelve la fracción requerida, y
estableciendo @code{Score.dynamicAbsoluteVolumeFunction} a esta
función.

Por ejemplo, si se requiere una indicación dinámica
@notation{rinforzando}, @code{\rfz}, ésta no tiene ningún efecto
predeterminado sobre el volumen MIDI, pues no está incluida en el
conjunto predeterminado.  De igual manera, si se define una
indicación dinámica nueva con @code{make-dynamic-script}, ésta
tampoco estará incluida en el conjunto predeterminado.  El ejemplo
siguiente muestra cómo hay que añadir el volumen MIDI para estas
indicaciones dinámicas.  La función Scheme establece la fracción a
0.9 si se encuentra una indicación dinámica rfz, y en caso
contrario llama a la función predeterminada.

@lilypond[verbatim,quote]
#(define (myDynamics dynamic)
    (if (equal? dynamic "rfz")
      0.9
      (default-dynamic-absolute-volume dynamic)))

\score {
  \new Staff {
    \set Staff.midiInstrument = #"cello"
    \set Score.dynamicAbsoluteVolumeFunction = #myDynamics
    \new Voice {
      \relative c'' {
        a4\pp b c-\rfz
      }
    }
  }
  \layout {}
  \midi {}
}
@end lilypond

Como alternativa, si se necesitara redefinir la tabla completa de
fracciones, sería mejor usar el procedimiento
@notation{default-dynamic-absolute-volume} que aparece en
@file{../scm/midi.scm} y la tabla asociada como modelo.  El último
ejemplo de esta sección muestra cómo se puede hacer esto.

@node Volumen maestro MIDI
@unnumberedsubsubsec Volumen maestro MIDI
@translationof Overall MIDI volume

El volumen general máximo y mínimo de las indicaciones dinámicas
de MIDI se controla estableciendo valores para las propiedades
@code{midiMinimumVolume} y @code{midiMaximumVolume} en el nivel de
@code{Score}.  Estas propiedades tienen efecto solamente al inicio
de una voz y sobre las indicaciones dinámicas.  La fracción que
corresponde a cada indicación dinámica se modifica con esta
fórmula:

@example
midiMinimumVolume + (midiMaximumVolume - midiMinimumVolume) * fracción
@end example

En el ejemplo siguiente, el rango de intensidad dinámica del
volumen general MIDI está limitado al intervalo desde 0.2 hasta
0.5.

@lilypond[verbatim,quote]
\score {
  <<
    \new Staff {
      \key g \major
      \time 2/2
      \set Staff.midiInstrument = #"flute"
      \new Voice \relative c''' {
        r2 g\mp g fis~
        fis4 g8 fis e2~
        e4 d8 cis d2
      }
    }
    \new Staff {
      \key g \major
      \set Staff.midiInstrument = #"clarinet"
      \new Voice \relative c'' {
        b1\p a2. b8 a
        g2. fis8 e
        fis2 r
      }
    }
  >>
  \layout {}
  \midi {
    \tempo 2 = 72
    \context {
      \Score
      midiMinimumVolume = #0.2
      midiMaximumVolume = #0.5
    }
  }
}
@end lilypond

@node Balance entre instrumentos (i)
@unnumberedsubsubsec Balance entre instrumentos (i)
@translationof Equalizing different instruments (i)

Si las propiedades de volumen MIDI máximo y mínimo están
establecidas en el contexto @code{Staff} se pueden controlar los
volúmenes relativos de los instrumentos MIDI.  Esto proporciona un
ecualizador de instrumentos básico que puede realzar
significativamente la calidad de la salida MIDI.

En este ejemplo se reduce el volumen del clarinete con relación al
de la flauta.

@lilypond[verbatim,quote]
\score {
  <<
    \new Staff {
      \key g \major
      \time 2/2
      \set Staff.midiInstrument = #"flute"
      \set Staff.midiMinimumVolume = #0.7
      \set Staff.midiMaximumVolume = #0.9
      \new Voice \relative c''' {
        r2 g\mp g fis~
        fis4 g8 fis e2~
        e4 d8 cis d2
      }
    }
    \new Staff {
      \key g \major
      \set Staff.midiInstrument = #"clarinet"
      \set Staff.midiMinimumVolume = #0.3
      \set Staff.midiMaximumVolume = #0.6
      \new Voice \relative c'' {
        b1\p a2. b8 a
        g2. fis8 e
        fis2 r
      }
    }
  >>
  \layout {}
  \midi {
    \tempo 2 = 72
  }
}
@end lilypond


@node Balance entre instrumentos (ii)
@unnumberedsubsubsec Balance entre instrumentos (ii)
@translationof Equalizing different instruments (ii)

Si las propiedades de volumen MIDI máximo y mínimo no están
establecidas, de forma predeterminada LilyPond aplica un pequeño
grado de ecualización a algunos instrumentos.  Los instrumentos y
la ecualización que se aplica se muestra en la tabla
@notation{instrument-equalizer-alist} en @file{../scm/midi.scm}.

El ecualizador básico predeterminado se puede sustituir
estableciendo @code{instrumentEqualizer} en el contexto
@code{Score} a un procedimiento Scheme nuevo que acepte el nombre
de un instrumento MIDI como único argumento y devuelva un par de
fracciones que dan los volúmenes máximo y mínimo que se aplican a
dicho instrumento.  Esta sustitución se hace de la misma forma que
mostramos para restablecer la fracción de volumen absoluto
@code{dynamicAbsoluteVolumeFunction} al comienzo de esta sección.
El ecualizador predeterminado,
@notation{default-instrument-equalizer}, en
@file{../scm/midi.scm}, muestra cómo se puede escribir tal
procedimiento.

El ejemplo siguiente establece los volúmenes relativos de la
flauta y del clarinete a los mismos valores que el ejemplo
anterior.

@lilypond[verbatim,quote]
#(define my-instrument-equalizer-alist '())

#(set! my-instrument-equalizer-alist
  (append
    '(
      ("flute" . (0.7 . 0.9))
      ("clarinet" . (0.3 . 0.6)))
    my-instrument-equalizer-alist))

#(define (my-instrument-equalizer s)
  (let ((entry (assoc s my-instrument-equalizer-alist)))
    (if entry
      (cdr entry))))

\score {
  <<
    \new Staff {
      \key g \major
      \time 2/2
      \set Score.instrumentEqualizer = #my-instrument-equalizer
      \set Staff.midiInstrument = #"flute"
      \new Voice \relative c''' {
        r2 g\mp g fis~
        fis4 g8 fis e2~
        e4 d8 cis d2
      }
    }
    \new Staff {
      \key g \major
      \set Staff.midiInstrument = #"clarinet"
      \new Voice \relative c'' {
        b1\p a2. b8 a
        g2. fis8 e
        fis2 r
      }
    }
  >>
  \layout { }
  \midi {
    \tempo 2 = 72
  }
}
@end lilypond

@ignore
@c Delete when satisfied this is adequately covered elsewhere -td

@n ode Microtones in MIDI
@s ubsection Microtones in MIDI

@cindex microtones in MIDI

Microtones consisting of half sharps and half flats are exported
to the MIDI file and render correctly in MIDI players which support
pitch bending.  See @ref{Nombres de las notas en otros idiomas}.  Here is
an example showing all the half sharps and half flats.  It can be
copied out and compiled to test microtones in your MIDI player.

@lilypond[verbatim,quote]
\score {
  \relative c' {
    c4 cih cis cisih
    d4 dih ees eeh
    e4 eih f fih
    fis4 fisih g gih
    gis4 gisih a aih
    bes4 beh b bih
  }
  \layout {}
  \midi {}
}
@end lilypond
@end ignore


@node Percusión en MIDI
@subsection Percusión en MIDI
@translationof Percussion in MIDI

La notación de los instrumentos de percusión se realiza
normalmente en un contexto @code{DrumStaff} y cuando se hace de
esta forma se les da salida correctamente por el canal
MIDI@tie{}10, pero ciertos instrumentos de percusión de altura
determinada, como el xilófono, marimba, vibráfono, timbales, etc.,
se tratan como instrumentos @qq{normales} y la música para estos
instrumentos se debe introducir en contextos de @code{Staff}
normales, no en un contexto @code{DrumStaff}, para obtener la
salida MIDI correcta.

Ciertos sonidos de altura indeterminada que están incluidos en el
estándar General MIDI, como el tom melódico, el tambor taiko, los
tambores sintéticos, etc., no se pueden acceder a través del canal
MIDI@tie{}10, por lo que la notación para dichos instrumentos se
debe introducir también en un contexto normal de @code{Staff},
utilizando las alturas normales adecuadas.

Muchos instrumentos de percusión no están incluidos dentro del
estándar General MIDI, p.ej. las castañuelas.  El método más fácil
(aunque no satisfactorio) de producir una salida MIDI al escribir
para estos instrumentos es sustituirlos por el sonido más parecido
del conjunto estándar.

@c TODO Expand with examples, and any other issues

@knownissues

Debido a que el estándar General MIDI no contiene golpes de aro
(@emph{rim shots}), para este propósito se utiliza en su lugar el
golpe lateral de baqueta (@emph{sidestick}).


@node El script Articulate
@subsection El script Articulate
@translationof The Articulate script

Es posible obtener una salida MIDI más real si se utiliza el
script Articulate.  Éste trata de tener en cuenta las
articulaciones (ligaduras de expresión, picados, etc), mediante la
sustitución de las notas con secuencias musicales de silencios y
notas escaladas en el tiempo de forma apropiada.  También trata de
desplegar los trinos, grupetos circulares, etc. y responder a las
indicaciones de rallentando y accelerando.

Para utilizar el script Articulate, tenemos que incluirlo al
principio de nuestro archivo de entrada:

@example
\include "articulate.ly"
@end example

y en la sección @code{\score}, hacer lo siguiente:

@example
\unfoldRepeats \articulate <<
	resto de la partitura@dots{}
>>
@end example

Después de alterar el código de entrada de esta manera el
resultado visual se altera profundamente, pero el bloque
@code{\midi} estándar produce un archivo MIDI mejorado.

Si bien no es esencial para que funcione el script Articulate,
podemos insertar la instrucción @code{\unfoldRepeats} según
aparece en el ejemplo anterior, dado que habilita la ejecución de
abreviaturas tales como los @notation{trinos}.

@knownissues

Articulate acorta los acordes, y ciertos fragmentos de música
(especialmente la música de órgano) es posible que suene peor.


@node Extraer información musical
@section Extraer información musical
@translationof Extracting musical information

Además de crear un resultado visual y MIDI, LilyPond es capaz de
presentar información musical en forma de texto.

@menu
* Impresión del código de notación de LilyPond::
* Impresión de las expresiones musicales de Scheme::
* Guardar los eventos musicales en un archivo::
@end menu


@node Impresión del código de notación de LilyPond
@subsection Displaying LilyPond notation
@translationof Displaying LilyPond notation

@funindex \displayLilyMusic
La impresión textual de una expresión musical en notación de
LilyPond puede hacerse con la función musical
@code{\displayLilyMusic}.  Para ver el resultado, lo más usual es
llamar a LilyPond mediante la línea de órdenes.  Por ejemplo,

@example
@{
  \displayLilyMusic \transpose c a, @{ c4 e g a bes @}
@}
@end example

imprime lo siguiente:

@example
@{ a,4 cis e fis g @}
@end example

De forma predeterminada, LilyPond imprime estos mensajes en la
consola junto al resto de los mensajes de la compilación de
LilyPond.  Para discernir entre estos mensajes y guardar el
resultado de @code{\displayLilyMusic}, redireccione la salida
hacia un archivo.

@example
lilypond archivo.ly >resultado.txt
@end example


@node Impresión de las expresiones musicales de Scheme
@subsection Impresión de las expresiones musicales de Scheme
@translationof Displaying scheme music expressions

Véase @rextend{Presentación de las expresiones musicales}.


@node Guardar los eventos musicales en un archivo
@subsection Guardar los eventos musicales en un archivo
@translationof Saving music events to a file

Los eventos musicales se pueden guardar en un archivo pentagrama a
pentagrama mediante la inclusión de un archivo en nuestra
partitura principal.

@example
\include "event-listener.ly"
@end example

De esta forma se crean uno o más archivos llamados
@file{FILENAME-STAFFNAME.notes} ó
@file{FILENAME-unnamed-staff.notes} para cada pentagrama.  Observe
que si tiene más de un pentagrama sin nombre, los eventos de todos
los pentagramas se mezclarán entre sí dentro del mismo archivo.
El resultado tiene el aspecto siguiente:

@example
0.000   note     57       4   p-c 2 12
0.000   dynamic  f
0.250   note     62       4   p-c 7 12
0.500   note     66       8   p-c 9 12
0.625   note     69       8   p-c 14 12
0.750   rest     4
0.750   breathe
@end example

La sintaxis consiste en una línea delimitada por caracteres de
tabulación, con dos campos fijos en cada línea seguidos de
parámetros opcionales.

@example
@var{tiempo}  @var{tipo}  @var{@dots{}parámetros@dots{}}
@end example

Esta información se puede leer fácilmente por parte de otros
programas como guiones de Python, y pueden ser muy útiles para
aquellos investigadores que desean realizar un análisis musical o
hacer experimientos de reproducción con LilyPond.

@knownissues
No todos los eventos musicales de lilypond están contemplados por
@file{event-listener.ly}.  Se pretende que sea una @qq{prueba de
concepto} bien realizada.  Si algunos eventos que quiere ver no
aparecen incluidos, copie @file{event-listener.ly} en su carpeta
de lilypond y modifique el archivo de forma que produzca la
información que desea.
