]> git.donarmstrong.com Git - lilypond.git/blob - input/test/engraver-one-by-one.ly
remove octave-duplicate.ly
[lilypond.git] / input / test / engraver-one-by-one.ly
1
2 \version "2.1.7"
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 "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"
108
109 %{
110  Must come before text_engraver, but after note_column engraver.
111
112 %}
113         \consists "Text_engraver"
114         \consists "Dynamic_engraver"
115         \consists "Fingering_engraver"
116
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"
123
124         \consists "Skip_event_swallow_translator"
125         \accepts Thread % bug if you leave out this!
126 }
127
128 MyThreadContext = \translator{
129         \type Engraver_group_engraver
130         \name Thread
131         localKeySignature = #'()
132 \description "
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.
136 "
137         \consists "Font_size_engraver"  
138         \consists "Note_heads_engraver"
139         \consists "Rest_engraver"
140
141         % why here ? 
142         \consists "Output_property_engraver"    
143
144 }
145
146
147
148
149 \score {
150   \topVoice
151   \paper {
152       \translator { \MyStaffContext }
153       \translator { \MyVoiceContext }
154       \translator { \MyThreadContext }
155       }
156 }
157
158
159 MyStaffContext = \translator {
160     \MyStaffContext
161     \consists "Staff_symbol_engraver"
162 }
163
164 \score {
165   \topVoice
166   \paper {
167       \translator { \MyStaffContext }
168       \translator { \MyVoiceContext }
169       \translator { \MyThreadContext }
170       }
171 }
172
173 MyStaffContext = \translator {
174     \MyStaffContext
175       \consists "Clef_engraver"
176     \remove "Pitch_squash_engraver"
177 }
178
179 \score {
180   \topVoice
181   \paper {
182       \translator { \MyStaffContext }
183       \translator { \MyVoiceContext }
184       \translator { \MyThreadContext }
185       }
186 }
187
188 MyVoiceContext = \translator {
189     \MyVoiceContext
190     \consists "Stem_engraver"
191     }
192
193 \score {
194   \topVoice
195   \paper {
196       \translator { \MyStaffContext }
197       \translator { \MyVoiceContext }
198       \translator { \MyThreadContext }
199       }
200 }
201
202 MyVoiceContext = \translator {
203     \MyVoiceContext
204         \consists "Beam_engraver"
205 }
206
207 \score {
208   \topVoice
209   \paper {
210       \translator { \MyStaffContext }
211       \translator { \MyVoiceContext }
212       \translator { \MyThreadContext }
213       }
214 }
215
216 MyVoiceContext= \translator {
217     \MyVoiceContext
218     \consists "Phrasing_slur_engraver"
219     \consists "Slur_engraver"
220     \consists "Script_engraver"
221 }
222
223
224 \score {
225   \topVoice
226   \paper {
227       \translator { \MyStaffContext }
228       \translator { \MyVoiceContext }
229       \translator { \MyThreadContext }
230       }
231 }
232
233 MyStaffContext = \translator {
234     \MyStaffContext
235  \consists "Bar_engraver"
236     \consists "Time_signature_engraver"
237       
238 }
239
240 \score {
241   \topVoice
242   \paper {
243       \translator { \MyStaffContext }
244       \translator { \MyVoiceContext }
245       \translator { \MyThreadContext }
246       }
247 }
248
249 MyStaffContext = \translator
250  { \MyStaffContext
251  \consists "Accidental_engraver"    
252      \consists "Key_engraver"
253 }
254 \score {
255   \topVoice
256   \paper {
257       \translator { \MyStaffContext }
258       \translator { \MyVoiceContext }
259       \translator { \MyThreadContext }
260       }
261 }