| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@translationof Working with input files
| 3.3.1 Inclusión de archivos de LilyPond | ||
| 3.3.2 Distintas ediciones a partir de una misma fuente | ||
| 3.3.3 Caracteres especiales |
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@translationof Including LilyPond files
Un proyecto grande se puede dividir en varios archivos. Para referirse a otro archivo, utilice
\include "otroarchivo.ly" |
La línea \include "otroarchivo.ly" equivale a pegar todo
el contenido de ‘otroarchivo.ly’ en el archivo actual en el
lugar en que aparece el \include. Por ejemplo, en un
proyecto grande podríamos querer archivos distintos para cada
parte instrumental y crear un archivo de “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 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 \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 ‘material.ly’ está situado
un directorio por encima del directorio de trabajo actual,
utilice
\include "../material.ly" |
o si los archivos de las partes orquestales incluidas están todos situados en un subdirectorio llamado ‘partes’ dentro del directorio actual, use
\include "partes/VI.ly" \include "partes/VII.ly" … etc. |
Los archivos de inclusión también pueden contener enunciados
\include a su vez. De forma predeterminada, estos
enunciados \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
‘-drelative-includes’ en la línea de órdenes (o mediante
la adición de #(ly:set-option 'relative-includes #t) al
principio del archivo principal de entrada).
Cuando relative-includes está establecido al valor
#t, la ruta de cada instrucción \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
\includear mediante el establecimiento de
relative-includes al valor #t o a #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 \includean por medio del archivo de
entrada de dicha biblioteca, esas instrucciones \include
tendrán que venir precedidas por #(ly:set-option
'relative-includes #t) de manera que se interpreten
correctamente al construir el archivo de entrada .ly
principal, de esta forma:
libA/ libA.ly A1.ly A2.ly … |
entonces el archivo de entrada, libA.ly, contiene
#(ly:set-option 'relative-includes #t) \include "A1.ly" \include "A2.ly" … % vuelta al ajuste predeterminado #(ly:set-option 'relative-includes #f) |
Cualquier archivo ‘.ly’ puede entonces incluir la biblioteca completa, simplemente con
\include "~/libA/libA.ly" |
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 ‘principal.ly’ que incluye archivos situados en un subdirectorio llamado ‘partes’, cambie al directorio que contiene ‘principal.ly’ e introduzca
lilypond --include=partes principal.ly |
y en ‘principal.ly’ escriba
\include "VI.ly" \include "VII.ly" … etc. |
Los archivos que se incluyen en muchas partituras se pueden poner
en el directorio de LilyPond ‘../ly’ (la localización de
este directorio depende de la instalación: véase
fuentes de información
(learning)Otras fuentes de información sección ‘Otras fuentes de información’ en Manual de Aprendizaje). Estos archivos se pueden incluir
sencillamente por su nombre en un enunciado \include. De
esta forma se incluyen los archivos dependientes del idioma como
‘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
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
(learning)Otras fuentes de información sección ‘Otras fuentes de información’ en Manual de Aprendizaje. 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 \include
en
(learning)Partituras y particellas sección ‘Partituras y particellas’ en Manual de Aprendizaje.
Manual de aprendizaje: (learning)Otras fuentes de información sección ‘Otras fuentes de información’ en Manual de Aprendizaje, (learning)Partituras y particellas sección ‘Partituras y particellas’ en Manual de Aprendizaje.
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.
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@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.
| Uso de las variables | ||
| Uso de etiquetas | ||
| Uso de ajustes globales |
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@translationof Using variables
Si las secciones de la música se definen dentro de variables, se pueden reutilizar en distintas partes de la partitura, véase (learning)Organizar las piezas mediante variables sección ‘Organizar las piezas mediante variables’ en Manual de Aprendizaje. Por ejemplo, una partitura vocal 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 Combinación automática de las partes. He aquí un ejemplo:
sopranoMusic = \relative { a'4 b c b8( a) } altoMusic = \relative { e'4 e e f } tenorMusic = \relative { c'4 b e d8( c) } bassMusic = \relative { 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" { \partCombine \sopranoMusic \altoMusic } \new Staff = "LH" { \clef "bass" \partCombine \tenorMusic \bassMusic } >> >>
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 Inclusión de archivos de LilyPond.
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@translationof Using tags
La instrucción \tag #'parteA marca una expresión
musical con el nombre parteA. Las expresiones etiquetadas
de esta manera se pueden seleccionar o filtrar más tarde por su
nombre, usando bien \keepWithTag #'nombre o bien
\removeWithTag #'nombre. El resultado de la
aplicación de estos filtros a la música etiquetada es como sigue:
| Filtro | Resultado |
|---|---|
Música etiquetada precedida de \keepWithTag #'nombre
o de \keepWithTag #'(nombre1 nombre2…) | 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. |
Música etiquetada precedida de
\removeWithTag #'nombre o
\removeWithTag #'(nombre1 nombre2…) | 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. |
Música etiquetada no precedida de \keepWithTag ni de
\removeWithTag | Se incluye toda la música etiquetada y no etiquetada. |
Los argumentos de las instrucciones \tag,
\keepWithTag y \removeWithTag deben ser un símbolo
o lista de símbolos (como #'score o #'(violinI
violinII), seguida de una expresión musical. Si y solo
si los símbolos son identificadores de LilyPond válidos
(caracteres alfabéticos solamente, sin números, guiones bajos ni
guiones normales) que no puedan confundirse con notas, la porción
#' se puede omitir y, como abreviatura, una lista de
símbolos puede usar el separador de punto, es decir: \tag
#'(violinI violinII) se puede escribir como \tag
violinI.violinII. Lo mismo vale para \keepWithTag y
\removeWithTag.
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:
music = \relative { g'8. c32 d \tag #'trills { d8.\trill } \tag #'expand { \repeat unfold 3 { e32 d } } c32 d } \score { \keepWithTag #'trills \music } \score { \keepWithTag #'expand \music }
De forma alternativa, a veces es más fácil excluir secciones de música:
music = \relative { g'8. c32 d \tag #'trills { d8.\trill } \tag #'expand {\repeat unfold 3 { e32 d } } c32 d } \score { \removeWithTag #'expand \music } \score { \removeWithTag #'trills \music }
El filtrado con etiquetas se puede aplicar a articulaciones, textos, etc. anteponiendo
-\tag #'mi-etiqueta |
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:
c1-\tag #'finger ^4 c1-\tag #'warn ^"¡Ojo!" |
Se pueden poner varias etiquetas sobre expresiones con varias
entradas de \tag, o combinando varias etiquetas en una
lista de símbolos:
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 >>
Se pueden aplicar varios filtros \removeWithTag a una sola
expresión musical para quitar varias secciones etiquetadas con
nombres distintos. De forma alternativa, podemos usar una sola
instrucción \removeWithTag con una lista de etiquetas.
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 }
El uso de dos o más filtros \keepWithTag sobre una sola
expresión musical produce la eliminación de todas las
secciones etiquetadas. El primer filtro quita todas excepto la
que se nombra, y cualquier filtro posterior elimina el resto.
Usando una sola instrucción \keepWithTag con una lista de
varias etiquetas se suprimirán solamente las secciones etiquetadas
que no aparezcan especificadas en la lista.
music = \relative c'' { \tag #'violinI { a4 a a a } \tag #'violinII { b4 b b b } \tag #'viola { c4 c c c } \tag #'cello { d4 d d d } } \new Staff { \keepWithTag #'(violinI violinII) \music }
will print \tags violinI and violinII but not
viola or cello.
Aunque \keepWithTag es útil para el manejo de un
solo conjunto de alternativas, la eliminación de música
etiquetada con otras etiquetas no relacionadas es
problemática si se utilizan para más de un propósito. En ese caso
pueden declararse ‘grupos de etiquetas’:
\tagGroup #'(violinI violinII viola cello) |
Ahora todas las etiquetas pertenecen a un solo ‘grupo de etiquetas’. Observe que las etiquetas individuales no pueden ser miembros de más de un grupo de etiquetas.
\keepWithTag #'violinI … |
mostrará solamente la música etiquetada a partir del
grupo de etiquetas de violinI y
cualquier fragmento musical etiquetado con una de las
otras etiquetas resultará suprimido.
music = \relative { \tagGroup #'(violinI violinII viola cello) \tag #'violinI { c''4^"violinI" c c c } \tag #'violinII { a2 a } \tag #'viola { e8 e e2. } \tag #'cello { d'2 d4 d } R1^"untagged" } \new Voice { \keepWithTag #'violinI \music }
Al usar la instrucción \keepWithTag solo son visibles
las etiquetas de los grupos de aquellas etiquetas se se incluyen
en la instrucción.
A veces podemos desear dividir la música en un determinado lugar
dentro de una expresión musical existente. Podemos usar
\pushToTag y \appendToTag para añadir material
delante o al final de los elements de una construcción
musical existente. No toda construcción musical tiene la parte
elements, pero las músicas secuenciales y simultáneas son
dos apuestas seguras:
music = { \tag #'here { \tag #'here <<c''>> } } { \pushToTag #'here c' \pushToTag #'here e' \pushToTag #'here g' \music \appendToTag #'here c' \appendToTag #'here e' \appendToTag #'here g' \music }
Las dos instrucciones admiten una etiqueta, el material que dividir en cada ocurrencia de la etiqueta, y la expresión etiquetada.
Manual de aprendizaje: (learning)Organizar las piezas mediante variables sección ‘Organizar las piezas mediante variables’ en Manual de Aprendizaje.
Referencia de la notación: Combinación automática de las partes, Inclusión de archivos de LilyPond.
Al llamar a \relative sobre una expresión musical obtenida
mediante el filtrado de música con las instrucciones
\keepWithTag o \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 \relative en
primer lugar, antes de \keepWithTag o de
\removeWithTag, evita este peligro porque en este caso
\relative actúa sobre todas las notas tal y como se
introducen.
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@translationof Using global settings
Se pueden incluir ajustes globales a partir de un archivo distinto:
lilypond -dinclude-settings=MIS_AJUSTES.ly MI_PARTITURA.ly |
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 misma 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 (learning)Hojas de estilo sección ‘Hojas de estilo’ en Manual de Aprendizaje.
Manual de aprendizaje: (learning)Organizar las piezas mediante variables sección ‘Organizar las piezas mediante variables’ en Manual de Aprendizaje, (learning)Hojas de estilo sección ‘Hojas de estilo’ en Manual de Aprendizaje.
Referencia de la notación: Inclusión de archivos de LilyPond.
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@translationof Special characters
| Codificación del texto | ||
| Unicode | ||
| Alias de ASCII |
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@translationof Text encoding
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 Unicode Transformation Format, o formato de transformación de Unicode) que representa todos los caracteres comunes de la codificación 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
FT_Get_Glyph_Name () error: argumento inválido |
He aquí un ejemplo que muestra texto cirílico, hebreo y portugués:
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@translationof 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 \char ##xhhhh o bien \char
#dddd dentro de un bloque \markup, donde hhhh es
el código hexadecimal del carácter en cuestión y 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 no debe utilizarse
la codificación UTF-8 del punto de código Unicode después de
\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, http://www.unicode.org/.
Por ejemplo, tanto \char ##x03BE como \char #958
insertan el carácter Unicode U+03BE, que tiene el nombre Unicode
“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:
\score { \relative { c''1 \mark \markup { \char ##x03EE } c1_\markup { \tiny { \char ##x03B1 " to " \char ##x03C9 } } } \addlyrics { O \markup { \concat { Ph \char ##x0153 be! } } } } \markup { "Copyright 2008--2020" \char ##x00A9 }
Para escribir el símbolo de copyright en la nota de créditos, utilice:
\header {
copyright = \markup { \char ##x00A9 "2008" }
}
|
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@translationof ASCII aliases
Se puede incluir una lista de alias de ASCII para caracteres especiales:
\paper { #(include-special-characters) } \markup "&flqq; – &OE;uvre incomplète… &frqq;" \score { \new Staff { \repeat unfold 9 a'4 } \addlyrics { This is al -- so wor -- kin'~in ly -- rics: –_&OE;… } } \markup \column { "The replacement can be disabled:" "– &OE; …" \override #'(replacement-alist . ()) "– &OE; …" }
También podemos hacer nuestros propios alias, ya sea de forma global,
\paper { #(add-text-replacements! '(("100" . "hundred") ("dpi" . "dots per inch"))) } \markup "A 100 dpi."
o local:
\markup \replace #'(("100" . "hundred") ("dpi" . "dots per inch")) "A 100 dpi."
Referencia de la notación: Lista de caracteres especiales.
Archivos instalados: ‘ly/text-replacements.ly’.
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] |
Este documento ha sido generado por gub el el 13 julio 2020 utilizando texi2html 1.82.
Otros idiomas: English, català, deutsch, français, italiano, 日本語.
Acerca de la selección automática del idioma.