[Top][Contents][Index] |
LilyPond — Manual de aprendizaje
Este archivo ofrece una introducción al programa LilyPond versión 2.25.22. |
1 Installing | Installing LilyPond | |
2 Tutorial | Fundamentos de la tipografía musical con LilyPond. | |
3 Notación corriente | Escribir notación muy común. | |
4 Conceptos fundamentales | Conceptos básicos necesarios para leer el resto de los manuales. | |
5 Trucar la salida | Introducción a la modificación de la salida. | |
Apéndices | ||
---|---|---|
Appendix A Plantillas | Plantillas listas para usar. | |
Appendix B GNU Free Documentation License | Licencia de este documento. | |
Appendix C Índice de LilyPond |
Para mayor información sobre la forma en que este manual se relaciona con el resto de la documentación, o para leer este manual en otros formatos, consulte Manuales. Si le falta algún manual, encontrará toda la documentación en https://lilypond.org/. |
[ << Top ] | [Top][Contents][Index] | [ Tutorial >> ] |
[ < Top ] | [ Up : Top ] | [ Graphical setup under GNU/Linux > ] |
1 Installing
This gentle, step-by-step installation tutorial guides you through installing LilyPond and creating a first music score.
LilyPond input files are simple text files. You can use any editor for plain text to edit a LilyPond file (do not use editors for rich text such as Microsoft Word), but there are several editors tailored specifically for LilyPond, making the editing process very comfortable. Because a choice has to be made, this tutorial uses Frescobaldi, which is the most popular among such editors right now. However, there are several other options available. For more information, see Easier editing.
Please choose the tutorial according to your needs. (If you don’t know what the “command line” is, you want the graphical setup!)
1.1 Graphical setup under GNU/Linux | ||
1.2 Graphical setup under Windows | ||
1.3 Graphical setup under macOS | ||
1.4 Command line setup |
[ << Installing ] | [Top][Contents][Index] | [ Tutorial >> ] |
[ < Installing ] | [ Up : Installing ] | [ Graphical setup under Windows > ] |
1.1 Graphical setup under GNU/Linux
These instructions work for the GNOME environment, for example on the default flavors of Ubuntu and Fedora. In other desktop environments, they can likely be adapted. For more minimal GNU/Linux distributions, see Command line setup.
First, find the GNOME Software app.
In GNOME Software, search “Frescobaldi”.
Install Frescobaldi. Behind the scenes, this should also automatically install some version of LilyPond.
Open Frescobaldi. It starts on a new file with some pre-filled text that will be explained later.
After the \version
line, enter a new line containing exactly
this:
{ c' }
Now click on the LilyPond icon or use the Control-M keyboard shortcut. On the right, a simple score appears.
Congratulations, you have just created your first music sheet with LilyPond! If you’re satisfied now, you can skip the rest of this section. However, it may be that the version of LilyPond that was installed is not the same one as this documentation is for. If you want a different LilyPond version, you can register it in Frescobaldi, without losing the initial one. To do this, download the archive from Download and double-click to unpack it. (The image shows the archive for version 2.23.10; for this documentation, however, you should download the archive for version 2.25.22.)
Move the unpacked folder out of your “Downloads” folder to the folder where you want to permanently store it. For example, put it in your home folder.
Now, in Frescobaldi, go to the “Preferences” menu.
Select “LilyPond Preferences”, and click “Add” to register a new LilyPond version.
Click on the file explorer icon.
Navigate to the folder you have just extracted, then inside this folder, double-click ‘bin’ and finally select ‘lilypond’.
You’re done! You can click ‘OK’. You now have two versions of LilyPond installed.
Now turn to Tutorial to learn more about LilyPond’s syntax.
[ << Installing ] | [Top][Contents][Index] | [ Tutorial >> ] |
[ < Graphical setup under GNU/Linux ] | [ Up : Installing ] | [ Graphical setup under macOS > ] |
1.2 Graphical setup under Windows
Download LilyPond for Windows from Download. This is a ZIP archive called lilypond-x.y.z-mingw-x86_64.zip (where “mingw” means it’s for Windows), for example lilypond-2.25.22-mingw-x86_64.zip. Extract this in the file explorer. Place the resulting directory lilypond-x.y.z-mingw-x86_64 in a permanent location; the actual folder doesn’t matter, you just need to put it somewhere you won’t move it afterwards. For example, you could choose your home folder.
After this, download the latest release of Frescobaldi from the project’s download page (this image and the next one refer to version 3.2, which is not necessarily the newest one). Choose the .exe file.
Double-click on the downloaded file in the file explorer. This launches the setup wizard.
Accept the license and install Frescobaldi using the wizard. You will find a startup screen like this:
Navigate to the Frescobaldi preferences.
Navigate to “LilyPond Preferences” on the left.
Click “Edit” on the right. This leads to a dialog for choosing the LilyPond executable.
Click on the folder icon and navigate to the lilypond-x.y.z-mingw-x86_64 folder you previously created. Inside this folder, open lilypond-x.y.z, then bin, and finally select lilypond.
Now click “OK”.
Click “OK” again.
Type this simple file in the window:
\version "2.25.22" { c' }
Compile it with the Control-M keyboard shortcut or by clicking the “LilyPond” icon. A minimal score appears.
Congratulations, you have just created your first music sheet with LilyPond! Now continue with the Tutorial to learn more about LilyPond’s syntax.
[ << Installing ] | [Top][Contents][Index] | [ Tutorial >> ] |
[ < Graphical setup under Windows ] | [ Up : Installing ] | [ Command line setup > ] |
1.3 Graphical setup under macOS
Download LilyPond for macOS from Download. This is an archive called lilypond-x.y.z-darwin-x86_64.tar.gz (where “darwin” means it’s for macOS), for example lilypond-2.25.22-darwin-x86_64.tar.gz. In the Finder, extract this archive. Place the resulting directory lilypond-x.y.z-darwin-x86_64 into a permanent location; the actual folder doesn’t matter, you just need to put it somewhere you won’t move it afterwards. For example, you could choose your home folder.
After this, download the latest release of Frescobaldi from the project’s download page (the image refers to version 3.1.3, which is not necessarily the newest one). Choose the .dmg file.
In the Finder, double-click on the file to run the installer. At this point, you might encounter a problem:
This is because Frescobaldi is developed independently from Apple. Nevertheless, it is totally secure software, but you have to tell Apple so. To do this, you first need to click “Cancel”. After having clicked “Cancel”, open the “System Preferences” app and select “Security & Privacy”.
Then click “Open Anyway”.
This leads to a new security warning. This time, you have the option to accept. Select “Open”. Again, do not fear: Frescobaldi is completely secure for your system.
Frescobaldi is now open. Find the Preferences.
Click on “LilyPond Preferences” on the left.
Click “Edit” on the right. This opens a new window:
Click on the “folder” icon. A Finder window opens. Navigate to the lilypond-x.y.z-darwin-x86_64 folder you saved earlier. Inside it, find lilypond-x.y.z, then bin, and finally lilypond.
When you press “OK”, a new security warning about LilyPond will likely appear. Again, first click “Cancel”, then enable LilyPond in the preferences, and redo the procedure to select lilypond in the Finder.
Now click “OK” to everything until you are back to the main Frescobaldi window. Enter this simple file in source view on the left:
\version "2.25.22" { c' }
Click on the button with the LilyPond icon to compile the file, or use the Control-M keyboard shortcut. For a third time, the system will warn you about security, this time with “gs” (GhostScript). Once more, go to the System Preferences and enable the program to be executed.
Finally, the next compilation run will work and you will find a minimal score.
Congratulations, you have just created your first music sheet with LilyPond! Now continue with the Tutorial to learn more about LilyPond’s syntax.
[ << Installing ] | [Top][Contents][Index] | [ Tutorial >> ] |
[ < Graphical setup under macOS ] | [ Up : Installing ] | [ Tutorial > ] |
1.4 Command line setup
On many GNU/Linux distributions, LilyPond can be installed from the package manager. This is also the case on macOS using either MacPorts or Homebrew.
In any case, you can install LilyPond by downloading the archive from Download and unpacking it. The binaries are usable immediately after unpacking. You can run
/.../lilypond-x.y.z/bin/lilypond file.ly
(on Windows, replace the slashes ‘/’ with backslashes ‘\’).
This compiles file.ly
, and produces file.pdf
.
To test your setup, you can use this minimal file:
\version "2.25.22" { c' }
This will produce this output in file.pdf:
Now continue with the Tutorial to learn more about LilyPond’s syntax, or see Command-line usage for more information on calling LilyPond on the command line.
[ << Installing ] | [Top][Contents][Index] | [ Notación corriente >> ] |
[ < Command line setup ] | [ Up : Top ] | [ Compilación del archivo > ] |
2 Tutorial
Este capítulo ofrece una introducción básica al trabajo con LilyPond.
2.1 Compilación del archivo | ||
2.2 Cómo escribir archivos de entrada | ||
2.3 Tratar con los errores | ||
2.4 Cómo leer los manuales |
[ << Tutorial ] | [Top][Contents][Index] | [ Notación corriente >> ] |
[ < Tutorial ] | [ Up : Tutorial ] | [ Cómo escribir archivos de entrada > ] |
2.1 Compilación del archivo
Esta sección presenta el concepto de “compilación”: el procesamiento de los documentos de entrada de LilyPond (escritos por uno mismo) para producir archivos de salida.
“Compilación” es una palabra que significa procesar un texto de entrada en formato de LilyPond para producir un archivo que se puede imprimir y (de manera opcional) un archivo MIDI que se puede reproducir. El primer ejemplo muestra el aspecto de un sencillo archivo de texto de entrada.
Este ejemplo muestra un archivo de entrada sencillo:
\version "2.25.22" { c' e' g' e' }
El resultado tiene este aspecto:
Nota: la música y la letra escrita en el código de entrada de LilyPond tiene que ir siempre entre { llaves }. Las llaves deberían también estar rodeadas por espacios a no ser que se encuentren al principio o al final de una línea, para evitar ambigüedades. Es posible que se omitan en algunos ejemplos del presente manual ¡pero no las omita en su propia música! Para ver más información sobre la presentación de los ejemplos del manual, consulte Cómo leer los manuales.
Además, la entrada de LilyPond es sensible a las mayúsculas. ‘ { c d e }’ es una entrada válida; ‘{ C D E }’ produce un mensaje de error.
[ << Tutorial ] | [Top][Contents][Index] | [ Notación corriente >> ] |
[ < Compilación del archivo ] | [ Up : Tutorial ] | [ Notación sencilla > ] |
2.2 Cómo escribir archivos de entrada
Esta sección presenta una parte de la sintaxis básica de LilyPond como ayuda para que se inicie en la escritura de archivos de entrada.
2.2.1 Notación sencilla | ||
2.2.2 Trabajar sobre los archivos de entrada |
[ << Tutorial ] | [Top][Contents][Index] | [ Notación corriente >> ] |
[ < Cómo escribir archivos de entrada ] | [ Up : Cómo escribir archivos de entrada ] | [ Alturas > ] |
2.2.1 Notación sencilla
Alturas | ||
Duraciones (valores rítmicos) | ||
Silencios | ||
Indicación de compás | ||
Indicaciones de tempo | ||
Clave | ||
Todo junto |
LilyPond añadirá ciertos elementos de notación de manera automática. En el siguiente ejemplo hemos especificado solamente cuatro alturas, pero LilyPond ha añadido la clave, el compás y las duraciones.
{ c' e' g' e' }
Este comportamiento se puede modificar, pero en general estos valores automáticos son adecuados.
[ << Tutorial ] | [Top][Contents][Index] | [ Notación corriente >> ] |
[ < Notación sencilla ] | [ Up : Notación sencilla ] | [ Duraciones (valores rítmicos) > ] |
Alturas
Glosario musical: pitch, interval, scale, middle C, octave, accidental.
LilyPond emplea letras minúsculas para las alturas. Los nombres
de nota en todos los ejemplos de esta sección usan la nomenclatura
holandesa, en que las teclas blancas del piano van desde la c (Do)
hasta la b (Si). Sin embargo, LilyPond contempla muchos otros
sistemas para los nombres de las notas, como el inglés o el ‘Do
fijo’ (do-re-mi-...). Véase Nombres de las notas en otros
idiomas. Las letras desde c
hasta b
denotan
las alturas de las notas de la ‘octava corta’ por debajo del
Do central. Los sufijos '
(apóstrofo)
o ,
(coma) se añaden para indicar octavas más agudas o
más graves. A continuación se muestra una escala que comienza en
el Do central, y un arpegio:
{ c' d' e' f' g' a' b' c'' g c' e' g' c'' e'' g'' c''' }
La manera más sencilla de introducir las notas es mediante la
utilización del modo \relative
(relativo). En este modo,
se elige la octava automáticamente bajo la suposición de que la
siguiente nota se colocará siempre lo más cerca de la nota actual,
es decir, se colocará en la octava comprendida dentro de hasta
tres espacios de pentagrama a partir de la nota anterior.
Comenzaremos por introducir el fragmento musical más elemental:
una escala, donde cada nota está comprendida dentro de
tan sólo un espacio de pentagrama desde la nota anterior.
\relative { c' d e f g a b c }
La nota inicial, escrita como c'
, es el Do
central. Cada nota sucesiva se coloca lo más cerca posible de la
nota previa (en otras palabras: la primera ‘c’ es el Do más
cercano al Do central; a éste le sigue el Re más cercano a la nota
previa, y así sucesivamente). Podemos crear melodías con
intervalos mayores, aún sin dejar de utilizar el modo relativo:
\relative { d' f a g c b f d }
En el ejemplo anterior, la primera nota (d'
, con un
apóstrofo) es el Re que está en la octava que va del Do central al
Si por encima de él.
Añadiendo (o eliminando) comillas simples '
o comas
,
a la primera nota, podemos cambiar la octava de inicio:
\relative { e'' c a c }
Al principio, el modo relativo puede resultar algo confuso, pero es la forma más sencilla de introducir la mayor parte de las melodías. Veamos cómo funciona en la práctica este cálculo relativo. Comenzando por Si, que está situado en la línea central en clave de Sol, podemos alcanzar Do, Re y Mi dentro de los tres espacios de pentagrama hacia arriba, y La, Sol y Fa dentro de los tres espacios hacia abajo. Por tanto, si la nota siguiente a Si es Do, Re o Mi se supondrá que está por encima del Si, mientras que La, Sol o Fa se entenderán situados por debajo.
\relative { b' c % el Do está un espacio por encima, es el Do de arriba b d % el Re está dos por encima ó 5 por debajo, es el Re de arriba b e % el Mi está 3 por encima ó 4 por debajo, es el Mi de arriba b a % el La está 6 por encima ó 1 por debajo, es el La de abajo b g % el Sol está 5 por encima ó 2 por debajo, es el Sol de abajo b f % el Fa está 4 por encima ó 3 por debajo, es el Fa de abajo }
Lo mismo exactamente ocurre cuando cualquiera de esas notas llevan un sostenido o un bemol. Las Alteraciones accidentales se ignoran totalmente en el cálculo de la posición relativa. Exactamente la misma cuenta de espacios de pentagrama se hace a partir de una nota situada en cualquier otro lugar del mismo.
Para añadir intervalos mayores de tres espacios de pentagrama,
podemos elevar la octava añadiendo una comilla simple
'
(o apóstrofo) a continuación del nombre de la nota.
También podemos bajar la octava escribiendo una coma ,
a
continuación del nombre de la nota.
\relative { a' a, c' f, g g'' a,, f' }
Para subir o bajar una nota en dos (¡o más!) octavas, utilizamos
varias ''
ó ,,
(pero tenga cuidado de utilizar dos
comillas simples ''
¡y no una comilla doble
"
!)
[ << Tutorial ] | [Top][Contents][Index] | [ Notación corriente >> ] |
[ < Alturas ] | [ Up : Notación sencilla ] | [ Silencios > ] |
Duraciones (valores rítmicos)
Glosario musical: beam, duration, whole note, half note, quarter note, dotted note.
La duración de una nota se especifica mediante un
número después del nombre de la nota: 1
significa
redonda, 2
significa blanca, 4
significa negra y así sucesivamente. Las
barras de corchea se añaden automáticamente.
Si no especifica una duración, se utiliza la duración previa para la nota siguiente. La figura por omisión de la primera nota es una negra.
\relative { a'1 a2 a4 a8 a a16 a a a a32 a a a a64 a a a a a a a a2 }
Para crear notas con puntillo, añada un punto .
al número de la duración. La duración de una nota con puntillo se
debe especificar de forma explícita (es decir: mediante un
número).
\relative { a'4 a a4. a8 a8. a16 a a8. a8 a4. }
[ << Tutorial ] | [Top][Contents][Index] | [ Notación corriente >> ] |
[ < Duraciones (valores rítmicos) ] | [ Up : Notación sencilla ] | [ Indicación de compás > ] |
Silencios
Glosario musical: rest.
Un silencio se introduce igual que si fuera una nota
con el nombre r
:
\relative { a'4 r r2 r8 a r4 r4. r8 }
[ << Tutorial ] | [Top][Contents][Index] | [ Notación corriente >> ] |
[ < Silencios ] | [ Up : Notación sencilla ] | [ Indicaciones de tempo > ] |
Indicación de compás
Glosario musical: time signature.
La indicación de compás se puede establecer con la
orden \time
:
\relative { \time 3/4 a'4 a a \time 6/8 a4. a \time 4/4 a4 a a a }
[ << Tutorial ] | [Top][Contents][Index] | [ Notación corriente >> ] |
[ < Indicación de compás ] | [ Up : Notación sencilla ] | [ Clave > ] |
Indicaciones de tempo
Glosario musical: tempo indication, metronome.
La indicación de tempo y la indicación
metronómica pueden establecerse con la instrucción \tempo
:
\relative { \time 3/4 \tempo "Andante" a'4 a a \time 6/8 \tempo 4. = 96 a4. a \time 4/4 \tempo "Presto" 4 = 120 a4 a a a }
[ << Tutorial ] | [Top][Contents][Index] | [ Notación corriente >> ] |
[ < Indicaciones de tempo ] | [ Up : Notación sencilla ] | [ Todo junto > ] |
Clave
Glosario musical: clef.
La clave se puede establecer utilizando la orden
\clef
:
\relative { \clef "treble" c'1 \clef "alto" c1 \clef "tenor" c1 \clef "bass" c1 }
[ << Tutorial ] | [Top][Contents][Index] | [ Notación corriente >> ] |
[ < Clave ] | [ Up : Notación sencilla ] | [ Trabajar sobre los archivos de entrada > ] |
Todo junto
He aquí un pequeño ejemplo que muestra todos los elementos anteriores juntos:
\relative { \clef "bass" \time 3/4 \tempo "Andante" 4 = 120 c,2 e8 c' g'2. f4 e d c4 c, r }
Véase también
Referencia de la notación: Escritura de notas, Escritura de las duraciones (valores rítmicos), Escritura de silencios, Indicación de compás, Clave.
[ << Tutorial ] | [Top][Contents][Index] | [ Notación corriente >> ] |
[ < Todo junto ] | [ Up : Cómo escribir archivos de entrada ] | [ Tratar con los errores > ] |
2.2.2 Trabajar sobre los archivos de entrada
Los archivos de entrada de LilyPond son como los archivos fuente
de muchos lenguajes de programación corrientes. Contienen un
enunciado de versión, son sensibles a las mayúsculas y
generalmente los espacios se ignoran. Las expresiones se forman
con llaves { }
y los comentarios se denotan por un
signo de porcentaje (%
) o por %{ … %}
.
Si la frase anterior no tiene sentido para usted ¡no se preocupe! A continuación explicaremos el significado de todos estos términos:
- Enunciado de la versión: Todo archivo de LilyPond debe
contener un enunciado de versión. Un enunciado de versión es una
línea que describe la versión de LilyPond para la que se escribió
este archivo, como en el ejemplo siguiente:
\version "2.25.22"
Por convenio, el enunciado de versión se coloca al principio del archivo de LilyPond.
El enunciado de versión es importante por dos motivos como mínimo. En primer lugar, permite la actualización automática del código de entrada conforme se va modificando la sintaxis de LilyPond. En segundo lugar, indica la versión de LilyPond que se necesita para compilar el archivo.
Si no se escribe ningún enunciado de versión en el archivo de entrada, LilyPond imprime una advertencia durante la compilación del mismo.
- Sensible a las mayúsculas: tiene importancia el hecho de
que introduzca una letra en minúsculas (p.ej.
a, b, s, t
) o en mayúsculas (p.ej.A, B, S, T
). Las notas son minúsculas: ‘{ c d e }’ es una entrada válida; ‘{ C D E }’ produciría un mensaje de error. - Insensible al número de espacios: no importa cuántos
espacios (o saltos de línea o de tabulación) añada.
‘{ c4 d e }’ significa lo mismo que
‘{ c4 d e }’ y que
{ c4 d e }
Por supuesto, el ejemplo anterior es difícil de leer. Una regla práctica es sangrar los bloques de código con un carácter de tabulación, o bien con dos espacios:
{ c4 d e }
Sin embargo, sí se necesitan espacios para separar muchos elementos sintácticos unos de otros. En otras palabras, los espacios se pueden siempre añadir, pero no siempre eliminar. Dado que la falta de espacios puede dar lugar a extraños errores, recomendamos insertar espacios siempre antes y después de cualquier elemento sintáctico, por ejemplo, antes y después de las llaves.
- Expresiones: Todo fragmento de código de entrada para
LilyPond ha de llevar { llaves } antes y
después de la entrada. Estas llaves le dicen a LilyPond que la
entrada es una expresión musical unitaria, igual que los
paréntesis ‘()’ de las matemáticas. Las llaves deben ir
rodeadas de un espacio a no ser que se encuentren al comienzo o al
final de una línea, para evitar cualquier ambigüedad.
Una instrucción de LilyPond seguida de una expresión simple entre llaves (como por ejemplo ‘
\relative { … }
’) también es una expresión musical unitaria. -
Comentarios: Un comentario es una nota para el lector
humano de la entrada musical; se ignora cuando esta entrada se
analiza, de manera que no tiene ningún efecto sobre la salida
impresa. Existen dos tipos de comentarios. El símbolo de
porcentaje ‘%’ introduce un comentario de línea; todo lo que
se encuentra después de ‘%’ en esa línea se ignora. Por
convenio, una línea de comentario se coloca por encima del
código a que se refiere el comentario.
a4 a a a % este comentario se refiere a las notas Si b2 b
Un comentario de bloque marca una sección entera de entrada musical como comentario. Todo lo que está encerrado dentro de
%{
y%}
se ignora (pero los comentarios no pueden anidarse, lo que significa que un comentario de bloque no puede incluir otros comentarios de bloque). Si lo hiciera, el primer%}
daría por terminado los dos comentarios de bloque. El siguiente fragmento muestra algunos posibles usos para los comentarios:% a continuación van las notas de campanitas del lugar c4 c g' g a a g2 %{ Esta línea y las notas que aparecen más abajo se ignoran, por estar dentro de un comentario de bloque. f4 f e e d d c2 %}
[ << Tutorial ] | [Top][Contents][Index] | [ Notación corriente >> ] |
[ < Trabajar sobre los archivos de entrada ] | [ Up : Tutorial ] | [ Consejos generales de solución de problemas > ] |
2.3 Tratar con los errores
A veces, LilyPond no produce el resultado esperado. Esta sección aporta algunos enlaces para ayudarle a resolver los problemas que pudiera encontrar.
2.3.1 Consejos generales de solución de problemas | ||
2.3.2 Algunos errores comunes |
[ << Tutorial ] | [Top][Contents][Index] | [ Notación corriente >> ] |
[ < Tratar con los errores ] | [ Up : Tratar con los errores ] | [ Algunos errores comunes > ] |
2.3.1 Consejos generales de solución de problemas
La solución de problemas en LilyPond puede ser un desafío para las personas acostumbradas a los interfaces gráficos, porque es posible crear archivos de entrada inválidos. Cuando esto ocurre, la mejor forma de identificar y resolver el problema es aplicar un enfoque lógico. Se dan algunas guías para ayudarle a aprender a hacerlo, en Solución de problemas.
[ << Tutorial ] | [Top][Contents][Index] | [ Notación corriente >> ] |
[ < Consejos generales de solución de problemas ] | [ Up : Tratar con los errores ] | [ Cómo leer los manuales > ] |
2.3.2 Algunos errores comunes
Existen algunos errores comunes que son difíciles de solucionar si nos basamos solamente en los mensajes de error que se nos presentan. Éstos se describen en Errores comunes.
[ << Tutorial ] | [Top][Contents][Index] | [ Notación corriente >> ] |
[ < Algunos errores comunes ] | [ Up : Tutorial ] | [ Material omitido > ] |
2.4 Cómo leer los manuales
Esta sección muestra cómo leer la documentación de forma eficiente, y presenta algunas interesantes funcionalidades interactivas de la versión en línea.
2.4.1 Material omitido | ||
2.4.2 Ejemplos con enlace | ||
2.4.3 Panorámica de los manuales |
[ << Tutorial ] | [Top][Contents][Index] | [ Notación corriente >> ] |
[ < Cómo leer los manuales ] | [ Up : Cómo leer los manuales ] | [ Ejemplos con enlace > ] |
2.4.1 Material omitido
Como ya vimos en Trabajar sobre los archivos de entrada, el
código de entrada de LilyPond debe estar rodeado de llaves
{ }
o de ‘\relative { … }
’.
Durante el resto del presente manual, ciertos ejemplos breves
omitirán las llaves. Para reproducir estos ejemplos puede copiar
la entrada que se muestra, pero debe pegarla entre {
y
}
dentro del archivo de entrada.
{ …aquí va el ejemplo… }
Asimismo, recuerde que todo archivo de LilyPond debe llevar un
enunciado \version
. Dado que los ejemplos de los manuales
son fragmentos de código y no archivos completos, el enunciado
\version
se omite. De todas formas, debemos acostumbrarnos
a incluirlo en nuestros documentos.
[ << Tutorial ] | [Top][Contents][Index] | [ Notación corriente >> ] |
[ < Material omitido ] | [ Up : Cómo leer los manuales ] | [ Panorámica de los manuales > ] |
2.4.2 Ejemplos con enlace
Nota: Esta funcionalidad sólo está disponible en los manuales en HTML.
Muchas personas aprenden a utilizar programas probando y enredando con ellos. Esto también puede hacerse con LilyPond. Si hace clic sobre una imagen en la versión en HTML de este manual, podrá ver la entrada exacta de LilyPond que se utilizó para generar esa imagen. Pruébelo sobre esta imagen:
Cortando y pegando todo lo que se encuentra dentro de la sección “ly snippet” (fragmento de tipo ly), tendrá una plantilla inicial para sus experimentos. Para poder ver exactamente el mismo resultado (con igual anchura de línea y todo), copie todo lo que está desde “Start cut-&-pastable section” hasta el final del archivo.
[ << Tutorial ] | [Top][Contents][Index] | [ Notación corriente >> ] |
[ < Ejemplos con enlace ] | [ Up : Cómo leer los manuales ] | [ Notación corriente > ] |
2.4.3 Panorámica de los manuales
Existe abundantísima documentación sobre LilyPond. Con frecuencia, los nuevos usuarios se encuentran desorientados respecto a qué parte o partes deben leer, y ocasionalmente pasan por alto la lectura de partes de importancia vital.
Nota: Por favor: no se salte las partes importantes de la documentación. Le resultará mucho más difícil comprender las secciones subsiguientes.
- Antes de intentar hacer cualquier cosa: lea el Tutorial del manual de Aprendizaje, y la sección Notación corriente. Si encuentra términos musicales que no reconoce, búsquelos en el Glosario.
- Antes de tratar de escribir una pieza completa de música: lea la sección Conceptos fundamentales del manual de Aprendizaje. Después, le vendrá bien consultar las secciones correspondientes de la Referencia de la notación.
- Antes de tratar de modificar los resultados predeterminados: lea la sección Trucar la salida del manual de Aprendizaje.
- Antes de afrontar un proyecto grande: lea la sección Sugerencias para escribir archivos de entrada del manual de Utilización del programa.
[ << Tutorial ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Panorámica de los manuales ] | [ Up : Top ] | [ Notación en un solo pentagrama > ] |
3 Notación corriente
Este capítulo explica cómo crear hermosas partituras que contengan notación musical común, como continuación al material que está en el Tutorial.
3.1 Notación en un solo pentagrama | ||
3.2 Varias notas a la vez | ||
3.3 Canciones | ||
3.4 Retoques finales |
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Notación corriente ] | [ Up : Notación corriente ] | [ Líneas divisorias y comprobaciones de compás > ] |
3.1 Notación en un solo pentagrama
Esta sección presenta la notación común que se utiliza para música a una voz sobre un pentagrama único.
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Notación en un solo pentagrama ] | [ Up : Notación en un solo pentagrama ] | [ Líneas divisorias > ] |
3.1.1 Líneas divisorias y comprobaciones de compás
Líneas divisorias | ||
Comprobaciones de compás |
Líneas divisorias
Las líneas de compás sencillas se dibujan automáticamente en la
música, por lo que no hay que añadirlas de forma manual. Otros
tipos de barras de compás se añaden usando \bar
, por
ejemplo \bar "||"
para una doble barra, o \bar "|."
para la doble barra final. Para ver una lista completa de las
líneas divisorias, consulte Barras de compás.
\relative { g'1 e1 \bar "||" c2. c'4 \bar "|." }
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Líneas divisorias ] | [ Up : Líneas divisorias y comprobaciones de compás ] | [ Alturas y armaduras > ] |
Comprobaciones de compás
Aunque no es estrictamente necesario, es conveniente utilizar
comprobaciones de compás dentro del código de entrada para
indicar dónde se supone que van las líneas divisorias. Se
introducen mediante el carácter de barra vertical, |
(AltGr
- 1 en el teclado español). Con las comprobaciones de compás, el
programa puede verificar que hemos introducido las duraciones que
completan los compases correctamente. Las comprobaciones de
compás también hacen que el código de entrada sea más fácil de
leer, porque ayudan a organizar el material.
\relative { g'1 | e1 | c2. c' | g4 c g e | c4 r r2 | }
Si compila el código del ejemplo anterior, verá una advertencia en la salida de la consola:
advertencia: la comprobación de compás ha fallado en: 1/2 g'1 | e1 | c2. c' | g4 c g e | c4 r r2 |
Aunque la duración que falta está clara en la salida musical de
este ejemplo sencillo, la advertencia de la salida de consola es
mucho más efectiva al atraer la atención concretamente al 4
que falta en el compás 3.
Véase también
Referencia de la notación: Comprobación de compás y de número de compás.
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Comprobaciones de compás ] | [ Up : Notación en un solo pentagrama ] | [ Alteraciones accidentales > ] |
3.1.2 Alturas y armaduras
Alteraciones accidentales | ||
Armaduras | ||
Advertencia: armaduras y alturas |
Nota: Con frecuencia, a los nuevos usuarios les cuesta comprender cómo usa LilyPond la armadura: le rogamos que lea la advertencia que aparece al final de esta sección.
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Alturas y armaduras ] | [ Up : Alturas y armaduras ] | [ Armaduras > ] |
Alteraciones accidentales
Glosario musical: sharp, flat, double sharp, double flat, accidental.
En LilyPond, los nombres de las notas identifican alturas. Por
ejemplo, c
siempre significa Do natural, cualquiera que sea
la armadura.
En muchos idiomas, el nombre de una nota consiste en un nombre
base que se refiere a los escalones diatónicos de la escala de Do
mayor / la menor, p.ej. d
, y un sufijo, que indica la
alteración de esta altura básica. El idioma
predeterminado para los nombres de nota es el holandés
(Dutch). Una nota con sostenido se hace añadiendo
is
al nombre, y una nota bemol añadiendo
es
. Como ha podido adivinar, un doble sostenido
o doble bemol se hace añadiendo isis
o
eses
. Esta sintaxis se deriva de las convenciones de
nomenclatura de las notas en las lenguas nórdicas y germánicas
como el alemán y el holandés. Para utilizar otras nomenclaturas
para las notas, véase Nombres de las notas en otros
idiomas.
\relative { cis''4 ees fisis, aeses }
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Alteraciones accidentales ] | [ Up : Alturas y armaduras ] | [ Advertencia: armaduras y alturas > ] |
Armaduras
Glosario musical: key signature, major, minor.
La armadura de la tonalidad se establece mediante la
instrucción \key
seguido de una nota y \major
o
\minor
.
\relative { \key d \major d'4 fis a c | \bar "||" \key c \minor c,4 ees g b | }
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Armaduras ] | [ Up : Alturas y armaduras ] | [ Ligaduras de unión y de expresión > ] |
Advertencia: armaduras y alturas
Glosario musical: accidental, key signature, pitch, flat, natural, sharp, transposition, Pitch names.
LilyPond distingue entre el contenido musical y su representación
impresa. Una entrada como d4 e fis2
define las alturas y
duraciones de las notas, lo que es el contenido musical. La
armadura forma parte de la representación impresa. La
armadura también establece reglas para las representaciones
impresas de las notas. LilyPond compara la altura de cada nota de
la entrada con la armadura para determinar si imprimir, o no, una
alteración accidental.
La instrucción \key
fija la armadura, que afecta
a la representación impresa, pero no modifica la altura
asignada a una nota cualquiera como c
a partir de la
entrada.
En el siguiente ejemplo:
\relative { \key d \major cis''4 d e fis }
Ninguna nota lleva una alteración impresa, pero de todas formas
usted debe escribir el is
a cis
y a fis
en el
archivo de entrada.
El texto b
no significa “imprimir una bolita negra en la
tercera línea del pentagrama.” Más bien significa: “hay una
nota Si natural.” En la tonalidad de La bemol mayor, lleva
una alteración accidental:
\relative { \key aes \major aes'4 c b c }
Cada vez que escriba una nota correspondiente a una tecla negra
del piano, tiene que añadir -is
ó -es
al nombre de la nota
Poner todas las alteraciones de forma explícita puede que requiera algo más de trabajo al teclear, pero la ventaja es que la transposición es más fácil, y las alteraciones se pueden imprimir siguiendo varias convenciones distintas. Consulte Alteraciones accidentales automáticas para ver ejemplos de cómo se pueden imprimir las alteraciones de acuerdo a reglas diferentes.
Véase también
Referencia de la notación: Nombres de las notas en otros idiomas, Alteraciones accidentales, Alteraciones accidentales automáticas, Armadura de la tonalidad.
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Advertencia: armaduras y alturas ] | [ Up : Notación en un solo pentagrama ] | [ Ligaduras de unión > ] |
3.1.3 Ligaduras de unión y de expresión
Ligaduras de unión | ||
Ligaduras de expresión | ||
Ligaduras de fraseo | ||
Advertencias: ligaduras de expresión frente a ligaduras de unión |
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Ligaduras de unión y de expresión ] | [ Up : Ligaduras de unión y de expresión ] | [ Ligaduras de expresión > ] |
Ligaduras de unión
Glosario musical: tie.
Una ligadura de unión se crea adjuntando un carácter de
tilde curva ~
a la primera de las dos notas ligadas:
\relative { g'4~ g c2~ | c4~ c8 a~ a2 | }
Cuando la altura no cambia, como es el caso cada vez que hay una ligadura de unión, las alturas que siguen se pueden omitir, y especificar tan solo las duraciones:
\relative { g'4~ 4 c2~ | 4~ 8 a~ 2 | }
Esta abreviatura puede ser de utilidad en otros lugares donde las
duraciones cambian pero la altura se mantiene fija; sin embargo,
recuerde que una altura aislada seguida de un espacio y de una
duración aislada se interpreta como una sola nota. En otras
palabras, c4 a 8 8
se interpreta como c4 a8 a8
, no
como c4 a4 a8 a8
. En vez de ello, escriba c4 a4 8 8
.
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Ligaduras de unión ] | [ Up : Ligaduras de unión y de expresión ] | [ Ligaduras de fraseo > ] |
Ligaduras de expresión
Glosario musical: slur.
Una ligadura de expresión es una curva que se traza
abarcando varias notas. Las notas inicial y final se marcan
mediante (
y )
respectivamente. Observe que el
paréntesis de apertura (
se escribe después de la primera
nota de la ligadura.
\relative { d''4( c16) cis( d e c cis d) e( d4) }
Ligaduras de fraseo
Glosario musical: slur, phrasing.
Las ligaduras que se utilizan para indicar fraseos más
largos se pueden introducir mediante \(
y \)
. Puede
haber al mismo tiempo ligaduras de legato y ligaduras de fraseo.
\relative { g'4\( g8( a) b( c) b4\) }
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Ligaduras de fraseo ] | [ Up : Ligaduras de unión y de expresión ] | [ Articulaciones y matices dinámicos > ] |
Advertencias: ligaduras de expresión frente a ligaduras de unión
Glosario musical: articulation, slur, tie.
Una ligadura de expresión parece una ligadura de unión, pero tiene un significado distinto. Una ligadura (de unión) sencillamente hace que la primera nota sea más larga, y sólo se puede utilizar sobre parejas de notas iguales. Las ligaduras de expresión indican la articulación de las notas, y se pueden utilizar sobre grupos mayores de notas. Las ligaduras de unión y de expresión se pueden anidar unas dentro de otras.
\relative { c''4(~ c8 d~ 4 e) }
Véase también
Referencia de la notación: Ligaduras de unión, Ligaduras de expresión, Ligaduras de fraseo.
3.1.4 Articulaciones y matices dinámicos
Las articulaciones y los matices dinámicos se indican escribiendo ciertos símbolos después de las notas a las que aquellos se aplican.
Articulaciones | ||
Indicaciones de digitación | ||
Matices dinámicos |
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Articulaciones y matices dinámicos ] | [ Up : Articulaciones y matices dinámicos ] | [ Indicaciones de digitación > ] |
Articulaciones
Glosario musical: articulation.
Las articulaciones más corrientes se pueden añadir a
las notas utilizando un guión -
seguido de un carácter
único:
\relative { c''4-^ c-+ c-- c-! c4-> c-. c2-_ }
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Articulaciones ] | [ Up : Articulaciones y matices dinámicos ] | [ Matices dinámicos > ] |
Indicaciones de digitación
Glosario musical: fingering.
De manera similar, las digitaciones se pueden añadir a
una nota utilizando un guión (-
) seguido del dígito
deseado:
\relative { c''4-3 e-5 b-2 a-1 }
Las articulaciones y digitaciones normalmente se colocan de forma
automática, pero puede especificar una dirección mediante ^
(encima) o _
(debajo). También puede usar varias
articulaciones sobre la misma nota. Sin embargo, casi siempre es
mejor dejar que LilyPond determine la dirección de las
articulaciones.
\relative { c''4_-^1 d^. f^4_2-> e^-_+ }
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Indicaciones de digitación ] | [ Up : Articulaciones y matices dinámicos ] | [ Añadir texto > ] |
Matices dinámicos
Glosario musical: dynamics, crescendo, decrescendo.
Las expresiones de matiz o signos dinámicos se hacen añadiendo las marcas (con una barra invertida) a la nota:
\relative { c''4\ff c\mf c\p c\pp }
Los crescendi y decrescendi comienzan con
las órdenes \<
y \>
. La siguiente indicación de
matiz, como por ejemplo \f
, dará por terminado el
(de)crescendo, o bien se puede usar la instrucción \!
:
\relative { c''4\< c\ff\> c c\! }
Véase también
Referencia de la notación: Articulaciones y ornamentos, Indicaciones de digitación, Matices dinámicos.
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Matices dinámicos ] | [ Up : Notación en un solo pentagrama ] | [ Barras automáticas y manuales > ] |
3.1.5 Añadir texto
Es posible añadir texto a la partitura:
c''2^"espr" a'_"legato"
Se puede aplicar un formateo adicional mediante la instrucción
\markup
:
c''2^\markup { \bold espr } a'2_\markup { \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p }
Véase también
Referencia de la notación: Escritura del texto.
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Añadir texto ] | [ Up : Notación en un solo pentagrama ] | [ Instrucciones rítmicas avanzadas > ] |
3.1.6 Barras automáticas y manuales
Glosario musical: beam.
Todas las barras de las figuras se dibujan automáticamente:
\relative { a'8 ais d ees r d c16 b a8 }
Si no le gustan las barras automáticas, pueden forzarse
manualmente. Marque la primera nota que comprende la barra con
[
y la última con ]
. Observe que el corchete de
apertura [
se escribe después de la primera nota que está
unida por la barra.
\relative { a'8[ ais] d[ ees r d] c16 b a8 }
Si quiere desactivar completamente el barrado automático o para
una sección extensa de música, utilice la instrucción
\autoBeamOff
para apagarlo y \autoBeamOn
para
activarlo de nuevo.
\relative { \autoBeamOff a'8 c b4 d8. c16 b4 | \autoBeamOn a8 c b4 d8. c16 b4 | }
Véase también
Referencia de la notación: Barras automáticas, Barras manuales.
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Barras automáticas y manuales ] | [ Up : Notación en un solo pentagrama ] | [ Compás parcial > ] |
3.1.7 Instrucciones rítmicas avanzadas
Compás parcial | ||
Grupos especiales | ||
Notas de adorno |
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Instrucciones rítmicas avanzadas ] | [ Up : Instrucciones rítmicas avanzadas ] | [ Grupos especiales > ] |
Compás parcial
Glosario musical: anacrusis.
Una anacrusa se introduce con la palabra clave
\partial
. Va seguida de una duración: \partial 4
es
una anacrusa de negra y \partial 8
de corchea.
\relative { \partial 8 f''8 | c2 d | }
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Compás parcial ] | [ Up : Instrucciones rítmicas avanzadas ] | [ Notas de adorno > ] |
Grupos especiales
Glosario musical: note value, triplet.
Los grupos especiales como los tresillos se hacen con la palabra
clave \tuplet
. Requiere dos argumentos: una fracción y un
fragmento de música. La fracción es el número de notas del grupo
partido por el número de notas que normalmente ocupan la misma
duración. Para los tresillos hay tres notas en el espacio de dos,
de manera que los tresillos tienen una fracción de 3/2.
\relative { \tuplet 3/2 { f''8 g a } \tuplet 3/2 { c8 r c } \tuplet 3/2 { f,8 g16[ a g a] } \tuplet 3/2 { d4 a8 } }
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Grupos especiales ] | [ Up : Instrucciones rítmicas avanzadas ] | [ Varias notas a la vez > ] |
Notas de adorno
Glosario musical: grace notes, acciaccatura, appoggiatura.
Las notas de adorno se crean con la instrucción
\grace
, aunque también se pueden conseguir precediendo una
expresión musical por la palabra clave \appoggiatura
o
\acciaccatura
\relative { c''2 \grace { a32 b } c2 | c2 \appoggiatura b16 c2 | c2 \acciaccatura b16 c2 | }
Véase también
Referencia de la notación: Notas de adorno, Grupos especiales, Anacrusas.
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Notas de adorno ] | [ Up : Notación corriente ] | [ Explicación de las expresiones musicales > ] |
3.2 Varias notas a la vez
Esta sección es una introducción a las notas simultáneas: varios instrumentos, varios pentagramas para un solo instrumento (p.ej. piano) y acordes.
La palabra “polifonía” en música hace referencia al hecho de tener más de una voz en un momento determinado dentro de una pieza musical. La palabra “polifonía” en LilyPond se refiere al hecho de tener más de una voz en el mismo pentagrama.
3.2.1 Explicación de las expresiones musicales | ||
3.2.2 Varios pentagramas | ||
3.2.3 Grupos de pentagramas | ||
3.2.4 Combinar notas para formar acordes | ||
3.2.5 Polifonía en un solo pentagrama |
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Varias notas a la vez ] | [ Up : Varias notas a la vez ] | [ Analogía: expresiones matemáticas > ] |
3.2.1 Explicación de las expresiones musicales
Analogía: expresiones matemáticas | ||
Expresiones musicales simultáneas: varios pentagramas | ||
Expresiones musicales simultáneas: un solo pentagrama |
En los archivos de entrada de LilyPond, la música se representa mediante expresiones musicales. Una sola nota es una expresión musical:
a'4
Al encerrar un grupo de notas dentro de llaves creamos una expresión musical compuesta. Aquí hemos creado una expresión musical compuesta con dos notas:
\relative { a'4 g4 }
Si colocamos un grupo de expresiones musicales (p.ej.: notas) dentro de llaves, eso significa que se encuentran en secuencia (es decir, cada una sigue a la anterior). El resultado es otra expresión musical:
\relative { { a'4 g } f4 g }
Analogía: expresiones matemáticas
Este mecanismo es semejante a las fórmulas matemáticas: una fórmula grande se construye combinando fórmulas pequeñas. Dichas fórmulas se llaman expresiones, y su definición es recursiva de tal forma que se pueden construir expresiones de un tamaño y complejidad arbitrarios. Por ejemplo:
1 1 + 2 (1 + 2) * 3 ((1 + 2) * 3) / (4 * 5)
Ésta es una secuencia de expresiones donde cada expresión se encuentra
contenida dentro de la siguiente, más grande. Las expresiones más
simples son números, y las mayores se hacen combinando expresiones
mediante operadores (como +
, *
y /
) y paréntesis.
Del mismo modo que las expresiones matemáticas, las expresiones
musicales se pueden anidar a una profundidad arbitraria, lo que se
hace necesario para músicas complejas como las partituras polifónicas.
Expresiones musicales simultáneas: varios pentagramas
Glosario musical: polyphony.
Esta técnica es muy útil para la música polifónica.
Para introducir música con más voces o con más pentagramas, lo que
hacemos es combinar varias expresiones en paralelo. Para indicar
que dos voces se deben interpretar al mismo tiempo, sencillamente
introduzca una combinación simultánea de expresiones musicales.
Una expresión musical ‘simultánea’ se forma encerrando las
expresiones dentro de <<
y >>
. En el ejemplo que
sigue, tres secuencias (cada una de las cuales contiene dos notas
diferentes) se combinan de forma simultánea:
<< \relative { a'2 g } \relative { f'2 e } \relative { d'2 b } >>
Tenga en cuenta que hemos sangrado cada nivel jerárquico de la entrada con un margen distinto. A LilyPond no le importa cuánto (o cuán poco) espacio haya al comienzo de una línea, pero el establecimiento de márgenes distintos dentro del código de LilyPond, de esta forma, lo hace mucho más fácil de leer por nosotros los seres humanos.
Nota: Cada nota se entiende relativa a la nota anterior de la
entrada, solamente la primera es relativa a la c''
dentro
de la instrucción inicial \relative
.
Expresiones musicales simultáneas: un solo pentagrama
Para determinar el número de pentagramas en una pieza, LilyPond examina el comienzo de la primera expresión. Si hay una sola nota, hay un solo pentagrama; si hay una expresión simultánea, hay más de un pentagrama. El siguiente ejemplo presenta una expresión compleja, pero dado que comienza con una sola nota, se dispone sobre un solo pentagrama.
\relative { c''2 <<c e>> | << { e2 f } { c2 <<b d>> } >> | }
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Expresiones musicales simultáneas: un solo pentagrama ] | [ Up : Varias notas a la vez ] | [ Grupos de pentagramas > ] |
3.2.2 Varios pentagramas
Como ya hemos visto en Explicación de las expresiones musicales, los archivos de entrada para LilyPond se construyen a base de expresiones musicales. Si la partitura comienza con expresiones musicales simultáneas, LilyPond crea varios pentagramas. Sin embargo es más fácil ver lo que ocurre si creamos cada uno de los pentagramas de forma explícita.
Para imprimir más de un pentagrama, cada fragmento de música que
constituye un pentagrama se marca escribiendo \new Staff
antes de él. Estos elementos Staff
se combinan después en
paralelo con <<
y >>
:
<< \new Staff { \clef "treble" c''4 } \new Staff { \clef "bass" c4 } >>
La instrucción \new
inaugura un ‘contexto de notación’.
Un contexto de notación es un entorno dentro del que se
interpretan los acontecimientos musicales (como las notas o las
instrucciones \clef
). Para piezas sencillas, tales
contextos de notación se crean automáticamente. Para piezas más
complicadas, es mejor marcar los contextos de forma explícita.
Existen varias clases de contextos. Score
, Staff
y
Voice
manejan la notación melódica, mientras que
Lyrics
se ocupa de los textos cantados y ChordNames
imprime los nombres de los acordes.
En términos de sintaxis, la anteposición de \new
a una
expresión musical crea una expresión musical mayor. Es semejante
al signo menos de las matemáticas. La fórmula (4+5) es una
expresión, por tanto -(4+5) es una expresión más amplia.
Las indicaciones de compás escritas en un pentagrama afectan al resto de ellos, de forma predeterminada. En cambio, la armadura de la tonalidad de un pentagrama no afecta a los otros pentagramas. Este comportamiento predeterminado diferente es a causa de que las partituras con instrumentos transpositores son más comunes que las partituras polirrítmicas.
<< \new Staff { \clef "treble" \key d \major \time 3/4 c''4 } \new Staff { \clef "bass" c4 } >>
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Varios pentagramas ] | [ Up : Varias notas a la vez ] | [ Combinar notas para formar acordes > ] |
3.2.3 Grupos de pentagramas
Glosario musical: brace, staff, system.
La música para piano se compone tipográficamente en forma de dos
pentagramas unidos mediante una llave. El aspecto impreso
de este sistema de pentagramas se parece al ejemplo polifónico que
aparece en Varios pentagramas, pero en esta ocasión la expresión
completa se coloca dentro de un PianoStaff
:
\new PianoStaff << \new Staff … \new Staff … >>
He aquí un pequeño ejemplo:
\new PianoStaff << \new Staff \relative { \time 2/4 c''4 e | g g, | } \new Staff \relative { \clef "bass" c4 c' | e c | } >>
Otros grupos de pentagramas se declaran mediante \new
GrandStaff
, que es apropiado para partituras orquestales, y
\new ChoirStaff
, que es apropiado para partituras vocales.
Cada uno de estos grupos de pautas forma un tipo de contexto
distinto, que produce la llave a la izquierda y que también
controla el alcance de las líneas divisorias.
Véase también
Referencia de la notación: Teclados y otros instrumentos de varios pentagramas, Impresión de los pentagramas.
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Grupos de pentagramas ] | [ Up : Varias notas a la vez ] | [ Polifonía en un solo pentagrama > ] |
3.2.4 Combinar notas para formar acordes
Glosario musical: chord.
Hemos visto con anterioridad cómo se pueden combinar las notas formando acordes que indican que son simultáneas, encerrándolas entre dobles ángulos. Sin embargo, la forma normal de indicar un acorde es encerrar las notas entre ángulos sencillos. Observe que todas las notas de un acorde deben tener la misma duración, y que la duración se escribe después del ángulo de cierre.
\relative { r4 <c'' e g> <c f a>2 }
Debemos pensar en los acordes como algo casi equivalente a las notas sencillas: casi todo lo que se puede adjuntar a una nota se puede adjuntar también a un acorde, y todo debe ir por fuera de los ángulos. Por ejemplo, puede combinar marcas como barras y ligaduras, con acordes. Tan sólo debe recordar que se escriben por fuera de los ángulos.
\relative { r4 <c'' e g>~ <c f a>2 | <c e g>8[ <c f a> <c e g> <c f a>] <c e g>8\>[ <c f a> <c f a> <c e g>]\! | r4 <c e g>8.\p <c f a>16( <c e g>4-. <c f a>) | }
Véase también
Referencia de la notación: Notas en acorde.
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Combinar notas para formar acordes ] | [ Up : Varias notas a la vez ] | [ Canciones > ] |
3.2.5 Polifonía en un solo pentagrama
La música polifónica en LilyPond, aunque no es difícil, utiliza conceptos que aún no hemos tratado, por lo que no vamos a presentarlos en este momento. En su lugar, las secciones siguientes presentan estos conceptos y los explican en profundidad.
Véase también
Manual de aprendizaje: Las voces contienen música.
Referencia de la notación: Notas simultáneas.
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Polifonía en un solo pentagrama ] | [ Up : Notación corriente ] | [ Elaborar canciones sencillas > ] |
3.3 Canciones
En esta sección presentamos cómo elaborar música vocal y hojas de canción sencillas.
3.3.1 Elaborar canciones sencillas | ||
3.3.2 Alineación de la letra a una melodía | ||
3.3.3 Letra en varios pentagramas |
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Canciones ] | [ Up : Canciones ] | [ Alineación de la letra a una melodía > ] |
3.3.1 Elaborar canciones sencillas
Glosario musical: lyrics.
Presentamos a continuación el inicio de la melodía de una canción infantil, “Girls and boys come out to play”:
\relative { \key g \major \time 6/8 d''4 b8 c4 a8 | d4 b8 g4 }
La letra se puede asignar a esas notas, combinando
ambas con la palabra clave \addlyrics
. La letra se escribe
separando cada sílaba mediante un espacio.
<< \relative { \key g \major \time 6/8 d''4 b8 c4 a8 | d4 b8 g4 } \addlyrics { Girls and boys come out to play, } >>
Observe los ángulos dobles <<…>>
alrededor del
fragmento entero para expresar que la música y la letra han de
suceder al mismo tiempo.
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Elaborar canciones sencillas ] | [ Up : Canciones ] | [ Letra en varios pentagramas > ] |
3.3.2 Alineación de la letra a una melodía
Glosario musical: melisma, extender line.
La siguiente línea de la canción infantil es The moon doth shine as bright as day. A continuación vamos a ampliarla:
<< \relative { \key g \major \time 6/8 d''4 b8 c4 a8 | d4 b8 g4 g8 | a4 b8 c b a | d4 b8 g4. | } \addlyrics { Girls and boys come out to play, The moon doth shine as bright as day; } >>
Si miramos la música, podemos observar que la letra adicional no se alinea correctamente con las notas. La palabra ‘shine’ se debe cantar sobre dos notas, no una. Esto se conoce como melisma, una sílaba única que se canta sobre más de una nota. Existen varias formas de hacer que una sílaba recaiga sobre varias notas, siendo la más sencilla escribir una ligadura de expresión sobre ellas (véase Ligaduras de unión y de expresión):
<< \relative { \key g \major \time 6/8 d''4 b8 c4 a8 | d4 b8 g4 g8 | a4 b8 c( b) a | d4 b8 g4. | } \addlyrics { Girls and boys come out to play, The moon doth shine as bright as day; } >>
Ahora la letra se alinea correctamente con las notas, pero el barrado automático de las notas que corresponden a shine as no parece correcto. Podemos remediarlo insertando instrucciones de barrado manual para sobreescribir el barrado automático; para ver más detalles consulte Barras automáticas y manuales.
<< \relative { \key g \major \time 6/8 d''4 b8 c4 a8 | d4 b8 g4 g8 | a4 b8 c([ b]) a | d4 b8 g4. | } \addlyrics { Girls and boys come out to play, The moon doth shine as bright as day; } >>
Como alternativa a la utilización de ligaduras de expresión, los
melismas se pueden indicar solamente en la letra utilizando un guión
bajo, _
, para cada nota que queremos incluir dentro del
melisma:
<< \relative { \key g \major \time 6/8 d''4 b8 c4 a8 | d4 b8 g4 g8 | a4 b8 c[ b] a | d4 b8 g4. | } \addlyrics { Girls and boys come out to play, The moon doth shine _ as bright as day; } >>
Si una sílaba se extiende sobre varias notas o una sola nota muy
larga, normalmente se traza una línea extensora desde
la sílaba que se extiende y por debajo de todas las notas que
corresponden a dicha sílaba. Se escribe como dos guiones bajos
__
. He aquí un ejemplo extraído de los primeros tres
compases del Lamento de Dido, de Dido y
Eneas de Purcell:
<< \relative { \key g \minor \time 3/2 g'2 a bes | bes2( a) b2 | c4.( bes8 a4. g8 fis4.) g8 | fis1 } \addlyrics { When I am laid, am laid __ in earth, } >>
Hasta el momento, ninguno de los ejemplos implicaban palabras que tuviesen más de una sílaba. Estas palabras se reparten por lo general a razón de una nota por cada sílaba, con guiones cortos entre las sílabas. Dichos guiones separadores se teclean como dos guiones, con el resultado de un guión corto centrado entre las sílabas. Presentamos a continuación un ejemplo que demuestra esto y todo lo que hemos aprendido hasta el momento acerca de la alineación de la letra a las notas.
<< \relative { \key g \major \time 3/4 \partial 4 d'4 | g4 g a8( b) | g4 g b8( c) | d4 d e | c2 } \addlyrics { A -- way in a __ man -- ger, no __ crib for a bed, } >>
Algunos textos (especialmente los que están en italiano o en español)
requieren lo contrario: colocar más de una sílaba a una única nota.
Esto se consigue enlazando las sílabas entre sí mediante un guión bajo
simple _
(sin ningún espacio), o bien encerrándolas entre
corchetes. Aquí aparece un ejemplo procedente del Barbero
de Sevilla de Rossini, donde la sílaba al se canta sobre
la misma nota que la sílaba go de la palabra ‘Largo’ en
el aria de Fígaro Largo al factotum:
<< \relative { \clef "bass" \key c \major \time 6/8 c'4.~ 8 d b | c8([ d]) b c d b | c8 } \addlyrics { Lar -- go_al fac -- to -- tum del -- la cit -- tà } >>
Véase también
Referencia de la notación: Música vocal.
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Alineación de la letra a una melodía ] | [ Up : Canciones ] | [ Retoques finales > ] |
3.3.3 Letra en varios pentagramas
La solución sencilla que utiliza \addlyrics
se puede usar para
poner letra a más de un pentagrama. Aquí aparece un ejemplo sacado
del Judas Macabeo de Haendel:
<< \relative { \key f \major \time 6/8 \partial 8 c''8 | c8([ bes]) a a([ g]) f | f'4. b, | c4.~ 4 } \addlyrics { Let flee -- cy flocks the hills a -- dorn, __ } \relative { \key f \major \time 6/8 \partial 8 r8 | r4. r4 c'8 | a'8([ g]) f f([ e]) d | e8([ d]) c bes'4 } \addlyrics { Let flee -- cy flocks the hills a -- dorn, } >>
Cualquier partitura de una complejidad mayor que la de este sencillo ejemplo se hace mejor separando la letra de la estructura de pentagramas mediante variables (expresiones con nombre). Éstas se tratan en Organizar las piezas mediante variables.
Véase también
Referencia de la notación: Música vocal.
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Letra en varios pentagramas ] | [ Up : Notación corriente ] | [ Organizar las piezas mediante variables > ] |
3.4 Retoques finales
Éste es el último apartado del tutorial; muestra la forma de dar los toques finales a piezas sencillas, y ofrece una introducción al resto del manual.
3.4.1 Organizar las piezas mediante variables | ||
3.4.2 Añadir títulos | ||
3.4.3 Nombres de nota absolutos | ||
3.4.4 Más allá del tutorial |
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Retoques finales ] | [ Up : Retoques finales ] | [ Añadir títulos > ] |
3.4.1 Organizar las piezas mediante variables
Cuando los elementos que hemos discutido anteriormente se combinan para producir archivos mayores, las expresiones musicales se hacen enormes. En música polifónica con muchos pentagramas, los archivos de entrada pueden volverse muy propensos a la confusión. Podemos reducir esta confusión utilizando las variables.
Con las variables (también conocidas como identificadores o macros), podemos trocear las expresiones musicales complejas. Una variable se asigna de la manera siguiente:
musicaConNombre = { … }
El contenido de la expresión musical musicaConNombre
se
puede usar posteriormente colocando una barra invertida delante
del nombre (\musicaConNombre
, igual que una orden normal de
LilyPond).
violin = \new Staff { \relative { a'4 b c b } } cello = \new Staff { \relative { \clef "bass" e2 d } } { << \violin \cello >> }
Por convención, los nombres de variable consisten enteramente en caracteres alfabéticos. Para ver información detallada, consulte Estructura del archivo.
Las variables se deben definir antes de la expresión musical principal, pero se pueden usar tantas veces como se quiera, en cualquier lugar, una vez que han sido definidas. Incluso se pueden usar dentro de la definición de otra variable, proporcionando una vía para acortar el código si una sección musical se repite muchas veces.
tresilloA = \relative { \tuplet 3/2 { c'8 e g } } compasA = { \tresilloA \tresilloA \tresilloA \tresilloA } { \compasA \compasA }
Las variables se pueden usar para otros muchos tipos de objetos dentro del código de entrada. Por ejemplo,
miAncho = 4.5\cm % número pasado a una variable de \paper (unidades: milímetros) miNombre = "Wendy" % cadena pasada a un elemento de marcado papelAcinco = \paper { #(set-paper-size "a5") }
Dependiendo de su contenido, la variable se puede usar en distintos lugares. El siguiente ejemplo utiliza las variables anteriores:
\paper { \papelAcinco line-width = \miAncho } { c4^\miNombre }
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Organizar las piezas mediante variables ] | [ Up : Retoques finales ] | [ Nombres de nota absolutos > ] |
3.4.2 Añadir títulos
La información sobre el título, autor, número de Opus y similares
se escriben en el bloque \header
. Éste se encuentra fuera
de la expresión musical principal; el bloque \header
normalmente se sitúa por debajo del número de versión.
\version "2.25.22" \header { title = "Sinfonía" composer = "Yo" opus = "Op. 9" } { … música … }
Cuando se procesa el archivo, el título y el autor se imprimen por encima de la música. Puede obtener más información sobre los títulos en Crear títulos encabezamientos y pies de página.
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Añadir títulos ] | [ Up : Retoques finales ] | [ Más allá del tutorial > ] |
3.4.3 Nombres de nota absolutos
Hasta el momento hemos utilizado \relative
para definir las
alturas. Ésta es normalmente la forma más rápida de escribir la
mayor parte de la música. Sin \relative
, las alturas se
interpretan en modo absoluto.
En este modo, LilyPond tratará todas las alturas como valores
absolutos. Una c'
significará siembre un Do central,
una b
significará siempre la nota inmediatamente por debajo
del Do central, y una g,
significará siempre la nota
que se coloca en la primera línea del pentagrama en clave de Fa.
{ \clef "bass" c'4 b g, g, | g,4 f, f c' | }
La escritura de una melodía en clave de Sol implica un gran número
de apóstrofos ('
). Considere este fragmento de Mozart:
{ \key a \major \time 6/8 cis''8. d''16 cis''8 e''4 e''8 | b'8. cis''16 b'8 d''4 d''8 | }
Las marcas de octava que son comunes se pueden indicar una sola
vez, utilizando la instrucción \fixed
seguida de una altura
de referencia:
\fixed c'' { \key a \major \time 6/8 cis8. d16 cis8 e4 e8 | b,8. cis16 b,8 d4 d8 | }
Con \relative
, el ejemplo anterior no requiere marcas de
cambio de octava porque esta melodía se mueve por intervalos no
mayores de una cuarta, o tres posiciones dentro del pentagrama:
\relative { \key a \major \time 6/8 cis''8. d16 cis8 e4 e8 | b8. cis16 b8 d4 d8 | }
Si comete un error con una marca de octava ('
o ,
)
mientras trabaja en el modo \relative
, será muy obvio
(muchas notas estarán en la octava equivocada). Mientras trabaja
en el modo absoluto, un solo fallo no será tan visible, y tampoco
será tan fácil de localizar.
Sin embargo, el modo absoluto es útil para escribir música que contenga intervalos grandes, y será extremadamente útil para hacer archivos de LilyPond generados por ordenador. Cuando se copian y pegan fragmentos melódicos, el modo absoluto preserva la octava del material original.
A veces la música se dispone de formas más complejas. Si está
usando \relative
dentro de \relative
, las secciones
relativas externa e interna son independientes:
\relative { c'4 \relative { f'' g } c }
Para usar el modo absoluto dentro de \relative
, ponga la
música absoluta dentro de \fixed c { … }
y las
notas absolutas no afectarán a las octavas de la música relativa:
\relative { c'4 \fixed c { f'' g'' } c | c4 \fixed c'' { f g } c }
[ << Notación corriente ] | [Top][Contents][Index] | [ Conceptos fundamentales >> ] |
[ < Nombres de nota absolutos ] | [ Up : Retoques finales ] | [ Conceptos fundamentales > ] |
3.4.4 Más allá del tutorial
Después de terminar el tutorial, quizá debería probar a escribir una o dos piezas. Comience con una de las plantillas que aparecen en Plantillas y añada algunas notas. Si necesita un tipo de notación que no ha sido tratada en el tutorial, eche un vistazo a la Referencia de Notación, empezando por Notación musical. Si quiere escribir música para un conjunto instrumental que no está cubierto por ninguna plantilla, consulte Extender las plantillas.
Una vez que ha escrito algunas piezas cortas, lea el resto del Manual de aprendizaje (capítulos 3 al 5). ¡Por supuesto, no pasa nada por leerlo ahora mismo! Sin embargo, el resto del Manual de Aprendizaje da por sentado que está familiarizado con la entrada de LilyPond. Puede saltarse estos capítulos ahora y volver a ellos cuando haya adquirido más experiencia.
En este tutorial y en el resto del Manual de aprendizaje, existe un apartado Véase también al final de cada una de las secciones, que contiene referencias cruzadas a otras secciones: no siga estas referencias durante la primera lectura; cuando haya leído el Manual de aprendizaje completo, quizá desee releer ciertas secciones y seguir las referencias cruzadas para obtener más información.
Si no lo ha hecho aún, le rogamos que lea Panorámica de los manuales. Existe una gran cantidad de información sobre LilyPond, de manera que los recién llegados con frecuencia no saben exactamente dónde deben buscar la ayuda. Si emplea cinco minutos en leer cuidadosamente esta sección ¡se ahorrará horas de frustración buscando en el sitio equivocado!
[ << Notación corriente ] | [Top][Contents][Index] | [ Trucar la salida >> ] |
[ < Más allá del tutorial ] | [ Up : Top ] | [ Cómo funcionan los archivos de entrada de LilyPond > ] |
4 Conceptos fundamentales
Ha podido ver en el tutorial cómo producir música bellamente impresa a partir de un simple archivo de texto. Esta sección presenta los conceptos y técnicas que se requieren para producir partituras igualmente bellas pero más complejas.
4.1 Cómo funcionan los archivos de entrada de LilyPond | ||
4.2 Las voces contienen música | ||
4.3 Contextos y grabadores | ||
4.4 Extender las plantillas |
[ << Conceptos fundamentales ] | [Top][Contents][Index] | [ Trucar la salida >> ] |
[ < Conceptos fundamentales ] | [ Up : Conceptos fundamentales ] | [ Introducción a la estructura de los archivos de LilyPond > ] |
4.1 Cómo funcionan los archivos de entrada de LilyPond
El formato de entrada de LilyPond es bastante libre en su forma y concede a los usuarios con experiencia mucha flexibilidad para estructurar sus archivos de la forma que deseen. Sin embargo, toda esta flexibilidad puede hacer que las cosas se vuelvan confusas para los nuevos usuarios. Esta sección le va a explicar parte de esta estructura, pero puede obviar ciertos detalles en aras de la simplicidad. Para ver una descripción completa del formato de entrada, consulte Estructura del archivo.
4.1.1 Introducción a la estructura de los archivos de LilyPond
Un ejemplo básico de archivo de entrada de LilyPond es el siguiente:
\version "2.25.22" \header { } \score { … expresión musical compuesta … % toda la música va aquí \layout { } \midi { } }
Existen muchas variaciones de este esquema básico, pero el ejemplo constituye un útil punto de partida.
Hasta el momento, ninguno de los ejemplos que ha podido ver
utiliza la instrucción \score{}
. Esto es así a causa de
que LilyPond añade automáticamente las órdenes adicionales que se
requieren cuando le proporcionamos una entrada sencilla.
LilyPond trata una entrada como esta:
\relative { c''4 a b c }
como una abreviatura de esta otra:
\book { \score { \new Staff { \new Voice { \relative { c''4 a b c } } } \layout { } } }
En otras palabras, si la entrada consta de una única expresión musical, LilyPond interpreta el archivo como si la expresión musical estuviera rodeada por un envoltorio hecho por las instrucciones que acabamos de ver.
¡Advertencia! Muchos de los ejemplos que aparecen en la
documentación de LilyPond omiten las instrucciones \new
Staff
y \new Voice
, dejando que se creen de forma
implícita. Esto funciona bien para ejemplos sencillos, pero para
ejemplos más complicados, especialmente cuando se usan
instrucciones adicionales, la creación implícita de los contextos
puede dar lugar a resultados inesperados, incluso en ocasiones
crear pentagramas no deseados. La forma de crear contextos de
forma explícita se explica en Contextos y grabadores.
Nota: Cuando se escriben más de unas pocas líneas de música, se recomienda crear siempre los pentagramas y las voces de forma explícita.
De todas formas, por ahora vamos a volver al primer ejemplo para
examinar la instrucción \score
, dejando las demás en su
forma predeterminada.
Un bloque \score
siempre debe contener una expresión musical
única. Recuerde que una expresión musical podía ser cualquier
cosa entre una sola nota hasta una enorme expresión compuesta como
{ \new StaffGroup << … inserte aquí la partitura completa de una ópera de Wagner … >> }
Puesto que todo se encuentra dentro de { … }
,
cuenta como una expresión musical.
Como vimos anteriormente, el bloque \score
puede contener
otras cosas, tales como
\score { { c'4 a b c' } \header { } \layout { } \midi { } }
Observe que estas tres instrucciones (\header
,
\layout
y \midi
) son especiales: a diferencia del
resto de las instrucciones que comienzan con una barra invertida
(\
), no son expresiones musicales y no forman parte
de ninguna expresión musical. Por tanto, se pueden situar dentro
de un bloque \score
o fuera de él. De hecho, estas
instrucciones se sitúan por lo general fuera del bloque
\score
(por ejemplo, \header
se suele colocar antes
de la instrucción \score
, como muestra el ejemplo que
aparece al principio de la sección.
Dos instrucciones más que no hemos visto aún son \layout {
}
y \midi { }
. Si aparecen tal y como se muestran
aquí, hacen que LilyPond produzca una salida impresa y una salida
MIDI, respectivamente. Se describen con todo detalle en el
manual de Referencia de la notación, en Disposición de la
partitura y en Creación de salida MIDI.
Podemos escribir varios bloques \score
. Cada uno de ellos
recibirá el mismo tratamiento que una partitura independiente,
pero se combinarán todos juntos en un archivo de salida único.
No se necesita ninguna instrucción \book
, se creará una
implícitamente. Sin embargo, si quiere archivos de salida
separados a partir de un único archivo .ly, entonces es
necesario utilizar la instrucción \book
para separar las
distintas secciones: cada bloque \book
produce un archivo
de salida distinto.
En resumen:
Cada bloque \book
crea un archivo de salida distinto (por
ejemplo, un archivo PDF). Si no hemos escrito uno de forma
explícita, LilyPond envuelve todo nuestro código de entrada
dentro de un bloque \book
de forma implícita.
Cada bloque \score
es un trozo de música separado dentro
de un bloque \book
.
Cada bloque \layout
afecta al bloque \score
o
\book
dentro del cual aparece (es decir, un bloque
\layout
dentro de un bloque \score
afecta solamente
a ese bloque \score
, pero un bloque \layout
fuera
de un bloque \score
(que por ello está dentro de un bloque
\book
, ya sea explícita o implícitamente) afecta a los
bloques \score
que están dentro de ese \book
.
Para ver más detalles, consulte Varias partituras en un libro.
Otro magnífico atajo es la posibilidad de definir variables como se muestra en Organizar las piezas mediante variables. Todas las plantillas emplean lo siguiente:
melodia = \relative { c'4 a b c } \score { \melodia }
Cuando LilyPond examina este archivo, toma el valor de
melodia
(todo lo que está después del signo igual) y lo
inserta dondequiera que ve \melodia
. No se requiere un
cuidado especial con el nombre (puede ser melodia
,
global
, CompasArmadura
, manoderechadelpiano
o fulanomengano
o cualquier otro). Recuerde que puede
usar casi cualquier nombre que se le ocurra, en la medida en que
contenga solamente caracteres alfabéticos y sea diferente de
cualquiera de los nombres de instrucción de LilyPond. Para ver
más detalles, consulte
Ahorrar tecleo mediante variables y funciones. Las
limitaciones exactas que afectan a los nombres de variable se
detallan en Estructura del archivo.
Véase también
Para ver una definición completa del formato del código de entrada, consulte Estructura del archivo.
4.1.2 La partitura es una (única) expresión musical compuesta
En la sección anterior,
Introducción a la estructura de los archivos de LilyPond,
hemos podido ver la organización general de los archivos de
entrada de LilyPond. Pero parece que nos saltamos la parte más
importante: ¿cómo averiguamos qué escribir después de
\score
?
No nos hemos saltado nada en absoluto. El gran misterio es, sencillamente, que no hay ningún misterio. La siguiente línea lo explica todo:
Un bloque
\score
debe contener exactamente una expresión musical.
Para comprender lo que se entiende por expresión musical, quizá
encuentre útil dar un repaso al tutorial,
Explicación de las expresiones musicales. En esta sección
vimos cómo elaborar grandes expresiones musicales a partir de
pequeñas piezas (comenzábamos con notas, luego acordes, etc.).
Ahora partiremos de una gran expresión musical y recorreremos el
camino inverso hacia abajo. Por simplicidad, vamos a hacer sólo
un cantante y un piano. No necesitamos un StaffGroup
(que
simplemente agrupa un cierto número de pautas con un corchete a
la izquierda) para este conjunto, así que lo retiramos. Sin
embargo, sí necesitamos pentagramas para un cantante y un
piano.
\score { << \new Staff = "cantante" << >> \new PianoStaff = "piano" << >> >> \layout { } }
Aquí hemos asignado nombres a los pentagramas: “cantante” y “piano”. Esto no es esencial en este momento, pero es un hábito que resulta útil cultivar de manera que podamos saber de un vistazo para qué es cada pentagrama.
Recuerde que utilizamos << … >>
en lugar de {
… }
para presentar la música simultánea. Esto hace que
las partes vocal y del piano aparezcan una sobre la otra en la
partitura. La construcción << … >>
no sería
necesaria para el pentagrama del cantante en el ejemplo de arriba
si contiene solamente una expresión musical secuencial, pero se
necesitarían los << … >>
en lugar de las llaves si
la música de ese pentagrama fuese a contener dos o más
expresiones simultáneas, p.ej. dos voces simultáneas, o una voz
con letra. Vamos a tener una voz con letra, por lo que se
requieren los ángulos dobles. Después añadiremos algo de música
real; por ahora limitémonos a poner unas cuantas notas y texto de
relleno. Si ha olvidado cómo añadir la letra, puede releer la
sección \addlyrics
de Elaborar canciones sencillas.
\score { << \new Staff = "singer" << \new Voice = "vocal" { c'1 } \addlyrics { And } >> \new PianoStaff = "piano" << \new Staff = "upper" { c'1 } \new Staff = "lower" { c'1 } >> >> \layout { } }
Ahora tenemos muchos más detalles. Tenemos la pauta del
cantante: contiene una Voice
o voz (en LilyPond, este
término hace referencia a un conjunto de notas, no necesariamente
notas vocales – por ejemplo, un violín generalmente toca una voz
–) y el texto de la canción. También tenemos una pauta de
piano: contiene un pentagrama superior (mano derecha) y un
pentagrama inferior (mano izquierda), aunque el pentagrama
inferior aún no tiene la clave de Fa.
En este momento podríamos comenzar a meter las notas. Dentro de
las llaves que siguen a \new Voice = "vocal"
, podríamos
empezar escribiendo
\relative { r4 d''8\noBeam g, c4 r }
Pero si lo hiciéramos, la sección \score
se haría bastante
larga y sería más difícil comprender lo que ocurre. En lugar de
esto utilizaremos identificadores o variables. Recordará que las
vimos por primera vez en la sección anterior.
Para asegurarnos de que el contenido de la variable text
se interpreta como letra, lo precedemos por \lyricmode
.
Como \addlyrics
, esto activa el modo de entrada de letra.
Sin ello, LilyPond trataría de interpretar el contenido como
notas, lo que generaría errores (Existen algunos otros modos,
véase Modos de entrada).
Así pues, escribiendo algunas notas, y una clave de Fa para la mano izquierda, ahora tenemos un fragmento musical de verdad:
melody = \relative { r4 d''8\noBeam g, c4 r } text = \lyricmode { And God said, } upper = \relative { <g' d g,>2~ <g d g,> } lower = \relative { b,2 e } \score { << \new Staff = "singer" << \new Voice = "vocal" { \melody } \addlyrics { \text } >> \new PianoStaff = "piano" << \new Staff = "upper" { \upper } \new Staff = "lower" { \clef "bass" \lower } >> >> \layout { } }
Cuando escriba una sección \score
o cuando la esté
leyendo, hágalo despacio y con cuidado. Comience por el nivel
exterior y luego trabaje sobre cada uno de los niveles
interiores. También es de gran ayuda ser muy estricto con los
márgenes (asegúrese de que en su editor de texto cada elemento
del mismo nivel comienza en la misma posición horizontal).
Véase también
Referencia de la notación: Estructura de una partitura.
4.1.3 Anidado de expresiones musicales
No es esencial declarar todos los pentagramas al comienzo; se pueden crear temporalmente en cualquier momento. Esto es de especial utilidad para crear secciones de ossia (véase ossia). A continuación presentamos un ejemplo sencillo que muestra cómo introducir temporalmente un pentagrama nuevo mientras dura un fragmento de tres notas:
\new Staff { \relative { r4 g'8 g c4 c8 d | e4 r8 << { f8 c c } \new Staff { f8 f c } >> r4 | } }
Advierta que el tamaño de la clave es igual al que se imprime en un cambio de clave (ligeramente menor que la clave al principio de una línea). Esto es normal para cualquier clave que se imprime en la mitad de una línea.
La sección ossia se puede colocar encima del pentagrama de la manera siguiente:
\new Staff = "main" { \relative { r4 g'8 g c4 c8 d | e4 r8 << { f8 c c } \new Staff \with { alignAboveContext = "main" } { f8 f c } >> r4 | } }
Este ejemplo utiliza \with
, que se explica en todo detalle
más adelante. Es un medio de modificar el comportamiento
predeterminado de un solo pentagrama. Aquí, dice que el
pentagrama nuevo se debe colocar por encima del pentagrama
llamado “main” en vez de la posición predeterminada que sería
por debajo.
Véase también
Los fragmentos de ossia se escriben a menudo sin clave y sin indicación de compás, y generalmente en un tipo más pequeño. Esto necesitaría más instrucciones que aún no se han visto. Véase Tamaño de los objetos y Pentagramas de Ossia.
4.1.4 Estructura de un elemento de nota
Un elemento de nota en LilyPond consiste en una altura seguida de una duración, y opcionalmente seguida de uno o más ‘post-eventos’. Los post-eventos de LilyPond añaden cosas como articulaciones, digitaciones, números de cuerda, ligaduras de unión y de expresión y textos explicativos.
La altura se puede definir explícitamente usando el lenguaje de
entrada de LilyPond en su forma actual, como se describe en la
sección Nombres de las notas en otros idiomas. La altura
se puede omitir. En el caso de que la altura se omita, la altura
de la nota será la misma que la de la nota anterior dentro del
código de entrada, véase Duraciones. Observe que ni
r
ni s
son alturas.
La duración consiste en un número y, opcionalmente, uno o más puntos ortográficos en el caso de las duraciones con puntillo. Si una duración no está definida explícitamente, la duración de la nota es la misma que la de la nota, acorde, silencio o silencio de separación anteriores, véase Duraciones.
Los post-eventos siguen a la nota a la que están adjuntos. Supongamos que queremos una nota Do corchea con una digitación de un 1, además de una articulación de tenuto, una ligadura de expresión que comienza en dicha nota, y una anotación textual. Esto puede obtenerse tal y como se muestra a continuación.
{ c'8-1--(~^\markup{"anotación textual"} c' d') }
Véase también
Manual de aprendizaje: Ligaduras de unión y de expresión, Articulaciones y matices dinámicos, Añadir texto.
Referencia de la notación: Alturas, Duraciones, Expresiones.
4.1.5 Acerca de la no anidabilidad de llaves y ligaduras
En la escritura del archivo de entrada de LilyPond, hemos podido ver algunos tipos de paréntesis, llaves o ángulos de distintos tipos. Éstos obedecen a distintas reglas que al principio pueden resultar confusas. Antes de explicar estas reglas, demos un repaso a las distintas clases de corchetes, llaves y paréntesis.
Tipo de paréntesis | Función |
---|---|
{ … } | Encierra un fragmento secuencial de música |
< … > | Encierra las notas de un acorde |
<< … >> | Encierra expresiones musicales simultáneas |
( … ) | Marca el comienzo y el final de una ligadura de expresión |
\( … \) | Marca el comienzo y el final de una ligadura de fraseo |
[ … ] | Marca el comienzo y el final de un barrado manual |
A las anteriores, debemos añadir otras construcciones que generan
líneas entre o a través de las notas: las ligaduras de unión
(marcadas con una tilde curva, ~
), los grupos especiales
que se escriben como \tuplet x/y { … }
, y las
notas de adorno, que se escriben como \grace { …
}
.
Fuera de LilyPond, el uso convencional de los paréntesis y otros
corchetes requiere que los distintos tipos se encuentren anidados
correctamente, como en: << [ { ( … ) } ] >>
, de
manera que los paréntesis que se cierran deben encontrarse en el
orden exactamente opuesto al de los paréntesis que se abren.
Esto es un requisito para los tres tipos de paréntesis
que se describen mediante la palabra ‘Encierra’ en la tabla
anterior: se deben anidar correctamente. Sin embargo, el resto
de las llaves y corchetes, que se encuentran descritos por la
palabra ‘Marca’ en la misma tabla anterior, no tienen
por qué anidarse estrictamente con ninguno de los otros
paréntesis. De hecho, éstos no son paréntesis en el sentido de
que encierran algo: simplemente son marcadores que indican dónde
empieza o finaliza algo.
Así pues, por ejemplo, una ligadura de fraseo puede dar comienzo antes de una barra insertada manualmente, y acabar antes de que acabe la barra (algo que quizá no sea muy musical, pero es posible):
\relative { g'8\( a b[ c b\) a] g4 }
En general, los distintos tipos de corchete, y los implicados en grupos especiales, ligaduras de unión y notas de adorno, se pueden mezclar con total libertad. Este ejemplo muestra una barra que se extiende hacia el interior de un grupo de valoración especial (línea 1), una ligadura de expresión que se prolonga hasta el interior de un grupo especial (línea 2), una barra y una ligadura de expresión que se prolongan hasta el interior de un grupo especial, una ligadura de unión que atraviesa dos grupos especiales, y una ligadura de fraseo que sale del interior de un grupo especial (líneas 3 y 4).
\relative { r16[ g' \tuplet 3/2 { r16 e'8] } g,16( a \tuplet 3/2 { b16 d) e } g,8[( a \tuplet 3/2 { b8 d) e~] } | \tuplet 5/4 { e32\( a, b d e } a4.\) }
[ << Conceptos fundamentales ] | [Top][Contents][Index] | [ Trucar la salida >> ] |
[ < Acerca de la no anidabilidad de llaves y ligaduras ] | [ Up : Conceptos fundamentales ] | [ Oigo voces > ] |
4.2 Las voces contienen música
Igual que los cantantes, LilyPond necesita voces para cantar. En realidad, la música para cualquier instrumento de una partitura está siempre contenida dentro de una voz –el concepto de LilyPond más fundamental de todos–.
4.2.1 Oigo voces | ||
4.2.2 Voces explícitas | ||
4.2.3 Voces y música vocal |
[ << Conceptos fundamentales ] | [Top][Contents][Index] | [ Trucar la salida >> ] |
[ < Las voces contienen música ] | [ Up : Las voces contienen música ] | [ Voces explícitas > ] |
4.2.1 Oigo voces
De las capas más profundas de una partitura de LilyPond, las más bajas y más fundamentales reciben el nombre de ‘Voice contexts’ («contextos de voz») o, abreviadamente, ‘Voices’ («voces»). Las voces reciben a veces el nombre de ‘layers’ («capas») en otros programas de edición de partituras.
De hecho, una capa o contexto de voz es la única que puede contener música. Si un contexto de voz no se declara explícitamente, se crea uno de forma automática, como vimos al comienzo de este capítulo. Ciertos instrumentos como el oboe solamente pueden tocar una nota cada vez. La música escrita para estos instrumentos solamente requiere una voz. Los instrumentos que pueden tocar más de una nota a la vez, como el piano, con frecuencia necesitarán varias voces para codificar las distintas notas y ritmos concurrentes que son capaces de tocar.
Una sola voz puede contener muchas notas dentro de un acorde, por supuesto; entonces ¿cuándo, exactamente, se necesitan varias voces? En primer lugar observe este ejemplo de cuatro acordes:
\relative { \key g \major <d' g>4 <d fis> <d a'> <d g> }
Esto se puede expresar utilizando sólo símbolos de acorde con
ángulos simples, < … >
, y para este propósito tan
sólo se necesita una voz. Pero suponga que el Fa sostenido fuese
realmente una corchea seguida de un Sol corchea, una nota de paso
que conduce al La. Ahora tenemos dos notas que empiezan en el
mismo momento pero tienen distintas duraciones: la negra Re, y la
corchea Fa sostenido. ¿Cómo se codifica esto? No se pueden
escribir como un acorde porque todas las notas de un acorde deben
tener la misma duración. Y no se pueden escribir como dos notas
en secuencia porque tienen que empezar en el mismo momento. Aquí
es donde se necesitan dos voces.
Veamos cómo se hace esto dentro de la sintaxis de entrada de LilyPond.
La forma más fácil de introducir fragmentos con más de una voz en
un solo pentagrama es escribir cada voz como una secuencia (con
{ … }
), y combinarlas simultáneamente con ángulos
dobles, << … >>
. Los fragmentos también se deben
separar mediante una doble barra invertida, \\
, para
situarlos en voces separadas. Sin esto, las notas irían a una
sola voz, lo que normalmente produce errores. Esta técnica se
adapta especialmente bien a piezas de música que son mayormente
homofónicas pero ocasionalmente tienen cortas secciones de
polifonía.
He aquí cómo dividimos los acordes anteriores en dos voces y añadimos la nota de paso y la ligadura:
\relative { \key g \major % Voice = "1" Voice = "2" << { g'4 fis8( g) a4 g } \\ { d4 d d d } >> }
Observe cómo las plicas de la segunda voz ahora se dirigen hacia abajo.
A continuación veamos otro ejemplo sencillo:
\relative { \key d \minor % Voice = "1" Voice = "2" << { r4 g' g4. a8 } \\ { d,2 d4 g } >> | << { bes4 bes c bes } \\ { g4 g g8( a) g4 } >> | << { a2. r4 } \\ { fis2. s4 } >> | }
No es necesario usar una construcción << \\ >>
distinta
para cada compás. Para música que tenga unas pocas notas en cada
compás, esta disposición podría facilitar la legibilidad del
código, pero si hay muchas notas en cada compás podría ser mejor
dividirlo en dos voces separadas, de la siguiente manera:
<< \key d \minor \relative { % Voice = "1" r4 g' g4. a8 | bes4 bes c bes | a2. r4 | } \\ \relative { % Voice = "2" d'2 d4 g | g4 g g8( a) g4 | fis2. s4 | } >>
Este ejemplo tiene sólo dos voces, pero la misma construcción se puede usar para codificar tres o más voces mediante la adición de más separadores de barra invertida.
Los contextos de voz llevan los nombres de "1"
,
"2"
, etc. Los primeros contextos establecen las voces
externas, la voz aguda del contexto "1"
y la voz
grave del contexto "2"
. Las voces interiores van en los
contextos "3"
y "4"
. En cada uno de estos
contextos, la dirección vertical de las ligaduras, plicas,
matices dinámicos, etc., se ajusta de forma correcta.
\new Staff \relative { % Main voice c'16 d e f % Voice = "1" Voice = "2" Voice = "3" << { g4 f e } \\ { r8 e4 d c8~ } >> | << { d2 e } \\ { c8 b16 a b8 g~ 2 } \\ { s4 b c2 } >> | }
Si prefiere introducir las voces en un orden distinto, como de
arriba a abajo, puede especificar los números de voz respectivos
delante de una construcción << … >>
usando la
instrucción \voices
command, como por ejemplo:
\new Staff \relative { % Main voice c'16 d e f % Voice = "1" Voice = "2" << { g4 f e } \\ { r8 e4 d c8~ } >> | \voices 1,3,2 % Voice = "1" Voice = "3" Voice = "2" << { d2 e } \\ { s4 b c2 } \\ { c8 b16 a b8 g~ 2 } >> | }
Todas estas voces están separadas de la voz principal que
contiene las notas justo por fuera de la construcción <<
… >>
. Le llamaremos a esto la construcción
simultánea. Las ligaduras (de prolongación y de expresión)
solamente pueden conectar notas que estén dentro de la misma voz,
luego las ligaduras no pueden entrar o salir de una construcción
simultánea. A la inversa, las voces paralelas de construcciones
simultáneas distintas sobre el mismo pentagrama, son la misma
voz. Otras propiedades relativas a las voces también conllevan
construcciones simultáneas. A continuación vemos el mismo
ejemplo, con colores y cabezas distintos para cada voz. Observe
que los cambios en una voz no afectan a otras voces, pero
persisten más tarde dentro de la misma voz. Observe también que
las notas ligadas se pueden dividir entre las mismas voces de dos
construcciones, como se indica aquí en la voz de triángulos
azules.
\new Staff \relative { % Main voice c'16 d e f << % Bar 1 { \voiceOneStyle g4 f e } \\ { \voiceTwoStyle r8 e4 d c8~ } >> | << % Bar 2 % Voice 1 continues { d2 e } \\ % Voice 2 continues { c8 b16 a b8 g~ 2 } \\ { \voiceThreeStyle s4 b c2 } >> | }
Las instrucciones \voiceXXXStyle
están pensadas
principalmente para usarlas en documentos educativos como este
mismo. Modifican el color de la cabeza, la plica y las barras, y
el estilo de la cabeza, de forma que las voces se puedan
distinguir fácilmente. La voz uno está establecida a rombos
rojos, la voz dos a triángulos azules, la voz tres a círculos
verdes con aspas, y la voz cuatro (que no se utiliza aquí) a
aspas color magenta. \voiceNeutralStyle
(que tampoco se
usa aquí) devuelve todo al estilo predeterminado. Veremos más
adelante cómo el usuario puede crear instrucciones como éstas.
Véase Visibilidad y color de los objetos y Uso de variables para los ajustes de disposición.
La polifonía no cambia la relación de las notas dentro de un
bloque \relative
. La altura de cada nota aún se calcula
con relación a la nota que le precede inmediatamente, o a la
primera nota del acorde precedente. Así, en
\relative c' { notaA << < notaB notaC > \\ notaD >> notaE }
notaB
es relativa a notaA
notaC
es relativa a notaB
, no a notaA
;
notaD
es relativa a notaB
, no a notaA
ni a
notaC
;
notaE
es relativa a notaD
, no a notaA
.
Una forma alternativa, que podría ser más clara si las notas en las
voces están muy separadas, es colocar una instrucción \relative
al principio de cada voz:
\relative { notaA … } << \relative { < notaB notaC > … } \\ \relative { notaD … } >> \relative { notaE … }
Finalmente, analicemos las voces en una pieza de música más compleja. He aquí las notas de los dos primeros compases del segundo de los Dos Nocturnos de Chopin, Op 32. Este ejemplo se utilizará en fases posteriores dentro del presente capítulo y el siguiente, para ilustrar varias técnicas para producir notación, y por tanto le pedimos que ignore por ahora cualquier cosa en el código subyacente que le parezca misterioso y tan sólo se concentre en la música y las voces (todas las complicaciones se explicarán en secciones posteriores).
Con frecuencia, la dirección de las plicas se utiliza para indicar la continuidad de dos líneas melódicas simultáneas. Aquí, todas las plicas de las notas agudas se dirigen hacia arriba y las de las notas graves hacia abajo. Ésta es la primera indicación de que se requiere más de una voz.
Pero la necesidad real de varias voces aflora cuando hay notas que comienzan en el mismo tiempo pero tienen distintas duraciones. Observe las notas que comienzan en la tercera parte del primer compás. El La bemol es una negra con puntillo, el Fa es una negra y el Re bemol es una blanca. Estas notas no se pueden escribir como un acorde porque todas las notas de un acorde deben tener la misma duración. Tampoco se pueden escribir como notas secuenciales, pues deben comenzar al mismo tiempo. Esta sección del compás requiere tres voces, y la práctica común sería escribir todo el compás como tres voces como se muestra abajo, donde hemos usado distintas cabezas y colores para las tres voces. Una vez más, el código que subyace a este ejemplo se explicará más tarde, así pues ignore todo lo que no entienda.
Vamos a intentar codificar esta música partiendo de cero. Como
veremos, esto se topa con ciertas dificultades. Comenzamos tal y
como hemos aprendido, usando la construcción << \\ >>
para
introducir la música del primer compás en tres voces:
\new Staff \relative { \key aes \major << { c''2 aes4. bes8 } \\ { <ees, c>2 des } \\ { aes'2 f4 fes } >> | <c ees aes c>1 | }
Las direcciones de las plicas se asignan automáticamente de forma
que las voces de numeración impar reciben las plicas hacia arriba
y las de numeración par hacia abajo. Las plicas de las voces 1 y
2 están correctas, pero las plicas de la voz 3 debería ir hacia
abajo en este fragmento en particular. Puede hacerse simplemente
añadiendo otro par de barras \\
, pero en lugar de eso
usamosla instrucción \voices
(que también nos permitiría
introducir las voces en un orden distinto, si quisiéramos):
\new Staff \relative { \key aes \major \voices 1,2,4 % Omit Voice three << % Voice one { c''2 aes4. bes8 } \\ % Voice two { <ees, c>2 des } \\ % Voice four { aes'2 f4 fes } >> | <c ees aes c>1 | }
Vemos que esto arregla la dirección de la plica, pero la
colocación horizontal de las notas no es la deseada. LilyPond
desplaza las notas interiores cuando ellas o sus plicas de otro
modo colisionarían con las voces exteriores, pero esto no es lo
más adecuado para música de piano. En otras situaciones, los
desplazamientos que LilyPond aplica pueden no eliminar las
colisiones. LilyPond aporta varias formas de ajustar la
colocación horizontal de las notas. Aún no estamos preparados
para ver cómo se corrige esto, por lo que dejaremos el problema
para una sección posterior (véase la propiedad
force-hshift
en Arreglar notación con superposiciones).
Nota: No se pueden crear letras ni objetos de extensión (como ligaduras, reguladores, etc.) ‘entre’ voces distintas.
Véase también
Referencia de la notación: Varias voces.
[ << Conceptos fundamentales ] | [Top][Contents][Index] | [ Trucar la salida >> ] |
[ < Oigo voces ] | [ Up : Las voces contienen música ] | [ Voces y música vocal > ] |
4.2.2 Voces explícitas
Los contextos de voz también se pueden crear manualmente dentro
de un bloque << >>
para crear música polifónica,
utilizando \voiceOne
… \voiceFour
para
indicar las direcciones requeridas de plicas, ligaduras, etc. En
partituras más largas, este método es más claro porque permite
que las voces estén separadas y reciban nombres más descriptivos.
Concretamente, la construcción << \\ >>
que usamos en la
sección previa:
\new Staff { \relative { << { e'4 f g a } \\ { c,4 d e f } >> } }
equivale a
\new Staff << \new Voice = "1" { \voiceOne \relative { e'4 f g a } } \new Voice = "2" { \voiceTwo \relative { c'4 d e f } } >>
Los dos ejemplos anteriores producen:
Las instrucciones \voiceXXX
establecen la dirección de las
plicas, ligaduras de expresión, ligaduras de prolongación,
articulaciones, anotaciones de texto, puntillos y digitaciones.
\voiceOne
y \voiceThree
hacen que estos objetos
apunten hacia arriba, mientras que \voiceTwo
y
\voiceFour
los hacen apuntar hacia abajo. Estas
instrucciones también producen un desplazamiento horizontal para
cada voz cuando es necesario para evitar choques entre las
cabezas. La instrucción \oneVoice
devuelve los ajustes de
nuevo a los valores normales para una sola voz.
Veamos en algunos ejemplos sencillos exactamente qué efecto
tienen \oneVoice
, \voiceOne
y voiceTwo
sobre
el marcado, las ligaduras de unión y de expresión y las
indicaciones de dinámica:
\relative { % Default behavior or behavior after \oneVoice c'4 d8~ 8 e4( f | g4 a) b-> c | }
\relative { \voiceOne c'4 d8~ 8 e4( f | g4 a) b-> c | \oneVoice c,4 d8~ 8 e4( f | g4 a) b-> c | }
\relative { \voiceTwo c'4 d8~ 8 e4( f | g4 a) b-> c | \oneVoice c,4 d8~ 8 e4( f | g4 a) b-> c | }
A continuación veremos cuatro formas distintas de componer la notación del mismo pasaje polifónico, cada una de las cuales tiene sus ventajas según la circunstancia, utilizando el ejemplo de la sección anterior.
Una expresión que aparece directamente dentro de << >>
pertenece a la voz principal (pero, observe, no dentro
de una construcción << \\ >>
). Esto es útil cuando
aparecen voces nuevas mientras la voz principal está sonando. A
continuación podemos ver una realización más correcta del ejemplo
de la sección anterior. Las notas rojas en forma de rombo
muestran que la melodía principal está ahora dentro de un
contexto de una sola voz, haciendo que se pueda trazar una
ligadura por encima de ellas.
\new Staff \relative { \voiceOneStyle % This section is homophonic c'16^( d e f % Start simultaneous section of three voices << % Continue the main voice in parallel { g4 f e | d2 e) | } % Initiate second voice \new Voice { % Set stems, etc., down \voiceTwo r8 e4 d c8~ | 8 b16 a b8 g~ 2 | } % Initiate third voice \new Voice { % Set stems, etc, up \voiceThree s2. | s4 b c2 | } >> }
La instrucción \voices
se puede usar también para continuar
una voz principal dentro de la construcción de voces simultáneas:
\new Staff \relative { \new Voice = "main" { \voiceOneStyle % This section is homophonic c'16^( d e f % Start simultaneous section of three voices \voices "main",2,3 << % Continue the main voice in parallel { g4 f e | d2 e) | } % Initiate second voice \\ % Set stems, etc., down { r8 e4 d c8~ | 8 b16 a b8 g~ 2 | } \\ % Initiate third voice % Set stems, etc, up { s2. | s4 b c2 | } >> } }
Son posibles construcciones polifónicas anidadas más profundamente, y si una voz aparece sólo brevemente podría haber una forma más natural de tipografiar la música.
\new Staff \relative { c'16^( d e f << { g4 f e | d2 e) | } \new Voice { \voiceTwo r8 e4 d c8~ | << { c8 b16 a b8 g~ 2 | } \new Voice { \voiceThree s4 b c2 | } >> } >> }
Este método de anidar voces nuevas brevemente es útil cuando sólo hay secciones polifónicas pequeñas, pero cuando todo el pentagrama es muy polifónico podría ser más claro usar varias voces todo el tiempo, usando notas espaciadoras para pasar por encima de las secciones en que una voz está en silencio, como aquí:
\new Staff \relative << % Initiate first voice \new Voice { \voiceOne c'16^( d e f g4 f e | d2 e) | } % Initiate second voice \new Voice { % Set stems, etc, down \voiceTwo s4 r8 e4 d c8~ | 8 b16 a b8 g~ 2 | } % Initiate third voice \new Voice { % Set stems, etc, up \voiceThree s1 | s4 b c2 | } >>
Columnas de notas
Las notas cercanas de un acorde, o las notas que se producen al mismo tiempo en distintas voces, se disponen en dos (y ocasionalmente más) columnas para evitar el solapamiento de las cabezas. Reciben el nombre de columnas de notas. Hay columnas distintas para cada voz, y el desplazamiento especificado en curso dependiente de la voz se aplica a la columna de la nota si en caso contrario se produjese una colisión. Esto se puede ver en el ejemplo anterior. En el compás 2 el Do en la voz dos está desplazado a la derecha respecto del Re de la voz uno, y en el último acorde el Do de la voz tres también está desplazado a la derecha respecto de las otras notas.
Las instrucciones \shiftOn
, \shiftOnn
,
\shiftOnnn
y \shiftOff
especifican el grado en que
se deben desplazar las notas y acordes de la voz si en caso
contrario ocurriese una colisión. De forma predeterminada, las
voces exteriores (normalmente las voces uno y dos) llevan
especificado \shiftOff
, mientras que las voces interiores
(tres y cuatro) tienen \shiftOn
especificado. Cuando se
aplica un desplazamiento, las voces uno y tres se desplazan hacia
la derecha y las voces dos y cuatro se desplazan hacia la
izquierda.
\shiftOnn
y \shiftOnnn
definen niveles adicionales
de desplazamiento que se pueden especificar temporalmente para
resolver colisiones en situaciones complejas (véase
Ejemplos reales de música).
Una columna de notas puede contener sólo una nota (o acorde) de
una voz con las plicas hacia arriba y una not (o acorde) de una
voz con las plicas hacia abajo. Si las notas de dos voces que
tienen las plicas en la misma dirección se sitúan en la misma
posición y las dos voces no tienen ningún desplazamiento o llevan
especificado el mismo desplazamiento, se producirá el mensaje de
error “Esta voz requiere un ajuste de \voiceXx
o
\shiftXx
”.
Véase también
Manual de aprendizaje: Mover objetos.
Referencia de la notación: Varias voces.
[ << Conceptos fundamentales ] | [Top][Contents][Index] | [ Trucar la salida >> ] |
[ < Voces explícitas ] | [ Up : Las voces contienen música ] | [ Contextos y grabadores > ] |
4.2.3 Voces y música vocal
La música vocal presenta una dificultad especial: tenemos que combinar dos expresiones, a saber, las notas y la letra.
Ya ha visto la instrucción \addlyrics{}
, que maneja bien
partituras sencillas. Sin embargo esta técnica es algo limitada.
Para música de mayor complejidad, tenemos que introducir la letra
en un contexto Lyrics
utilizando \new Lyrics
y
enlazar explícitamente la letra y las notas mediante
\lyricsto{}
, usando el nombre asignado a la voz.
<< \new Voice = "one" { \relative { \autoBeamOff \time 2/4 c''4 b8. a16 | g4. f8 | e4 d | c2 | } } \new Lyrics \lyricsto "one" { No more let | sins and | sor -- rows | grow. | } >>
Observe que la letra se debe enlazar a un contexto de
Voice
, no a un contexto de Staff
. Este es
un caso en que es necesario crear contextos de Staff
y de
Voice
explícitamente.
El barrado automático que LilyPond usa de forma predeterminada
funciona bien para la música instrumental, pero no tan bien para
música con letra, donde o bien el barrado no se necesita en
absoluto, o bien se utiliza para indicar los melismas de la
letra. En el ejemplo anterior hemos utilizado la instrucción
\autoBeamOff
para desactivar el barrado automático.
Ahora vamos a reutilizar el ejemplo anterior de «Judas Macabeo»
para ilustrar esta técnica más flexible. Primero la
reescribiremos para que use variables, de manera que la música y
la letra se puedan separar de la estructura de pentagramas.
También introduciremos una llave de grupo de ChoirStaff. La
letra en sí se debe introducir con \lyricmode
para estar
seguros de que se interpreta como letra y no como música.
global = { \key f \major \time 6/8 \partial 8 } SopOneMusic = \relative { c''8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ 4 } SopOneLyrics = \lyricmode { Let | flee -- cy flocks the | hills a -- dorn, __ } SopTwoMusic = \relative { r8 | r4. r4 c'8 | a'8([ g)] f f([ e)] d | e8([ d)] c bes' } SopTwoLyrics = \lyricmode { Let | flee -- cy flocks the | hills a -- dorn, } \score { \new ChoirStaff << \new Staff << \new Voice = "SopOne" { \global \SopOneMusic } \new Lyrics \lyricsto "SopOne" { \SopOneLyrics } >> \new Staff << \new Voice = "SopTwo" { \global \SopTwoMusic } \new Lyrics \lyricsto "SopTwo" { \SopTwoLyrics } >> >> }
Ésta es la estructura básica de todas las partituras vocales. Se pueden añadir más pentagramas según se necesite, se pueden añadir más voces a los pentagramas y más estrofas a la letra, y las variables que contienen la música se pueden colocar fácilmente en archivos separados cuando se hagan demasiado largos.
A continuación podemos ver un ejemplo final de la primera línea de un himno con cuatro estrofas, para coro SATB. En este caso la letra de las cuatro partes es la misma. Observe cómo utilizamos variables para separar la notación musical de la estructura de pentagramas. Observe también cómo se utiliza una variable, para la que hemos elegido el nombre ‘TimeKey’ («compás y tonalidad»), para que contenga varias instrucciones que se usarán dentro de los dos pentagramas. En otros ejemplos se le suele dar el nombre de ‘global’.
keyTime = { \key c \major \time 4/4 \partial 4 } SopMusic = \relative { c'4 | e4. e8 g4 g | a4 a g } AltoMusic = \relative { c'4 | c4. c8 e4 e | f4 f e } TenorMusic = \relative { e4 | g4. g8 c4. b8 | a8 b c d e4 } BassMusic = \relative { c4 | c4. c8 c4 c | f8 g a b c4 } VerseOne = \lyricmode { E -- | ter -- nal fa -- ther, | strong to save, } VerseTwo = \lyricmode { O | Christ, whose voice the | wa -- ters heard, } VerseThree = \lyricmode { O | Ho -- ly Spi -- rit, | who didst brood } VerseFour = \lyricmode { O | Tri -- ni -- ty of | love and pow'r } \score { \new ChoirStaff << \new Staff << \clef "treble" \new Voice = "Sop" { \voiceOne \keyTime \SopMusic } \new Voice = "Alto" { \voiceTwo \AltoMusic } \new Lyrics \lyricsto "Sop" { \VerseOne } \new Lyrics \lyricsto "Sop" { \VerseTwo } \new Lyrics \lyricsto "Sop" { \VerseThree } \new Lyrics \lyricsto "Sop" { \VerseFour } >> \new Staff << \clef "bass" \new Voice = "Tenor" { \voiceOne \keyTime \TenorMusic } \new Voice = "Bass" { \voiceTwo \BassMusic } >> >> }
Véase también
Referencia de la notación: Música vocal.
[ << Conceptos fundamentales ] | [Top][Contents][Index] | [ Trucar la salida >> ] |
[ < Voces y música vocal ] | [ Up : Conceptos fundamentales ] | [ Explicación de los contextos > ] |
4.3 Contextos y grabadores
Los contextos y grabadores se han mencionado de manera informal en secciones anteriores; ahora tan sólo vamos a ver estos conceptos con más detalle, pues son importantes en el ajuste fino de la salida de LilyPond.
4.3.1 Explicación de los contextos | ||
4.3.2 Crear contextos | ||
4.3.3 Explicación de los grabadores | ||
4.3.4 Modificar las propiedades de los contextos | ||
4.3.5 Añadir y eliminar grabadores |
[ << Conceptos fundamentales ] | [Top][Contents][Index] | [ Trucar la salida >> ] |
[ < Contextos y grabadores ] | [ Up : Contextos y grabadores ] | [ Crear contextos > ] |
4.3.1 Explicación de los contextos
Cuando se imprime la música, se tienen que añadir a la salida una gran cantidad de elementos notacionales que no aparecen explícitamente en el archivo de entrada. Por ejemplo, compare la entrada y la salida del siguiente ejemplo:
\relative { cis''4 cis2. | a4 a2. | }
La entrada es bastante escueta, pero en la salida se han añadido las líneas divisorias, las alteraciones, la clave y la armadura de la tonalidad. Cuando LilyPond interpreta la entrada, la información musical se analiza de izquierda a derecha de igual forma que un intérprete lee la partitura. Mientras se lee el código de entrada, el programa recuerda dónde están los límites de los compases, y qué alturas requieren alteraciones accidentales explícitas. Esta información se debe conservar a varios niveles. Por ejemplo, una alteración accidental afecta solamente a un pentagrama, mientras que una línea divisoria debe estar sincronizada a lo largo de todo el sistema.
Dentro de LilyPond, estas reglas y pequeñas porciones de
información se agrupan en Contexts. Ya hemos visto el
contexto de voz, Voice
. Otros ejemplos de contextos son
Staff
(Pauta o pentagrama) y Score
(Partitura).
Los contextos son jerárquicos, de forma que reflejan la
naturaleza jerárquica de una partitura musical. Por ejemplo: un
contexto de Staff
contener muchos contextos de
Voice
, y un contexto de Score
puede contener muchos
contextos de Staff
.
Cada contexto asume la responsabilidad de imponer algunas reglas
de notación, creando ciertos objetos de notación y manteniendo
las propiedades asociadas. Por ejemplo, el contexto Voice
puede introducir una alteración accidental y entonces el contexto
Staff
mantiene la regla de mostrar o suprimir la
alteración para el resto del compás.
Otro ejemplo lo constituye el hecho de que la sincronización de
las líneas divisorias se gestiona dentro del contexto de la
partitura, Score
, de forma predeterminada. Sin embargo,
en algunas músicas posiblemente no queramos que las líneas
divisorias estén sincronizadas (pensemos en una partitura
polimétrica en compases de 4/4 y de 3/4). En tales casos,
debemos modificar los ajustes por omisión de los contextos
Score
y Staff
.
Para partituras muy sencillas, los contextos se crean implícitamente y no debemos preocuparnos por ellos. Para piezas mayores, como por ejemplo cualquiera que tenga más de un pentagrama, los contextos se deben crear explícitamente para asegurarnos de que tendremos la cantidad exacta de pentagramas que necesitamos, y que están en el orden correcto. Para tipografiar piezas con notación especializada, es frecuente la modificación de contextos existentes o incluso definir unos completamente nuevos.
Además de los contextos Score,
Staff
y
Voice
, hay contextos que se sitúan entre los niveles de
partitura y de pentagrama para controlar los grupos de
pentagramas, como los contextos PianoStaff
y
ChoirStaff
. También existen contextos alternativos de
pentagrama y de voz, y contextos para la letra, la percusión,
diagramas de trastes, bajo cifrado, etc.
Los nombres de todos los tipos de contextos se componen de una o
más palabras que comienzan con mayúscula y que están unidas unas
a otras sin guión ni barra baja, por ejemplo:
GregorianTranscriptionStaff
.
Véase también
Referencia de la notación: Explicación de los contextos.
[ << Conceptos fundamentales ] | [Top][Contents][Index] | [ Trucar la salida >> ] |
[ < Explicación de los contextos ] | [ Up : Contextos y grabadores ] | [ Explicación de los grabadores > ] |
4.3.2 Crear contextos
En un archivo de entrada, el bloque de partitura (que se presenta
precedido por la instrucción \score
) contiene una sola
expresión musical; pero también puede contener
una definición de salida asociada: bien un
bloque \layout
o bien un bloque \midi
. El
contexto Score
se suele dejar que se cree automáticamente
cuando comienza la interpretación de esa expresión musical.
Para partituras que solamente tienen una voz y un pentagrama,
podemos también dejar que los contextos Voice
y
Staff
se creen automáticamente, pero para partituras más
complejas es necesario crearlos a mano. La instrucción más
simple que hace esto es \new
. Se antepone a una expresión
musical, por ejemplo
\new tipo expresión_musical
donde tipo es el nombre de un contexto (como Staff
o
Voice
). Esta instrucción crea un contexto nuevo, y
comienza a interpretar la expresión_musical que está dentro
de ese contexto.
Nota: No se debe usar \new Score
porque el contexto
Score
esencial del nivel superior ya se crea
automáticamente al interpretarse la expresión musical que está
dentro del bloque \score
. Los valores predeterminados
de propiedades de contexto válidos para toda la partitura se
pueden cambiar dentro del bloque \layout
. Véase
Modificar las propiedades de los contextos.
En las secciones anteriores ha podido ver muchos ejemplos
prácticos que creaban nuevos contextos de Staff
y de
Voice
, pero para recordarle cómo se emplean estas
instrucciones en la práctica, he aquí un ejemplo anotado de
música real:
\score { % start of single compound music expression << % start of simultaneous staves section \time 2/4 \new Staff { % create RH staff \clef "treble" \key g \minor \new Voice { % create voice for RH notes \relative { % start of RH notes d''4 ees16 c8. | d4 ees16 c8. | } % end of RH notes } % end of RH voice } % end of RH staff \new Staff << % create LH staff; needs two simultaneous voices \clef "bass" \key g \minor \new Voice { % create LH voice one \voiceOne \relative { % start of LH voice one notes g8 <bes d> ees, <g c> | g8 <bes d> ees, <g c> | } % end of LH voice one notes } % end of LH voice one \new Voice { % create LH voice two \voiceTwo \relative { % start of LH voice two notes g4 ees | g4 ees | } % end of LH voice two notes } % end of LH voice two >> % end of LH staff >> % end of simultaneous staves section } % end of single compound music expression
(Observe cómo todas las instrucciones que abren un bloque con una
llave curva, {
, o con ángulos dobles, <<
, están
sangrados (tienen un margen adicional) con dos espacios
adicionales, y la llave de cierre correspondiente tiene un margen
exactamente igual. Aunque no es necesario, la observancia de
esta práctica reducirá considerablemente el número de errores de
‘paréntesis descompensados’, y se recomienda vivamente.
Permite apreciar de un solo vistazo la estructura de la música, y
cualquier paréntesis descompensado aparecerá con obviedad.
Observe también cómo el pentagrama de la MI se crea usando dobles
ángulos porque requiere dos voces, mientras que el pentagrama de
la MD se crea con una expresión musical única encerrada entre
llaves porque sólo requiere una voz.)
La instrucción \new
también puede otorgar un nombre
identificativo al contexto para distinguirlo de otros contextos
del mismo tipo:
\new tipo = identificador expresión_musical
Observe la distinción entre el nombre del tipo de contexto,
Staff
, Voice
, etc., y el nombre identificativo de
una instancia en particular de ese tipo, que puede ser cualquier
secuencia de letras inventada por el usuario. En el nombre
identificativo también se pueden utilizar dígitos y espacios,
pero en este caso aquél debe ir entre comillas p.ej. \new
Staff = "MiPentagrama 1" expresión_musical
. El nombre
identificativo se utiliza para referirnos más tarde a esa
instancia en particular de un contexto. Hemos visto esto en la
sección acerca de la letra, en Voces y música vocal.
Véase también
Referencia de la notación: Crear y referenciar contextos.
[ << Conceptos fundamentales ] | [Top][Contents][Index] | [ Trucar la salida >> ] |
[ < Crear contextos ] | [ Up : Contextos y grabadores ] | [ Modificar las propiedades de los contextos > ] |
4.3.3 Explicación de los grabadores
Todas y cada una de las marcas de la salida impresa de una
partitura hecha con LilyPond está producida por un
Engraver
(grabador). Así, tenemos un grabador para
imprimir pentagramas, otro para imprimir las cabezas de las
notas, otro para las plicas, otro para las barras, etc, etc. ¡En
total hay más de 120 grabadores! Afortunadamente, para la mayor
parte de las partituras no es necesario conocer más que algunos,
y para partituras sencillas no tenemos que saber nada de ninguno
de ellos.
Los grabadores residen y operan dentro de Contextos. Los
grabadores como el grabador de la indicación metronómica,
Metronome_mark_engraver
, cuya acción y resultado se
aplican a la partitura como un todo, operan en el contexto del
nivel más alto: el contexto de partitura Score
.
El grabador de la clave Clef_engraver
y el de la armadura
Key_engraver
se encuentran probablemente en todos los
contextos de pentagrama (Staff
), pues los distintos
pentagramas podrían requerir diferentes claves y armaduras.
El grabador de las cabezas de nota Note_heads_engraver
y
el de las plicas Stem_engraver
viven en cada uno de los
contextos de voz Voice
, el contexto de nivel más bajo de
todos.
Cada grabador procesa los objetos particulares asociados con su función, y mantiene las propiedades que están relacionadas con dicha función. Estas propiedades, como las que están asociadas con los contextos, se pueden modificar para cambiar el funcionamiento del grabador o el aspecto de esos elementos en la partitura impresa.
Todos los grabadores tienen nombres compuestos de varias palabras
que describen su función. Sólo está en mayúsculas la inicial de
la primera palabra, y el resto se le une mediante guiones bajos.
Así, el grabador Staff_symbol_engraver
es responsable de
la creación de las líneas del pentagrama, y el
Clef_engraver
determina y establece la altura o el punto
de referencia sobre el pentagrama dibujando un símbolo de clave.
A continuación presentamos algunos de los grabadores más comunes, junto a su función. Podrá comprobar que es fácil adivinar la función a partir del nombre (en inglés), y viceversa.
Grabador | Función |
---|---|
Accidental_engraver | Hace las alteraciones accidentales, de precaución y de sugerencia. |
Beam_engraver | Graba las barras |
Clef_engraver | Graba las claves |
Completion_heads_engraver | Divide las notas que atraviesan una línea divisoria |
Dynamic_engraver | Crea reguladores e indicaciones dinámicas textuales |
Forbid_line_break_engraver | Evita los saltos de línea si queda algún elemento musical activo |
Key_engraver | Crea la armadura de la tonalidad |
Metronome_mark_engraver | Graba la indicación metronómica |
Note_heads_engraver | Graba la cabeza de las notas |
Rest_engraver | Graba los silencios |
Staff_symbol_engraver | Graba las cinco líneas (de forma predeterminada) del pentagrama |
Stem_engraver | Crea las plicas y los trémolos de una sola plica |
Time_signature_engraver | Crea las indicaciones de compás |
Más adelante veremos cómo la salida de LilyPond se puede cambiar mediante la modificación del funcionamiento de los Grabadores.
Véase también
Referencia de funcionamiento interno: Engravers and Performers.
[ << Conceptos fundamentales ] | [Top][Contents][Index] | [ Trucar la salida >> ] |
[ < Explicación de los grabadores ] | [ Up : Contextos y grabadores ] | [ Añadir y eliminar grabadores > ] |
4.3.4 Modificar las propiedades de los contextos
Los contextos se responsabilizan de mantener los valores de un
cierto número de properties de contexto. Muchas de ellas
se pueden cambiar para influir en la interpretación del código de
entrada y cambiar así la apariencia de la salida impresa. Se
modifican mediante la instrucción \set
. Esta instrucción
toma la forma siguiente:
\set NombreDelContexto.nombreDeLaPropiedad = #valor
Donde el NombreDelContexto es normalmente Score
,
Staff
o Voice
. Se puede omitir, en cuyo caso se
supone que es el contexto en curso (normalmente Voice
).
Los nombres de las propiedades de contexto consisten en palabras unidas sin ningún guión o barra baja, y donde todas las palabras excepto la primera empiezan en mayúscula. A continuación podemos ver algunos ejemplos de nombres de propiedades utilizadas con frecuencia. Hay muchas más que las que se muestran aquí.
nombreDeLaPropiedad | Tipo | Función | Valor de ejemplo |
---|---|---|---|
extraNatural | Booleano | Si es verdadero, poner becuadros adicionales antes de las alteraciones | #t , #f |
currentBarNumber | Entero | Ajustar el número del compás actual | 50 |
doubleSlurs | Booleano | Si es verdadero, imprimir ligaduras de expresión por encima y por debajo de las notas | #t , #f |
instrumentName | Texto | Establecer el nombre del pentagrama, situado a la izquierda | "Cello I" |
fontSize | Real | Aumentar o disminuir el tamaño de la fuente tipográfica | 2.4 |
stanza | Texto | Establecer el texto que se imprime antes del comienzo de una estrofa | "2" |
donde un valor Booleano es verdadero (#t
, True) o falso
(#f
, False), un Entero es un número entero positivo, un
número Real es un número decimal positivo o negativo, y el texto
se encierra entre comillas dobles. Observe la aparición de
signos de cuadradillo, (#
), en dos lugares diferentes:
como parte del valor Booleano antes de la t
o la f
,
y antes del valor dentro de la sentencia \set
. Así
pues, cuando se está escribiendo un valor Booleano, hay que
escribir dos signos de cuadradillo, por ejemplo: ##t
.
Antes de poder establecer cualquiera de estas propiedades,
tenemos que saber en qué contexto operan. A veces es algo obvio,
pero en ocasiones puede ser algo enrevesado. Si especificamos un
contexto equivocado, no se produce ningún mensaje de error, pero
el funcionamiento esperado no tendrá lugar. Por ejemplo, la
propiedad clefGlyph
(dibujo de la clave) vive
claramente dentro del contexto de Staff
, puesto que es el
glifo de la clave del pentagrama lo que se quiere cambiar.
En este ejemplo, la primera clave del
pentagrama se imprime correctamente, pero no la segunda (que imprime
la clave predeterminada de Sol en lugar de la de Fa), porque hemos
omitido el nombre del contexto.
<< \new Staff \relative { \set Staff.clefGlyph = "clefs.C" c''2 c } \new Staff \relative { \set clefGlyph = "clefs.F" % Wrong! d'2 d } >>
Recuerde que el nombre del contexto predeterminado es
Voice
, así que la segunda instrucción \set
establece la propiedad clefGlyph
del contexto
Voice
a clefs.F
, pero como LilyPond no busca esta
propiedad en el contexto Voice
, no se realiza ninguna
acción. Esto no es un error, y no se registra ningún mensaje en
el archivo Log de registro de errores.
De forma parecida, si el nombre de la propiedad se escribe con
alguna falta, no se produce ningún mensaje de error, y claramente
la acción esperada no puede tener lugar. De hecho, se puede
establecer cualquier ‘property’ (ficticia) usando cualquier
nombre que queramos en cualquier contexto que exista, mediante el
uso de la instrucción \set
. Pero si el nombre no es
conocido para LilyPond, no producirá ninguna acción. Algunos
editores de texto que apoyan a los archivos de entrada de
LilyPond de manera especial, documentan los nombres de
propiedades con viñetas cuando pasamos sobre ellos con el puntero
del ratón, como JEdit con la extensión LilyPondTool, o resaltan
los nombres de propiedades desconocidas de manera diferente, como
ConTEXT. Si no se utiliza un editor con tales posibilidades, se
recomienda comprobar la corrección del nombre de la propiedad en
el manual de Referencia de funcionamiento interno: véase
Tunable context properties o Contexts.
La propiedad clefGlyph
tendrá efecto solamente si se
establece dentro del contexto Staff
, pero algunas
propiedades se pueden establecer en más de un contexto. Por
ejemplo, la propiedad extraNatural
está establecida por
defecto al valor ##t
(verdadero) para todos los
pentagramas. Si se establece a ##f
(falso) en un contexto
de Staff
determinado, se aplicará solamente a las
alteraciones de ese pentagrama. Si se establece a falso en el
contexto de la partitura, Score
, se aplicará a todos los
pentagramas.
Así, esto desactivará los becuadros adicionales en un pentagrama:
<< \new Staff \relative { aeses'2 aes } \new Staff \relative { \set Staff.extraNatural = ##f aeses'2 aes } >>
y esto los desactivará en todos los pentagramas:
<< \new Staff \relative { aeses'2 aes } \new Staff \relative { \set Score.extraNatural = ##f aeses'2 aes } >>
Como un ejemplo más, si se establece clefTransposition
dentro del contexto de Score
, éste cambia inmediatamente
el valor de la transposición en todos los pentagramas en curso y
establece un nuevo valor predeterminado que se aplicará a todos
los pentagramas.
La instrucción opuesta, \unset
, tiene el efecto de
suprimir la propiedad del contexto, lo que ocasiona que la
mayoría de las propiedades vuelvan a su valor predeterminado.
Normalmente no es necesario el uso de \unset
, pues una
nueva instrucción \set
hará el ajuste deseado.
Las instrucciones \set
y \unset
pueden aparecer en
cualquier lugar del archivo de entrada y tendrán efecto a partir
del tiempo en que se encuentran y hasta el final de la partitura
o hasta que la propiedad se establezca de nuevo mediante
\set
o \unset
. Probemos a modificar el tamaño de
la fuente tipográfica, lo que afecta al tamaño de las cabezas de
las notas (entre otras cosas) varias veces. El cambio se toma a
partir del valor predeterminado, no el valor en curso.
\relative { c'4 d % make note heads smaller \set fontSize = #-4 e4 f | % make note heads larger \set fontSize = #2.5 g4 a % return to default size \unset fontSize b4 c | }
Hemos podido ver cómo establecer los valores de diversos tipos de
propiedad diferentes. Observe que los números enteros y reales
van siempre precedidos de un símbolo de cuadradillo, #
,
mientras que un valor booleano verdadero o falso se especifica
mediante ##t
y ##f
, con dos cuadradillos. Una
propiedad de texto se debe encerrar entre comillas dobles, como
antes, aunque veremos más adelante que el texto realmente se
puede especificar de una forma mucho más general utilizando la
potentísima instrucción markup
.
Cambiar las propiedades de un contexto con \with
El valor predeterminado de las propiedades de contexto se puede
establecer en el momento en que se crea el contexto. A veces
esta forma de establecer el valor de una propiedad es mucho más
clara, si ha de quedar fijo durante todo el tiempo que dure el
contexto. Cuando se crea un contexto con una instrucción
\new
puede ir inmediatamente seguido de un bloque
\with { … }
en el que se establecen los valores
predeterminados de las propiedades. Por ejemplo, si queremos
suprimir la impresión de becuadros adicionales para toda la
duración de un pentagrama, podemos escribir:
\new Staff \with { extraNatural = ##f }
de la siguiente forma:
<< \new Staff { \relative { gisis'4 gis aeses aes } } \new Staff \with { extraNatural = ##f } { \relative { gisis'4 gis aeses aes } } >>
Las propiedades ajustadas de esta manera aún pueden cambiarse
dinámicamente utilizando \set
y ser devueltas al valor
predeterminados que se estableció en el bloque \with
mediante \unset
.
Así pues, si la propiedad fontSize
se ajusta dentro de una
cláusula \with
, tiene el efecto de reiniciar el valor
predeterminado del tamaño de la fuente tipográfica. Si más tarde
se modifica con \set
, este nuevo valor predeterminado
puede restablecerse con la instrucción \unset fontSize
.
Cambiar las propiedades de un contexto con \context
Los valores de propiedad de los contextos se pueden establecer
para todos los contextos de un tipo determinado, como por
ejemplo todos los contextos de Staff
, con una única
instrucción. El tipo de contexto se identifica mediante la
utilización del nombre de su tipo, como Staff
, precedido
de una barra invertida: \Staff
. El enunciado que
establece el valor de la propiedad es el mismo que el que está en
un bloque \with
, presentado anteriormente. Se coloca en
un bloque \context
dentro de un bloque \layout
.
Cada bloque \context
afecta a todos los contextos del tipo
especificado a lo largo del bloque \score
o \book
en el que aparece el bloque \layout
. A continuación
presentamos un ejemplo que muestra el formato:
\score { \new Staff { \relative { cisis''4 e d cis } } \layout { \context { \Staff extraNatural = ##t } } }
Si se quiere aplicar la sobreescritura de propiedades a todos los pentagramas de la partitura:
\score { << \new Staff { \relative { gisis'4 gis aeses aes } } \new Staff { \relative { gisis'4 gis aeses aes } } >> \layout { \context { \Score extraNatural = ##f } } }
Las propiedades de contexto establecidas de esta forma se pueden
sobreescribir para ejemplares concretos de contextos mediante
enunciados dentro de un bloque \with
, y mediante
instrucciones \set
intercaladas dentro de enunciados
musicales.
Véase también
Referencia de la notación: Cambiar los valores por omisión de los contextos, La instrucción set.
Referencia de funcionamiento interno: Contexts, Tunable context properties.
[ << Conceptos fundamentales ] | [Top][Contents][Index] | [ Trucar la salida >> ] |
[ < Modificar las propiedades de los contextos ] | [ Up : Contextos y grabadores ] | [ Extender las plantillas > ] |
4.3.5 Añadir y eliminar grabadores
Hemos visto que cada uno de los contextos contiene varios grabadores, cada uno de los cuales a su vez es responsable de la producción de una fracción particular del resultado impreso, como líneas divisorias, pentagramas, cabezas, plicas, etc. Si un grabador es eliminado de un contexto, ya no podrá producir su salida impresa. Es una forma algo radical de modificar la salida, pero a veces puede ser útil.
Cambiar un solo contexto
Para eliminar un grabador de un contexto único, usamos la
instrucción \with
situada inmediatamente después de la
instrucción que crea el contexto, como en la sección anterior.
Como ilustración, repitamos un ejemplo extraído de la sección
anterior con las líneas del pentagrama eliminadas. Recuerde que
las líneas del pentagrama están dibujadas por el grabador
Staff_symbol_engraver
.
\new Staff \with { \remove Staff_symbol_engraver } \relative { c'4 d \set fontSize = #-4 % make note heads smaller e4 f | \set fontSize = #2.5 % make note heads larger g4 a \unset fontSize % return to default size b4 c | }
Los grabadores también se pueden añadir a los contextos individuales La instrucción que lo hace es
\consists Nombre_del_grabador
,
situada dentro de un bloque \with
. Ciertas partituras
vocales tienen una indicación de ámbito o tesitura situada al
principio del pentagrama para indicar el ámbito de notas en dicho
pentagrama, véase ambitus. El ambitus se produce por
parte del grabador Ambitus_engraver
, que normalmente no
está incluido en ningún contexto. Si lo añadimos al contexto
Voice
, calcula el rango a partir de esa única voz:
\new Staff << \new Voice \with { \consists Ambitus_engraver } { \relative { \voiceOne c''4 a b g } } \new Voice { \relative { \voiceTwo c'4 e d f } } >>
pero si añadimos el grabador de ámbito al contexto de
Staff
, calcula el rango de todas las notas en todas las
voces de ese pentagrama:
\new Staff \with { \consists Ambitus_engraver } << \new Voice { \relative { \voiceOne c''4 a b g } } \new Voice { \relative { \voiceTwo c'4 e d f } } >>
Cambiar todos los contextos del mismo tipo
Los ejemplos anteriores muestran la manera de eliminar o añadir
grabadores a los contextos individuales. También es posible
eliminar o añadir grabadores a todos los contextos de un tipo
específico, situando las instrucciones en el contexto
correspondiente dentro de un bloque \layout
. Por ejemplo,
si queremos mostrar los rangos de tesitura para todos los
pentagramas de una partitura de cuatro pautas, podemos escribir
\score { << \new Staff { \relative { c''4 a b g } } \new Staff { \relative { c'4 a b g } } \new Staff { \clef "G_8" \relative { c'4 a b g } } \new Staff { \clef "bass" \relative { c4 a b g } } >> \layout { \context { \Staff \consists Ambitus_engraver } } }
Los valores predeterminados de las propiedades de los contextos
también se pueden establecer para todos los contextos de un tipo
en particular incluyendo la instrucción \set
dentro de un
bloque \context
de la misma forma.
Véase también
Referencia de la notación: Modificar los complementos (plug-ins) de contexto, Cambiar los valores por omisión de los contextos.
Advertencias y problemas conocidos
Los grabadores Stem_engraver
y Beam_engraver
(de
plica y de barra) adjuntan a la cabeza de las notas los objetos
que crean. Si se suprime el grabador de cabezas de nota
Note_heads_engraver
, no se produce ninguna cabeza y por
tanto no se crean tampoco plicas ni barras.
[ << Conceptos fundamentales ] | [Top][Contents][Index] | [ Trucar la salida >> ] |
[ < Añadir y eliminar grabadores ] | [ Up : Conceptos fundamentales ] | [ Soprano y violoncello > ] |
4.4 Extender las plantillas
Ha leído el tutorial y ahora sabe escribir música. Pero ¿cómo puede poner los pentagramas que quiere? Las plantillas están muy bien, pero ¿qué ocurre si quiere algo que no está en una de ellas? Bien, puede encontrar montañas de plantillas (véase Plantillas) que le pueden servir como punto de partida. Pero ¿y si quiere algo que no está contemplado aquí? Continúe leyendo.
4.4.1 Soprano y violoncello | ||
4.4.2 Partitura vocal a cuatro voces SATB | ||
4.4.3 Crear una partitura partiendo de cero | ||
4.4.4 Ahorrar tecleo mediante variables y funciones | ||
4.4.5 Partituras y particellas |
[ << Conceptos fundamentales ] | [Top][Contents][Index] | [ Trucar la salida >> ] |
[ < Extender las plantillas ] | [ Up : Extender las plantillas ] | [ Partitura vocal a cuatro voces SATB > ] |
4.4.1 Soprano y violoncello
Para empezar, tome la plantilla que le parezca más parecida a aquello que quiere conseguir. Digamos que quiere escribir algo para soprano y cello. En este caso comenzaríamos con la plantilla ‘Notas y letra’ (para la parte de soprano).
\version "2.25.22" melodia = \relative { \clef "treble" \key c \major \time 4/4 a4 b c d } texto = \lyricmode { Aaa Bee Cee Dee } \score { << \new Voice = "uno" { \autoBeamOff \melodia } \new Lyrics \lyricsto "uno" \texto >> \layout { } \midi { } }
Ahora queremos añadir una parte de violoncello. Veamos el ejemplo ‘Sólo notas’:
\version "2.25.22" melodia = \relative { \clef "treble" \key c \major \time 4/4 a4 b c d } \score { \new Staff \melodia \layout { } \midi { } }
No necesitamos dos instrucciones \version
. Vamos a
necesitar la sección melodia
. No queremos dos secciones
\score
(si tuviésemos dos \score
s, acabaríamos con
las dos particellas por separado. Queremos las dos juntas, como
un dúo. Dentro de la sección \score
, no nos hacen falta
dos \layout
ni dos \midi
.
Si nos limitásemos a copiar y pegar la sección melodia
,
acabaríamos con dos secciones melodia
separadas, así que
vamos a cambiarles el nombre. Llamaremos musicaSoprano
a
la sección de la soprano y musicaCello
a la sección del
violoncello. Al mismo tiempo cambiaremos el nombre de
texto
a letraSoprano
. Recuerde cambiar el nombre a
las dos apariciones de todos estos nombres – tanto la definición
inicial (la parte melodia = \relative {
) – como el uso
de ese nombre (en la sección \score
).
También aprovecharemos para cambiar el pentagrama de la parte del cello (los violoncellos se escriben normalmente en clave de Fa). Asimismo, cambiaremos algunas notas del cello.
\version "2.25.22" musicaSoprano = \relative { \clef "treble" \key c \major \time 4/4 a4 b c d } letraSoprano = \lyricmode { Aaa Bee Cee Dee } musicaCello = \relative { \clef "bass" \key c \major \time 4/4 d4 g fis8 e d4 } \score{ << \new Voice = "uno" { \autoBeamOff \musicaSoprano } \new Lyrics \lyricsto "uno" \letraSoprano >> \layout { } \midi { } }
Esto tiene una apariencia prometedora, pero la parte del cello no
sale en la partitura (no la hemos puesto en la sección
\score
). Si queremos que la parte del cello aparezca
debajo de la de soprano, tenemos que añadir
\new Staff \musicaCello
justo debajo de todo lo de la soprano. También tenemos que poner
<<
y >>
antes y después de la música – lo que
indica a LilyPond que hay más de una cosa (en este caso,
Staff
) sucediendo al mismo tiempo –. La \score
se
parecerá ahora a esto:
\score { << << \new Voice = "uno" { \autoBeamOff \sopranoMusic } \new Lyrics \lyricsto "uno" \letraSoprano >> \new Staff \musicaCello >> \layout { } \midi { } }
Lo anterior parece un poco enrevesado; los márgenes están descuadrados. Esto tiene fácil solución. Presentamos aquí la plantilla completa para soprano y cello.
sopranoMusic = \relative { \clef "treble" \key c \major \time 4/4 a4 b c d } sopranoLyrics = \lyricmode { Aaa Bee Cee Dee } celloMusic = \relative { \clef "bass" \key c \major \time 4/4 d4 g fis8 e d4 } \score { << << \new Voice = "one" { \autoBeamOff \sopranoMusic } \new Lyrics \lyricsto "one" \sopranoLyrics >> \new Staff \celloMusic >> \layout { } \midi { } }
Véase también
Las plantillas de inicio se pueden encontrar en el apéndice ‘Plantillas’, véase Plantillas de pentagrama único.
[ << Conceptos fundamentales ] | [Top][Contents][Index] | [ Trucar la salida >> ] |
[ < Soprano y violoncello ] | [ Up : Extender las plantillas ] | [ Crear una partitura partiendo de cero > ] |
4.4.2 Partitura vocal a cuatro voces SATB
La mayor parte de las partituras vocales escritas para coro mixto a cuatro voces con acompañamiento orquestal, como el «Elías» de Mendelssohn o el «Mesías» de Haendel, tienen la música coral y la letra en cuatro pentagramas para S, A, T y B, respectivamente, con una reducción de piano del acompañamiento de orquesta, por debajo. He aquí un ejemplo del «Mesías» de Haendel:
Nota: Esta disposición se puede conseguir muy fácilmente
usando la plantilla incorporada: satb.ly
, véase
Plantillas incorporadas. Pero para mayor facilidad de uso,
esta plantilla oculta deliberadamente la necesaria estructura de
contexto, proporcionándola automáticamente en vez de ello. Así
pues, para nuestro objetivo de aprendizaje, veamos cómo construir
la estructura partiendo de cero. Quizá necesite hacerlo cada vez
que la plantilla incorporada no cumpla sus necesidades
completamente.
La plantilla (no incorporada: de copiar y editar) más parecida a esta disposición es Partitura vocal SATB y reducción para piano automática, pero necesitamos cambiar la disposición y añadir un acompañamiento de piano que no esté derivado automáticamente de las partes vocales. Las variables que contienen la música y la letra de las partes vocales es adecuada, pero tendremos que añadir variables para la reducción de piano.
El orden en que aparecen los contextos en el ChoirStaff de la
plantilla no se corresponde con el orden de la partitura vocal
que hemos mostrado más arriba. Tenemos que reordenarlas para que
haya cuatro pentagramas con la letra escrita directamente bajo
las notas de cada parte. Todas las voces deben ser
\voiceOne
, que es la predeterminada, para que las
instrucciones \voiceXXX
se puedan eliminar. También
tenemos que especificar la clave de tenor (clave de sol octava
baja) en las partes de tenor. Aún no hemos encontrado la forma
en que la letra se especifica en la plantilla, así que tenemos
que utilizar el método que nos resulta familiar. También tenemos
que escribir los nombres de cada pentagrama.
Al hacerlo así obtenemos el ChoirStaff siguiente:
\new ChoirStaff << \new Staff = "sopranos" \with { instrumentName = "Soprano" } << \new Voice = "sopranos" { \global \musicaSoprano } >> \new Lyrics \lyricsto "sopranos" { \letraSoprano } \new Staff = "altos" \with { instrumentName = "Alto" } << \new Voice = "altos" { \global \musicaAlto } >> \new Lyrics \lyricsto "altos" { \letraAlto } \new Staff = "tenors" \with { instrumentName = "Tenor" } << \new Voice = "tenors" { \global \musicaTenor } >> \new Lyrics \lyricsto "tenors" { \letraTenor } \new Staff = "basses" \with { instrumentName = "Bass" } << \new Voice = "basses" { \global \musicaBajo } >> \new Lyrics \lyricsto "bajos" { \letraBajo } >> % fin del ChoirStaff
A continuación debemos trabajar sobre la parte de piano. Es fácil: tan sólo hay que sacar la parte de piano de la plantilla de ‘Piano solista’:
\new PianoStaff \with { instrumentName = "Piano " } << \new Staff = "superior" \superior \new Staff = "inferior" \inferior >>
y escribir las definiciones de variable para superior
e
inferior
.
Los grupos ChoirStaff y PianoStaff se deben combinar utilizando ángulos dobles, ya queremos apilarlos unos sobre otros:
<< % combinar los grupos ChoirStaff y PianoStaff uno sobre el otro \new ChoirStaff << \new Staff = "sopranos" << \new Voice = "sopranos" { \global \musicaSoprano } >> \new Lyrics \lyricsto "sopranos" { \letraSoprano } \new Staff = "altos" << \new Voice = "altos" { \global \musicaAlto } >> \new Lyrics \lyricsto "altos" { \letraAlto } \new Staff = "tenores" << \clef "G_8" % clave de tenor \new Voice = "tenores" { \global \musicaTenor } >> \new Lyrics \lyricsto "tenores" { \letraTenor } \new Staff = "bajos" << \clef "bass" \new Voice = "bajos" { \global \musicaBajo } >> \new Lyrics \lyricsto "bajos" { \letraBajo } >> % fin del ChoirStaff \new PianoStaff \with { instrumentName = "Piano" } << \new Staff = "upper" \upper \new Staff = "lower" \lower >> >>
Al combinar todo esto junto y escribir la música de los tres compases del ejemplo anterior, obtenemos:
global = { \key d \major \time 4/4 } sopranoMusic = \relative { \clef "treble" r4 d''2 a4 | d4. d8 a2 | cis4 d cis2 | } sopranoWords = \lyricmode { Wor -- thy | is the lamb | that was slain | } altoMusic = \relative { \clef "treble" r4 a'2 a4 | fis4. fis8 a2 | g4 fis fis2 | } altoWords = \sopranoWords tenorMusic = \relative { \clef "G_8" r4 fis'2 e4 | d4. d8 d2 | e4 a, cis2 | } tenorWords = \sopranoWords bassMusic = \relative { \clef "bass" r4 d'2 cis4 | b4. b8 fis2 | e4 d a'2 | } bassWords = \sopranoWords upper = \relative { \clef "treble" \global r4 <a' d fis>2 <a e' a>4 | <d fis d'>4. <d fis d'>8 <a d a'>2 | <g cis g'>4 <a d fis> <a cis e>2 | } lower = \relative { \clef "bass" \global <d, d'>4 <d d'>2 <cis cis'>4 | <b b'>4. <b' b'>8 <fis fis'>2 | <e e'>4 <d d'> <a' a'>2 | } \score { << % combine ChoirStaff and PianoStaff in parallel \new ChoirStaff << \new Staff = "sopranos" \with { instrumentName = "Soprano" } << \new Voice = "sopranos" { \global \sopranoMusic } >> \new Lyrics \lyricsto "sopranos" { \sopranoWords } \new Staff = "altos" \with { instrumentName = "Alto" } << \new Voice = "altos" { \global \altoMusic } >> \new Lyrics \lyricsto "altos" { \altoWords } \new Staff = "tenors" \with { instrumentName = "Tenor" } << \new Voice = "tenors" { \global \tenorMusic } >> \new Lyrics \lyricsto "tenors" { \tenorWords } \new Staff = "basses" \with { instrumentName = "Bass" } << \new Voice = "basses" { \global \bassMusic } >> \new Lyrics \lyricsto "basses" { \bassWords } >> % end ChoirStaff \new PianoStaff \with { instrumentName = "Piano " } << \new Staff = "upper" \upper \new Staff = "lower" \lower >> >> }
4.4.3 Crear una partitura partiendo de cero
Después de adquirir algo de soltura en la escritura del código de LilyPond, se dará cuenta de que es más fácil construir completamente una partitura partiendo de cero, que modificar una plantilla. También puede desarrollar su propio estilo de forma que se adapte al tipo de música que le apetezca. Veamos a continuación cómo confeccionar una partitura para un preludio de órgano, como ejemplo.
Comenzamos con una sección para el encabezamiento. Aquí es donde van el título, nombre del compositor, etc., después van las definiciones de las variables, y finalmente el bloque de partitura. Comencemos a verlas por encima y más tarde completaremos los detalles.
Utilizaremos los dos primeros compases del preludio de Bach basado en Jesu, meine Freude, que está escrito para órgano con dos manuales y pedal. Tiene estos dos compases de música al final de la sección. La parte del manual superior tiene dos voces, y el inferior y el pedal, una voz cada uno. Así pues, necesitamos cuatro definiciones para la música y una más para definir el compás y la tonalidad:
\version "2.25.22" \header { title = "Jesu, meine Freude" composer = "J S Bach" } keyTime = { \key c \minor \time 4/4 } MusicaManualUnoVozUno = { s1 } MusicaManualUnoVozDos = { s1 } MusicaManualDos = { s1 } MusicaPedal = { s1 } \score { }
Por el momento hemos escrito tan sólo una nota espaciadora,
s1
, en lugar de la música de verdad. La añadiremos más
adelante.
A continuación veamos qué va en el bloque de partitura. Sencillamente, reflejaremos la estructura de pentagramas que deseemos. La música de órgano se escribe por lo general en tres pentagramas, uno para cada uno de los manuales y otro para el pedal. Los pentagramas de los manuales se abarcan con una llave, así que los incluiremos en un grupo PianoStaff. La primera parte de manual tiene dos voces, y la segunda sólo una.
\new PianoStaff << \new Staff = "ManualUno" << \new Voice { \MusicaManualUnoVozUno } \new Voice { \MusicaManualUnoVozDos } >> % fin del contexto de Staff ManualUno \new Staff = "ManualDos" << \new Voice { \MusicaManualDos } >> % fin del contexto de Staff ManualDos >> % fin del contexto de PianoStaff
Después, tenemos que añadir un pentagrama para el órgano de pedal. Esto va por debajo del PianoStaff, pero debe ser simultáneo con él, por lo que escribimos dobles ángulos rodeando a los dos. Si esto se nos olvida, se producirá un error en el archivo log de registro. ¡Es un error muy común que cometerá antes o después! Intente copiar el ejemplo final que aparece al final de la sección, borre los dobles ángulos y procese el archivo para ver qué error produce.
<< % el grupo PianoStaff y el pentagrama de Pedal son simultáneos \new PianoStaff << \new Staff = "ManualUno" << \new Voice { \MusicaManualUnoVozUno } \new Voice { \MusicaManualUnoVozDos } >> % fin del contexto de Staff ManualUno \new Staff = "ManualDos" << \new Voice { \MusicaManualDos } >> % fin del contexto de Staff ManualDos >> % fin del contexto de PianoStaff \new Staff = "OrganoPedal" << \new Voice { \MusicaOrganoPedal } >> >>
No es necesario utilizar la construcción simultánea <<
… >>
para el pentagrama del manual dos y el pentagrama del
órgano de pedal, ya que contienen una única expresión, pero no
hace daño, y es una buena costumbre utilizar siempre dobles
ángulos después de \new Staff
cuando hay varias voces. Lo
opuesto es cierto para las voces: normalmente deben ir seguidas
de llaves { … }
en caso de que tengamos música
codificada como distintas variables que se deben situar
consecutivamente.
Añadamos esta estructura al bloque de partitura, y ajustemos el
sangrado de los márgenes. También escribimos las claves
correspondientes, nos aseguramos de que las plicas y ligaduras de
unión y de expresión en cada una de las voces del pentagrama
superior apuntan en la dirección adecuada con \voiceOne
y
\voiceTwo
y escribimos el compás y la tonalidad en cada
uno de los pentagramas usando nuestra variable previamente
definida \TimeKey
.
\score { << % el grupo PianoStaff y el pentagrama de Pedal son simultáneos \new PianoStaff << \new Staff = "ManualUno" << \keyTime % establecer compás y tonalidad \clef "treble" \new Voice { \voiceOne \MusicaManualUnoVozUno } \new Voice { \voiceTwo \MusicaManualUnoVozDos } >> % fin del contexto de Staff ManualUno \new Staff = "ManualDos" << \keyTime \clef "bass" \new Voice { \MusicaManualDos } >> % fin del contexto de Staff ManualDos >> % fin del contexto de PianoStaff \new Staff = "OrganoPedal" << \keyTime \clef "bass" \new Voice { \MusicaOrganoPedal } >> % fin del pentagrama de OrganoPedal >> } % fin del contexto Score
La disposición anterior de los pentagramas de órgano es casi
perfecta; sin embargo, existe un ligero defecto que no es visible
cuando se observa un solo sistema: la distancia entre el
pentagrama de pedal y el de la mano izquierda debiera ser
aproximadamente la misma que la que existe entre los pentagramas
de las manos izquierda y derecha. Concretamente, la
ampliabilidad de los pentagramas dentro de un contexto
PianoStaff
es limitada (de forma que la distancia entre
los pentagramas de las manos izquierda y derecha nunca crezcan
excesivamente), y el pentagrama de los pedales debería
comportarse de una forma similar.
El grado de ampliabilidad o separabilidad de los pentagramas se
puede controlar con la propiedad staff-staff-spacing
del
‘objeto gráfico’ VerticalAxisGroup
(los objetos gráficos
reciben por lo general el nombre de ‘grob’s en la documentación
de lilypond); no se preocupe por el momento de los detalles, pues
esto se explica más tarde de forma exhaustiva. Los más curiosos
pueden echar un vistazo a Panorámica de la modificación de
las propiedades. En este caso, queremos modificar solamente la
sub-propiedad stretchability
. Cualquier valor que no se
modifique, empleará el valor predeterminado. De nuevo, los
curiosos encontrarán los valores predeterminados para la propiedad
staff-staff-spacing
en el archivo
scm/define-grobs.scm examinando la definición de la
propiedad default-staff-staff-spacing
del grob
VerticalAxisGroup
. El valor de stretchability
que
se ve a continucación se toma de la definición del grob
StaffGrouper
(en el archivo scm/define-grobs.scm) de
forma que los valores sean idénticos.
\score { << % el grupo PianoStaff y el pentagrama de Pedal son simultáneos \new PianoStaff << \new Staff = "ManualUno" << \keyTime % establecer compás y tonalidad \clef "treble" \new Voice { \voiceOne \MusicaManualUnoVozUno } \new Voice { \voiceTwo \MusicaManualUnoVozDos } >> % % fin del contexto de Staff ManualUno \new Staff = "ManualDos" \with { \override VerticalAxisGroup.staff-staff-spacing.stretchability = 5 } << \keyTime \clef "bass" \new Voice { \MusicaManualDos } >> % fin del contexto de Staff ManualDos >> % fin del contexto de PianoStaff \new Staff = "OrganoPedal" << \keyTime \clef "bass" \new Voice { \MusicaOrganoPedal } >> % fin del pentagrama de OrganoPedal >> } % fin del contexto Score
Con esto se completa la estructura. Toda música para órgano de tres pentagramas tendrá una estructura similar, aunque el número de voces puede variar. Todo lo que nos queda es añadir la música, y combinar todas las partes.
\header { title = "Jesu, meine Freude" composer = "J S Bach" } keyTime = { \key c \minor \time 4/4 } ManualOneVoiceOneMusic = \relative { g'4 g f ees | d2 c | } ManualOneVoiceTwoMusic = \relative { ees'16 d ees8~ 16 f ees d c8 d~ d c~ | 8 c4 b8 c8. g16 c b c d | } ManualTwoMusic = \relative { c'16 b c8~ 16 b c g a8 g~ 16 g aes ees | f16 ees f d g aes g f ees d ees8~ 16 f ees d | } PedalOrganMusic = \relative { r8 c16 d ees d ees8~ 16 a, b g c b c8 | r16 g ees f g f g8 c,2 | } \score { << % PianoStaff and Pedal Staff must be simultaneous \new PianoStaff << \new Staff = "ManualOne" << \keyTime % set key and time signature \clef "treble" \new Voice { \voiceOne \ManualOneVoiceOneMusic } \new Voice { \voiceTwo \ManualOneVoiceTwoMusic } >> % end ManualOne Staff context \new Staff = "ManualTwo" \with { \override VerticalAxisGroup.staff-staff-spacing.stretchability = 5 } << \keyTime \clef "bass" \new Voice { \ManualTwoMusic } >> % end ManualTwo Staff context >> % end PianoStaff context \new Staff = "PedalOrgan" << \keyTime \clef "bass" \new Voice { \PedalOrganMusic } >> % end PedalOrgan Staff context >> } % end Score context
Véase también
Glosario musical: system.
[ << Conceptos fundamentales ] | [Top][Contents][Index] | [ Trucar la salida >> ] |
[ < Crear una partitura partiendo de cero ] | [ Up : Extender las plantillas ] | [ Partituras y particellas > ] |
4.4.4 Ahorrar tecleo mediante variables y funciones
Llegado a este punto, usted ha visto cosas de este tipo:
hornNotes = \relative { c''4 b dis c } \score { { \hornNotes } }
Incluso se dará cuenta de que esto puede ser útil en música minimalista:
fragmentA = \relative { a'4 a8. b16 } fragmentB = \relative { a'8. gis16 ees4 } violin = \new Staff { \fragmentA \fragmentA | \fragmentB \fragmentA | } \score { { \violin } }
Sin embargo también puede usar estos identificadores (que también se conocen como variables, macros o instrucciones definidas por el usuario) para hacer trucos:
dolce = \markup { \italic \bold dolce } centerText = { \once \override TextScript.self-alignment-X = #CENTER } fthenp =_\markup { \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p } violin = \relative { \repeat volta 2 { c''4._\dolce b8 a8 g a b | \centerText c4.^"hi there!" d8 e f g d | c4.\fthenp b8 c4 c-. | } } \score { { \violin } }
Obviamente estos identificadores son útiles para ahorrar tecleo. Pero son dignos de tener en cuenta incluso si se van a utilizar una sola vez: reducen la complejidad. Examinemos el ejemplo anterior reescrito sin ningún identificador. Encontrará que es mucho más difícil de leer, sobre todo la última línea.
violin = \relative { \repeat volta 2 { c''4._\markup { \italic \bold dolce } b8 a8 g a b | \once \override TextScript.self-alignment-X = #CENTER c4.^"hi there!" d8 e f g d | c4._\markup { \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p } b8 c4 c-. | } }
¿Se acuerda de los ‘post-eventos’? Las articulaciones, digitaciones, y cualquier cosa que se deba añadir después de una nota (véase Estructura de un elemento de nota), con frecuencia precedido de un guion o un modificador de dirección. De hecho, incluso estos eventos se pueden almacenar en una variable (en cuyo caso no se requieren las llaves curvas acostumbradas, ya que no las usaríamos tampoco entre una nota y sus articulaciones).
Si la mencionada definición incluye un prefijo, entonces la variable se peude usar directamente después de la nota, a no ser que queramos cambiar la dirección, en cuyo caso podemos insertar un modificador que tendrá la prevalencia:
articulationVar = -^-! artEsprVar = \articulationVar ^\espressivo \relative c' { c\articulationVar d e2^\articulationVar d2\artEsprVar c_\artEsprVar }
Hasta ahora hemos contemplado la sustitución estática: cuando
LilyPond se encuentra con \centerText
, lo sustituye con
aquello que hemos definido que sea (es decir, todo lo que está a
la derecha de centerText=
).
LilyPond también puede manejar sustituciones no estáticas (piense en ellas como en funciones).
padText = #(define-music-function (padding) (number?) #{ \once \override TextScript.padding = #padding #}) \relative { c''4^"piu mosso" b a b \padText #1.8 c4^"piu mosso" b a b \padText #2.6 c4^"piu mosso" b a b }
La utilización de identificadores también es una buena forma de
reducir el trabajo si la sintaxis de entrada de LilyPond cambia
(véase Actualizar ficheros con convert-ly). Si tiene
una sola definición (como p.ej. \dolce
) para todos sus
archivos (ver Hojas de estilo), y después la sintaxis se
modifica, sólo tendrá que actualizar su definición \dolce
única, en lugar de tener que hacer cambios en cada uno de los
archivos .ly.
[ << Conceptos fundamentales ] | [Top][Contents][Index] | [ Trucar la salida >> ] |
[ < Ahorrar tecleo mediante variables y funciones ] | [ Up : Extender las plantillas ] | [ Trucar la salida > ] |
4.4.5 Partituras y particellas
En música orquestal, todas las notas se imprimen dos veces. Una vez en las particellas para los músicos, y otra para la partitura del director. Los identificadores se pueden usar para evitar la duplicación del trabajo. La música se escribe una vez y se almacena en una variable. El contenido de dicha variable se usa después para generar tanto la particella como la partitura del director.
Es muy conveniente definir las notas en un archivo especial. Por ejemplo, supongamos que el archivo trompa.ly contiene la siguiente parte de un dúo para trompa y fagot:
notasTrompa = \relative { \time 2/4 r4 f8 a | cis4 f | e4 d | }
Luego se hace una particella escribiendo en un archivo lo siguiente
\include "trompa.ly" \header { instrument = "Trompa en Fa" } { \transpose f c' \notasTrompa }
La línea
\include "trompa.ly"
sustituye el contenido de trompa.ly en esta posición
dentro del archivo, así que notasTrompa
se define con
posterioridad. La instrucción \transpose f c'
indica
que el argumento constituido por \notasTrompa
se debe
transponer una quinta hacia arriba. Lo que suena como f
se escribe como c'
, lo que corresponde con el tono de
afinación de una trompa normal en Fa. La transposición se
puede ver en la siguiente salida
En piezas para conjunto, con frecuencia una de las voces no suena
durante muchos compases. Esto queda denotado por un silencio
especial, el silencio multicompás. Se introduce con una R
mayúscula seguida de una duración (1
en el caso de la
redonda, 2
en el caso de una blanca, etc.).
Multiplicando la duración se pueden construir silencios más
largos. Por ejemplo, este silencio ocupa 3 compases de 2/4
R2*3
Cuando se imprime la particella tienen que comprimirse los silencios multicompás. Existe una función musical para hacerlo:
\compressMMRests { ... }
Applying this to hornNotes
gives:
Esta partitura se hace combinando toda la música junta.
Suponiendo que la otra voz se encuentra dentro de
notasFagot
en el archivo fagot.ly, la partitura se
hace con
\include "fagot.ly" \include "trompa.ly" << \new Staff \notasTrompa \new Staff \notasFagot >>
lo que nos lleva a
Véase también
Manual de aprendizaje: Organizar las piezas mediante variables.
Referencia de la notación: Transposición, Escritura de las particellas, Silencios de compás completo, Inclusión de archivos de LilyPond.
[ << Conceptos fundamentales ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Partituras y particellas ] | [ Up : Top ] | [ Elementos de trucaje > ] |
5 Trucar la salida
Este capítulo trata de cómo modificar la salida. LilyPond es extremadamente configurable; prácticamente todos los fragmentos de la salida se pueden cambiar.
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Trucar la salida ] | [ Up : Trucar la salida ] | [ Introducción al trucaje > ] |
5.1 Elementos de trucaje
5.1.1 Introducción al trucaje | ||
5.1.2 Objetos e interfaces | ||
5.1.3 Convenciones de nombres de objetos y propiedades | ||
5.1.4 Métodos de trucaje |
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Elementos de trucaje ] | [ Up : Elementos de trucaje ] | [ Objetos e interfaces > ] |
5.1.1 Introducción al trucaje
El ‘Trucaje’ es un término de LilyPond que denota los diversos métodos que el usuario tiene a su disposición para modificar el proceso de interpretación del archivo de entrada y cambiar la apariencia de la salida impresa. Algunos trucos son muy fáciles de usar; otros son más complejos. Pero en su conjunto, los métodos de trucaje disponibles posibilitan conseguir casi cualquier apariencia que deseemos en la música impresa.
En esta sección vamos a estudiar los conceptos básicos que se necesitan para comprender el trucaje. Más tarde daremos un amplio abanico de instrucciones listas para usar, que podrá simplemente copiar para obtener el mismo efecto en sus partituras, y al mismo tiempo mostraremos la forma de construir dichas instrucciones para que pueda aprender cómo desarrollar sus propios trucos.
Antes de comenzar con este capítulo, quizá quiera echar un vistazo a la sección Contextos y grabadores, pues los Contextos, los Grabadores y las Propiedades que se contienen en ellos son fundamentales para comprender y construir los trucos.
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Introducción al trucaje ] | [ Up : Elementos de trucaje ] | [ Convenciones de nombres de objetos y propiedades > ] |
5.1.2 Objetos e interfaces
El trucaje consiste en modificar el funcionamiento y estructura interna del programa LilyPond, por lo que en primer lugar introduciremos algunos términos que se usan para describir dichas operaciones y estructuras internas.
El término ‘Objeto’ es un término genérico que se usa para
referirse a la multitud de estructuras internas que LilyPond
construye durante el procesado de un archivo de entrada. Así,
cuando se encuentra una instrucción como \new Staff
, se
construye un objeto nuevo del tipo Staff
. Entonces, este
objeto Staff
contiene todas las propiedades asociadas con
ese pentagrama en particular, por ejemplo, su nombre y su
armadura, además de otros detalles de los grabadores que se han
asignado para que operen dentro del contexto del pentagrama. De
forma similar, hay objetos que guardan las propiedades de todos
los demás contextos, como objetos de Voice
, objetos de
Score
, objetos de Lyrics
, así como objetos que
representan todos los elementos notacionales como líneas
divisorias, cabezas de las notas, ligaduras, indicaciones
dinámicas, etc. Cada objeto tiene su propio conjunto de valores
de propiedad.
Ciertos tipos de objetos reciben nombres especiales. Los objetos que representan elementos de notación sobre la salida impresa como cabezas de notas, plicas, ligaduras de expresión y de unión, digitaciones, claves, etc. reciben el nombre de ‘Objetos de presentación’, a menudo conocidos como ‘Objetos gráficos’, o abreviadamente ‘Grobs’. Aún son objetos en el sentido genérico que hemos mencionado, y también todos ellos tienen propiedades asociadas, como su posición, tamaño, color,etc.
Ciertos objetos de presentación son aún más especializados. Las ligaduras de fraseo, los reguladores, las indicaciones de octava alta y baja, y muchos otros objetos gráficos no están situados en un solo lugar: tienen un punto de inicio, un punto de final, y quizá otras propiedades relacionadas con su forma. Los objetos con una forma extendida como estos, reciben el nombre de «Objetos de extensión» o ‘Spanners’.
Los «spanners» no se pueden trucar después de haberse creado.
Ello incluye tanto a StaffSymbol
como a
LedgerLineSpanner
, que continúan a lo largo de toda la
partitura (excepto si se les da fin con la instrucción
\stopStaff
y se vuelven a crear con la instrucción
\startStaff
.
Es más, existen objetos gráficos ‘abstractos’ que no impriman
nada por sí mismos, sino que más bien recopilan, posicionan y
gestionan a otros objetos gráficos. Los ejemplos usuales son
DynamicLineSpanner
, BreakAlignment
,
NoteColumn
, VerticalAxisGroup
,
NonMusicalPaperColumn
y similares. Más tarde veremos cómo
se usan algunos de ellos.
Aún falta por explicar qué son los ‘Interfaces’. Muchos
objetos, incluso aunque son bastante diferentes, comparten
funcionalidades que se deben procesar de la misma manera. Por
ejemplo, todos los objetos gráficos tienen un color, un tamaño,
una posición, etc., y todas estas propiedades se procesan de la
misma forma durante la interpretación del archivo de entrada por
parte de LilyPond. Para simplificar estas operaciones internas,
estas acciones y propiedades comunes se agrupan en un objeto
llamado grob-interface
, interface de grob. Hay muchas
otras agrupaciones de propiedades comunes como ésta, y cada una
recibe un nombre que acaba en interface
. En total hay más
de 100 interfaces de éstos. Veremos más adelante porqué esto es
del interés y de utilidad para el usuario.
Estos son, en fin, los términos principales relativos a los objetos que vamos a utilizar en este capítulo.
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Objetos e interfaces ] | [ Up : Elementos de trucaje ] | [ Métodos de trucaje > ] |
5.1.3 Convenciones de nombres de objetos y propiedades
Ya hemos visto ciertas convenciones de nomenclatura de objetos, en la sección Contextos y grabadores. En este lugar, para más fácil referencia, presentamos una lista de los tipos de objetos y propiedades más comunes, junto con las convenciones según las cuales reciben su nombre, y un par de ejemplos de nombres reales. Hemos utilizado una ‘A’ mayúscula para denotar cualquier carácter alfabético en mayúsculas, y ‘aaa’ para cualquier número de caracteres alfabéticos en minúscula. Otros caracteres se utilizan literalmente como están.
Objeto o tipo de propiedad | Convención de nomenclatura | Ejemplos |
---|---|---|
Contextos | Aaaa o AaaaAaaaAaaa | Staff, GrandStaff |
Objetos de presentación | Aaaa o AaaaAaaaAaaa | Slur, NoteHead |
Grabadores | Aaaa_aaa_engraver | Clef_engraver, Note_heads_engraver |
Interfaces | aaa-aaa-interface | grob-interface, break-aligned-interface |
Propiedades de contextos | aaa o aaaAaaaAaaa | alignAboveContext, skipBars |
Propiedades de objetos de presentación | aaa o aaa-aaa-aaa | direction, beam-thickness |
Como podremos ver en breve, las propiedades de distintos tipos de objeto se modifican por parte de diferentes instrucciones; así pues, es útil poder reconocer los tipos de objetos y propiedades a partir de sus nombres.
Véase también
Referencia de la notación: Modificar las propiedades.
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Convenciones de nombres de objetos y propiedades ] | [ Up : Elementos de trucaje ] | [ La instrucción \override > ] |
5.1.4 Métodos de trucaje
La instrucción \override
La instrucción \override | ||
La instrucción \revert | ||
El prefijo \once | ||
La instrucción \overrideProperty | ||
La instrucción \tweak | ||
El prefijo \single |
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Métodos de trucaje ] | [ Up : Métodos de trucaje ] | [ La instrucción \revert > ] |
La instrucción \override
Ya hemos visto las instrucciones \set
y \with
, que
se usan para cambiar las propiedades de los contextos y
para quitar y poner grabadores, en
Modificar las propiedades de los contextos y
Añadir y eliminar grabadores. Ahora debemos examinar
algunas otras instrucciones importantes.
La instrucción que cambia las propiedades de los objetos
de presentación es \override
. Puesto que esta instrucción
debe modificar propiedades internas que se encuentran en un lugar
profundo dentro de LilyPond, su sintaxis no es tan simple como la
del resto de las instrucciones que hemos usado hasta ahora. Tiene
que saber exactamente qué propiedad de qué objeto y en qué
contexto se debe modificar, y cuál debe ser su nuevo valor.
Veamos cómo se hace.
La sintaxis genérica de esta instrucción es:
\override Contexto.ObjetoDePresentación.propiedad-de-presentación = #valor
Esto establecerá la propiedad de nombre propiedad-de-presentación del objeto de presentación con el nombre ObjetoDePresentación, que es miembro del contexto Contexto, al valor valor.
El contexto se puede omitir (y normalmente así es) cuando el
contexto requerido se encuentra implicado sin ambigüedad y es uno
de los contextos del nivel más bajo, es decir: Voice
,
ChordNames
o Lyrics
, y lo omitiremos en muchos de
los ejemplos siguientes. Veremos más tarde cuándo se debe
especificar.
Las últimas secciones tratan de forma exhaustiva las propiedades y sus valores, véase Tipos de propiedades. Pero en esta sección usaremos sólo unas cuantas propiedades y valores sencillos que sean fáciles de entender, para ilustrar el formato y la utilización de estas instrucciones.
Las expresiones principales de LilyPond son elementos musicales como notas y duraciones, así como cadenas y elementos de marcado. Las expresiones más específicas como números, símbolos y listas se procesan en el ‘modo de Scheme’, que se invoca por medio del prefijo ‘#’ escrito antes del valor. Para ver más información acerca del modo de Scheme, consulte Sintaxis del Scheme de LilyPond.
\override
es la instrucción de uso más común dentro del
trucaje, y durante la mayor parte del resto de este capítulo
presentaremos ejemplos de cómo se usa. A continuación hay un
ejemplo sencillo para cambiar el color de una cabeza:
\relative { c'4 d \override NoteHead.color = "red" e4 f | \override NoteHead.color = "green" g4 a b c | }
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < La instrucción \override ] | [ Up : Métodos de trucaje ] | [ El prefijo \once > ] |
La instrucción \revert
Una vez sobreescrita, la propiedad retiene su nuevo valor hasta
que se sobreescribe de nuevo o se encuentra una instrucción
\revert
. La instrucción \revert
tiene la siguiente
sintaxis y ocasiona que el valor de la propiedad se devuelva a su
valor predeterminado original; observe que no es a su valor previo
si se han utilizado varias instrucciones \override
.
\revert Contexto.ObjetoDePresentación.propiedad-de-presentación
Una vez más, igual que Contexto dentro de la instrucción
\override
, con frecuencia no es necesario especificar el
Contexto. Se omitirá en muchos de los ejemplos siguientes.
Aquí devolvemos el color de la cabeza al valor predeterminado para
las dos últimas notas:
\relative { c'4 d \override NoteHead.color = "red" e4 f | \override NoteHead.color = "green" g4 a \revert NoteHead.color b4 c | }
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < La instrucción \revert ] | [ Up : Métodos de trucaje ] | [ La instrucción \overrideProperty > ] |
El prefijo \once
\override
, \revert
, \set
y \unset
se
pueden hacer preceder por \once
. Esto hace que la
instrucción sea efectiva solamente durante el tiempo musical en
curso y antes de que la propiedad vuelva a tener otra vez su valor
anterior (que puede ser distinto de su valor predeterminado si aún
se está aplicando otra instrucción \override
de
sobreescritura). Utilizando el mismo ejemplo, podemos cambiar el
color de una sola nota de la siguiente manera:
\relative { c'4 d \override NoteHead.color = "red" e4 f | \once \override NoteHead.color = "green" g4 a \once \revert NoteHead.color b c | \revert NoteHead.color f2 c | }
El prefijo \once
también se puede usar delante de muchas
instrucciones predefinidas para limitar su efecto a un solo
momento musical:
\relative { c'4( d) \once \slurDashed e4( f) | g4( a) \once \hideNotes b( c) | }
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < El prefijo \once ] | [ Up : Métodos de trucaje ] | [ La instrucción \tweak > ] |
La instrucción \overrideProperty
Hay otra forma para la instrucción de sobreescritura,
\overrideProperty
, que ocasionalmente es necesaria. La
mencionamos aquí con un propósito de exhaustividad, pero para ver
más detalles consulte Trucos difíciles.
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < La instrucción \overrideProperty ] | [ Up : Métodos de trucaje ] | [ El prefijo \single > ] |
La instrucción \tweak
La última instrucción de trucaje que está disponible es
\tweak
. Se debe utilizar cuando varios objetos tienen
lugar en el mismo momento musical pero solo queremos cambiar las
propiedades de algunos de ellos, como una sola nota dentro de un
acorde. El uso de \override
para la sobreescritura
afectaría a todas las notas del acorde, mientras que \tweak
afecta solamente al siguiente elemento del flujo de entrada.
He aquí un ejemplo. Suponga que queremos cambiar el tamaño de la
cabeza de la nota intermedia (el Mi) en un acorde de Do mayor. En
primer lugar, veamos lo que haría \once \override
:
\relative { <c' e g>4 \once \override NoteHead.font-size = #-3 <c e g>4 <c e g>4 }
Vemos que la sobreescritura con override afecta a todas las
cabezas de las notas del acorde. Esto es así porque todas las
notas de un acorde ocurren en el mismo momento musical, y
la acción de \once
es aplicar la sobreescritura a todos los
objetos de presentación del tipo especificado que ocurren en el
mismo momento musical que la propia instrucción de sobreescritura
\override
.
La instrucción \tweak
opera de una forma distinta. Actúa
sobre el elemento inmediatamente siguiente dentro del flujo de
entrada. En su forma más sencilla es efectivo solamente sobre
objetos que se crean directamente a partir del elemento siguiente,
en esencia las cabezas y las articulaciones.
Así pues, volviendo a nuestro ejemplo, el tamaño de la nota intermedia se cambiaría de la siguiente forma:
\relative { <c' e g>4 <c \tweak font-size #-3 e g>4 }
Observe que la sintaxis de \tweak
no es igual que la de
\override
. El contexto no se debe especificar; de hecho,
generaría un error hacerlo. Tanto el contexto como el objeto de
presentación están implícitos por el siguiente elemento del flujo
de entrada. Observe también que no debe haber un signo igual. Así
que la sintaxis de la instrucción \tweak
en su forma
sencilla es:
\tweak propiedad-de-presentación #valor
Una instrucción \tweak
también se puede usar para modificar
sólo una de una serie de articulaciones, como se muestra aquí:
a'4^"Black" -\tweak color "red" ^"Red" -\tweak color "green" _"Green"
Observe que la instrucción \tweak
debe venir precedida de
una marca de articulación porque la propia expresión trucada debe
aplicarse como una articulación. En el caso de más de una
sobreescritura de dirección (^
o _
), gana la
sobreescritura situada más a la izquierda porque se aplica en
último lugar.
Los objetos tales como plicas y alteraciones accidentales se crean
más tarde, y no directamente a partir del evento que viene a
continuación. Aún es posible utilizar \tweak
sobre tales
objetos creados indirectamente mediante el nombrado explícito del
objeto de presentación, siempre y cuando LilyPond pueda rastrear
su origen hasta el evento original:
<\tweak Accidental.color "red" cis''4 \tweak Accidental.color "green" es'' g''>
Esta forma extensa de la instrucción \tweak
se puede describir
como
\tweak LayoutObject.layout-property #value
La instrucción \tweak
también se debe usar para cambiar la
apariencia de uno solo de un conjunto de grupos especiales
anidados que comiencen en el mismo instante musical. En el
siguiente ejemplo, el corchete del tresillo largo y el primero de
los tres corchetes cortos empiezan en el mismo momento musical, y
por ello cualquier instrucción \override
se aplicaría a los
dos. En el ejemplo se usa \tweak
para distinguir entre
ellos. La primera instrucción \tweak
especifica que el
corchete del tresillo largo se debe colocar por encima de las
notas y el segundo especifica que el número del tresillo se debe
imprimir en rojo sobre el corchete del primer tresillo corto.
\relative c'' { \tweak direction #up \tuplet 3/4 { \tweak color "red" \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } } }
Si los grupos anidados no comienzan en el mismo momento, su
apariencia se puede modificar de la forma usual mediante
instrucciones \override
:
\relative { \tuplet 3/2 { c'8[ c c] } \once \override TupletNumber.text = #tuplet-number::calc-fraction-text \tuplet 3/2 { c8[ c] c8[ c] \once \override TupletNumber.transparent = ##t \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } } }
Véase también
Referencia de la notación: La instrucción tweak.
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < La instrucción \tweak ] | [ Up : Métodos de trucaje ] | [ Manual de referencia de funcionamiento interno > ] |
El prefijo \single
Supongamos que queremos enfatizar la cabeza de algunas notas trazándolas de color e incrementando su tamaño, y supongamos también hemos programado una función para hacer la tarea más cómoda:
emphNoteHead = { \override NoteHead.color = "red" \override NoteHead.font-size = 2 } \relative { c''4 a \once \emphNoteHead f d | }
El prefijo \once
funciona perfectamente para enfatizar
notas únicas o acordes completos, pero no se puede usar para
enfatizar una sola nota dentro de un acorde. Anteriormente
vimos cómo se puede usar la instrucción \tweak
para
hacerlo, véase La instrucción \tweak
. Pero \tweak
no se puede usar con una
función; ahí es donde entra la instrucción \single
:
emphNoteHead = { \override NoteHead.color = "red" \override NoteHead.font-size = 2 } \relative { <c'' a \single \emphNoteHead f d>4 }
En resumen, \single
convierte las sobreescrituras hechas
con\override
en trucos hechos con \tweak
de tal
manera que cuando hay varios objetos en el mismo instante de
tiempo musical (como las notas de un acorde), \single
afecta a una única nota, la que se genera por la expresión que
sigue inmediatamente, a diferencia de \once
que afecta a
todos esos objetos.
El uso de \single
de esta forma con una función cualquiera
que contenga solamente sobreescrituras, puede aplicarse a las
notas individuales de un acorde. Sin embargo, \single
no
convierte \revert
, \set
ni \unset
en trucos
de \tweak
.
Véase también
Manual de aprendizaje:
La instrucción \tweak
,
Uso de variables para los ajustes de disposición.
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < El prefijo \single ] | [ Up : Trucar la salida ] | [ Propiedades de los objetos de presentación > ] |
5.2 Manual de referencia de funcionamiento interno
5.2.1 Propiedades de los objetos de presentación | ||
5.2.2 Propiedades de los interfaces | ||
5.2.3 Tipos de propiedades |
5.2.1 Propiedades de los objetos de presentación
Suponga que tiene una partitura con una ligadura de expresión que
para su gusto es demasiado fina y quiere trazarla un poco más
gruesa. ¿Cómo debe proceder? Ya sabe, por las afirmaciones
anteriores acerca de la flexibilidad de LilyPond, que tal
posibilidad existe, y seguramente piensa que una cierta
instrucción de sobreescritura \override
será necesaria.
Pero ¿existe una propiedad de grosor para las ligaduras? y, si la
hay, ¿cómo se puede modificar? Aquí es donde interviene el Manual
de Funcionamiento Interno. Contiene toda la información que puede
necesitar para construir ésta y todas las demás instrucciones
\override
, de sobreescritura.
Una advertencia antes de dirigir nuestra mirada a la referencia de funcionamiento interno. Éste es un documento de referencia, lo que significa que hay pocas o ninguna explicación en él: su propósito es presentar la información de forma precisa y concisa. Por tanto, podrá parecerle desalentador a primera vista. ¡No se preocupe! La guía y las explicaciones que presentamos aquí le permitirán extraer la información de la referencia de funcionamiento interno por sí mismo con tan sólo algo de práctica.
Utilicemos un ejemplo concreto con un sencillo fragmento de música real:
{ \key es \major \time 6/8 \relative { r4 bes'8 bes[( g]) g | g8[( es]) es d[( f]) as | as8 g } \addlyrics { The man who | feels love's sweet e -- | mo -- tion } }
Suponga ahora que decidimos que nos gustan las ligaduras algo más gruesas. ¿Es posible? La ligadura es, ciertamente, un objeto de presentación, así que la cuestión es ‘¿Hay una propiedad perteneciente a las ligaduras de expresión que controle su grosor?’ Para responder a esta pregunta debemos mirar el manual de Referencia de Funcionamiento Interno, abreviadamente RFI1.
El RFI de la versión de LilyPond que está usando se puede encontrar en la página web de LilyPond en https://lilypond.org. Vaya a la página de la documentación y siga el enlace Manual de Referencia de Funcionamiento Interno (RFI). Para nuestros propósitos pedagógicos sería mejor que utilizase la versión en HTML, no la ‘en una sola página’ ni el PDF. Para que los siguientes párrafos tengan algún sentido deberá consultarlo realmente al tiempo que lee.
Bajo el encabezamiento Top podrá ver cinco enlaces. Seleccione el enlace Backend, que es donde se encuentra la información sobre los objetos de presentación. Una vez allí, bajo el encabezamiento Backend, siga el enlace All layout objects. La página que aparece relaciona todos los objetos de presentación que se usan en su versión de LilyPond, en orden alfabético. Siga el enlace Slur (ligadura de expresión), y aparecerán relacionadas las propiedades de las ligaduras de expresión o Slurs.
Una forma alternativa de encontrar esta página es a partir de la Referencia de la Notación. En una de las páginas que tratan de las ligaduras de expresión podrá encontrar un enlace al manual de referencia del funcionamiento interno. Este enlace le llevará directamente a esta página, aunque si tiene una idea del nombre del objeto de presentación que pretende trucar, le resultará más fácil ir directamente al RFI y buscar allí.
Esta página sobre las ligaduras de expresión dentro del manual RFI nos dice en primer lugar que los objetos Slur se crean por el grabador Slur_engraver. A continuación relaciona los ajustes estándar. Navegue por ellos buscando una propiedad que pudiera controlar el grosor de las ligaduras, y encontrará
thickness (number) 1.2 Line thickness, generally measured in line-thickness
Esto promete ser una buena opción para cambiar el grosor. Nos
dice que el valor de thickness
es un simple número,
que el valor predeterminado es 1.2, y que las unidades están
dentro de otra propiedad llamada line-thickness
.
Como dijimos con anterioridad, existen entre pocas y ninguna
explicación en el RFI, pero ya tenemos información suficiente para
probar a cambiar el grosor de la ligadura. Vemos que el nombre
del objeto de presentación es Slur
, que el nombre de la
propiedad que debemos cambiar es thickness
y que el nuevo
valor debe ser un número algo más grande que 1.2 si queremos hacer
las ligaduras más gruesas.
Ahora podemos construir la instrucción de sobreescritura
\override
simplemente mediante la sustitución de los
valores que hemos encontrado para los nombres, omitiendo el
contexto. Usaremos un valor muy grande para el grosor al
principio, para estar seguros de que la instrucción está
funcionando. Obtenemos lo siguiente:
\override Slur.thickness = #5.0
¡No olvide el #'
antes del nombre de la propiedad
y #
antes del valor nuevo!
La pregunta final es ‘¿Dónde se debe colocar esta instrucción?’ Aunque nos falta seguridad y estamos todavía aprendiendo, la mejor respuesta es: ‘Dentro de la música, antes de la primera ligadura y cerca de ella.’ Hagámoslo así:
{ \key es \major \time 6/8 \relative { % Increase thickness of all following slurs from 1.2 to 5.0 \override Slur.thickness = #5.0 r4 bes'8 bes[( g]) g | g8[( es]) es d[( f]) as | as8 g } \addlyrics { The man who | feels love's sweet e -- | mo -- tion } }
y podemos ver que la ligadura, es sin duda, más pesada.
Así pues, ésta es la forma básica de construir instrucciones
\override
o de sobreescritura. Existen unas cuantas
complicaciones más con las que nos encontraremos en secciones
posteriores, pero ahora conoce todos los principios esenciales que
necesita para hacerlo por sí mismo (aunque aún necesita algo de
práctica). La cual vendrá proporcionada por los ejemplos que
vienen a continuación.
Búsqueda del contexto
Pero en primer lugar ¿qué habría pasado si hubiésemos tenido que
especificar el contexto? ¿Cuál sería? Podemos suponer que las
ligaduras están en el contexto de Voz, por estar claramente
asociados de manera estrecha con las líneas individuales de
música, pero ¿podemos estar seguros? Para averiguarlo, vayamos de
nuevo al inicio de la página del RFI que describe las ligaduras
(Slur), donde dice ‘Slur objects are created by the following engraver(s): Slur_engraver.’
(«Los objetos de ligadura de expresión se crean por: el grabador
Slur»). Así pues, las ligaduras de expresión se crean en
cualquier contexto en el que se encuentre el grabador
Slur_engraver
. Siga el enlace a la página del grabador
Slur_engraver
. Al final del todo, dice que el grabador
Slur_engraver
es parte de siete contextos de voz, incluido
el contexto de voz estándar, Voice
, por lo que nuestra
suposición era acertada. Y a causa de que Voice
es uno de
los contextos de más bajo nivel que se encuentra implícito sin
ambigüedad por el hecho de que estamos escribiendo notas, podemos
omitirlo en este lugar concreto.
Sobreescritura por una sola vez
Como puede ver, todas las ligaduras son más gruesas en el
último ejemplo. Pero ¿y si quisiéramos que solamente la primera
ligadura fuese más gruesa? Esto se consigue con la instrucción o
prefijo \once
. Colocado inmediatamente antes de la
instrucción \override
ocasiona que solamente cambie la
ligadura que comienza en la nota inmediata siguiente. Si
la nota inmediata siguiente no da inicio a una ligadura, la
instrucción no tiene ningún efecto en absoluto: no se recuerda
hasta que se encuentre alguna ligadura, sino que simplemente se
ignora. Así pues, la instrucción que lleva \once
se debe
reposicionar de la forma siguiente:
{ \key es \major \time 6/8 \relative { r4 bes'8 % Increase thickness of immediately following slur only \once \override Slur.thickness = #5.0 bes8[( g]) g | g8[( es]) es d[( f]) as | as8 g } \addlyrics { The man who | feels love's sweet e -- | mo -- tion } }
Hemos hecho que ahora solamente la primera ligadura sea más gruesa.
La instrucción o prefijo \once
también se puede usar antes
de la instrucción \set
.
Recuperación del ajuste
Finalmente ¿y si quisiéramos que solamente las dos primeras
ligaduras fuesen más gruesas? En fin; podríamos usar dos
instrucciones, cada una de ellas precedida por el prefijo
\once
, situadas inmediatamente antes de cada una de las
notas en que comienzan las ligaduras:
{ \key es \major \time 6/8 \relative { r4 bes'8 % Increase thickness of immediately following slur only \once \override Slur.thickness = #5.0 bes[( g]) g | % Increase thickness of immediately following slur only \once \override Slur.thickness = #5.0 g8[( es]) es d[( f]) as | as8 g } \addlyrics { The man who | feels love's sweet e -- | mo -- tion } }
o podríamos omitir la instrucción prefija \once
y utilizar
la instrucción \revert
(restablecer) para devolver la
propiedad del grosor, thickness
, a su valor predeterminado
después de la segunda ligadura:
{ \key es \major \time 6/8 \relative { r4 bes'8 % Increase thickness of all following slurs from 1.2 to 5.0 \override Slur.thickness = #5.0 bes[( g]) g | g8[( es]) es % Revert thickness of all following slurs to default of 1.2 \revert Slur.thickness d8[( f]) as | as8 g } \addlyrics { The man who | feels love's sweet e -- | mo -- tion } }
la instrucción \revert
se puede utilizar para devolver
cualquier propiedad que se haya cambiado con \override
a su
valor predeterminado. Puede utilizar el método que mejor se
adapte a aquello que quiere hacer.
Así finaliza nuestra introducción al manual de RFI, y el método básico de trucaje. A continuación, en las últimas secciones de este capítulo encontrará varios ejemplos, en parte para introducirle en algunas de las posibilidades adicionales del manual RFI, y en parte para proporcionarle más práctica en cómo extraer información de él. Estos ejemplos irán conteniendo cada vez menos palabras de guía y explicación.
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Propiedades de los objetos de presentación ] | [ Up : Manual de referencia de funcionamiento interno ] | [ Tipos de propiedades > ] |
5.2.2 Propiedades de los interfaces
Suponga ahora que queremos imprimir la letra de la canción en
cursiva. ¿Qué forma de instrucción \override
necesitamos
para hacerlo? En primer lugar miramos en la página del RFI que
relaciona todos los objetos, ‘All layout objects’, como antes, y
buscamos un objeto que pueda controlar la letra de la canción.
Encontramos LyricText
, que parece adecuado. Al seguir este
enlace se presentan las propiedades ajustables para el texto de la
letra. Estos incluyen font-series
y font-size
, pero
nada que pudiera aplicar una forma cursiva. Esto es porque la
propiedad de la forma es común a todos los objetos de fuente
tipográfica, y por tanto, en vez de incluirlo en cada uno de los
objetos de presentación, se agrupa junto con otras propiedades
comunes similares y se deposita en un Interface, el
interface de las fuentes tipográficas font-interface
.
Por tanto, ahora necesitamos aprender cómo encontrar las propiedades de los interfaces, y descubrir qué objetos usan estas propiedades de interface.
Mire de nuevo la página del RFI que describe a LyricText. Al
final de la página hay una lista de enlaces a los interfaces que
LyricText contempla. La lista tiene siete elementos, entre ellos
font-interface
. Al seguir este enlace llegamos a las
propiedades asociadas con este interface, que también son
propiedades de todos los objetos que lo llevan, entre ellos
LyricText.
Ahora vemos todas las propiedades ajustables por el usuario que
controlan las tipografías, entre ellas font-shape(symbol)
,
donde symbol
se puede establecer a upright
(recta),
italics
(cursiva)o caps
(mayúsculas pequeñas).
Observará que font-series
y font-size
también se
encuentran aquí relacionadas. Esto inmediatamente hace que surja
la pregunta: ¿Por qué están las propiedades comunes de tipografía
font-series
y font-size
relacionadas bajo
LyricText
así como bajo el interface font-interface
pero font-shape
no lo está? La respuesta es que
font-series
y font-size
se cambian a partir de sus
valores predeterminados globales cuando se crea un objeto
LyricText
, pero font-shape
no lo hace. Entonces los
elementos de la lista LyricText
le dicen los valores para
esas dos propiedades que son de aplicación para LyricText
.
Otros objetos que contemplan font-interface
establecerán
dichas propiedades de forma diferente cuando se crean.
Veamos si ahora podemos construir la instrucción \override
para cambiar la letra a cursiva. El objeto es LyricText
,
la propiedad es font-shape
y el valor es italic
.
Igual que antes, omitiremos el contexto.
Como nota aparte, aunque es importante, observe que ciertas
propiedades toman valores que son símbolos, como italic
, y
deben ir precedidos de un apóstrofo, '
. Los símbolos se
leen a continuación internamente por parte de LilyPond. Tenga en
cuenta la diferencia con las cadenas de texto arbitrarias, que
aparecerían como "una cadena de texto"
; para ver más
detalles sobre los símbolos y las cadenas, consulte
Tutorial de Scheme.
Así pues, la instrucción \override
necesaria para imprimir
la letra en cursiva, es:
\override LyricText.font-shape = #'italic
Esto debe escribirse justo delante de la letra a la que debe afectar, de esta forma:
{ \key es \major \time 6/8 \relative { r4 bes'8 bes[( g]) g | g8[( es]) es d[( f]) as | as8 g } \addlyrics { \override LyricText.font-shape = #'italic The man who | feels love's sweet e -- | mo -- tion } }
y toda la letra se imprime en cursiva.
Nota: Dentro de la letra, deje siempre espacios entre la sílaba final y la llave de cierre.
Véase también
Manual de Extensión: Tutorial de Scheme.
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Propiedades de los interfaces ] | [ Up : Manual de referencia de funcionamiento interno ] | [ Apariencia de los objetos > ] |
5.2.3 Tipos de propiedades
Hasta ahora hemos visto dos tipos de propiedad:: número
y
símbolo
. Para que sea válido, el valor que se da a una
propiedad debe ser del tipo correcto y obedecer las reglas de
dicho tipo. El tipo de la propiedad se muestra siempre entre
paréntesis después del nombre de la propiedad en el RFI. He aquí
una lista de los tipos que podrá necesitar, junto con las reglas
de dicho tipo, y algunos ejemplos. Debe escribir siempre un
símbolo de almohadilla, #
, por supuesto, delante de estos
valores cuando se introducen en la instrucción \override
,
incluso si el propio valor ya comienza por #
.
Solamente ofrecemos aquí ejemplos para constantes; si quiere
calcular un valor usando Scheme, consulte Cálculos en
Scheme.
Tipo de propiedad | Reglas | Ejemplos |
---|---|---|
Booleano | Verdadero o Falso, representado por #t o #f | #t , #f |
Dimensión (en espacios de pentagrama) | Un número decimal (en unidades de espacios de pentagrama) | 2.5 , 0.34 |
Dirección | Una constante válida de dirección o su equivalente numérico
(0 o CENTER indican una dirección neutra) | LEFT , CENTER , UP ,
1 , -1 |
Entero | Un número entero positivo | 3 , -1 |
Lista | Una secuencia de constantes o símbolos separados por espacios, encerrado entre paréntesis y precedido de un apóstrofo o comilla simple | '(left-edge staff-bar) , '(1) , '() ,
'(1.0 0.25 0.5) |
Marcado | Cualquier elemento válido de marcado de texto | \markup { \italic "cresc." } , "gaita" |
Momento | Una fracción de redonda construida con la función make-moment | (ly:make-moment 1/4) ,
(ly:make-moment 3/8) |
Número | Cualquier valor positivo o negativo, posiblemente decimal | 3 , -2.45 |
Pareja (de números) | Dos números separados por un ‘espacio . espacio’, encerrado entre paréntesis y precedido de un apóstrofo | '(2 . 3.5) , '(0.1 . -3.2) |
Símbolo | Cualquiera del conjunto de símbolos permitidos para esa propiedad, precedido de un apóstrofo | 'italic , 'inside |
Desconocido | Un procedimiento o #f para no producir ninguna acción | bend::print , ly:text-interface::print ,
#f |
Vector | Constantes
encerradas entre #( …) . | #(#t #t #f) |
Véase también
Manual de Extensión: Tutorial de Scheme.
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Tipos de propiedades ] | [ Up : Trucar la salida ] | [ Visibilidad y color de los objetos > ] |
5.3 Apariencia de los objetos
Ahora vamos a poner en práctica lo que hemos aprendido con unos cuantos ejemplos que muestran cómo se pueden usar los trucos para cambiar el aspecto de la música impresa.
5.3.1 Visibilidad y color de los objetos | ||
5.3.2 Tamaño de los objetos | ||
5.3.3 Longitud y grosor de los objetos |
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Apariencia de los objetos ] | [ Up : Apariencia de los objetos ] | [ La propiedad stencil (sello) > ] |
5.3.1 Visibilidad y color de los objetos
Dentro de un uso educativo de la música, podríamos desear imprimir una partitura con ciertos elementos omitidos como ejercicio para el alumno, a quien se le pide que los complete. A la manera de ejemplo sencillo, supongamos que el ejercicio es escribir las líneas divisorias que faltan en un fragmento musical. Pero las líneas divisorias normalmente se insertan automáticamente. ¿Cómo hacemos para que no se impriman?
Antes de enredarnos con esto, recordemos que las propiedades de los objetos se agrupan en lo que hemos llamado interfaces (véase Propiedades de los interfaces). Esto es simplemente agrupar las propiedades que se pueden usar juntas para trucar un objeto gráfico: si una de ellas se necesita para un objeto, también las otras. Así, ciertos objetos usan las propiedades de algunos interfaces, otros usan las de otros interfaces. Los interfaces que contienen las propiedades que un determinado grob necesita se encuentran relacionadas en el manual RFI al final de la página que describe dicho grob, y esas propiedades se pueden ver mirando dichos interfaces.
Hemos explicado cómo encontrar información sobre los grobs en
Propiedades de los objetos de presentación. Usando el mismo
enfoque, vamos al RFI para buscar el objeto de presentación que
imprime las líneas divisorias. A través del enlace Backend
y All layout objects encontramos que hay un objeto de
presentación llamado BarLine
. Entre sus propiedades se
encuentran dos que controlan la visibilidad:
break-visibility
y stencil
. Las líneas divisorias
también contemplan un número de interfaces, entre ellos el
grob-interface
, donde podemos encontrar las propiedades
transparent
y color
. Todas ellas pueden afectar la
visibilidad de las barras de compás (y, por supuesto, por
extensión, también la de muchos otros objetos de presentación).
Vamos a considerar cada uno de ellos por orden.
La propiedad stencil (sello) | ||
The break-visibility (visibilidad en el salto) | ||
La propiedad transparent (transparente) | ||
La propiedad color |
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Visibilidad y color de los objetos ] | [ Up : Visibilidad y color de los objetos ] | [ The break-visibility (visibilidad en el salto) > ] |
La propiedad stencil
(sello)
Esta propiedad controla la apariencia de las barras de compás
mediante la especificación del símbolo (o «glifo») que se debe
imprimir. Igual que como otras muchas propiedades, se puede
establecer de forma que no imprima nada ajustando su valor a
#f
. Vamos a probarlo, como antes, omitiendo el Contexto
implícito, Voice
:
\relative { \time 12/16 \override BarLine.stencil = ##f c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
Las barras de compás todavía se imprimen. ¿Qué es lo que está
mal? Vuelva al RFI y mire de nuevo la página que ofrece las
propiedades del objeto BarLine. Al principio de la página dice
“Barline objects are created by the following engraver(s): Bar_engraver.” (los objetos
Barline se crean por el grabador Bar_engraver). Vaya a la página
del grabador Bar_engraver
siguiendo el enlace. Al final da
una lista de contextos en los que el grabador de líneas divisorias
opera. Todos ellos son del tipo Staff
, y así la razón de
que la instrucción \override
no funcionara como
esperábamos, es porque Barline
no se encuentra en el
contexto predeterminado Voice
. Si el contexto no se
especifica correctamente, la instrucción simplemente no funciona.
No se produce ningún mensaje de error, y no se registra nada en el
archivo log de registro. Vamos a intentar corregirlo escribiendo
el contexto correcto:
\relative { \time 12/16 \override Staff.BarLine.stencil = ##f c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
Ahora las barras de compás han desaparecido. La operación de
fijar la propiedad stencil
al valor #f
es tan
frecuente que existe una abreviatura para ella, llamada
\omit
(omitir):
\relative { \time 12/16 \omit Staff.BarLine c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
Sin embargo, observe que el establecimiento de la propiedad
stencil
al valor #f
produce errores cuando las se
requieren las dimensiones del objeto para un procesamiento
correcto. Por ejemplo, se generan errores si la propiedad
stencil
del objeto NoteHead
se establece al valor
#f
. Si es el caso, podemos en vez de ello utilizar la
función point-stencil
, que establece el sello a un objeto
con tamaño nulo:
\relative { c''4 c \once \override NoteHead.stencil = #point-stencil c4 c }
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < La propiedad stencil (sello) ] | [ Up : Visibilidad y color de los objetos ] | [ La propiedad transparent (transparente) > ] |
The break-visibility
(visibilidad en el salto)
Vemos en las propiedades de BarLine
que aparecen en el RFI
que la propiedad break-visibility
requiere un vector de
tres valores booleanos. Controlan respectivamente si las barras
de compás se imprimen al final de una línea, en mitad de una
línea, y al principio de las líneas. Para nuestro ejemplo,
queremos que todas las barras de compás se supriman, por lo que el
valor que necesitamos es #(#f #f #f)
(disponible también
bajo el nombre all-invisible
, todas invisibles). Vamos a
probarlo, recordando incluir el contexto de Staff
. Observe
también que al escribir este valor tenemos ##
antes del
paréntesis de apertura. Se necesita un #
como parte de la
sintaxis de las contantes vectoriales, y el primer símbolo de
almohadilla #
se necesita, como siempre, para preceder
el valor en sí dentro de la instrucción \override
.
\relative { \time 12/16 \override Staff.BarLine.break-visibility = ##(#f #f #f) c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
Y podemos ver que esto también quita todas las líneas divisorias.
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < The break-visibility (visibilidad en el salto) ] | [ Up : Visibilidad y color de los objetos ] | [ La propiedad color > ] |
La propiedad transparent
(transparente)
En la relación de propiedades que se especifican en la página del
grob-interface
del RFI podemos ver que la propiedad
transparent
es un valor booleano. Esto se debe establecer
a #t
para hacer que el grob sea transparente. En el
ejemplo siguiente vamos a hacer que la indicación de compás, y no
las líneas divisorias, sea transparente. Para hacerlo tenemos que
buscar el nombre del grob de la indicación de compás. Volviendo a
la página ‘All layout objects’ del RFI, buscamos las propiedades
del objeto de presentación TimeSignature
. Se produce por
parte del grabador Time_signature_engraver
que como puede
comprobar vive dentro del contexto de Staff
y también
contempla el interface grob-interface
. Así pues, la
instrucción que hace transparente a la indicación de compás es:
\relative { \time 12/16 \override Staff.TimeSignature.transparent = ##t c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
Una vez más, el establecimiento de la propiedad transparent
es una operación bastante frecuente, de modo que tenemos una
abreviatura llamada \hide
(ocultar):
\relative { \time 12/16 \hide Staff.TimeSignature c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
En ninguno de los dos casos aparece ya la indicación de compás,
pero esta instrucción deja una separación en el lugar donde antes
estaba la indicación de compás. Quizá esto es lo que queremos
para un ejercicio en que el alumno deba escribirlo, pero en otras
circunstancias esta separación podría no ser deseable. En vez de
eso, para quitarla, el stencil o «sello» de la indicación de
compás se debe establecer al valor #f
:
\relative { \time 12/16 \omit Staff.TimeSignature c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
y la diferencia es obvia: al establecer el sello al valor
#f
(posiblemente por medio de \omit
) quitamos el
objeto por completo; al hacer el objeto transparent
(lo que
puede hacerse utilizando \hide
) lo dejamos donde está, pero
lo hacemos invisible.
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < La propiedad transparent (transparente) ] | [ Up : Visibilidad y color de los objetos ] | [ Tamaño de los objetos > ] |
La propiedad color
Para finalizar, intentemos hacer invisibles las barras de compás pintándolas de color blanco (hay un problema relacionado, que consiste en que la línea divisoria blanca puede tapar o no tapar las líneas del pentagrama a las que cruza. Podrá observar en algunos de los ejemplos que aparecen a continuación, que esto sucede de forma impredecible. Los detalles sobre por qué esto ocurre así, y cómo controlarlo, se estudian en Pintar los objetos de blanco; de momento estamos estudiando el color, por lo que le rogamos que acepte esta limitación por ahora).
El interface grob-interface
especifica que la propiedad del
color es una lista, pero no hay ninguna explicación sobre lo que
debe ir en esa lista. La lista que requiere es realmente una
lista de valores en unidades internas, pero para evitar tener que
saber cuáles son, se ofrecen varias vías para la especificación de
los colores. La primera forma es utilizar uno de los colores
‘CSS’ predefinidos que están relacionados en la Lista de
colores. Para poner las líneas divisorias de color blanco,
escribimos:
\relative { \time 12/16 \override Staff.BarLine.color = "white" c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
y de nuevo podemos comprobar que las barras de compás no son visibles. Observe que white no viene precedido de un apóstrofo: no es un símbolo, sino una cadena de caracteres, mapeado a una lista predefinida de valores internos. A este respecto, la sintaxis de LilyPond refleja el lenguaje CSS que se usa habitualmente en las páginas web; además de los nombres predefinidos, podemos especificar un código de color hexadecimal:
\relative { \time 12/16 \override Staff.BarLine.color = "#FFFFFF" c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
Podemos incluso definir dicho color como variable, y después usar esa variable como una definición de propiedad. Como es al mismo tiempo una variable de LilyPond y un objeto de Scheme, puede ir prefijada por una barra invertida o un símbolo de almohadilla sin distinción alguna:
whiteVar = "#FFFFFF" \relative { \time 12/16 \override Staff.BarLine.color = \whiteVar c''4 b8 c d16 c d8 | \override Staff.BarLine.color = #whiteVar g,8 a16 b8 c d4 e16 | e8 }
Otra manera de añadir colores a nuestra partitura es mediante el
uso de una función. Existen dos funciones útiles para ello; una
es la función x11-color
, que utilizaremos más adelante. La
otra es la función rgb-color
, que presenta la lógica
interna de LilyPond: toma tres argumentos que dan las intensidades
de los colores rojo, verde y azul. Cada uno de ellos toma valores
entre 0 y 1. Así pues, para establecer el color a rojo, el valor
sería (rgb-color 1 0 0)
y para el blanco sería
(rgb-color 1 1 1)
:
\relative { \time 12/16 \override Staff.BarLine.color = #(rgb-color 1 1 1) c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
Observe que en este caso, toda la llamada a la función debe estar
entre paréntesis. Lo mismo vale para la función x11-color
que pasamos anteriormente por alto.
x11-color
, de nuevo, lleva a cabo una asignación de nombres
de color predefinidos a valores internos, pero ofrece muchas más
alternativas que los nombres de CSS, como se ve en
Lista de colores). Por ejemplo, el conjunto de colores de
X11 incluye una completa gama de tonos de gris, cuyos nombres van
desde el negro, 'grey0
, hasta el blanco, 'grey100
,
en pasos de 1. Vamos a ilustrar esto estableciendo todos los
objetos de nuetro ejemplo en distintos tonos de gris:
\relative { \time 12/16 \override Staff.StaffSymbol.color = #(x11-color 'grey30) \override Staff.TimeSignature.color = #(x11-color 'grey60) \override Staff.Clef.color = #(x11-color 'grey60) \override Voice.NoteHead.color = #(x11-color 'grey85) \override Voice.Stem.color = #(x11-color 'grey85) \override Staff.BarLine.color = #(x11-color 'grey10) c''4 b8 c d16 c d8 | g,8 a16 b8 c d4 e16 | e8 }
Observe los contextos asociados con cada uno de los objetos de presentación. Es importante que estén correctamente escritos, o las instrucciones ¡no funcionarán! Recuerde que el contexto es aquel en que se encuentra el grabador correspondiente. El contesto predeterminado para los grabadores puede encontrarse empezando por el objeto de presentación, de ahí al grabador que lo produce, y en la página del grabador del RFI aparece en qué contexto se puede encontrar normalmente el grabador.
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < La propiedad color ] | [ Up : Apariencia de los objetos ] | [ Longitud y grosor de los objetos > ] |
5.3.2 Tamaño de los objetos
Empezaremos examinando de nuevo un ejemplo anterior (véase Anidado de expresiones musicales) que nos mostraba cómo introducir un pentagrama temporal, como en un ossia.
\new Staff ="main" { \relative { r4 g'8 g c4 c8 d | e4 r8 << { f8 c c } \new Staff \with { alignAboveContext = "main" } { f8 f c } >> r4 | } }
Los fragmentos de Ossia se escriben normalmente sin clave ni
compás, y por lo normal se imprimen más pequeños que el pentagrama
principal. Ya sabemos cómo quitar la clave y el compás:
simplemente establecemos el sello de cada uno de ellos a
#f
, como sigue:
\new Staff ="main" { \relative { r4 g'8 g c4 c8 d | e4 r8 << { f8 c c } \new Staff \with { alignAboveContext = "main" } { \omit Staff.Clef \omit Staff.TimeSignature { f8 f c } } >> r4 | } }
donde el par de llaves adicional después de la cláusula
\with
es necesario para asegurar que la sobreescritura
encerrada y la música se aplican al pentagrama de ossia.
Pero ¿cuál es la diferencia entre modificar el contexto de
pentagrama usando \with
y modificar los sellos de clave y
de compás con \override, o en este caso \omit
? La
diferencia principal es que los cambios que se realizan en una
cláusula \with
se hacen en el momento en que se crea el
contexto, y permanecen activos como valores
predeterminados durante toda la duración de dicho
contexto, mientras que las instrucciones \set
o
\override
incluidas dentro de la música son dinámicas:
hacen cambios sincronizados con un punto concreto de la música.
Si los cambios se deshacen o se devuelven mediante \unset
o
\revert
volverán a su valor predeterminado que será el
establecido en la cláusula \with
, o si no se ha establecido
ninguno en este lugar, los valores predeterminados normales.
Ciertas propiedades de contexto se pueden modificar solamente
dentro de cláusulas \with
. Son aquellas propiedades que no
se pueden cambiar después de que el contexto se ha creado.
alignAboveContext
y su compañero, alignBelowContext
,
son dos de tales propiedades: una vez que el pentagrama se ha
creado, su alineación está decidida y no tendría sentido intentar
cambiarla más tarde.
Los valores predeterminados de las propiedades de los objetos de
presentación también se pueden establecer dentro de cláusulas
\with
. Simplemente utilice la instrucción \override
normal dejando aparte el nombre del contexto, ya que está definido
sin ambigüedad como el contexto que la cláusula \with
está
modificando. De hecho, se producirá un error si se especifica un
contexto en este lugar.
Así pues, podemos reemplazar el ejemplo anterior con
\new Staff ="main" { \relative { r4 g'8 g c4 c8 d | e4 r8 << { f8 c c } \new Staff \with { alignAboveContext = "main" % Don't print clefs in this staff \override Clef.stencil = ##f % Don't print time signatures in this staff \override TimeSignature.stencil = ##f } { f8 f c } >> r4 | } }
Resulta que también podemos emplear aquí las abreviaturas
\hide
y \omit
para fijar la propiedad
transparent
y borrar el stencil
, lo que conduce al
resultado siguiente:
\new Staff ="main" { \relative { r4 g'8 g c4 c8 d | e4 r8 << { f8 c c } \new Staff \with { alignAboveContext = "main" % Don't print clefs in this staff \omit Clef % Don't print time signatures in this staff \omit TimeSignature } { f8 f c } >> r4 | } }
Finalmente llegamos a la forma de cambiar el tamaño de los objetos de presentación.
Ciertos objetos de presentación se crean como glifos sacados de
una fuente tipográfica. Entre ellos se encuentran las cabezas,
alteraciones, elementos de marcado, claves, indicaciones de
compás, indicaciones dinámicas y la letra de las canciones. Su
tamaño se cambia mediante la modificación de la propiedad
font-size
, como veremos en breve. Otros objetos de
presentación como ligaduras de unión y de expresión (en general,
objetos de extensión) se trazan individualmente, por lo que no hay
un tamaño de tipografía font-size
asociado a ellos. Estos
objetos generalmente derivan su tamaño de los objetos a los que
están adosados, y por ello normalmente no hay necesidad de
cambiarles el tamaño manualmente. Aún otras propiedades como la
longitud de las plicas y las barras de compás, el grosor de las
barras de corchea y otras líneas, y la separación de las líneas
del pentagrama se deben modificar de otras formas especiales.
Volviendo al ejemplo del ossia, vamos a cambiar en primer lugar el
tamaño de la tipografía. Podemos hacerlo de dos formas. Podemos
cambiar el tamaño de las tipografías de cada uno de los tipos de
objeto como las cabezas (NoteHead
s) con instrucciones como
\override NoteHead.font-size = #-2
o podemos cambiar el tamaño de todas las tipografías estableciendo
una propiedad especial, fontSize
, utilizando \set
, o
mediante su inclusión dentro de una cláusula \with
(pero
sin el \set
).
\set fontSize = #-2
Los dos enunciados producirían una reducción del tamaño de la tipografía en dos pasos a partir de su valor previo, donde cada paso reduce o aumenta el tamaño aproximadamente en un 12%.
Vamos a probarlo en nuestro ejemplo del ossia:
\new Staff ="main" { \relative { r4 g'8 g c4 c8 d | e4 r8 << { f8 c c } \new Staff \with { alignAboveContext = "main" \omit Clef \omit TimeSignature % Reduce all font sizes by ~24% fontSize = #-2 } { f8 f c } >> r4 | } }
Aún no está demasiado bien. Las cabezas y los corchetes de las notas son más pequeños, pero las plicas son demasiado largas en proporción, y las líneas del pentagrama están demasiado separadas entre sí. Se debe reducir su escala en proporción a la reducción de la tipografía. El siguiente apartado trata sobre cómo se hace esto.
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Tamaño de los objetos ] | [ Up : Apariencia de los objetos ] | [ Colocación de los objetos > ] |
5.3.3 Longitud y grosor de los objetos
Las distancias y longitudes en LilyPond se miden generalmente en
espacios de pentagrama, la distancia entre líneas adyacentes de la
pauta (o de manera ocasional medios espacios), mientras que la
mayoría de las propiedades de thickness
(grosor) se miden
en unidades de una propiedad interna llamada
line-thickness.
Por ejemplo, de forma predeterminada, a
las líneas de los reguladores se les da un grosor de 1 unidad de
line-thickness
, mientras que el thickness
de una
plica es 1.3. Observe sin embargo que ciertas propiedades de
grosor son diferentes; por ejemplo, el grosor de las barras de
corchea se controla por medio del valor de beam-thickness
,
que se mide en espacios de pentagrama.
Entonces ¿cómo se tienen que escalar las longitudes en proporción
al tamaño de la tipografía? Se puede hacer con la ayuda de una
función especial que se llama magstep
, pensada
especialmente para este propósito. Toma un argumento, el cambio
de tamaño de la tipografía (#-2 en nuestro ejemplo) y devuelve un
factor de escalado adecuado para reducir otros objetos en la misma
proporción. Se usa de la siguiente forma:
\new Staff ="main" { \relative { r4 g'8 g c4 c8 d | e4 r8 << { f8 c c } \new Staff \with { alignAboveContext = "main" \omit Clef \omit TimeSignature fontSize = #-2 % Reduce stem length and line spacing to match \override StaffSymbol.staff-space = #(magstep -2) } { f8 f c } >> r4 | } }
Puesto que la longitud de las plicas y muchas otras propiedades
relacionadas con la longitudes calculan siempre con relación al
valor de la propiedad staff-space
, su longitud también ve
reducida su escala automáticamente. Observe que esto afecta
solamente a la escala vertical del ossia: la escala horizontal se
determina por medio de la disposición de la música principal con
el objeto de mantenerse en sincronía con ella, de forma que no
resulte afectada por ninguno de estos cambios de tamaño. Por
supuesto, si la escala de toda la música principal se cambiase de
esta forma, entonces el espaciado horizontal se vería afectado.
Trataremos de esto más tarde en la sección sobre la disposición.
Esto, en fin, completa la creación de un ossia. Los tamaños y longitudes del resto de los objetos se pueden modificar de manera análoga.
Para cambios de escala pequeños, como en el ejemplo de arriba, el
grosor de las diversas líneas dibujadas como divisorias, barras de
corchea, reguladores, ligaduras, etc, no requieren normalmente
ningún ajuste global. Si el grosor de cualquier objeto de
presentación en particular necesita ajustarse, se puede hacer
mejor mediante la sobreescritura de su propiedad thickness
.
Anteriormente mostramos un ejemplo de cambio de grosor en las
ligaduras, en Propiedades de los objetos de presentación.
El grosor de todos los objetos trazados (es decir, aquellos que no
se producen a partir de una tipografía) se pueden cambiar de la
misma forma.
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Longitud y grosor de los objetos ] | [ Up : Trucar la salida ] | [ Comportamiento automático > ] |
5.4 Colocación de los objetos
5.4.1 Comportamiento automático | ||
5.4.2 Objetos interiores al pentagrama | ||
5.4.3 Objetos fuera del pentagrama |
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Colocación de los objetos ] | [ Up : Colocación de los objetos ] | [ Objetos interiores al pentagrama > ] |
5.4.1 Comportamiento automático
Hay ciertos objetos en notación musical que pertenecen al pentagrama y otros cuyo lugar se sitúa fuera del pentagrama. Reciben el nombre de objetos dentro-del-pentagrama y objetos fuera-del-pentagrama, respectivamente.
Los objetos dentro-del-pentagrama son los que se sitúan sobre la pauta: cabezas, plicas, alteraciones, etc. Sus posiciones normalmente se fijan por la propia música; se posicionan verticalmente sobre líneas específicas del pentagrama o están unidos a otros objetos posicionados de esta forma. Las colisiones entre cabezas, plicas y alteraciones en acordes de notas muy juntas, normalmente se evitan automáticamente. Hay instrucciones y sobreescrituras que pueden modificar este comportamiento automático, como veremos en breve.
Entre los objetos que pertenecen al exterior de la pauta se
encuentran cosas como las marcas de ensayo, las marcas de texto y
las de dinámica. La regla de LilyPond para la colocación vertical
de los objetos fuera-de-pentagrama es colocarlos tan cerca del
pentagrama como sea posible, pero no tan cerca como para que
puedan chocar con algún otro objeto. LilyPond utiliza la
propiedad outside-staff-priority
para determinar el orden
en que se deben situar los objetos, como veremos ahora.
En primer lugar, LilyPond sitúa todos los objetos
dentro-del-pentagrama. Después ordena los objetos
fuera-del-pentagrama de acuerdo con su prioridad
outside-staff-priority
. Los objetos fuera-del-pentagrama
se toman de uno en uno, comenzando por el que tiene la prioridad
outside-staff-priority
más baja, y se sitúan de forma que
no colisionen con ningún objeto que se haya colocado ya. Esto es,
si dos grobs fuera-del-pentagrama compiten por el mismo espacio,
el que tiene la prioridad outside-staff-priority
más baja
se colocará más cerca del pentagrama. Si dos objetos tienen la
misma outside-staff-priority
, el que se ha encontrado
primero se situará más cerca de la pauta.
En el siguiente ejemplo, todos los textos de marcado tienen la misma prioridad (pues no se ha establecido explícitamente). Observe que ‘Text3’ se posiciona de nuevo automáticamente cerca del pentagrama, acomodado por debajo de ‘Text2’.
c''2^"Text1" c''2^"Text2" | c''2^"Text3" c''2^"Text4" |
Los pentagramas también se posicionan, de forma predeterminada, tan cerca unos de otros como sea posible (sujeto a una separación mínima). Si las notas se proyectan muy lejos en dirección a un pentagrama adyacente, forzarán a alejarse a los pentagramas sólo si en caso contrario fuese a ocurrir un solapamiento de la notación. El ejemplo siguiente muestra esta acomodación ‘nestling’ de las notas sobre pentagramas adyacentes:
<< \new Staff { \relative { c'4 a, } } \new Staff { \relative { c''''4 a, } } >>
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Comportamiento automático ] | [ Up : Colocación de los objetos ] | [ La propiedad direction (dirección) > ] |
5.4.2 Objetos interiores al pentagrama
Ya hemos visto cómo las instrucciones \voiceXXX
afectan a
la dirección de las ligaduras de expresión y de unión,
digitaciones y todo lo demás que dependa de la dirección de las
plicas (véase Voces explícitas). Cuando se escribe música
polifónica, estas instrucciones son esenciales para que puedan
distinguirse varias líneas melódicas entrelazadas. Pero
ocasionalmente puede ser necesario sobreescribir este
comportamiento automático. Se puede hacer por secciones de música
completas o incluso para una nota individual. La propiedad que
controla este comportamiento es la propiedad de direction
(dirección) de cada objeto de presentación. En primer lugar
explicaremos qué hace esto, y luego introduciremos algunas
instrucciones listas para usar que le evitarán tener que codificar
sobreescrituras explícitas para las modificaciones más comunes.
Algunos objetos de presentación como las ligaduras se curvan hacia
arriba o hacia abajo; otros como las plicas y los corchetes
también se mueven a la derecha o a la izquierda cuando apuntan
hacia arriba o hacia abajo. Esto se controla automáticamente
cuando está establecida la propiedad direction
.
La propiedad direction (dirección) | ||
Digitaciones |
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Objetos interiores al pentagrama ] | [ Up : Objetos interiores al pentagrama ] | [ Digitaciones > ] |
La propiedad direction
(dirección)
El ejemplo siguiente muestra en el primer compás la colocación predeterminada de las ligaduras de expresión, estando por encima las que comienzan en notas agudas y por debajo las que comienzan en notas graves, seguido de un compás con ambas ligaduras forzadas hacia abajo, otro compás con las dos forzadas hacia arriba y por último un compás con las ligaduras devueltas a su comportamiento predeterminado.
a'4( g') c''( a') | \override Slur.direction = #DOWN a'4( g') c''( a') | \override Slur.direction = #UP a'4( g') c''( a') | \revert Slur.direction a'4( g') c''( a') |
Aquí hemos usado las constantes DOWN
(abajo) y UP
(arriba). Éstos tienen los valores -1
y +1
respectivamente, y dichos valores numéricos también se pueden usar
directamente. El valor 0
también se puede usar en algunos
casos. Se trata simplemente con el significado de UP
para
las ligaduras de expresión, pero para algunos objetos tiene el
significado de ‘centrado’. Existe una constante CENTER
que tiene el valor 0
.
Sin embargo, estas sobreescrituras no se usan muy a menudo porque están disponibles instrucciones predefinidas equivalentes más sencillas. Aquí podemos ver una tabla de las más comunes. Se menciona el significado de cada una allí donde no es obvio.
Abajo o Izquierda | Arriba o Derecha | Anular | Efecto |
---|---|---|---|
\arpeggioArrowDown | \arpeggioArrowUp | \arpeggioNormal | La flecha está abajo, arriba o no hay flecha |
\dotsDown | \dotsUp | \dotsNeutral | Dirección del desplazamiento para evitar las líneas del pentagrama |
\dynamicDown | \dynamicUp | \dynamicNeutral | |
\phrasingSlurDown | \phrasingSlurUp | \phrasingSlurNeutral | Nota: diferente de las instrucciones de ligaduras de expresión |
\slurDown | \slurUp | \slurNeutral | |
\stemDown | \stemUp | \stemNeutral | |
\textSpannerDown | \textSpannerUp | \textSpannerNeutral | El texto introducido como objeto de extensión está debajo o encima del pentagrama |
\tieDown | \tieUp | \tieNeutral | |
\tupletDown | \tupletUp | \tupletNeutral | Los grupos especiales están debajo o encima de las notas |
Las variantes neutras o normales de estas instrucciones están
implementadas usando \revert
y éstas no pueden ir
precedidas de \once
. Si quiere limitar el efecto de las
otras instrucciones (que están implementadas usando
\override
) a un solo paso de tiempo, puede precederla de
\once
de la misma forma en que lo haría con las
sobreescrituras explícitas.
O bien, si un único objeto de presentación necesita forzarse hacia
arriba o hacia abajo, pueden usarse los indicadores de dirección,
^
o _
:
a'4( g') c''( a') | a'4^( g') c''_( a') |
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < La propiedad direction (dirección) ] | [ Up : Objetos interiores al pentagrama ] | [ Objetos fuera del pentagrama > ] |
Digitaciones
La colocación de las digitaciones sobre notas sueltas también se
puede controlar mediante la propiedad direction
, pero los
cambios sobre direction
no tienen ningún efecto sobre las
notas de los acordes. Como veremos, existen instrucciones
especiales que permiten controlar las digitaciones de notas
individuales, situando la digitación encima, debajo, a la
izquierda o a la derecha de cada nota.
En primer lugar, he aquí el efecto de direction
sobre las
digitaciones aplicadas a notas sueltas. Se muestra en el primer
compás el comportamiento predeterminado, y en los dos compases
siguiente el efecto de especificar DOWN
y UP
:
\relative { c''4-5 a-3 f-1 c'-5 | \override Fingering.direction = #DOWN c4-5 a-3 f-1 c'-5 | \override Fingering.direction = #UP c4-5 a-3 f-1 c'-5 | }
Sin embargo, la sobreescritura de la propiedad direction
no
es la forma más sencilla de especificar manualmente la digitación
por encima o por debajo de las notas; suele ser preferible usar
_
o ^
en lugar de -
, antes del número de la
digitación. Este es el ejemplo anterior utilizando este método:
\relative { c''4-5 a-3 f-1 c'-5 | c4_5 a_3 f_1 c'_5 | c4^5 a^3 f^1 c'^5 | }
La propiedad direction
se ignora para los acordes, pero los
prefijos direccionales _
y ^
sí funcionan. De forma
predeterminada, las digitaciones se colocan automáticamente encima
y debajo de las notas de un acorde, como se muestra aquí:
\relative { <c''-5 g-3>4 <c-5 g-3 e-2>4 <c-5 g-3 e-2 c-1>4 }
pero se puede forzar de manera que todos o algunos de los números de digitación estén por encima o por debajo:
\relative { <c''-5 g-3 e-2 c-1>4 <c^5 g_3 e_2 c_1>4 <c^5 g^3 e^2 c_1>4 }
Es posible ejercer un control aún mayor sobre la colocación de las
digitaciones mediante la utilización de la instrucción \set
fingeringOrientations
. El formato de esta instrucción es:
\set fingeringOrientations = #'([up] [left/right] [down])
se utiliza \set
porque fingeringOrientations
es una
propiedad del contexto Voice
, creado y usado por el
grabador New_fingering_engraver
.
La propiedad se puede establecer al valor de una lista de entre
uno y tres valores. Controla si las digitaciones se pueden
colocar por encima (si up
aparece en la lista), por debajo
(si aparece down
), a la izquierda (si aparece left
)
o a la derecha (si aparece right
). A la inversa, si una
colocación no está en la lista, no se sitúa ninguna digitación en
dicho lugar. LilyPond coma estas restricciones y se trabaja la
mejor colocación para la digitación de las notas de los acordes
que siguen. Observe que left
y right
son mutuamente
excluyentes: las digitaciones pueden situarse en un lado o en el
otro, no en los dos.
Nota: Para controlar la colocación de la digitación de una sola nota usando esta instrucción es necesario escribirla como un acorde de una sola nota encerrándola entre ángulos simples.
Aquí podemos ver algunos ejemplos:
\relative { \set fingeringOrientations = #'(left) <f'-2>4 <c-1 e-2 g-3 b-5>4 \set fingeringOrientations = #'(left) <f-2>4 <c-1 e-2 g-3 b-5>4 | \set fingeringOrientations = #'(up left down) <f-2>4 <c-1 e-2 g-3 b-5>4 \set fingeringOrientations = #'(up left) <f-2>4 <c-1 e-2 g-3 b-5>4 | \set fingeringOrientations = #'(right) <f-2>4 <c-1 e-2 g-3 b-5>4 }
Si la digitación parece un poco superpoblada, se puede reducir el
tamaño font-size
. El valor predeterminado puede verse en
el objeto Fingering
del RFI que es -5
, así que
probaremos -7
:
\relative { \override Fingering.font-size = #-7 \set fingeringOrientations = #'(left) <f'-2>4 <c-1 e-2 g-3 b-5>4 \set fingeringOrientations = #'(left) <f-2>4 <c-1 e-2 g-3 b-5>4 | \set fingeringOrientations = #'(up left down) <f-2>4 <c-1 e-2 g-3 b-5>4 \set fingeringOrientations = #'(up left) <f-2>4 <c-1 e-2 g-3 b-5>4 | \set fingeringOrientations = #'(right) <f-2>4 <c-1 e-2 g-3 b-5>4 }
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Digitaciones ] | [ Up : Colocación de los objetos ] | [ La propiedad outside-staff-priority (prioridad fuera del pentagrama) > ] |
5.4.3 Objetos fuera del pentagrama
Los objetos fuera-del-pentagrama se sitúan automáticamente para evitar las colisiones. Existen varias formas de sobreescribir la colocación automática si el posicionado no resulta óptimo.
La propiedad outside-staff-priority (prioridad fuera del pentagrama) | ||
La instrucción \textLengthOn | ||
Posicionamiento de los matices dinámicos | ||
Escalado de un «Grob» |
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Objetos fuera del pentagrama ] | [ Up : Objetos fuera del pentagrama ] | [ La instrucción \textLengthOn > ] |
La propiedad outside-staff-priority
(prioridad fuera del pentagrama)
Los objetos fuera-del-pentagrama se colocan automáticamente para
evitar las colisiones. Los objetos que tienen el valor más bajo
de la propiedad outside-staff-priority
se sitúan más cerca
del pentagrama, y entonces otros objetos fuera-del-pentagrama se
elevan tanto como sea necesario para evitar la colisión. La
prioridad outside-staff-priority
se defina en el
grob-interface
y así es una propiedad de todos los objetos
de presentación. De forma predeterminada se establece a #f
para todos los objetos dentro-del-pentagrama, y a un valor
numérico adecuado a cada objeto fuera-del-pentagrama cuando se
crea el objeto. La tabla siguiente presenta los valores numéricos
predeterminados para algunos de los objetos fuera-del-pentagrama
más comunes.
Observe los nombres algo inusuales de algunos de los objetos: los
objetos de extensión se crean automáticamente para controlar el
posicionamiento vertical de los grobs que (quizá) comienzan y
terminan en distintos momentos musicales, de manera que cualquier
modificación a la prioridad outside-staff-priority
del grob
subyacente no tiene ningún efecto. Por ejemplo, cambiar la
outside-staff-priority
del objeto de regulador
Hairpin
no tiene efecto sobre la posición vertical de los
reguladores: en lugar de eso, tenemos que cambiar la
outside-staff-priority
del objeto asociado
DynamicLineSpanner
. Esta sobreescritura se debe escribir
al comienzo del objeto de extensión, que podría incluir varios
reguladores o matices dinámicos encadenados.
Objeto de presentación | Prioridad | Controla la posición de: |
---|---|---|
RehearsalMark | 1500 | Letras de ensayo |
MetronomeMark | 1000 | Indicaciones metronómicas |
VoltaBracketSpanner | 600 | Cajetines de primera y segunda vez |
TextScript | 450 | Texto en elementos de marcado |
MultiMeasureRestText | 450 | Texto sobre silencios de compás completo |
OttavaBracket | 400 | Corchetes de octava alta y baja |
TextSpanner | 350 | Objetos de extensión de texto |
DynamicLineSpanner | 250 | Todas las indicaciones dinámicas |
VoltaBracketSpanner | 100 | Números de compás |
TrillSpanner | 50 | Trinos mantenidos |
He aquí un ejemplo que muestra la situación predeterminada de algunos de ellos.
% Set details for later Text Spanner \override TextSpanner.bound-details.left.text = \markup { \small \bold Slower } % Place dynamics above staff \dynamicUp % Start Ottava Bracket \ottava #1 c''4 \startTextSpan % Add Dynamic Text and hairpin c''4\pp\< c''4 % Add Text Script c''4^Text | c''4 c'' % Add Dynamic Text and terminate hairpin c''4\ff c'' \stopTextSpan | % Stop Ottava Bracket \ottava #0 c'4 c' c' c' |
Este ejemplo también muestra cómo crear textos con extensión (Text
Spanners): textos con líneas extensoras por encima de una sección
de música. El extensor abarca desde la instrucción
\startTextSpan
hasta la instrucción \stopTextSpan
, y
el formado del texto se define por medio de la instrucción
\override TextSpanner
. Para ver más detalles, consulte
Extensiones de texto.
También muestra la manera de crear corchetes de octava alta y baja.
Si los valores predeterminados de outside-staff-priority
no
le ofrecen las colocaciones deseadas se puede sobreescribir la
prioridad de cualquiera de los objetos. Suponga que quisiéramos
que el corchete de octava estuviera situado por debajo del
elemento extensor de texto en el ejemplo de arriba. Todo lo que
debemos hacer es localizar la prioridad de OttavaBracket
en
el RFI o en las tablas anteriores, y reducirlo a un valor inferior
al de TextSpanner
, recordando que OttavaBracket
se
crea dentro del contexto de Staff
:
% Set details for later Text Spanner \override TextSpanner.bound-details.left.text = \markup { \small \bold Slower } % Place dynamics above staff \dynamicUp % Place following Ottava Bracket below Text Spanners \once \override Staff.OttavaBracket.outside-staff-priority = #340 % Start Ottava Bracket \ottava #1 c''4 \startTextSpan % Add Dynamic Text c''4\pp % Add Dynamic Line Spanner c''4\< % Add Text Script c''4^Text | c''4 c'' % Add Dynamic Text c''4\ff c'' \stopTextSpan | % Stop Ottava Bracket \ottava #0 c'4 c' c' c' |
Observe que algunos de estos objetos, concretamente los números de
compás, las indicaciones metronómicas y las letras de ensayo, se
alojan de forma predeterminada dentro del contexto Score
;
así pues, debe asegurarse de que utiliza el contexto adecuado
cuando se sobreescriben sus propiedades.
De forma predeterminada, las ligaduras de expresión están
clasificadas como objetos dentro-del-pentagrama, pero con
frecuencia aparecen encima del pentagrama si las notas que une son
muy agudas. Ello puede empujar a una posición muy elevada a los
objetos fuera-del-pentagrama como las articulaciones, pues la
ligadura se colocará en primer lugar. La propiedad
avoid-slur
de la articulación se puede establecer al valor
'inside
(por dentro) para llevarla al interior de la
ligadura, pero la propiedad avoid-slur
es efectiva
solamente si la prioridad outside-staff-priority
está
también ajustada al valor #f
. De forma alternativa, la
prioridad outside-staff-priority
de la ligadura se puede
fijar en un valor numérico para hacer que se sitúe en línea con
otros objetos fuera del pentagrama de acuerdo con este valor. He
aquí un ejemplo que muestra el efecto de los dos métodos:
\relative c'' { c4( c^\markup { \tiny \sharp } d4.) c8 | c4( \once \override TextScript.avoid-slur = #'inside \once \override TextScript.outside-staff-priority = ##f c4^\markup { \tiny \sharp } d4.) c8 | \once \override Slur.outside-staff-priority = #500 c4( c^\markup { \tiny \sharp } d4.) c8 | }
Los cambios en outside-staff-priority
también se pueden
emplear para controlar la situación vertical de los objetos
individuales, aunque los resultados pueden no siempre ser
deseables. Suponga que quiere que “Text3” se sitúe por encima
de “Text4” en el ejemplo bajo el epígrafe Comportamiento
Automático de más arriba (véase Comportamiento automático).
Todo lo que debemos hacer es localizar la prioridad de
TextScript
en el RFI o en las tablas de arriba, y aumentar
la prioridad de “Text3” hasta un valor superior:
c''2^"Text1" c''2^"Text2" | \once \override TextScript.outside-staff-priority = #500 c''2^"Text3" c''2^"Text4" |
Esto, ciertamente, eleva a “Text3” por encima de “Text4”
pero también lo eleva por encima de “Text2”, y “Text4” ahora
se desploma hacia abajo. Quizá no sea tan buena idea. ¿Y si lo
que realmente queremos hacer es posicionar todas las anotaciones a
la misma distancia por encima del pentagrama? Para hacerlo, vamos
a necesitar claramente espaciar las notas en sentido horizontal
para hacer sitio para el texto. Esto se hace empleando la
instrucción textLengthOn
.
La instrucción \textLengthOn
De forma predeterminada, el texto producido mediante marcado no
ocupa ningún espacio horizontal en cuanto se refiere a la
disposición de la música. La instrucción \textLengthOn
invierte este comportamiento, ocasionando que las notas resulten
tan espaciadas como sea necesario para acomodar el texto:
\textLengthOn % Cause notes to space out to accommodate text c''2^"Text1" c''2^"Text2" | c''2^"Text3" c''2^"Text4" |
La instrucción para volver al comportamiento predeterminado es
\textLengthOff
. De forma alternativa, se puede usar
\once
con \textLengthOn
si el efecto se ha de
limitar a un solo momento musical. El comportamiento de espaciado
correspondiente para las llamadas de ensayo y las indicaciones de
tempo se controla independientemente con las instrucciones
\markLengthOn
y \markLengthOff
.
El texto de marcado también evita las notas que se proyectan por
encima del pentagrama. Si esto no es lo que deseamos, el
desplazamiento automático hacia arriba se puede desactivar
mediante el establecimiento de la prioridad a #f
. He aquí
un ejemplo que muestra cómo el texto de marcado interactúa con
tales notas.
\relative { % This markup is short enough to fit without collision c''2^"Tex" c'' | R1 | % This is too long to fit, so it is displaced upwards c,,2^"Text" c'' | R1 | % Turn off collision avoidance \once \override TextScript.outside-staff-priority = ##f c,,2^"Long Text " c'' | R1 | % Turn off collision avoidance \once \override TextScript.outside-staff-priority = ##f \textLengthOn % and turn on textLengthOn c,,2^"Long Text " % Spaces at end are honored c''2 | }
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < La instrucción \textLengthOn ] | [ Up : Objetos fuera del pentagrama ] | [ Escalado de un «Grob» > ] |
Posicionamiento de los matices dinámicos
Las indicaciones de matiz dinámico normalmente se colocarán por
debajo del pentagrama, pero se pueden posicionar por encima con la
instrucción \dynamicUp
. Se situarán verticalmente respecto
a la nota a la que van adosadas, y flotarán por debajo (o por
encima) de todos los objetos dentro-del-pentagrama tales como
ligaduras de fraseo y números de compás. Esto puede ofrecer
resultados bastante aceptables, como muestra este ejemplo:
\relative { \clef "bass" \key aes \major \time 9/8 \dynamicUp bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! | ees,2.~\)\mf ees4 r8 | }
Sin embargo, si las notas y sus indicaciones dinámicas adosadas están muy cerca, la colocación automática evitará las colisiones desplazando las marcas dinámicas posteriores más lejos, aunque este puede no ser el lugar óptimo, como muestra el siguiente ejemplo más bien artificial:
\dynamicUp \relative { a'4\f b\mf a\mp b\p }
Si se presentara una situación similar en música ‘real’, podría
ser preferible espaciar las notas un poco más entre sí, de forma
que todas las marcas dinámicas puedan caber a la misma distancia
vertical desde el pentagrama. Hemos sido capaces de hacer esto
para el texto de marcado utilizando la instrucción
\textLengthOn
, pero no existe una instrucción equivalente
para las indicaciones de matiz dinámico. Por tanto, tendremos que
averiguar cómo hacerlo utilizando instrucciones \override
.
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Posicionamiento de los matices dinámicos ] | [ Up : Objetos fuera del pentagrama ] | [ Espaciado vertical > ] |
Escalado de un «Grob»
En primer lugar debemos aprender cómo se especifica el tamaño de
los grobs. Todos los grobs tienen un punto de referencia definido
dentro de ellos que se usa para colocarlos respecto a su objeto
padre. Entonces, este punto del grob se posiciona a una distancia
horizontal, X-offset
, y una distancia vertical,
Y-offset
, a partir de su padre. La dimensión horizontal
del objeto viene dada por una pareja de números, X-extent
,
que dice dónde están los límites izquierdo y derecho respecto del
punto de referencia. La amplitud vertical se define de forma
similar mediante una pareja de números, Y-extent
. Éstas
son propiedades de todos los grobs que contemplan el
grob-interface
.
De forma predeterminada, los objetos fuera-del-pentagrama reciben
una anchura cero, de manera que pueden solaparse en la dirección
horizontal. Esto se hace mediante el truco de hacer que la
dimensión más a la izquierda sea igual a infinito y que la
dimensión más a la derecha sea igual a menos infinito,
estableciendo el valor de extra-spacing-width
a
'(+inf.0 . -inf.0)
. Así, para asegurar que no se
superponen en la dirección horizontal tendremos que sobreescribir
este valor de extra-spacing-width
para darles un poco de
espacio adicional. Las unidades son el espacio entre dos líneas
del pentagrama, de forma que debería bastar mover el límite
izquierdo media unidad a la izquierda y el límite derecho media
unidad a la derecha:
\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
Veamos si funciona en nuestro ejemplo anterior:
\dynamicUp % Extend width by 1 staff space \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5) \relative { a'4\f b\mf a\mp b\p }
Esto tiene un mejor aspecto, pero quizá habríamos preferido que
las indicaciones de dinámica estuvieran alineadas sobre la misma
línea de base en lugar de ir hacia arriba y hacia abajo con las
notas. La propiedad que lo hace es staff-padding
(relleno
de pentagrama) que se estudia en la sección dedicada a las
colisiones (véase Colisiones de objetos).
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Escalado de un «Grob» ] | [ Up : Trucar la salida ] | [ Colisiones de objetos > ] |
5.5 Espaciado vertical
Por lo general, el espaciado vertical de los objetos musicales que LilyPond hace es bastante bueno. Veamos cómo se comporta con una canción sencilla, con dos voces y acompañamiento de piano:
No hay ningún problema con el espaciado vertical predeterminado. Sin embargo, supongamos que estamos trabajando con un editor que tiene ciertos requisitos específicos para el espaciado vertical de los pentagramas y la letra: quiere que la letra está más separada de las notas, que el acompañamiento de piano esté más separado de la línea vocal y que los dos pentagramas de piano estén más juntos entre sí. Comenzaremos con la letra.
La letra se encuentra en el interior de un sistem, y por tanto las
instrucciones para aplicarle el espaciado estarán en
Espaciado vertical flexible dentro de los sistemas. Allí
se dice que el texo son líneas del tipo “no-pauta” y por tanto
la instrucción para cambiar su espaciado hará referencia a la
propiedad nonstaff
. Para separarlas del pentagrama al que
pertenecen (la pauta superior) usaremos la propiedad
relatedstaff
. Para separarlas de la línea inferior
usaremos la propiedad unrelatedstaff
. Las partes vocales
pertenecen a un grupo vertical VerticalAxisGroup
, por lo
que tenemos que ajustar sus propiedades. Probémoslo y veamos si
funciona.
<< \new ChoirStaff << \new Staff { \new Voice = "music" { b'2 c' c' c' } } \new Lyrics \with { \override VerticalAxisGroup. nonstaff-relatedstaff-spacing.padding = #5 \override VerticalAxisGroup. nonstaff-unrelatedstaff-spacing.padding = #5 } \lyricsto "music" { Here are some lyrics } \new Staff { \clef bass e'2 f e c } >> \new PianoStaff << \new Staff { g''2 c'' c'' a'' } \new Staff { \clef bass e2 f c e } >> >>
Bien: sí, funciona, pero quizá demasiado bien. Cuando
establecemos el padding
(relleno) a 5, LilyPond añade 5
espacios de pentagrama a la distancia entre los objetos, lo que es
excesivo para nosotros en este caso. Usaremos un valor de 2.
A continuación, desplazaremos la música de piano para separarla de
las partes vocales. La música vocal es una ChoirStaff
(un
contexto de sistema coral), y por tanto tenemos que aumentar el
espaciado entre ese grupo de pentagramas y el sistema de piano que
se encuentra debajo. Lo haremos cambiando la
basic-distance
(distancia básica) del StaffGrouper
del staffgroup-staff-spacing
.
<< \new ChoirStaff \with { \override StaffGrouper. staffgroup-staff-spacing.basic-distance = #15 } << \new Staff { \new Voice = "music" { b'2 c' c' c' } } \new Lyrics \with { \override VerticalAxisGroup. nonstaff-relatedstaff-spacing.padding = #2 \override VerticalAxisGroup. nonstaff-unrelatedstaff-spacing.padding = #2 } \lyricsto "music" { Here are some lyrics } \new Staff { \clef bass e'2 f e c } >> \new PianoStaff << \new Staff { g''2 c'' c'' a'' } \new Staff { \clef bass e2 f c e } >> >>
Muy bien. Ahora, sólo nos queda el último requisito de hacer que
los pentagramas de piano estén más juntos. Para conseguirlo, de
nuevo alteramos las propiedades del StaffGrouper
, pero esta
vez vamos a reducir tanto la basic-distance
(distancia
básica) como el padding
(relleno). Podemos hacerlo como se
muestra a continuación.
<< \new ChoirStaff \with { \override StaffGrouper. staffgroup-staff-spacing.basic-distance = #15 } << \new Staff { \new Voice = "music" { b'2 c' c' c' } } \new Lyrics \with { \override VerticalAxisGroup. nonstaff-relatedstaff-spacing.padding = #2 \override VerticalAxisGroup. nonstaff-unrelatedstaff-spacing.padding = #2 } \lyricsto "music" { Here are some lyrics } \new Staff { \clef bass e'2 f e c } >> \new PianoStaff \with { \override StaffGrouper.staff-staff-spacing = #'( (basic-distance . 0) (padding . 0)) } << \new Staff { g''2 c'' c'' a'' } \new Staff { \clef bass e2 f c e } >> >>
Con esto los hemos colocado muy juntos entre sí (pero es lo que el
editor quería). Se podrían haber separado más alterando el
relleno, padding
, o la distancia básica,
basic-distance
, si quisiéramos.
Hay muchas formas de alterar el espaciado vertical. Un punto
clave que debemos recordar es que el espaciado entre objetos
dentro de un StaffGroup
(como los grupos GrandStaff
o PianoStaff
) se controla con las variables de espaciado
del StaffGrouper
. El espaciado de los pentagramas no
agrupados (como Lyrics
y Staff
) se controla con las
variables del VerticalAxisGroup
. Para ver más detalles,
consulte
Variables de espaciado de paper verticales flexibles y
Espaciado vertical flexible dentro de los sistemas.
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Espaciado vertical ] | [ Up : Trucar la salida ] | [ Mover objetos > ] |
5.6 Colisiones de objetos
5.6.1 Mover objetos | ||
5.6.2 Arreglar notación con superposiciones | ||
5.6.3 Ejemplos reales de música |
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Colisiones de objetos ] | [ Up : Colisiones de objetos ] | [ Arreglar notación con superposiciones > ] |
5.6.1 Mover objetos
Aunque pueda sorprenderle, LilyPond no es perfecto. Ciertos elementos de notación se pueden superponer, lo que es una lástima, pero en realidad es bastante poco frecuente. Normalmente la necesidad de mover objetos es por claridad o razones estéticas: el aspecto es mejor con un poco más o un poco menos de espacio de separación.
Existen tres enfoques principales que llevan a la resolución de superposiciones en la notación. Se deben considerar en el siguiente orden:
- La dirección de uno de los objetos que se superponen se puede cambiar usando las instrucciones predefinidas que están relacionadas arriba para los objetos dentro-del-pentagrama (véase Objetos interiores al pentagrama). Se pueden recolocar fácilmente las plicas, ligaduras de expresión y de unión, barras de corchea, indicaciones dinámicas, texto y grupos de valoración especial de esta forma. La limitación es que sólo tiene la posibilidad de elegir entre dos posiciones, y podría ser que ninguna de ellas sea la adecuada.
- Las propiedades del objeto, que LilyPond usa cuando está
colocando los objetos de presentación, se pueden modificar usando
la instrucción de sobreescritura
\override
. Las ventadas de hacer cambios a este tipo de propiedad son: a) que algún otro objeto se moverá automáticamente si es necesario, para dejarle sitio, y b) una única sobreescritura se puede aplicar a todas las instancias del mismo tipo de objeto. Entre tales propiedades se encuentran:-
direction
(dirección)Ya se ha estudiado con cierto detalle: véase Objetos interiores al pentagrama.
-
padding
(relleno),right-padding
(relleno por la derecha),staff-padding
(relleno de pentagrama)Según un objeto se está colocando, el valor de su propiedad de relleno
padding
especifica el espacio intermedio que se debe dejar entre él mismo y el límite más próximo del objeto contra el que se está colocando. Observe que es el valor depadding
del objeto que se está colocando el que se usa; el valor depadding
del objeto que ya está colocado se ignora. Los espacios intermedios especificados mediantepadding
se pueden aplicar a todos los objetos que contemplan el interfaceside-position-interface
.En lugar de con
padding
, la colocación de los grupos de alteraciones se controla conright-padding
. Esta propiedad se encuentra en el objetoAccidentalPlacement
que, observe, vive dentro del contexto de Staff. Durante el proceso tipográfico, las cabezas de las notas se componen tipográficamente en primer lugar, y después las alteraciones, si existen, se añaden a la izquierda de las cabezas utilizando la propiedad de relleno por la derecharight-padding
para determinar la separación entre la alteración y la cabeza, y de las alteraciones entre sí. Así pues, sólo la propiedad de relleno por la derecharight-padding
del objetoAccidentalPlacement
tiene efecto sobre la colocación de las alteraciones.La propiedad
staff-padding
está estrechamente relacionada con la propiedadpadding
:padding
controla la separación mínima entre cualquier objeto que contemple el interfaceside-position-interface
y el objeto más cercano (generalmente la nota o las líneas del pentagrama);staff-padding
se aplica sólo a los objetos que siempre se sitúan fuera del pentagrama: controla la separación mínima entre dicho objeto y el pentagrama. Observe questaff-padding
no tiene ningún efecto sobre objetos que se posicionan respecto a la nota en vez de hacerlo respecto al pentagrama, incluso aunque puede ser sobreescrito sin error por tales objetos: simplemente se ignora.Para descubrir qué propiedad de relleno se necesita para el objeto que quiere recolocar, debe volver al manual de RFI y buscar las propiedades del objeto. Tenga cuidado porque las propiedades de relleno podrían no estar en el objeto más obvio, así que busque en los objetos que puedan tener alguna relación con él.
Todos los valores de relleno se miden en espacios del pentagrama. Para la mayor parte de los objetos el valor se establece de forma predeterminada en aproximadamente 1.0 o menos (varía con cada objeto). Se puede sobreescribir si se necesita una separación intermedia mayor (o menor).
-
self-alignment-X
(Auto-alineamiento en el eje X)Esta propiedad se puede usar para alinear el objeto a la izquierda, a la derecha, o centrarlo con respecto al punto de referencia del objeto «padre». Se puede usar con todos los objetos que contemplan el interface
self-alignment-interface
. En general son objetos que contienen texto. Los valores sonLEFT
,RIGHT
oCENTER
. De forma alternativa se puede especificar un valor numérico entre-1
y+1
, donde-1
es alineado por la izquierda,+1
es alineado por la derecha, y los números intermedios mueven el texto progresivamente desde alineado por la izquierda hasta alineado por la derecha. Se pueden especificar valores numéricos mayores de1
para mover el texto incluso más lejos hacia la izquierda, o menos de-1
para alejarlo más hacia la derecha. Un cambio en1
en el valor corresponde a un movimiento de la mitad de la longitud total del propio texto. -
extra-spacing-width
(anchura de separación adicional)Esta propiedad está disponible para todos los objetos que contemplan el interface
item-interface
. Toma dos números, el primero se suma al límite izquierdo y el segundo se suma al límite derecho. Los números negativos desplazan el límite a la izquierda y los positivos a la derecha, por lo que para ensanchar un objeto el primer número debe ser negativo y el segundo positivo. Observe que no todos los objetos ostentan los dos números. Por ejemplo, el objetoAccidental
(alteración) sólo toma nota del primer número (el borde izquierdo). -
staff-position
(posición de pentagrama)staff-position
es una propiedad del interfacestaff-symbol-referencer-interface
, que está contemplado por los objetos que se colocan con relación al pentagrama. Especifica la posición vertical del objeto con relación a la tercera línea del pentagrama en medios espacios de pentagrama. Es útil en la resolución de colisiones entre objetos de presentación como silencios multi-compás, ligaduras de unión y notas en distintas voces. -
horizontal-shift
Dentro de una voz, todas las notas que se producen en el mismo moemtno se agrupan en una columna de notas, y se crea un objeto
NoteColumn
para controlar el posicionamiento horizonal de dicho grupo de notas (véase “Columnas de nota” en Voces explícitas). Si y sólo si dos o más columnas de nota dentro de un solo contexto de pauta, las dos con las plicas en la misma dirección, aparecen en el mismo momento musical, los valores de sus propiedadeshorizontal-shift
se usan para asignarles una puntuación y las columnas con puntuaciones más altas se desplazan progresivamente para evitar las colisiones entre las cabezas de las notas. Esta propiedad se establece con las instrucciones\voiceXXX
y se pueden sobreescribir directamente con una instrucción\override
o, de forma más común con las instrucciones\shiftOn
. Observe que esta propiedad se usa para calificar las columnas de nota o para aplicar desplazamientos: no especifica la magnitud del desplazamiento, que se va incrementando progresivamente en pasos basándolse en la anchura de las cabezas de nota para cada puntuación. Los pasos son normalmente de la mitad de la anchura de una cabeza de nota, pero puede ser el ancho completo de la cabeza de una nota cuando está implicado un grupo de notas muy apretadas entre sí. -
force-hshift
(forzar desplazamiento horizontal)La propiedad
force-hshift
es una propiedad de unaNoteColumn
(realmente lo es del interfacenote-column-interface
). Modificarlo permite mover una columna de notas en situaciones donde las columnas de notas se superponen. Observe que no tiene efecto sobre las columnas de nota que no se superponen. Se especifica en unidades adecuadas a una columna de notas, por ejemplo la anchura de la cabeza de la nota de la primera voz. Se debe usar en situaciones complejas donde las instrucciones\shiftOn
normales (véase Voces explícitas) no resuelven el conflicto entre las notas de forma satisfactoria. Es preferible a la propiedadextra-offset
para este propósito porque no hay necesidad de averiguar la distancia en espacios de pentagrama, y mover las notas dentro o fuera de unaNoteColumn
afecta a otras acciones como a la fusión entre cabezas de nota.
-
- Finalmente, cuando todo lo demás falla, los objetos se pueden
reposicionar manualmente con relación a la tercera línea del
pentagrama verticalmente, o desplazándolas una cierta distancia a
una nueva posición. Las desventajas son que los valores correctos
para el reposicionamiento se deben adivinar, a menudo por ensayo y
error, para cada objeto individual y, puesto que el movimiento se
hace después de que LilyPond ha colocado todos los demás objetos
es usuario es responsable de evitar cualquier colisión que pudiera
producirse. Pero la dificultar principal con este enfoque es que
los valores de reposicionado podrían tener que ser vueltos a
calcular si la música se modifica más tarde. Las propiedades que
se pueden usar para este tipo de posicionamiento manual son:
extra-offset (desplazamiento adicional)
-
Esta propiedad se aplica a cualquier objeto de presentación que contemple el
grob-interface
. Toma una pareja de números que especifican el desplazamiento adicional en las direcciones horizontal y vertical. Los números negativos mueven el objeto a la izquierda o hacia abajo. Las unidades son espacios de pentagrama. El desplazamiento adicional se hace después de que la composición tipográfica de los objetos ha terminado, así que un objeto puede ser reposicionado a cualquier lugar sin afectar a ninguna otra cosa. positions (posiciones)
-
Ésta es de la mayor utilidad para ajustar manualmente la inclinación y la altura de las barras de corchea, ligaduras de expresión y corchetes de grupos de valoración especial. Toma una pareja de números que dan la posición de los extremos izquierdo y derecho de la barra, ligadura, etc. con relación a la tercera línea del pentagrama. Las unidades son espacios de pentagrama. Observe, sin embargo, que las ligaduras de expresión y de fraseo no se pueden reposicionar en cantidades arbitrariamente grandes. LilyPond en primer lugar genera una lista de posiciones posibles para la ligadura y de forma predeterminada encuentra la ligadura que tiene “mejor aspecto”. Si la propiedad
positions
se ha sobreescrito, la ligadura que está más cerca de las posiciones que se han solicitado, se selecciona de la lista.
Un objeto en particular podría no tener todas estas propiedades. Es necesario ir al manual RFI para buscar qué propiedades se encuentran disponibles para el objeto en cuestión.
Aquí presentamos una lista de los objetos que es más probable que estén implicados en colisiones, con el nombre del objeto que habría que buscar en el RFI para descubrir qué propiedades se deben usar para moverlos.
Tipo de objeto | Nombre del objeto |
---|---|
Articulaciones | Script |
Barras | Beam |
Dinámica (verticalmente) | DynamicLineSpanner |
Dinámica (horizontalmente) | DynamicText |
Digitaciones | Fingering |
Llamadas de ensayo y textuales | RehearsalMark |
Ligaduras de expresión | Slur |
Texto, por ejemplo ^"texto" | TextScript |
Ligaduras de unión | Tie |
Grupos de valoración especial | TupletBracket |
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Mover objetos ] | [ Up : Colisiones de objetos ] | [ La propiedad padding (relleno) > ] |
5.6.2 Arreglar notación con superposiciones
Veamos ahora cómo pueden ser de ayuda las propiedades que hemos visto en la sección anterior, para resolver problemas de notación que se superpone.
La propiedad padding
(relleno)
La propiedad padding
se puede ajustar para aumentar (o
disminuir) la distancia entre símbolos impresos encima o debajo de
las notas.
c'2\fermata \override Script.padding = #3 b2\fermata
% This will not work, see below \override MetronomeMark.padding = #3 \tempo 4 = 120 c'1 | % This works \override Score.MetronomeMark.padding = #3 \tempo 4 = 80 d'1 |
Observe en el segundo ejemplo la gran importancia que tiene saber
qué contexto maneja un determinado objeto. Puesto que el objeto
MetronomeMark
se maneja dentro del contexto Score
,
los cambios de propiedades en el contexto Voice
pasarán
inadvertidos.
Para ver más detalles, consulte Modificar las propiedades.
Si la propiedad de relleno padding
de un objeto se
incrementa cuando dicho objeto se encuentra en una pila de objetos
que se están colocando de acuerdo a su prioridad
outside-staff-priority
, entonces ese objeto se moverá, y
también todos los que están por fuera de él.
La propiedad right-padding
(relleno por la derecha)
La propiedad right-padding
afecta al espaciado entre la
alteración y la nota a que se aplica. Normalmente no es
necesaria, pero el espaciado predeterminado puede estar mal para
ciertos glifos de alteraciones o combinaciones de glifos que se
usan en música microtonal. Éstos tienen que introducirse
sobreescribiendo el sello de la alteración con un elemento de
marcado que contenga los símbolos deseados, así:
sesquisharp = \markup { \sesquisharp } \relative { c''4 % This prints a sesquisharp but the spacing is too small \once \override Accidental.stencil = #ly:text-interface::print \once \override Accidental.text = #sesquisharp cis4 c % This improves the spacing \once \override Score.AccidentalPlacement.right-padding = #0.6 \once \override Accidental.stencil = #ly:text-interface::print \once \override Accidental.text = #sesquisharp cis4 | }
Esto utiliza necesariamente una sobreescritura para el sello de la
alteración que no se estudiará hasta más adelante. El tipo de
sello debe ser un procedimiento, aquí modificado para que imprima
el contenido de la propiedad text
del objeto
Accidental
, que a su vez está establecido como un signo de
sesquisostenido. Entonces el signo se puede separar de la cabeza
de la nota sobreescribiendo right-padding
.
La propiedad staff-padding
(relleno de pentagrama)
staff-padding
se puede usar para alinear objetos como
matices dinámicos a lo largo de una línea de base a una distancia
fija del pentagrama, siempre que no exista ningún otro elemento de
notación que fuerce una distancia mayor al pentagrama. No es una
propiedad de DynamicText
sino de DynamicLineSpanner
.
Esto es así porque la línea de base debe aplicarse por igual a
todas las dinámicas, entre ellas las que se han creado
como objetos de extensión. Así que ésta es la forma de alinear
las indicaciones de matiz en el ejemplo de la sección anterior:
\override DynamicLineSpanner.staff-padding = #3 \relative { a'4\f b\mf a\p b\mp }
La propiedad self-alignment-X
(auto-alineación en X)
El ejemplo siguiente muestra cómo ajustar la posición de un objeto de digitación de cuerda en relación a la plica de una nota mediante el alineamiento del límite derecho con el punto de referencia de la nota «padre»:
\voiceOne <a''\2> \once \override StringNumber.self-alignment-X = #RIGHT <a''\2>
La propiedad staff-position
(posición en el pentagrama)
Los silencios multi-compás en una voz pueden chocar con las notas en otra voz. Puesto que estos silencios se tipografían centrados entre las barras de compás se necesitaría bastante esfuerzo para que LilyPond averiguara qué otras notas podrían chocar con él, ya que actualmente todo el manejo de colisiones entre notas y silencios se hace solamente para notas y silencios que ocurren al mismo tiempo. He aquí un ejemplo de colisión de este tipo:
<< \relative { c'4 c c c } \\ { R1 } >>
La mejor solución aquí es mover el silencio multi-compás hacia
abajo, pues el silencio está en la voz dos. El ajuste
predeterminado para \voiceTwo
(es decir, en la segunda voz
de una construcción <<{…} \\ {…}>>
) es que
staff-position
tenga el valor -6 para MultiMeasureRest, así
que tenemos que bajarlo, digamos, cuatro semi-espacios de
pentagrama, al valor -10
.
<< \relative { c'4 c c c } \\ \override MultiMeasureRest.staff-position = #-10 { R1 } >>
Esto es mejor que utilizar, por ejemplo, extra-offset
,
porque la línea adicional por encima del silencio se inserta
automáticamente.
Consulte la sección ‘Edición manual de las ligaduras’ en Ligaduras de unión para ver la diferencia entre valores exactos e inexactos.
La propiedad extra-offset
(desplazamiento adicional)
La propiedad extra-offset
da un completo control sobre el
posicionamiento de un objeto tanto vertical como horizontalmente.
En el ejemplo siguiente, la segunda digitación se desplaza ligeramente a la izquierda, y 1.8 espacios de pentagrama hacia abajo:
f'4-5 \once \override Fingering.extra-offset = #'(-0.3 . -1.8) f'4-5
La propiedad positions
(posiciones)
La propiedad positions
permite controlar manualmente la
posición vertical y de ahí también la inclinación de los
tresillos, ligaduras de expresión y de fraseo, y barras de
corchea.
He aquí un ejemplo en el que las ligaduras de fraseo y de expresión chocan entre sí:
\relative { a'8 \( ( a'16 ) a \) }
Una posibilidad sería mover los dos extremos de la ligadura de fraseo hacia arriba. Podemos tratar de establecer el extremo izquierdo a 2.5 espacios de pentagrama por encima de la tercera línea y el extremo derecho a 4.5 también hacia arriba, y LilyPond seleccionaría la ligadura de fraseo de entre las candidatas que ha encontrado con sus extremos más cercanos a éstos:
\once \override PhrasingSlur.positions = #'(2.5 . 4.5) a'8 \( ( a''16 ) a'' \)
Esto supone una mejora, pero ¿por qué no bajar un poco el extremo
derecho de la ligadura de expresión? Si lo probamos, veremos que
no se puede hacer así. Ello es a causa de que no existen
ligaduras de expresión candidatas que estén más bajas que la que
ya se ha seleccionado, y en este caso la propiedad
positions
no tiene ningún efecto. Sin embargo, las
ligaduras de unión, expresión y fraseo se pueden colocar y
conformar de manera muy exacta cuando se necesita. Para aprender
la manera de hacerlo, consulte Modificación de ligaduras de
unión y de expresión.
Presentamos otro ejemplo. Vemos que la barra choca con las ligaduras:
{ \time 4/2 << \relative { c'1~ 2. e8 f } \\ \relative { e''8 e e e e e e e f2 g } >> << \relative { c'1~ 2. e8 f } \\ \relative { e''8 e e e e e e e f2 g } >> }
Esto se puede resolver manualmente elevando los dos extremos de la barra desde su posición a 1.81 espacios de pentagrama bajo la línea central hasta, digamos, 1 espacio:
{ \time 4/2 << \relative { c'1~ 2. e8 f } \\ \relative { \override Beam.positions = #'(-1 . -1) e''8 e e e e e e e f2 g } >> << \relative { c'1~ 2. e8 f } \\ \relative { e''8 e e e e e e e f2 g \revert Beam.positions } >> }
Observe que la sobreescritura sigue aplicándose en la segunda voz del segundo compás de corcheas, pero no a ninguna de las barras de la primera voz, ni siquiera a las que están en el segundo compás, que es posterior. Tan pronto como la sobreescritura no pueda tener ningún efecto, debería ser revertida como se muestra.
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < La propiedad positions (posiciones) ] | [ Up : Arreglar notación con superposiciones ] | [ Ejemplos reales de música > ] |
La propiedad force-hshift
(forzar desplazamiento horizontal)
Ahora podremos ver cómo aplicar las correcciones finales al ejemplo de Chopin que presentamos al final de Oigo voces, que dejamos con este aspecto:
\new Staff \relative { \key aes \major << { c''2 aes4. bes8 } \\ { <ees, c>2 des } \\ \\ { aes'2 f4 fes } >> | <c ees aes c>1 | }
Es necesario que la nota interior del primer acorde (el La bemol
de la cuarta voz) no se aparte de la columna vertical de la nota
aguda, por lo que usamos \shiftOff
.
En el segundo acorde preferimos que el Fa esté alineado con el La
bemol y que la nota grave se coloque ligeramente a la derecha para
evitar una colisión de las plicas. Lo conseguimos ajustando el
valor de force-hshift
en la NoteColumn
del Re bemol
grave para moverlo a la derecha medio espacio de pentagrama, y
fijando force-hshift
para el Fa al vaor cero. Observe que
usamos \once
para evitar que los ajustes se propaguen más
allá del momento musical inmediato, aunque en este pequeño ejemplo
podrían omitirse el \once
y el segundo \override
de
la cuarta voz. Ello no supondría una buena práctica.
Presentamos a continuación el resultado final:
\new Staff \relative { \key aes \major << { c''2 aes4. bes8 } \\ { <ees, c>2 \once \override NoteColumn.force-hshift = 0.5 des } \\ \\ { \once \shiftOff aes'2 \once \shiftOff f4 fes } >> | <c ees aes c>1 | }
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < La propiedad force-hshift (forzar desplazamiento horizontal) ] | [ Up : Colisiones de objetos ] | [ Trucajes adicionales > ] |
5.6.3 Ejemplos reales de música
Finalizaremos esta sección sobre los trucos mostrando los pasos que se deben tomar para tratar con un ejemplo complicado que necesita varios trucos para producir el resultado deseado. El ejemplo se ha escogido deliberadamente para ilustrar el uso de la Referencia de la Notación para resolver problemas de notación poco comunes. No es representativo del proceso de grabado más usual, por lo que ¡le recomendamos que no deje que estas dificultades le desanimen! ¡Afortunadamente, las dificultades como éstas no son muy comunes!
El ejemplo está extraído de la Primera Balada de Chopin, Op. 23, compases 6 al 9, la transición entre el Lento inicial y el Moderato. Presentamos en primer lugar el aspecto que queremos que tenga el resultado, pero para evitar complicar demasiado el ejemplo hemos quitado las indicaciones dinámicas, las digitaciones y el pedal.
Observamos en primer lugar que la parte de la mano derecha del tercer compás requiere cuatro voces. Son las cinco corcheas unidas por una barra, la nota Do ligada, el Re blanca que se funde con el Re corchea, y el Fa sostenido negra con puntillo, que también está fundida con la corchea de su misma altura. Todo lo demás está en una sola voz, así que lo más fácil es introducir estas tres voces adicionales, en el momento en que se necesiten y de forma temporal. Si ha olvidado cómo hacerlo, lea las secciones Oigo voces y Voces explícitas. Aquí tomamos la decisión de utilizar voces instanciadas explícitamente para el pasaje polifónico, dado que LilyPond es más probable que pueda evitar las colisiones si todas las voces se instancian explícitamente de esta forma.
Vamos a comenzar introduciendo las notas como dos variables y disponiendo la estructura de pentagramas en un bloque Score, y veremos qué produce LilyPond de forma predeterminada:
rhMusic = \relative { \new Voice { r2 c''4. g8 | bes1~ | \time 6/4 bes2. r8 % Start polyphonic section of four voices << { c,8 d fis bes a } % continuation of main voice \new Voice { \voiceTwo c,8~ 2 } \new Voice { \voiceThree s8 d2 } \new Voice { \voiceFour s4 fis4. } >> | g2. % continuation of main voice } } lhMusic = \relative { r2 <c' g ees>2 | <d g, d>1 | r2. d,,4 r4 r | r4 } \score { \new PianoStaff << \new Staff = "RH" << \key g \minor \rhMusic >> \new Staff = "LH" << \key g \minor \clef "bass" \lhMusic >> >> }
Todas las notas son correctas, pero el aspecto está lejos de ser satisfactorio. La ligadura de unión choca con el cambio de compás, ciertas notas no se funden correctamente, y faltan algunos elementos de notación. En primer lugar trataremos con lo más fácil. Podemos añadir fácilmente la ligadura de expresión de la mano izquierda y la ligadura de fraseo de la mano derecha, pues todo ello se estudió en el Tutorial. Al hacerlo así obtenemos:
rhMusic = \relative { \new Voice { r2 c''4.\( g8 | bes1~ | \time 6/4 bes2. r8 % Start polyphonic section of four voices << { c,8 d fis bes a } % continuation of main voice \new Voice { \voiceTwo c,8~ 2 } \new Voice { \voiceThree s8 d2 } \new Voice { \voiceFour s4 fis4. } >> | g2.\) % continuation of main voice } } lhMusic = \relative { r2 <c' g ees>2( | <d g, d>1) | r2. d,,4 r4 r | r4 } \score { \new PianoStaff << \new Staff = "RH" << \key g \minor \rhMusic >> \new Staff = "LH" << \key g \minor \clef "bass" \lhMusic >> >> }
El primer compás ahora es correcto. El segundo compás contiene un
arpegio y acaba en una doble barra. ¿Cómo los hacemos, pues no
han sido mencionados en este Manual de Aprendizaje? Aquí es donde
tenemos que volver e la Referencia de la Notación. Buscando la
palabra ‘arpegio’ y ‘línea divisoria’ en el índice nos muestra
rápidamente que un arpegio se hace añadiendo \arpeggio
a un
acorde, y la doble barra se produce por medio de la instrucción
\bar "||"
. Esto podemos hacerlo fácilmente. A
continuación tenemos que corregir la colisión entre la ligadura de
unión y la indicación de compás. Esto se hace mejor moviendo la
ligadura hacia arriba. Estudiamos cómo mover objetos
anteriormente en Mover objetos, donde dice que los objetos
que están situados de forma relativa al pentagrama se pueden mover
verticalmente sobreescribiendo su propiedad staff-position
,
que se especifica en unidades de medio espacio de pentagrama
respecto de la línea central del pentagrama. Así pues, la
sobreescritura siguiente colocada justo antes de la primera nota
ligada subirá la ligadura 3.5 medios espacios de pentagrama por
encima de la línea central:
\once \override Tie.staff-position = #3.5
Con esto se completa el compás dos, dando como resultado:
rhMusic = \relative { \new Voice { r2 c''4.\( g8 | \once \override Tie.staff-position = #3.5 bes1~ | \bar "||" \time 6/4 bes2. r8 % Start polyphonic section of four voices << { c,8 d fis bes a } % continuation of main voice \new Voice { \voiceTwo c,8~ 2 } \new Voice { \voiceThree s8 d2 } \new Voice { \voiceFour s4 fis4. } >> | g2.\) % continuation of main voice } } lhMusic = \relative { r2 <c' g ees>2( | <d g, d>1)\arpeggio | r2. d,,4 r4 r | r4 } \score { \new PianoStaff << \new Staff = "RH" << \key g \minor \rhMusic >> \new Staff = "LH" << \key g \minor \clef "bass" \lhMusic >> >> }
Vayamos ahora al tercer compás y comienzo de la sección Moderato.
El tutorial nos enseñó cómo escribir una indicación de tempo
mediante la instrucción \tempo
, por lo que añadir
“Moderato” es fácil. Pero ahora ¿cómo fundimos notas que están
en distintas voces? Aquí es donde debemos volver a buscar ayuda
en el manual de Referencia de la notación. Al buscar la palabra
“merge” (mezcla) en el índice de la Referencia de la notación
llegamos rápidamente a las instrucciones para mezclar notas con
distinta cabeza y con o sin puntillo, en Resolución de las
colisiones. En nuestro ejemplo tenemos que fusionar ambos tipos
de nota en el transcurso de la sección polifónica del compás 3;
por tanto, en virtud de la información que aparece en la
Referencia de la Notación, escribimos
\mergeDifferentlyHeadedOn \mergeDifferentlyDottedOn
al principio de la sección, y
\mergeDifferentlyHeadedOff \mergeDifferentlyDottedOff
al final, dando como resultado:
Estas sobreescrituras han fundido los dos Fa sostenido, pero no
los dos Re. ¿Por qué no? La respuesta está en la misma sección
de la Referencia de la Notación: las notas que se fusionan deben
tener las plicas en direcciones opuestas y dos notas no se pueden
fusionar bien si hay una tercera nota en la misma columna. Aquí
los dos Re tienen las plicas hacia arriba y hay una tercera nota:
el Do. Sabemos cómo cambiar la dirección de la plica usando
\stemDown
, y la Referencia de la Notación también explica
cómo mover el Do: aplicar un desplazamiento usando una de las
instrucciones \shift
. Pero ¿cuál? El Do está en la voz
dos que tiene desactivado el desplazamiento, y los dos Re están en
las voces uno y tres, que tienen el desplazamiento desactivado y
activado, respectivamente. Por ello tenemos que desplazar el Do
un nivel más todavía, usando \shiftOnn
para evitar que
interfiera con los dos Re. Al aplicar estos cambios obtenemos:
rhMusic = \relative { \new Voice { r2 c''4.\( g8 | \once \override Tie.staff-position = #3.5 bes1~ | \bar "||" \time 6/4 bes2.\tempo "Moderato" r8 \mergeDifferentlyHeadedOn \mergeDifferentlyDottedOn % Start polyphonic section of four voices << { c,8 d fis bes a } % continuation of main voice \new Voice { \voiceTwo % Move the c2 out of the main note column % so the merge will work c,8~ \shiftOnn c2 } \new Voice { \voiceThree % Stem on the d2 must be down to permit merging s8 \stemDown d2 } \new Voice { \voiceFour s4 fis4. } >> | \mergeDifferentlyHeadedOff \mergeDifferentlyDottedOff g2.\) % continuation of main voice } } lhMusic = \relative { r2 <c' g ees>2( | <d g, d>1)\arpeggio | r2. d,,4 r4 r | r4 } \score { \new PianoStaff << \new Staff = "RH" << \key g \minor \rhMusic >> \new Staff = "LH" << \key g \minor \clef "bass" \lhMusic >> >> }
Ya casi está. Solamente quedan dos problemas: la plica hacia
abajo sobre el Re fusionado no tendría que estar ahí, y el Do
estaría mejor colocado a la derecha de los Re. Sabemos cómo hacer
las dos cosas a partir de trucos anteriores: hacemos la plica
transparente, y movemos el Do con la propiedad
force-hshift
. Aquí tenemos el resultado final:
rhMusic = \relative { \new Voice { r2 c''4.\( g8 | \once \override Tie.staff-position = #3.5 bes1~ | \bar "||" \time 6/4 bes2.\tempo "Moderato" r8 \mergeDifferentlyHeadedOn \mergeDifferentlyDottedOn % Start polyphonic section of four voices << { c,8 d fis bes a } % continuation of main voice \new Voice { \voiceTwo c,8~ % Reposition the c2 to the right of the merged note \once \override NoteColumn.force-hshift = #1.0 % Move the c2 out of the main note column % so the merge will work \shiftOnn c2 } \new Voice { \voiceThree s8 % Stem on the d2 must be down to permit merging \stemDown % Stem on the d2 should be invisible \tweak Stem.transparent ##t d2 } \new Voice { \voiceFour s4 fis4. } >> | \mergeDifferentlyHeadedOff \mergeDifferentlyDottedOff g2.\) % continuation of main voice } } lhMusic = \relative { r2 <c' g ees>2( | <d g, d>1)\arpeggio | r2. d,,4 r4 r | r4 } \score { \new PianoStaff << \new Staff = "RH" << \key g \minor \rhMusic >> \new Staff = "LH" << \key g \minor \clef "bass" \lhMusic >> >> }
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Ejemplos reales de música ] | [ Up : Trucar la salida ] | [ Otras aplicaciones de los trucos > ] |
5.7 Trucajes adicionales
5.7.1 Otras aplicaciones de los trucos | ||
5.7.2 Uso de variables para los ajustes de disposición | ||
5.7.3 Hojas de estilo | ||
5.7.4 Otras fuentes de información | ||
5.7.5 Trucos avanzados con Scheme |
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Trucajes adicionales ] | [ Up : Trucajes adicionales ] | [ Unir notas entre voces distintas > ] |
5.7.1 Otras aplicaciones de los trucos
Unir notas entre voces distintas | ||
Simulación de un calderón en el MIDI |
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Otras aplicaciones de los trucos ] | [ Up : Otras aplicaciones de los trucos ] | [ Simulación de un calderón en el MIDI > ] |
Unir notas entre voces distintas
El ejemplo siguiente muestra cómo conectar notas que están en distintas voces utilizando ligaduras de unión. Normalmente sólo se pueden conectar mediante ligaduras de unión notas que estén en la misma voz. Usando dos voces, con las notas ligadas en una de ellas:
y borrando la primera plica (con su corchete) hacia arriba en esa voz, da la impresión de que la ligadura se cruza entre las voces:
<< { \once \omit Stem \once \omit Flag b'8~ 8\noBeam } \\ { b'8[ g'] } >>
Véase también
Manual de aprendizaje
El prefijo \once
,
La propiedad stencil
(sello).
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Unir notas entre voces distintas ] | [ Up : Otras aplicaciones de los trucos ] | [ Uso de variables para los ajustes de disposición > ] |
Simulación de un calderón en el MIDI
Para los objetos fuera-del-pentagrama, normalmente es mejor
sobreescribir la propiedad stencil
(«sello») del objeto que
su propiedad transparent
cuando desee quitarlos de la
salida impresa. Mediante el establecimiento de la propiedad
stencil
de un objeto al valor #f
podemos quitar el
objeto por completo de la salida impresa. Esto significa que no
tiene efecto sobre la colocación de otros objetos que pudieran
colocarse en relación a él.
Por ejemplo, si quisiéramos cambiar la indicación metronómica con
el propósito de simular un calderón en la salida MIDI, seguramente
no querríamos que la indicación metronómica apareciese en la
salida impresa, y no querríamos influir sobre la separación entre
los dos sistemas ni sobre la colocación de las anotaciones
adyacentes sobre el pentagrama. Por lo tanto, establecer su
propiedad stencil
al valor #f
sería la mejor manera.
Mostramos aquí el efecto de los dos métodos:
\score { \relative { % Visible tempo marking \tempo 4=120 a'4 a a \once \hide Score.MetronomeMark % Invisible tempo marking to lengthen fermata in MIDI \tempo 4=80 a4\fermata | % New tempo for next section \tempo 4=100 a4 a a a | } \layout { } \midi { } }
\score { \relative { % Visible tempo marking \tempo 4=120 a'4 a a \once \omit Score.MetronomeMark % Invisible tempo marking to lengthen fermata in MIDI \tempo 4=80 a4\fermata | % New tempo for next section \tempo 4=100 a4 a a a | } \layout { } \midi { } }
Ambos métodos quitan de la salida impresa la indicación metronómica que alarga el calderón, y los dos afectan al tempo del MIDI tal y como queríamos, pero la indicación metronómica transparente de la primera línea fuerza una colocación muy alta de la indicación de tempo que sigue, mientras que la segunda (con el sello suprimido) no lo hace.
Véase también
Glosario musical: system.
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Simulación de un calderón en el MIDI ] | [ Up : Trucajes adicionales ] | [ Hojas de estilo > ] |
5.7.2 Uso de variables para los ajustes de disposición
Las instrucciones de sobreescritura son con frecuencia largas y tediosas de escribir, y se tienen que escribir de forma absolutamente correcta. Si las mismas sobreescrituras se van a utilizar muchas veces, podría merecer la pena definir variables para guardarlas.
Supongamos que queremos realzar ciertas palabras de la letra de
una canción imprimiéndolas en cursiva y negrita. Las
instrucciones \italic
y \bold
sólo funcionan dentro
de la letra de las canciones si están incluidas, junto con la
palabra o palabras que se pretenden modificar, dentro de un
\markup
, lo que las hace tediosas de escribir. La necesidad
de incluir las propias palabras impide que se puedan usar en
variables simples. ¿Podríamos, como alternativa, utilizar las
instrucciones \override
y \revert
?
\override Lyrics.LyricText.font-shape = #'italic \override Lyrics.LyricText.font-series = #'bold \revert Lyrics.LyricText.font-shape \revert Lyrics.LyricText.font-series
Estas instrucciones también serían extremadamente tediosas de
escribir si hubiera muchas palabras que quisiéramos subrayar.
Pero sí podemos definirlas como dos variables y usarlas
para delimitar las palabras que destacar. Otra ventaja de la
utilización de variables para estas sobreescrituras es que ya no
son necesarios los espacios que rodean al punto, puesto que no se
interpretan directamente en el modo \lyricmode
. He aquí un
ejemplo de esto, aunque en la práctica quizá elegiríamos unos
nombres de variable más cortos para que fueran más rápidos de
teclear:
emphasize = { \override Lyrics.LyricText.font-shape = #'italic \override Lyrics.LyricText.font-series = #'bold } normal = { \revert Lyrics.LyricText.font-shape \revert Lyrics.LyricText.font-series } global = { \key c \major \time 4/4 \partial 4 } SopranoMusic = \relative { c'4 | e4. e8 g4 g | a4 a g } AltoMusic = \relative { c'4 | c4. c8 e4 e | f4 f e } TenorMusic = \relative { e4 | g4. g8 c4. b8 | a8 b c d e4 } BassMusic = \relative { c4 | c4. c8 c4 c | f8 g a b c4 } VerseOne = \lyricmode { E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save, } VerseTwo = \lyricmode { O | \once \emphasize Christ, whose voice the | wa -- ters heard, } VerseThree = \lyricmode { O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood } VerseFour = \lyricmode { O | \emphasize Tri -- ni -- ty \normal of | love and pow'r } \score { \new ChoirStaff << \new Staff << \clef "treble" \new Voice = "Soprano" { \voiceOne \global \SopranoMusic } \new Voice = "Alto" { \voiceTwo \AltoMusic } \new Lyrics \lyricsto "Soprano" { \VerseOne } \new Lyrics \lyricsto "Soprano" { \VerseTwo } \new Lyrics \lyricsto "Soprano" { \VerseThree } \new Lyrics \lyricsto "Soprano" { \VerseFour } >> \new Staff << \clef "bass" \new Voice = "Tenor" { \voiceOne \TenorMusic } \new Voice = "Bass" { \voiceTwo \BassMusic } >> >> }
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Uso de variables para los ajustes de disposición ] | [ Up : Trucajes adicionales ] | [ Otras fuentes de información > ] |
5.7.3 Hojas de estilo
La salida que produce LilyPond se puede modificar profundamente; consulte Trucar la salida para leer detalles sobre este asunto. Pero ¿qué ocurre si tiene muchos archivos a los que les quiere aplicar sus propios trucos? O ¿qué ocurre si, sencillamente, quiere separar los trucos de la propia música? Todo esto es bastante fácil de conseguir.
Veamos un ejemplo. No se preocupe si no entiende las partes que
tienen todos los #()
. Esto se explicará en Trucos avanzados con Scheme.
mpdolce = \tweak self-alignment-X #-0.6 #(make-dynamic-script #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #}) inst = #(define-music-function (string) (string?) #{ <>^\markup \bold \box #string #}) \relative { \tempo 4=50 a'4.\mpdolce d8 cis4--\glissando a | b4 bes a2 | \inst "Clarinet" cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2 | }
Hagamos algo respecto a las definiciones mpdolce
e
inst
. Éstas producen la salida que deseamos, pero quizá
las querríamos utilizar en otra pieza. Podríamos simplemente
copiarlas y pegarlas al principio de cada archivo, pero sería
bastante molesto. También hace que se queden las definiciones a
la vista dentro de nuestros archivos de música, y yo personalmente
encuentro todos los #()
bastante poco estéticos. Los vamos
a esconder dentro de otro archivo:
%%% guardar esto en un archivo con el nombre "definiciones.ily" mpdolce = \tweak self-alignment-X #-0.6 #(make-dynamic-script #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #}) inst = #(define-music-function (string) (string?) #{ <>^\markup \bold \box #string #})
Haremos referencia a este archivo utilizando la instrucción
\include
al principio del archivo de música (la extensión
.ily
se utiliza para distinguir este archivo de inclusión
–que se supone que no debe ser procesado de forma independiente–
del archivo principal). Ahora modificaremos la música (guardemos
este archivo como musica.ly).
\include "definiciones.ily" \relative { \tempo 4=50 a'4.\mpdolce d8 cis4--\glissando a | b4 bes a2 | \inst "Clarinete" cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2 | }
Eso tiene mejor aspecto, pero haremos algunos cambios más. El glissando es difícil de ver, así que lo haremos más grueso y lo acercaremos a las cabezas de las notas. Pondremos la indicación metronómica encima de la clave, en lugar de ir encima de la primera nota. Y por último, mi profesor de composición odia las indicaciones de compás ‘C’, así que la convertiremos en ‘4/4’.
Sin embargo, no debemos cambiar el archivo musica.ly. Sustituyamos nuestro archivo definiciones.ily con éste:
%%% definiciones.ily mpdolce = \tweak self-alignment-X #-0.6 #(make-dynamic-script #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #}) inst = #(define-music-function (string) (string?) #{ <>^\markup \bold \box #string #}) \layout{ \context { \Score \override MetronomeMark.extra-offset = #'(-5 . 0) \override MetronomeMark.padding = #'3 } \context { \Staff \override TimeSignature.style = #'numbered } \context { \Voice \override Glissando.thickness = #3 \override Glissando.gap = #0.1 } }
¡Eso tiene un aspecto mucho mejor! Ahora suponga que quiere publicar esta pieza. A mi profesor de composición no le gustan las indicaciones de compás ‘C’, pero yo les tengo cierto cariño. Copiaremos el archivo actual definiciones.ily a publicar-web.ily y modificaremos éste. Como el propósito de esta música es producir un PDF que va a mostrarse en la pantalla, también vamos a aumentar el tamaño general de la salida.
%%% publicar-web.ily mpdolce = \tweak self-alignment-X #-0.6 #(make-dynamic-script #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #}) inst = #(define-music-function (string) (string?) #{ <>^\markup \bold \box #string #}) #(set-global-staff-size 23) \layout{ \context { \Score \override MetronomeMark.extra-offset = #'(-5 . 0) \override MetronomeMark.padding = #'3 } \context { \Staff } \context { \Voice \override Glissando.thickness = #3 \override Glissando.gap = #0.1 } }
Ahora, en la música, simplemente sustituyo \include
"definiciones.ily"
por \include "publicar-web.ily"
. Por
supuesto, podríamos hacer esto aún más práctico. Podríamos hacer
un archivo definiciones.ily que contuviera solamente las
definiciones de mpdolce
y de inst
, un archivo
publicar-web.ily que contuviera solamente la sección
\layout
que se mostró en el ejemplo, y un archivo
universidad.ily que contendría solamente los trucos para
producir la salida que le gusta a mi profesor. El comienzo de
musica.ly tendría entonces este aspecto:
\include "definiciones.ily" %%% ¡Quitar el comentario de una sola de estas líneas! \include "publicar-web.ily" %\include "universidad.ily"
Este enfoque puede ser útil incluso si va a producir sólo un
conjunto de particellas. Yo utilizo media docena de archivos de
‘hojas de estilo’ para mis proyectos. Comienzo todos los
archivos de música con \include "../global.ily"
, que
contiene
%%% global.ily \version "2.25.22" #(ly:set-option 'point-and-click #f) \include "../iniciar/iniciar-definiciones.ily" \include "../iniciar/iniciar-disposicion.ily" \include "../iniciar/iniciar-cabeceras.ily" \include "../iniciar/iniciar-papel.ily"
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Hojas de estilo ] | [ Up : Trucajes adicionales ] | [ Trucos avanzados con Scheme > ] |
5.7.4 Otras fuentes de información
La documentación del manual de Referencia de Funcionamiento Interno contiene montañas de información sobre LilyPond, pero se puede obtener más información aún leyendo los archivos internos de LilyPond. Para echarles un vistazo, en primer lugar debe buscar la carpeta correspondiente a su sistema. La ubicación de esta carpeta depende (a) de si consiguió el programa LilyPond descargando un binario precompilado desde el sitio web lilypond.org o si lo instaló mediante un gestor de paquetes (es decir, distribuido con GNU/Linux, o instalado bajo fink o cygwin) o fue compilado a partir de la fuente, y (b) de qué sistema operativo está utilizando:
Descargado de lilypond.org
- GNU/Linux
Diríjase a
CARPETA_DE_INSTALACIÓN/lilypond/usr/share/lilypond/current/
- MacOS X
Diríjase a
CARPETA_DE_INSTALACIÓN/LilyPond.app/Contents/Resources/share/lilypond/current/
bien haciendo
cd
hacia este directorio desde el Terminal, o bien manteniendo pulsada la tecla de Control y haciendo click sobre la aplicación de LilyPond, y allí eligiendo ‘Mostrar el contenido del paquete’. - Windows
Mediante el Explorador de Windows, diríjase a
CARPETA_DE_INSTALACIÓN/LilyPond/usr/share/lilypond/current/
Instalado mediante un gestor de paquetes o compilado a partir de la fuente
Diríjase a PREFIJO/share/lilypond/X.Y.Z/, donde
PREFIJO se encuentra determinado por su administrador de
paquetes o guión configure
, y X.Y.Z es el número de
la versión de LilyPond.
Dentro de esta carpeta, las dos subcarpetas interesantes son
- ly/ - contiene archivos en formato LilyPond
- scm/ - contiene archivos en formato Scheme
Vamos a comenzar observando algunos archivos que están en
ly/. Abra ly/property-init.ly con un editor de
textos. El mismo que usaría normalmente para los archivos
.ly servirá perfectamente. Este archivo contiene las
definiciones de todas las instrucciones estándar predefinidas de
LilyPond, como por ejemplo \tieUp
y \slurDotted
.
Podrá ver que no son nada más que definiciones de variables que
contienen una o varias instrucciones \override
. Por
ejemplo, \tieDotted
está definido de tal forma que su valor
es:
tieDotted = { \override Tie.dash-period = #0.75 \override Tie.dash-fraction = #0.1 }
Si no le gustan los valores predeterminados, estas instrucciones predefinidas se pueden redefinir con facilidad como cualquier otra variable, al principio de su archivo de código de entrada.
Los siguientes son los archivos más útiles que se encuentran en ly/:
Archivo | Contenido |
---|---|
ly/engraver-init.ly | Definiciones de Contextos de grabadores |
ly/paper-defaults-init.ly | especificaciones de valores predeterminados relacionados con el papel |
ly/performer-init.ly | Definiciones de Contextos de interpretación |
ly/property-init.ly | Definiciones de todas las instrucciones predefinidas que son comunes |
ly/spanner-init.ly | Definiciones de las instrucciones predefinidas relacionadas con los objetos de extensión |
Otros ajustes (como las definiciones de las instrucciones de marcado) se almacenan como archivos .scm (de Scheme). El lenguaje de programación Scheme se utiliza para proporcionar un interfaz programable en el funcionamiento interno de LilyPond. Cualquier explicación adicional sobre estos archivos se encuentra por el momento fuera del ámbito de este manual, porque se requieren conocimientos del lenguaje Scheme. Se advierte a los usuarios que se necesita una importante cantidad de conocimientos técnicos o de tiempo para comprender el lenguaje Scheme y estos archivos (véase Tutorial de Scheme).
Si ya tiene estos conocimientos, los archivos de Scheme que pueden interesarle son:
Archivo | Contenido |
---|---|
scm/auto-beam.scm | Valores predeterminados de sub-barrado |
scm/define-grobs.scm | valores predeterminados de las propiedades de grobs |
scm/define-markup-commands.scm | Especificar todas las instrucciones de marcado |
scm/midi.scm | Ajustes predeterminados para la salida MIDI |
scm/output-lib.scm | Ajustes que afectan al aspecto de los trastes, colores, alteraciones, lineas divisorias, etc. |
scm/parser-clef.scm | Definiciones de las claves contempladas |
scm/script.scm | Ajustes predeterminados para las articulaciones |
[ << Trucar la salida ] | [Top][Contents][Index] | [ Plantillas >> ] |
[ < Otras fuentes de información ] | [ Up : Trucajes adicionales ] | [ Plantillas > ] |
5.7.5 Trucos avanzados con Scheme
Aunque es posible hacer muchas cosas con las instrucciones
\override
y \tweak
, tenemos una forma incluso más
poderosa de modificar el funcionamiento de LilyPond, a través de
un interface programable hacia las operaciones internas de
LilyPond. Se puede incorporar código escrito en el lenguaje de
programación Scheme, directamente en el mecanismo de
funcionamiento de LilyPond. Por supuesto, para hacer esto se
necesitan al menos unos conocimientos básicos de programación en
Scheme, y damos una introducción en el Tutorial de
Scheme.
Como ejemplo que ilustra una de las muchas posibilidades, en lugar de dar a una propiedad un valor constante, se puede establecer al resultado de un procedimiento de Scheme que se invoca cada vez que LilyPond accede a esta propiedad. La propiedad se puede establecer dinámicamente a un valor determinado por el procedimiento en el momento en que se invoca. En este ejemplo damos a las cabezas de las notas un color que depende de su posición dentro del pentagrama.
#(define (color-notehead grob) "Color the notehead according to its position on the staff." (let ((mod-position (modulo (ly:grob-property grob 'staff-position) 7))) (case mod-position ;; Return rainbow colors ((1) (x11-color 'red )) ; for C ((2) (x11-color 'orange )) ; for D ((3) (x11-color 'yellow )) ; for E ((4) (x11-color 'green )) ; for F ((5) (x11-color 'blue )) ; for G ((6) (x11-color 'purple )) ; for A ((0) (x11-color 'violet )) ; for B ))) \relative { % Arrange to obtain color from color-notehead procedure \override NoteHead.color = #color-notehead a2 b | c2 d | e2 f | g2 a | }
Se pueden encontrar ejemplos adicionales que muestran la utilización de estos interfaces programables, en Funciones de callback.
[ << Trucar la salida ] | [Top][Contents][Index] | [ GNU Free Documentation License >> ] |
[ < Trucos avanzados con Scheme ] | [ Up : Top ] | [ Plantillas incorporadas > ] |
Appendix A Plantillas
Esta sección del manual contiene plantillas con la partitura de LilyPond ya preparada. Sólo tiene que escribir las notas, lanzar LilyPond y ¡disfrutar de unas hermosas partituras impresas!
[ << Plantillas ] | [Top][Contents][Index] | [ GNU Free Documentation License >> ] |
[ < Plantillas ] | [ Up : Plantillas ] | [ Plantilla coral SATB > ] |
A.1 Plantillas incorporadas
Algunas plantillas que son adecuadas para un abanico de
posibilidades en música coral, se encuentran incorporadas dentro
de LilyPond. Se pueden usar para crear música coral sencilla, con
o sin acompañamiento de piano, en dos, cuatro u ocho pentagramas.
A diferencia de otras plantillas, éstas están ‘incorporadas’, lo
que significa que no tienen que copiarse o editarse: en lugar de
ello, sencillamente se incluyen con la instrucción
\include
dentro del archivo de entrada.
Nota: A diferencia de la mayoría de los archivos de inclusión, estas plantillas incorporadas se deben incluir al final del archivo de entrada.
Las expresiones musicales necesarias se introducen definiendo
valores para variables específicas. Estas definiciones deben ir
antes del archivo incluido con la instrucción \include
.
A.1.1 Plantilla coral SATB | ||
A.1.2 Plantilla coral SSAATTBB |
[ << Plantillas ] | [Top][Contents][Index] | [ GNU Free Documentation License >> ] |
[ < Plantillas incorporadas ] | [ Up : Plantillas incorporadas ] | [ Plantilla coral SSAATTBB > ] |
A.1.1 Plantilla coral SATB
La música se puede disponer con una o dos voces por pentagrama
fijando el valor de TwoVoicesPerStaff
a ##f
o
##t
respectivamente.
A continuación aparece el archivo de entrada completo que produce un arreglo a cuatro voces SATB con letras individuales y acompañamiento de piano:
SopranoMusic = \relative { a'4\f a8 a a4 a } SopranoLyrics = \lyricmode { Sop -- ra -- no ly -- rics } AltoMusic = \relative { d'4\f d d d } AltoLyrics = \lyricmode { Al -- to ly -- rics } TenorMusic = \relative { a4\p a a a } TenorLyrics = \lyricmode { Te -- nor ly -- rics } BassMusic = \relative { c2\p c4 c } BassLyrics = \lyricmode { Bass ly -- rics } PianoRHMusic = \relative { c' e g c } PianoDynamics = { s2\mp s4 s4 } PianoLHMusic = \relative { c e g c } \include "satb.ly"
La misma entrada se puede utilizar para producir una partitura con
dos voces por pentagrama, tan solo ajustando el valor de
TwoVoicesPerStaff
a ##t
. De nuevo, cada voz tiene
su letra individual.
SopranoMusic = \relative { a'4\f a8 a a4 a } SopranoLyrics = \lyricmode { Sop -- ra -- no ly -- rics } AltoMusic = \relative { d'4\f d d d } AltoLyrics = \lyricmode { Al -- to ly -- rics } TenorMusic = \relative { a4\p a a a } TenorLyrics = \lyricmode { Te -- nor ly -- rics } BassMusic = \relative { c2\p c4 c } BassLyrics = \lyricmode { Bass ly -- rics } PianoRHMusic = \relative { c' e g c } PianoDynamics = { s2\mp s4 s4 } PianoLHMusic = \relative { c e g c } TwoVoicesPerStaff = ##t \include "satb.ly"