¿Hay alguna manera de "aplanar" automáticamente una ligadura en LilyPond?

Considere la siguiente notación:

La ligadura en el pentagrama superior me parece normal; los puntos finales de la ligadura se ubican sobre el final de la plica de la nota.

Pero la segunda ligadura es menos ideal, porque sus extremos están ubicados en la cabeza de la nota .

¿Hay algún tipo de anulación global que pueda usar para que todos los insultos (incluidos los insultos de fraseo) se vean como el primero y no como el segundo? Esperaba algo en la documentación interna de la ligadura , pero nada ha funcionado hasta ahora.

Busco específicamente algo que corrija todas las ligaduras en una partitura, no algo que tenga que ajustar para cada ligadura individual que se vea afectada.

\version "2.20.0"

violin = \relative c'' {
  g4( a b c |
  b2 a) |
  
}

\score {
  \new Staff \violin
  \layout { }
}

%%%%%

violin = \relative c'' {
  g4( f r f |
  e)
  
}

\score {
  \new Staff \violin
  \layout { }
}
Simplemente no me gustan las ligaduras que se mezclan con los pentagramas. El de arriba se ve ideal. ¿Por qué la segunda no podía ser la misma idea?
@Tim Creo que el problema proviene del cálculo automático de los puntos de anclaje de las ligaduras de expresión de lilypond.
No conozco muy bien a lilypond, pero se siente extraño que coloque automáticamente las ligaduras de expresión arriba en el segundo ejemplo, ya que probablemente sería más correcto tenerlas abajo (usando \slurDown). En cualquier caso, se pueden anular usando algo como `\override Slur.positions = #'(3 . 2)`
@musicamante Sí, actualmente estoy ajustando cada ligado individual. Pero lo ideal es que haya algo global que pueda modificar todas las ligaduras afectadas a la vez.
La razón por la que lilypond está haciendo un trabajo tan malo con el segundo insulto es porque el resto lo está confundiendo. ¿Qué hace un silencio en una ligadura de todos modos?
@ElementsinSpace Es un insulto de fraseo.
En ese caso, debe escribirse con \(& \)en lugar de (& ). Pero supongo que eso no resuelve tu problema. ¿Hay alguna razón por la que quieras que esté encima de las notas? Se ve bien cuando se coloca debajo con _([o _\(].
@ElementsinSpace Lily lo coloca automáticamente encima de las notas. Podría modificarlos caso por caso, pero estoy buscando algo que aborde todos los insultos afectados a nivel mundial.
¿Ha investigado la propiedad Y-offset de grob-interface ? "La cantidad vertical que este objeto se mueve en relación con su padre Y". La interfaz grob es compatible con el objeto de ligadura.

Respuestas (1)

Para lograr esto, use la propiedad stem-encompass-penalty de las interfaces Slur y PhrasingSlur .

stem-encompass-penalty
Demérito que se aplica cuando las plicas chocan con una ligadura.

de la documentación de Lilypond

Esto evita la colisión de plicas, pero centra los extremos de la ligadura en las cabezas de las notas.

violin = \relative c'' {
  g4( a b c |
  b2 a) |
  g4( f r f |
  e)
  
}

\score {
  \new Staff \violin
  \layout {
    \context {
        \Voice
        \override Slur details = #'((stem-encompass-penalty . 30.0))
    }
  }
}

Para volver a alinear las ligaduras de expresión con el borde de las cabezas de nota, utilice \shape.

violin = \relative c'' {
  g4( a b c |
  b2 a) |
  g4( f r f | e)  
}

\score {
  \new Staff \violin
  \layout {
    \context {
        \Voice
        \override Slur details = #'((stem-encompass-penalty . 30.0))
    }
    % align slur endpoints to the right edge of their respective note heads
    \shape #'((0.5 . 0) (0 . 0) (0 . 0) (0.5 . 0)) Slur
  }
}

Documentación de LilyPond\shape

Sí, esto está cada vez más cerca. Sin embargo, cambia la alineación x de la ligadura; los empuja ligeramente hacia la izquierda (centrados sobre la cabeza de la nota, al parecer, y no sobre la plica). Obviamente, podría arreglar eso con un desplazamiento x... ¡Pero puedo esperar un poco para aceptar esto, si está bien!
@Richard Sí, por supuesto. Si el tiempo lo permite, lo investigaré más a fondo.
También lo investigaré más a fondo. Teniendo en cuenta algunos de los problemas de Lily que la gente resuelve aquí, me sorprende que se haya tardado tanto en encontrar una solución para este. Lo que me dice que puede ser más complicado de lo que pienso.
@Richard En lo que he llegado con esto, puede alinear los puntos finales de la ligadura de expresión en cualquier extremo de sus respectivas cabezas de nota, pero para alinearlos con los tallos, necesita saber en qué lado de la nota está el tallo (o si hay un tallo en absoluto), y sospecho que esto requeriría el código Scheme. Esa sería la siguiente área de investigación si la solución actual no es suficiente.
Este es exactamente mi miedo, desafortunadamente: tengo varios de estos insultos y frases difamatorias, y odiaría tener shape cada uno de ellos. Idealmente, podría haber una anulación global que podría hacer para abordar esto. Pensé que podría hacerlo con algún tipo de relleno de personal en el eje y, pero aún no he podido encontrar nada que funcione.
@Richard ¿Está diciendo que desea que los extremos de las ligaduras siempre estén alineados con las plicas, en lugar de alinear globalmente las ligaduras en las mismas posiciones en relación con las cabezas de las notas?
Me gustaría que las ligaduras hicieran lo que hacen por defecto, pero fuera del pentagrama siempre que estén demasiado curvas como en el segundo ejemplo. Y dado que el primer ejemplo, por defecto, alineado con los tallos, me gustaría que otros pudieran hacer eso también.