\version "2.19.10" #(define (define-grob-custom-property symbol type? description) (if (not (equal? (object-property symbol 'backend-doc) #f)) (ly:error (_ "symbol ~S redefined") symbol)) (set-object-property! symbol 'backend-type? type?) (set-object-property! symbol 'backend-doc description) symbol) #(define all-user-grob-custom-properties (map (lambda (x) (apply define-grob-custom-property x)) `((display-fingering ,boolean? "Display woodwind fingering")))) #(define-markup-command (placeholder layout props arg) (number?) (interpret-markup layout props (number->string arg))) textToMarkedEngraver= #(lambda (context) (make-engraver (acknowledgers ((note-head-interface trans grob source) (let* ((cause (event-cause grob)) (p (ly:event-property cause 'pitch)) (marked? (ly:grob-property grob 'display-fingering)) (marked? (and (boolean? marked?) marked?))) (if marked? (let* ((t (ly:engraver-make-grob trans 'TextScript cause))) (ly:grob-set-property! t 'text #{ \markup \placeholder #(ly:pitch-octave p) #})))))))) markAll = \override NoteHead.display-fingering = ##t markOne = \once \markAll %%% EXAMPLE \relative c { \clef bass c, \markOne c' c' \clef treble c' \markAll c' c' } \layout { \context { \Staff \consists #textToMarkedEngraver } }