\version "2.19.48" noteTabHeads = \override TabNoteHead.stencil = #(lambda (grob) (let* ((cause (ly:grob-property grob 'cause)) (dur (ly:prob-property cause 'duration))) (ly:stencil-rotate (grob-interpret-markup grob #{ \markup { \raise #0.5 \scale #'(1 . -1) \with-dimensions #'(0 . 0) #'(0 . 0) \note #(ly:duration->string dur) #0.7 } #}) -90 0 0))) allGlissando = #(define-music-function (music)(ly:music?) (let ((note-evts (extract-named-music music 'NoteEvent))) (for-each (lambda (n-evt) (ly:music-set-property! n-evt 'articulations (cons (make-music 'GlissandoEvent) (ly:music-property n-evt 'articulations)))) note-evts) music)) \paper { ragged-right = ##f } akkord-zither-layout = \layout { \context { \Score %highStringOne = ##f \hide SystemStartBar } \context { \TabStaff \remove "Bar_engraver" \override StaffSymbol.staff-space = 4 \override StaffSymbol.color = #'(0.8 0.8 0.8) \omit Clef stringTunings = \stringTuning } \context { \TabVoice stringOneTopmost = ##f \noteTabHeads \override Glissando.bound-details.left.padding = 0.5 \override Glissando.bound-details.right.padding = 0.5 \override Glissando.extra-dy = 0 \override Glissando.Y-offset = #-0.5 \override TabNoteHead.whiteout = #5 \autoBeamOff } } firstTestMusic = { c'4 d' e' f' g'2 g' a'4 a' a' a' g'1 a'4 a' a' a' g'1 f'4 f' f' f' e'2 e' d'4 d' d' d' c'1 } firstTestScore = \score { \new TabVoice \allGlissando \firstTestMusic \layout { \akkord-zither-layout } } \markup \fill-line { \scale #'(1 . -1) \rotate #90 \score { \firstTestScore } } \firstTestMusic