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 "Output_property_engraver"
93 \consists "Arpeggio_engraver"
94 \consists "Multi_measure_rest_engraver"
95 \consists "Text_spanner_engraver"
96 \consists "Grob_pq_engraver"
97 \consists "Note_head_line_engraver"
98 \consists "Glissando_engraver"
99 \consists "Ligature_bracket_engraver"
100 \consists "Breathing_sign_engraver"
101 % \consists "Rest_engraver"
102 \consists "Grace_beam_engraver"
103 \consists "New_fingering_engraver"
104 \consists "Chord_tremolo_engraver"
105 \consists "Percent_repeat_engraver"
106 \consists "Slash_repeat_engraver"
107 \consists "Melisma_engraver"
110 Must come before text_engraver, but after note_column engraver.
113 \consists "Text_engraver"
114 \consists "Dynamic_engraver"
115 \consists "Fingering_engraver"
117 \consists "Script_column_engraver"
118 \consists "Rhythmic_column_engraver"
119 \consists "Cluster_spanner_engraver"
120 \consists "Tie_engraver"
121 \consists "Tie_engraver"
122 \consists "Tuplet_engraver"
124 \consists "Skip_event_swallow_translator"
125 \accepts Thread % bug if you leave out this!
128 MyThreadContext = \translator{
129 \type Engraver_group_engraver
131 localKeySignature = #'()
133 Handles note heads, and is contained in the Voice context. You
134 have to instantiate this explicitly if you want to adjust the
135 style of individual note heads.
137 \consists "Font_size_engraver"
138 \consists "Note_heads_engraver"
139 \consists "Rest_engraver"
142 \consists "Output_property_engraver"
152 \translator { \MyStaffContext }
153 \translator { \MyVoiceContext }
154 \translator { \MyThreadContext }
159 MyStaffContext = \translator {
161 \consists "Staff_symbol_engraver"
167 \translator { \MyStaffContext }
168 \translator { \MyVoiceContext }
169 \translator { \MyThreadContext }
173 MyStaffContext = \translator {
175 \consists "Clef_engraver"
176 \remove "Pitch_squash_engraver"
182 \translator { \MyStaffContext }
183 \translator { \MyVoiceContext }
184 \translator { \MyThreadContext }
188 MyVoiceContext = \translator {
190 \consists "Stem_engraver"
196 \translator { \MyStaffContext }
197 \translator { \MyVoiceContext }
198 \translator { \MyThreadContext }
202 MyVoiceContext = \translator {
204 \consists "Beam_engraver"
210 \translator { \MyStaffContext }
211 \translator { \MyVoiceContext }
212 \translator { \MyThreadContext }
216 MyVoiceContext= \translator {
218 \consists "Phrasing_slur_engraver"
219 \consists "Slur_engraver"
220 \consists "Script_engraver"
227 \translator { \MyStaffContext }
228 \translator { \MyVoiceContext }
229 \translator { \MyThreadContext }
233 MyStaffContext = \translator {
235 \consists "Bar_engraver"
236 \consists "Time_signature_engraver"
243 \translator { \MyStaffContext }
244 \translator { \MyVoiceContext }
245 \translator { \MyThreadContext }
249 MyStaffContext = \translator
251 \consists "Accidental_engraver"
252 \consists "Key_engraver"
257 \translator { \MyStaffContext }
258 \translator { \MyVoiceContext }
259 \translator { \MyThreadContext }