%\version "2.14.2" \version "2.12.3" #(define-public PI (* 4 (atan 1))) #(define (radians->degree radians) (/ (* radians 180) PI)) #(define ((gliss-plus-text padding text) grob) (let* ((text-stencil (grob-interpret-markup grob text)) (spanner-stencil (ly:line-spanner::print grob)) (left-bound-info (ly:grob-property grob 'left-bound-info)) (y-left (cdar left-bound-info)) (right-bound-info (ly:grob-property grob 'right-bound-info)) (y-right (cdar right-bound-info)) (slant (if (> y-right y-left) 1 -1)) (spanner-stencil-x-length (interval-length (ly:stencil-extent spanner-stencil X))) (spanner-stencil-y-length (interval-length (ly:stencil-extent spanner-stencil Y))) (alpha (radians->degree (atan (/ spanner-stencil-y-length spanner-stencil-x-length)))) (spanner-center-X (interval-center (ly:stencil-extent spanner-stencil X))) (label-center-X (interval-center (ly:stencil-extent text-stencil X)))) (ly:stencil-combine-at-edge spanner-stencil Y UP (ly:stencil-translate (ly:stencil-rotate text-stencil (* slant alpha) 0 0) (cons (- spanner-center-X label-center-X) 0)) ;;(* -0.5 spanner-stencil-y-length) padding ))) glissandoTextOn = \override Glissando #'stencil = #(gliss-plus-text -9 (markup #:italic #:tiny "gliss")) glissandoTextOff = \revert Glissando #'stencil noteHeadsOff = { \override NoteHead #'transparent = ##t \override NoteHead #'no-ledgers = ##t } noteHeadsOn = { \revert NoteHead #'transparent \revert NoteHead #'no-ledgers } %---- test \paper { ragged-right = ##f } \new PianoStaff << \new Staff = "right" { \clef treble \glissandoTextOn e'''8\glissando s s4 \change Staff = "left" \noteHeadsOff a,,8\glissando s s4 | \change Staff = "right" b''8 } \new Staff = "left" { \clef bass s1 s8 } >>