[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

3.3 Trabajar sobre los archivos de entrada

@translationof Working with input files


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

3.3.1 Inclusión de archivos de LilyPond

@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.

Véase también

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.

Advertencias y problemas conocidos

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] [ ? ]

3.3.2 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.


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

Uso de las variables

@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
    }
  >>
>>

[image of music]

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] [ ? ]

Uso de etiquetas

@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:

FiltroResultado
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 \removeWithTagSe 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
}

[image of 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
}

[image of 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
>>

[image of 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
}

[image of 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
}

[image of 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
}

[image of 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
}

[image of music]

Las dos instrucciones admiten una etiqueta, el material que dividir en cada ocurrencia de la etiqueta, y la expresión etiquetada.

Véase también

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.

Advertencias y problemas conocidos

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] [ ? ]

Uso de ajustes globales

@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.

Véase también

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] [ ? ]

3.3.3 Caracteres especiales

@translationof Special characters


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

Codificación del texto

@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:

[image of music]


[ < ] [ > ]   [ << ] [ Subir ] [ >> ]         [Arriba] [Índice general] [Índice] [ ? ]

Unicode

@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 }

[image of music]

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] [ ? ]

Alias de ASCII

@translationof ASCII aliases

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

 
\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;"
}

[image of music]

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

[image of music]

o local:

 
\markup \replace #'(("100" . "hundred")
                    ("dpi" . "dots per inch")) "A 100 dpi."

[image of music]

Véase también

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.