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
14 @item Beams, slurs, accents
15 @item Accidentals, bar lines, time signature, and key signature.
18 Engravers are grouped. For example, note heads, slurs, beams etc. form
19 a Voice context. Engravers for key, accidental, bar, etc. form the
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"
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
63 localKeySignature = #'()
65 % explicitly set instrument, so we don't get
66 % weird effects when doing instrument names for
76 MyVoiceContext = \translator {
77 \type "Engraver_group_engraver"
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
133 localKeySignature = #'()
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"
145 \consists "Output_property_engraver"
155 \translator { \MyStaffContext }
156 \translator { \MyVoiceContext }
157 \translator { \MyThreadContext }
162 MyStaffContext = \translator {
164 \consists "Staff_symbol_engraver"
170 \translator { \MyStaffContext }
171 \translator { \MyVoiceContext }
172 \translator { \MyThreadContext }
176 MyStaffContext = \translator {
178 \consists "Clef_engraver"
179 \remove "Pitch_squash_engraver"
185 \translator { \MyStaffContext }
186 \translator { \MyVoiceContext }
187 \translator { \MyThreadContext }
191 MyVoiceContext = \translator {
193 \consists "Stem_engraver"
199 \translator { \MyStaffContext }
200 \translator { \MyVoiceContext }
201 \translator { \MyThreadContext }
205 MyVoiceContext = \translator {
207 \consists "Beam_engraver"
213 \translator { \MyStaffContext }
214 \translator { \MyVoiceContext }
215 \translator { \MyThreadContext }
219 MyVoiceContext= \translator {
221 \consists "Phrasing_slur_engraver"
222 \consists "Slur_engraver"
223 \consists "Script_engraver"
230 \translator { \MyStaffContext }
231 \translator { \MyVoiceContext }
232 \translator { \MyThreadContext }
236 MyStaffContext = \translator {
238 \consists "Bar_engraver"
239 \consists "Time_signature_engraver"
246 \translator { \MyStaffContext }
247 \translator { \MyVoiceContext }
248 \translator { \MyThreadContext }
252 MyStaffContext = \translator
254 \consists "Accidental_engraver"
255 \consists "Key_engraver"
260 \translator { \MyStaffContext }
261 \translator { \MyVoiceContext }
262 \translator { \MyThreadContext }