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. ( Sí , 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):
Código
\repeat tremolo 4 { <g d'>8-. }
Lo que quiero (fragmento de captura de pantalla de la partitura orquestal descargada de IMSLP ):
¿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.
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:
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.
\repeat tongue 4 { <g d'>8 }
Creynders
Creynders
andy bonner
phoog