release commit
[lilypond.git] / input / test / engraver-one-by-one.ly
blobcf40b9689cd054326d752772decb5cdd6c73926a
2 \version "2.1.7"
3 \header {
5 texidoc = "The notation problem, @emph{what} symbols to create,
6 is handled by plugins. Each plugin is called Engraver. In this example,
7 we switch on engravers one by one, in the following order
9 @itemize
10 @item Note heads
11 @item Staff symbol
12 @item Clef
13 @item Stem
14 @item Beams, slurs, accents
15 @item Accidentals, bar lines, time signature, and key signature.
16 @end itemize
18 Engravers are grouped. For example, note heads, slurs, beams etc. form
19 a Voice context. Engravers for key, accidental, bar, etc. form the
20 Staff context.
25 \paper { raggedright = ##t }
26 \include "engraver-example.lyinc"
30 % setup for Request->Element conversion. Guru-only
33 MyStaffContext=\translator {
34 \type "Engraver_group_engraver"
35 \name Staff
37 \description "Handles clefs, bar lines, keys, accidentals. It can contain
38 @code{Voice} contexts."
41 \consists "Output_property_engraver"
43 \consists "Font_size_engraver"
45 \consists "Volta_engraver"
46 \consists "Separating_line_group_engraver"
47 SeparatingGroupSpanner \override #'spacing-procedure
48 = #Separating_group_spanner::set_spacing_rods_and_seqs
49 \consists "Dot_column_engraver"
51 \consists "Ottava_spanner_engraver"
52 \consists "Rest_collision_engraver"
53 \consists "Piano_pedal_engraver"
54 \consists "Instrument_name_engraver"
55 \consists "Grob_pq_engraver"
56 \consists "Forbid_line_break_engraver"
57 \consistsend "Axis_group_engraver"
58 \consists "Pitch_squash_engraver"
60 minimumVerticalExtent = #'(-6 . 6)
61 extraVerticalExtent = ##f
62 verticalExtent = ##f
63 localKeySignature = #'()
65 % explicitly set instrument, so we don't get
66 % weird effects when doing instrument names for
67 % piano staves
69 instrument = #'()
70 instr = #'()
72 \accepts "Voice"
76 MyVoiceContext = \translator {
77 \type "Engraver_group_engraver"
78 \name Voice
80 \description "
81 Corresponds to a voice on a staff. This context handles the
82 conversion of dynamic signs, stems, beams, super- and subscripts,
83 slurs, ties, and rests.
85 You have to instantiate this explicitly if you want to have
86 multiple voices on the same staff."
88 localKeySignature = #'()
89 \consists "Font_size_engraver"
91 % must come before all
92 \consists "Voice_devnull_engraver"
93 \consists "Output_property_engraver"
94 \consists "Arpeggio_engraver"
95 \consists "Multi_measure_rest_engraver"
96 \consists "Text_spanner_engraver"
97 \consists "Grob_pq_engraver"
98 \consists "Note_head_line_engraver"
99 \consists "Glissando_engraver"
100 \consists "Ligature_bracket_engraver"
101 \consists "Breathing_sign_engraver"
102 % \consists "Rest_engraver"
103 \consists "Grace_beam_engraver"
104 \consists "New_fingering_engraver"
105 \consists "Chord_tremolo_engraver"
106 \consists "Percent_repeat_engraver"
107 \consists "Slash_repeat_engraver"
108 \consists "Melisma_engraver"
111 Must come before text_engraver, but after note_column engraver.
114 \consists "Text_engraver"
115 \consists "Dynamic_engraver"
116 \consists "Fingering_engraver"
118 \consists "Script_column_engraver"
119 \consists "Rhythmic_column_engraver"
120 \consists "Cluster_spanner_engraver"
121 \consists "Tie_engraver"
122 \consists "Tie_engraver"
123 \consists "Tuplet_engraver"
124 \consists "A2_engraver"
126 \consists "Skip_event_swallow_translator"
127 \accepts Thread % bug if you leave out this!
130 MyThreadContext = \translator{
131 \type Engraver_group_engraver
132 \name Thread
133 localKeySignature = #'()
134 \description "
135 Handles note heads, and is contained in the Voice context. You
136 have to instantiate this explicitly if you want to adjust the
137 style of individual note heads.
139 \consists "Font_size_engraver"
140 \consists "Thread_devnull_engraver"
141 \consists "Note_heads_engraver"
142 \consists "Rest_engraver"
144 % why here ?
145 \consists "Output_property_engraver"
152 \score {
153 \topVoice
154 \paper {
155 \translator { \MyStaffContext }
156 \translator { \MyVoiceContext }
157 \translator { \MyThreadContext }
162 MyStaffContext = \translator {
163 \MyStaffContext
164 \consists "Staff_symbol_engraver"
167 \score {
168 \topVoice
169 \paper {
170 \translator { \MyStaffContext }
171 \translator { \MyVoiceContext }
172 \translator { \MyThreadContext }
176 MyStaffContext = \translator {
177 \MyStaffContext
178 \consists "Clef_engraver"
179 \remove "Pitch_squash_engraver"
182 \score {
183 \topVoice
184 \paper {
185 \translator { \MyStaffContext }
186 \translator { \MyVoiceContext }
187 \translator { \MyThreadContext }
191 MyVoiceContext = \translator {
192 \MyVoiceContext
193 \consists "Stem_engraver"
196 \score {
197 \topVoice
198 \paper {
199 \translator { \MyStaffContext }
200 \translator { \MyVoiceContext }
201 \translator { \MyThreadContext }
205 MyVoiceContext = \translator {
206 \MyVoiceContext
207 \consists "Beam_engraver"
210 \score {
211 \topVoice
212 \paper {
213 \translator { \MyStaffContext }
214 \translator { \MyVoiceContext }
215 \translator { \MyThreadContext }
219 MyVoiceContext= \translator {
220 \MyVoiceContext
221 \consists "Phrasing_slur_engraver"
222 \consists "Slur_engraver"
223 \consists "Script_engraver"
227 \score {
228 \topVoice
229 \paper {
230 \translator { \MyStaffContext }
231 \translator { \MyVoiceContext }
232 \translator { \MyThreadContext }
236 MyStaffContext = \translator {
237 \MyStaffContext
238 \consists "Bar_engraver"
239 \consists "Time_signature_engraver"
243 \score {
244 \topVoice
245 \paper {
246 \translator { \MyStaffContext }
247 \translator { \MyVoiceContext }
248 \translator { \MyThreadContext }
252 MyStaffContext = \translator
253 { \MyStaffContext
254 \consists "Accidental_engraver"
255 \consists "Key_engraver"
257 \score {
258 \topVoice
259 \paper {
260 \translator { \MyStaffContext }
261 \translator { \MyVoiceContext }
262 \translator { \MyThreadContext }