1\header { 2 3 texidoc = "\\consists can take a scheme alist as arguments, which 4 should be functions, which will be invoked as engraver functions." 5 6} 7 8\version "2.19.21" 9 10#(define (t->m t) 11 "Return the current moment of translator object @var{t}." 12 (ly:context-current-moment (ly:translator-context t))) 13 14engraver_demo = 15#(make-engraver 16 ((initialize translator) 17 (format (current-error-port) "\n\n~16a: (initialize)\n" (t->m translator))) 18 ((start-translation-timestep translator) 19 (format (current-error-port) "~16a: (start-translation-timestep)\n" (t->m translator))) 20 (listeners 21 ((rest-event engraver event) 22 (let ((grob (ly:engraver-make-grob engraver 'TextScript event))) 23 (ly:grob-set-property! grob 'text "hi") 24 (format (current-error-port) "~16a: detected this rest event: ~a\n~16a: created this grob: ~a\n" 25 (t->m engraver) event (t->m engraver) grob)))) 26 (acknowledgers 27 ((note-head-interface engraver grob source-engraver) 28 (format (current-error-port) "~16a: saw ~a coming from ~a\n" 29 (t->m engraver) grob source-engraver))) 30 (end-acknowledgers 31 ((beam-interface engraver grob source-engraver) 32 (format (current-error-port) "~16a: saw end of ~a coming from ~a\n" 33 (t->m engraver) grob source-engraver))) 34 ((process-music translator) 35 (format (current-error-port) "~16a: (process-music)\n" (t->m translator))) 36 ((process-acknowledged translator) 37 (format (current-error-port) "~16a: (process-acknowledged)\n" (t->m translator))) 38 ((stop-translation-timestep translator) 39 (format (current-error-port) "~16a: (stop-translation-timestep)\n" (t->m translator))) 40 ((finalize translator) 41 (format (current-error-port) "~16a: (finalize)\n" (t->m translator)))) 42 43\layout { 44 \context { 45 \Voice 46 \consists 47 \engraver_demo 48 } 49} 50 51\relative { 52 c'8[ r c] 53} 54