\version "2.12.2" \paper { indent = 0 ragged-right = ##f } #(define (glissando::calc-tab-extra-dy grob) (let* ((original (ly:grob-original grob)) (left-bound (ly:spanner-bound original LEFT)) (right-bound (ly:spanner-bound original RIGHT)) (left-pitch (ly:event-property (event-cause left-bound) 'pitch)) (right-pitch (ly:event-property (event-cause right-bound) 'pitch)) (left-staff-position (ly:grob-property left-bound 'staff-position)) (right-staff-position (ly:grob-property right-bound 'staff-position))) (if (and (= left-staff-position right-staff-position) (< (ly:pitch-semitones right-pitch) (ly:pitch-semitones left-pitch))) -0.75 0.75))) #(define (extra-dy-test-a grob) (let* ((original (ly:grob-original grob)) (left-bound (ly:spanner-bound original LEFT)) (right-bound (ly:spanner-bound original RIGHT)) (left-pitch (ly:event-property (event-cause left-bound) 'pitch)) (right-pitch (ly:event-property (event-cause right-bound) 'pitch)) (left-staff-position (ly:grob-property left-bound 'staff-position)) (right-staff-position (ly:grob-property right-bound 'staff-position))) (if (= left-staff-position right-staff-position) (if (< (ly:pitch-semitones right-pitch) (ly:pitch-semitones left-pitch)) -0.75 0.75) ;; not on same staff-position -> no extra-dy 0))) #(define (extra-dy-test-b grob) (let* ((original (ly:grob-original grob)) (left-bound (ly:spanner-bound original LEFT)) (right-bound (ly:spanner-bound original RIGHT)) (left-pitch (ly:event-property (event-cause left-bound) 'pitch)) (right-pitch (ly:event-property (event-cause right-bound) 'pitch)) (left-staff-position (ly:grob-property left-bound 'staff-position)) (right-staff-position (ly:grob-property right-bound 'staff-position))) ;; apply extra-dy for all glissandos (if (< (ly:pitch-semitones right-pitch) (ly:pitch-semitones left-pitch)) -0.75 0.75))) tabs = \relative c { \set TabStaff.minimumFret = #2 c'4 \glissando d \glissando e, \glissando f \bar "|." } \score { << \new TabStaff { \clef "tab" \override Glissando #'extra-dy = #glissando::calc-tab-extra-dy \tabs } \new TabStaff { \clef "tab" \override Glissando #'extra-dy = #extra-dy-test-a \tabs } \new TabStaff { \clef "tab" \override Glissando #'extra-dy = #extra-dy-test-b \tabs } >> }