]> git.donarmstrong.com Git - lilypond.git/blob - input/test/engraver-one-by-one.ly
release commit
[lilypond.git] / input / test / engraver-one-by-one.ly
1
2 \version "1.9.6"
3 \header {
4     
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
8
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
17
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.
21
22 "
23
24     }
25 \paper { raggedright = ##t }
26 \include "engraver-example.lyinc"
27
28
29 %
30 % setup for Request->Element conversion. Guru-only
31 %
32
33 MyStaffContext=\translator {
34         \type "Engraver_group_engraver"
35         \name Staff
36
37         \description "Handles clefs, bar lines, keys, accidentals.  It can contain
38 @code{Voice} contexts."
39
40         
41         \consists "Output_property_engraver"    
42         
43         \consists "Font_size_engraver"
44
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"
50
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"
59
60         minimumVerticalExtent = #'(-6 . 6)
61         extraVerticalExtent = ##f
62         verticalExtent = ##f 
63         localKeySignature = #'()
64
65         % explicitly set instrument, so we don't get 
66         % weird effects when doing instrument names for
67         % piano staves
68
69         instrument = #'()
70         instr = #'()
71           
72         \accepts "Voice"
73 }
74
75
76 MyVoiceContext = \translator {
77         \type "Engraver_group_engraver"
78         \name Voice
79
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.
84
85     You have to instantiate this explicitly if you want to have
86     multiple voices on the same staff."
87
88         localKeySignature = #'()
89         \consists "Font_size_engraver"
90         
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"
109
110 %{
111  Must come before text_engraver, but after note_column engraver.
112
113 %}
114         \consists "Text_engraver"
115         \consists "Dynamic_engraver"
116         \consists "Fingering_engraver"
117
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"
125
126         \consists "Skip_event_swallow_translator"
127         \accepts Thread % bug if you leave out this!
128 }
129
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.
138 "
139         \consists "Font_size_engraver"  
140         \consists "Thread_devnull_engraver"
141         \consists "Note_heads_engraver"
142         \consists "Rest_engraver"
143
144         % why here ? 
145         \consists "Output_property_engraver"    
146
147 }
148
149
150
151
152 \score {
153   \topVoice
154   \paper {
155       \translator { \MyStaffContext }
156       \translator { \MyVoiceContext }
157       \translator { \MyThreadContext }
158       }
159 }
160
161
162 MyStaffContext = \translator {
163     \MyStaffContext
164     \consists "Staff_symbol_engraver"
165 }
166
167 \score {
168   \topVoice
169   \paper {
170       \translator { \MyStaffContext }
171       \translator { \MyVoiceContext }
172       \translator { \MyThreadContext }
173       }
174 }
175
176 MyStaffContext = \translator {
177     \MyStaffContext
178       \consists "Clef_engraver"
179     \remove "Pitch_squash_engraver"
180 }
181
182 \score {
183   \topVoice
184   \paper {
185       \translator { \MyStaffContext }
186       \translator { \MyVoiceContext }
187       \translator { \MyThreadContext }
188       }
189 }
190
191 MyVoiceContext = \translator {
192     \MyVoiceContext
193     \consists "Stem_engraver"
194     }
195
196 \score {
197   \topVoice
198   \paper {
199       \translator { \MyStaffContext }
200       \translator { \MyVoiceContext }
201       \translator { \MyThreadContext }
202       }
203 }
204
205 MyVoiceContext = \translator {
206     \MyVoiceContext
207         \consists "Beam_engraver"
208 }
209
210 \score {
211   \topVoice
212   \paper {
213       \translator { \MyStaffContext }
214       \translator { \MyVoiceContext }
215       \translator { \MyThreadContext }
216       }
217 }
218
219 MyVoiceContext= \translator {
220     \MyVoiceContext
221     \consists "Phrasing_slur_engraver"
222     \consists "Slur_engraver"
223     \consists "Script_engraver"
224 }
225
226
227 \score {
228   \topVoice
229   \paper {
230       \translator { \MyStaffContext }
231       \translator { \MyVoiceContext }
232       \translator { \MyThreadContext }
233       }
234 }
235
236 MyStaffContext = \translator {
237     \MyStaffContext
238  \consists "Bar_engraver"
239     \consists "Time_signature_engraver"
240       
241 }
242
243 \score {
244   \topVoice
245   \paper {
246       \translator { \MyStaffContext }
247       \translator { \MyVoiceContext }
248       \translator { \MyThreadContext }
249       }
250 }
251
252 MyStaffContext = \translator
253  { \MyStaffContext
254  \consists "Accidental_engraver"    
255      \consists "Key_engraver"
256 }
257 \score {
258   \topVoice
259   \paper {
260       \translator { \MyStaffContext }
261       \translator { \MyVoiceContext }
262       \translator { \MyThreadContext }
263       }
264 }