LilyPond: cambie el corchete del grupo irregular a un lazo pequeño

Tengo una pieza para violonchelo de Sebastian Lee , que usa bastantes grupos irregulares.

Mi fragmento con la configuración default de LilyPond se ve así:

ingrese la descripción de la imagen aquí

esto se ve muy bien, el problema es que un principiante podría pensar fácilmente que esta era la digitación, especialmente en este ejemplo donde en brealidad se tocaría con un tercer dedo en la cuerda G.

Así que solía \override TupletBracket.bracket-visibility = ##timprimir la llave/soporte de tuplet que da como resultado una impresión muy fea:

ingrese la descripción de la imagen aquí

Una edición, que está disponible en IMSLP, se ve así:

ingrese la descripción de la imagen aquí

que personalmente encuentro un poco mejor (que no se malinterprete, solo estoy hablando de la llave inglesa, no de toda la impresión)

¿Alguien aquí conoce un posible ajuste de la llave inglesa, para que se parezca más a este pequeño arco en el tercer ejemplo?

Sebastian Lee, Op.70 en formato LilyPond en GitHub

Respuestas (1)

Un primer enfoque sería cambiar el texto del número de grupo irregular y agregar una pequeña ligadura:

bow-up = \markup { \with-dimensions #'(0 . 3) #'(0 . 0) 
    \override #'(filled . #t) 
    \path #.1 #'((moveto 0 0)
                 (curveto 1 1.2 2 1.2 3 0)
                 (curveto 2 0.9 1 0.9 0 0)
                 (closepath)) }

bow-down = \markup { \with-dimensions #'(0 . 3) #'(0 . 0) 
    \override #'(filled . #t) 
    \path #.1 #'((moveto 0 0)
                 (curveto 1 -1.2 2 -1.2 3 0)
                 (curveto 2 -0.9 1 -0.9 0 0)
                 (closepath)) }

#(define-markup-command (tuplet-bow-up layout props tuplet-number) (markup?)
  (interpret-markup layout props
    (markup #:center-column(#:vspace -.2 bow-up #:vspace -.6 #:line(tuplet-number)))))

#(define-markup-command (tuplet-bow-down layout props tuplet-number) (markup?)
  (interpret-markup layout props
    (markup #:center-column(#:vspace .2 tuplet-number #:vspace -1 #:line(bow-down)))))

tupletBowUp = #(define-scheme-function (parser location tuplet-number) (string?)
     #{\override TupletNumber.text = \markup \tuplet-bow-up #tuplet-number #})

tupletBowDown = #(define-scheme-function (parser location tuplet-number) (string?)
     #{\override TupletNumber.text = \markup \tuplet-bow-down #tuplet-number #})

\score {
  { 
    \clef bass
    \time 3/4
    \tupletBowUp "3" \tuplet 3/2 { c8 b, c } \tupletBowDown "3" \tuplet 3/2 { e8 g e } \tuplet 3/2 { e8 g e } c'4
  }

  \layout{}
}

Con \tupletBowUp "3"usted, establezca el número de todos los siguientes grupos irregulares en 3 con un pequeño lazo arriba. Con \tupletBowDown "3"usted configúrelo en un 3 con un pequeño lazo debajo. Puedes poner otros números como quieras.

Resultado:

ingrese la descripción de la imagen aquí

Pero estoy seguro de que esto también se puede lograr de una manera mucho más sofisticada. Sin embargo, no conozco muy bien el funcionamiento interno de LilyPond. Por ejemplo, sería fantástico que el arco pequeño cambiara automáticamente por encima o por debajo del número según su posición.


Editar: otra forma sería cambiar el paréntesis de grupos irregulares como esta propuesta y sugerir un comentario (lo siento, solo vi el comentario después de haber editado mi respuesta). Cambié un poco el código de la propuesta vinculada para simplificarlo y hacer las ligaduras más pequeñas:

printTupletBow = {
  \override TupletBracket #'stencil = #ly:slur::print

  \override TupletBracket #'thickness = #1.2

  \override TupletBracket #'control-points =
    #(lambda (grob)
      (let* ((x-pos (ly:grob-property grob 'X-positions))
             (pos (ly:grob-property grob 'positions))
             (x-ln (interval-length x-pos))
             (dir (ly:grob-property grob 'direction))
             (height (- (cdr pos) (car pos)))
             (height-corr (* 0.3 dir height))
             (edge-height (ly:grob-property grob 'edge-height '(0.7 . 0.7))))

        (list 
          (cons 
            (+ (car x-pos) (* x-ln 1/4)) 
            (+ (car pos) (* 1 dir (car edge-height))))
          (cons 
            (+ (car x-pos) (* x-ln 3/8)) 
            (+ (car pos) (* dir (+ 1.5 height-corr))))
          (cons 
            (+ (car x-pos) (* x-ln 5/8)) 
            (+ (cdr pos) (* dir (- 1.5 height-corr))))
          (cons 
            (+ (car x-pos) (* x-ln 3/4))  
            (+ (cdr pos) (* 1 dir (cdr edge-height)))))))
}

\score {
  {
    \clef bass
    \time 3/4
    \tuplet 3/2 { c8 b, c } \tuplet 3/2 { e8 g e } \tuplet 3/2 { e8 g e } c'4
  }
}

\layout {
  \printTupletBow
}

Resultado:

ingrese la descripción de la imagen aquí

Si desea omitir temporalmente los arcos, puede usarlos \once \override TupletBracket.stencil = ##fjusto antes del grupo irregular correspondiente.

Un problema con este enfoque es que la ligadura se inclinará bastante si las notas abarcan intervalos más grandes. Pero podría ser una buena solución si su pieza incluye principalmente grupos irregulares con vigas.

Publicaré su enlace en el IRC oficial de LilyPonds en Freenode , tal vez estén inspirados... :-) ¡como yo! (¡O se ve mucho mejor que el soporte!)
No hay necesidad de hacer eso, porque también me inspiré allí. Por lo tanto, es posible que el código básico ya esté allí también.
¿Hay alguna manera de omitir los arcos más adelante en la pieza, como lo hace con \omit TupletNumber?
Para el segundo ejemplo, puede usar \once \override TupletBracket.stencil = ##f.
definitivamente deberías agregar esto al LSR - Snippet Repository