Múltiples puntos de staccato en mínimo con repetición de trémolo en Lilypond

Estoy escribiendo una reducción para piano de la 4ª Sinfonía de Gustav Mahler (para ayudar a estudiar la partitura y practicar la notación musical, pero principalmente solo para divertirse) usando GNU LilyPond. ( , lo sé , soy totalmente fanático de Mahler . Así que demándame). ;-)

Estoy tratando de articular una nota mínima/media con repetición de trémolo (de corcheas/octavos) con puntos entrecortados. Me gustaría tener un punto entrecortado para cada corchea (supuesta), es decir , cuatro puntos debajo de la mínima .

Lo que obtengo en LilyPond (captura de pantalla de la salida en PDF):

Representación de Lilypond de mi reducción para piano de la Sinfonía n.° 4 de Gustav Mahler

Código

\repeat tremolo 4 { <g d'>8-. }

Lo que quiero (fragmento de captura de pantalla de la partitura orquestal descargada de IMSLP ):

Fragmento de pantalla de la misma obra escrita por el compositor

Pregunta:

¿Es esto posible con LilyPond?

Estoy usando la versión 2.18.2, pero puedo actualizar a la versión estable más nueva si es necesario.

Justo cuando pensaba que al menos había visto la mayoría de las frivolidades de la notación musical, ahí está... ¡esta monstruosidad!
Bromas aparte, estoy luchando con la interpretación correcta: el trémolo con un solo punto significaría staccato durante toda la duración de la nota, mientras que con los puntos repetidos significaría staccato para cada movimiento de trémolo.
@Creynders Sí, esa es la idea. No es tan inusual, al menos hablando de cuerdas frotadas orquestales (incluso si un sim. sería más simple...)
@AndyBonner, ¿se llama correctamente "trémolo"? En realidad, no es instruir al jugador para que emplee la técnica del trémolo, después de todo, es solo una forma abreviada de cuatro corcheas que repiten los tonos dados. (Y ahora me doy cuenta de que asumí incorrectamente que se trataba de partes de cuerdas: ¡"trémolo" para clarinetes y fagotes tiene aún menos sentido!)

Respuestas (3)

Una posible solución podría basarse en este fragmento de lenguaje múltiple .

\version "2.20.0"

tongue =
#(define-music-function (parser location dots) (integer?)
  #{
    \tweak stencil
      #(lambda (grob)
        (let ((stil (ly:script-interface::print grob)))
          (let loop ((count (1- dots)) (new-stil stil))
            (if (> count 0)
                (loop (1- count)
                      (ly:stencil-combine-at-edge new-stil X RIGHT stil 0.2))
                (ly:stencil-aligned-to new-stil X CENTER)))))
     \staccato
  #})

\repeat tremolo 4 { <g d'>8-\tongue #4 }

Básicamente, en lugar de .staccato, inserte \tongue #x, donde x es el número de articulaciones deseadas. Produce:

ingrese la descripción de la imagen aquí

Trabajado como un encanto. Incluso en la versión 2.18.2. Gracias.
@Richard ¡Después de una pista de Jean, el método se volvió aún más simple!

Una solución muy simple sería simplemente colocar algunos puntos en negrita en un marcado y alinearlos si es necesario:
(para mantener el efecto entrecortado en el archivo midi, use el punto entrecortado normal pero \omit)

\repeat tremolo 4 { <g d'>8\omit-.-\markup{\hspace #-0.5 \bold"...."} }

acorde de trémolo con acorde de cuatro puntos staccato

Esta es la respuesta de Richard ligeramente simplificada. Pongo esto aquí porque ¿cómo voy a poner esto en un comentario?

Tenga en cuenta que la parte (ly:stencil-aligned-to ... X CENTER) no es realmente necesaria.

\version "2.22.0"

#(define (repeat-stencil n pad)
   (grob-transformer 'stencil
     (lambda (grob orig)
       (stack-stencils X RIGHT pad (make-list n orig)))))

tongue =
#(define-music-function (parser location dots) (integer?)
  #{ \tweak stencil #(repeat-stencil dots 0.2) \staccato #})

\repeat tremolo 4 { <g d'>8-\tongue #4 }

Además, estas son formas quizás un poco más estables de hacer lo que hizo Elements in Space:

\repeat tremolo 4 { <g d'>8\omit-.-\tweak self-alignment-X #CENTER -\tweak parent-alignment-X #CENTER -\markup\bold "...." }

\repeat tremolo 4 { <g d'>8-\tweak font-encoding #'latin1 -\tweak stencil #(lambda (grob) (grob-interpret-markup grob (markup #:bold "....")))-. }

En el primero, reemplazamos el desplazamiento de \hspace codificado de forma rígida simplemente diciéndole a Lilypond que centre el marcado sobre sí mismo y lo coloque en el centro de la nota. El segundo reemplaza la plantilla (que es la salida gráfica real) del punto staccato a la plantilla que obtenemos de ese marcado. Como el script está codificado musicalmente (por lo que Lilypond espera que la fuente se refiera a símbolos musicales), también debemos cambiar la codificación de fuente a latin1.

Y expandiendo: Centrar la plantilla no es necesario ya que Script usa self-alignment-X = #CENTER, lo que significa que el centrado se realiza automáticamente de todos modos.
¿Sería posible obtener el número de puntos para que coincida con el número de repeticiones automáticamente? Así que solo tendrías que escribir algo como:\repeat tongue 4 { <g d'>8 }
Se necesitaría extender la función de repetición para esto. Pero hacer una función personalizada para esto sería bastante fácil. Diría que incluso mejor sería una función \lengua duración música, que luego agrega lengua para cada nota o acorde en música con una duración que es más larga que la duración (o tal vez mejor un múltiplo) y agrega puntos con un número como cociente de estas duraciones.
@ElementsinSpace Algo como esto petzel.at/tongue-and-repeat.ly
@ElementsinSpace O aquí con los puntos dispuestos mejor: petzel.at/tongue-and-repeat-square.ly