[ << Trucar la salida ] | [Arriba][Índice general][Índice][ ? ] | [ Trabajar en proyectos de LilyPond >> ] | ||
[ < Mover objetos ] | [ Subir : Colisiones de objetos ] | [ Ejemplos reales de música > ] |
4.5.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.
c2\fermata \override Script #'padding = #3 b2\fermata
% Esto no va a funcionar, véase más abajo: \override MetronomeMark #'padding = #3 \tempo 4=120 c1 % Esto sí funciona: \override Score.MetronomeMark #'padding = #3 \tempo 4=80 d1
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
properties
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.
left-padding y right-padding (relleno por la izquierda y 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 ejemplo siguiente muestra una situación en la que sí se
necesita. Suponga que queremos presentar un acorde que contiene un Si
natural y un Si bemol. Para evitar la ambigüedad querríamos preceder
las notas con un becuadro y un bemol. Aquí vienen varios intentos de
hacerlo así:
<b bes> <b! bes> <b? bes>
Ninguno de ellos funciona y el segundo además presenta una fea colisión entre las dos alteraciones.
Una forma de conseguirlo es sobreescribir el sello de la alteración con un elemento de marcado que contenga los símbolos de becuadro y bemol en el orden que nos gustaría que estuvieran, así:
becuadro_y_bemol = \markup { \natural \flat } \relative c'' { \once \override Accidental #'stencil = #ly:text-interface::print \once \override Accidental #'text = #becuadro_y_bemol \once \override Score.AccidentalPlacement #'right-padding = #1.5 <b bes> }
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 becuadro seguido de un
bemol. Entonces el conjunto 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 altura fija sobre el
pentagrama, en lugar de hacerlo a una altura que dependa de la
posición de la nota a la que están adosados. 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:
\dynamicUp % Aumentar la anchura en una unidad \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5) % Alinear los matices a dos unidades por encima del pentagrama \override DynamicLineSpanner #'staff-padding = #2 a4\f b\mf c\mp b\p
la propiedad self-alignment-X (auto-alineación en X)
El ejemplo siguiente muestra cómo esto puede resolver la colisión entre un objeto de digitación de cuerda y 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:
<< {c 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 -4 para MultiMeasureRest, así que tenemos que bajarlo, digamos,
cuatro semi-espacios de pentagrama, al valor -8
.
<< {c c c c} \\ \override MultiMeasureRest #'staff-position = #-8 {R1} >>
Esto es mejor que utilizar, por ejemplo, extra-offset
, porque
la línea adicional por encima del silencio se inserta automáticamente.
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:
\stemUp f-5 \once \override Fingering #'extra-offset = #'(-0.3 . -1.8) f-5
la propiedad positions (posiciones)
La propiedad positions
permite controlar manualmente la
posición e inclinación de los tresillos, ligaduras de expresión y de
fraseo, y barras de corchea. He aquí un ejemplo que tiene una fea
ligadura de fraseo debido a que intenta evitar la ligadura de
expresión que está sobre la acciaccatura.
r4 \acciaccatura e8\( d8 c ~c d c d\)
Simplemente podemos mover la ligadura de fraseo por encima de las notas, y de hecho ésta será la solución preferida:
r4 \phrasingSlurUp \acciaccatura e8\( d8 c ~c d c d\)
Pero si por algún motivo no pudiéramos hacerlo, la otra alternativa
sería mover el extremo izquierdo de la ligadura de fraseo un poco
hacia abajo usando la propiedad positions
. Esto también
resuelve la forma algo indecente de la ligadura.
r4 \once \override PhrasingSlur #'positions = #'(-4 . -3) \acciaccatura e8\( d8 c ~c d c d\)
Presentamos un ejemplo más extraído del comienzo del pentagrama de la mano izquierda del preludio de Chopin Op 28 No. 2. vemos que la barra choca con las notas superiores:
{ \clef "bass" << {b,8 ais, b, g,} \\ {e, g e, g} >> << {b,8 ais, b, g,} \\ {e, g e, g} >> }
Esto se puede resolver manualmente elevando los dos extremos de la barra desde su posición a dos espacios de pentagrama sobre la línea central hasta, digamos, 3 espacios:
{ \clef "bass" << \override Beam #'positions = #'(3 . 3) {b,8 ais, b, g,} \\ {e, g e, g} >> << {b,8 ais, b, g,} \\ {e, g e, g} >> }
Observe que la sobreescritura sigue aplicándose en la primera voz del segundo bloque de corcheas, pero no a ninguna de las barras de la segunda voz.
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 c'' { \key aes \major << { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { \voiceFour <ees c>2 des2 } >> | <c ees aes c>1 | }
Las dos notas inferiores del primer acorde (es decir, las que están en
al tercera voz) no deberían separarse de la columna de notas de las dos
notas agudas. Para corregir esto, establecemos el valor de
force-hshift
(que es una propiedad de NoteColumn
) de
esas notas a cero. La nota más grave del segundo acorde se sitúa
mejor justo a la derecha de las más agudas. Lo conseguimos
estableciendo el valor de force-hshift
de esta nota a 0.5, o
sea, la anchura de media cabeza de nota a la derecha de la columna de
las notas agudas.
Presentamos a continuación el resultado final:
\new Staff \relative c'' { \key aes \major << { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { \voiceFour \once \override NoteColumn #'force-hshift = #0 <ees c>2 \once \override NoteColumn #'force-hshift = #0.5 des2 } >> | <c ees aes c>1 | }
[ << Trucar la salida ] | [Arriba][Índice general][Índice][ ? ] | [ Trabajar en proyectos de LilyPond >> ] | ||
[ < Mover objetos ] | [ Subir : Colisiones de objetos ] | [ Ejemplos reales de música > ] |