]> git.donarmstrong.com Git - lilypond.git/blob - input/regression/scheme-engraver.ly
0f31685f912d00d2bf828673a325ddff020a9caa
[lilypond.git] / input / regression / scheme-engraver.ly
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
14 engraver_demo =
15 #(make-engraver
16    ((initialize translator)
17     (format 1 "\n\n~16a: (initialize)\n" (t->m translator)))
18    ((start-translation-timestep translator)
19     (format 1 "~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 1 "~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 1 "~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 1 "~16a: saw end of ~a coming from ~a\n"
33               (t->m engraver) grob source-engraver)))
34    ((process-music translator)
35     (format 1 "~16a: (process-music)\n" (t->m translator)))
36    ((process-acknowledged translator)
37     (format 1 "~16a: (process-acknowledged)\n" (t->m translator)))
38    ((stop-translation-timestep translator)
39     (format 1 "~16a: (stop-translation-timestep)\n" (t->m translator)))
40    ((finalize translator)
41     (format 1 "~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 }