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