20.5 Estructura del archivo
Un archivo .ly puede contener cualquier número de expresiones del nivel superior, donde una expresión del nivel superior es una de las siguientes posibilidades:
-
Una definición de salida, como
\paper,\midiy\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\layout, consulte El bloque\layout. - Una expresión directa de Scheme, como
#(set-default-paper-size "a7" 'landscape)o#(ly:set-option 'point-and-click #f). -
Un bloque
\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 Explicación de los títulos). -
Un bloque
\score. Esta partitura se reúne con otras partituras del nivel superior, y se combina con ellas formando un\book(libro) único. Este comportamiento se puede cambiar estableciendo el valor de la variabletoplevel-score-handleren el nivel superior (el handler predeterminado se define en el archivo ../scm/lily-library.scm y su valor se establece en el archivo ../ly/declarations-init.ly.) -
Un bloque
\bookcombina lógicamente varios movimientos (es decir, varios bloques\score) en un solo documento. Si hay varias partituras\score, se crea un solo archivo de salida para cada bloque\book, en el que se concatenan todos los movimientos correspondientes. La única razón para especificar explícitamente bloques\booken un archivo de entrada .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\booksi queremos tener más de una única partitura\scoreo marcado\markupen el mismo ejemplo. Se puede cambiar este comportamiento estableciendo el valor de la variabletoplevel-book-handleren el nivel superior. El handler predeterminado se define en el archivo de inicio ../scm/lily.scm. -
Un bloque
\bookpart. Un libro puede dividirse en varias partes, utilizando bloques\bookpart, con objeto de facilitar la inserción de saltos de página o usar distintos ajustes de\paperen las distintas partes. - Una expresión musical compuesta, como
{ c'4 d' e'2 }Esto añade la pieza al
\scorey la conforma dentro de un libro único junto a todas las demás partituras\scorey expresiones musicales del nivel superior. En otras palabras, un archivo que contiene solo la expresión musical anterior se traduce a\book { \score { \new Staff { \new Voice { { c'4 d' e'2 } } } \layout { } } \paper { } \header { } }Se puede cambiar este comportamiento estableciendo el valor de la variable
toplevel-music-handleren el nivel más alto. El handler predeterminado se define en el archivo de inicio ../scm/lily.scm. - Un texto de marcado, por ejemplo una estrofa
\markup { 2. Estrofa dos, línea uno }Los textos de marcado se colocan encima, en medio o debajo de las partituras o expresiones musicales, según donde aparezcan escritos.
-
Una variable o una estructura anidada de listas de asociación de
Scheme (listas-A)
fulano = { c4 d e d } % variable normal "Horn 3" = { c4 d e d } % variable entre comillas verse.1 = { c4 d e d } % variable anidadaLas variables se pueden usar más tarde en el archivo anteponiéndolas por una barra invertida.
\foo \"Horn 3" \verse.1
El nombre de una variable no puede contener números (ASCII), más de una barra baja seguida, varios signos menos seguidos, ni espacios. Todos los demás caracteres que ofrece Unicode están permitidos, por ejemplo latín, griego, chino o cirílico. También se permiten varias barras bajas únicas y signos menos no seguidos. En otras palabras, funcionan los nombres de variable como
TrompaIIIoСкрипка-II.Se permite cualquier combinación de caracteres si el nombre de la variable está entre dobles comillas (aunque no es recomendable).7 Ejemplos:
"fulano mengano","a-b-c","Trompa 3".Las listas-A anidadas ofrecen un medio para rodear parcialmente la restricción mencionada anteriormente de nombres de variable que no contengan un número. Una lista-A anidada es un nombre de variable válido seguido por uno o más conjuntos de un punto y una clave. En
mus.violin.1 = { a1 }tenemos una variable llamadamus, que tiene una lista de asociación con una clave llamadaviolin, que a su vez tiene una clave llamada1, a la cual se asigna finalmente el valor{ a1 }. En"1.2"."3.4".5el nombre de la variable es"1.2"y las claves son"3.4"y5. Estas construcciones son bastante ilegibles pero pueden ser útiles para generar nombres de variables programáticamente.Ni un nombre de variable ni una clave dentro de una lista anidada pueden tener el nombre de una nota. Si es necesario, enciérrelas entre comillas dobles, o mejor aún cambie la clave o el nombre conflictivos.
Por razones técnicas, acceder a listas-A anidadas puede fallar bajo ciertas circunstancias. Concretamente, no se puede acceder a ellas en el nivel jerárquico superior (esto es, fuera de un bloque de música). Si la orden
lilypondabrta con el error ‘bad expression type’, sustituya la lista-A anidada con una variable normal o entrecomillada.
El ejemplo siguiente muestra tres cosas que se pueden introducir en el nivel superior:
\layout {
% No justificar la salida
ragged-right = ##t
}
\header {
title = "Do-re-mi"
}
{ c'4 d' e2 }
En cualquier punto del archivo se pueden introducir cualquiera de las instrucciones léxicas siguientes:
-
\version -
\include -
\sourcefilename -
\sourcefileline -
Un comentario de una línea, determinado por un símbolo
%al principio. -
Un comentario de varias líneas, delimitado por
%{ … %}.
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:
- Alrededor de todas y cada una de las llaves curvas de apertura y cierre.
- A continuación de las instrucciones y variables, es decir,
todos los elementos que comienzan con un signo
\de barra invertida. - A continuación de todo elemento que se deba interpretar como expresión de Scheme, es decir, todo elemento que comience por un signo ‘#’.
- Para separar los elementos de una expresión de Scheme.
- Dentro de
lyricmodeantes y después de las instrucciones\sety\override.
Véase también
Manual de aprendizaje: Cómo funcionan los archivos de entrada de LilyPond.
Referencia de la notación:
Explicación de los títulos,
El bloque \layout.
Footnotes
(7)
En este caso se aplican las reglas estándar para las cadenas de caracteres: las barras invertidas y las comillas dobles dentro de comillas dobles se tienen que escapar con barras invertidas.