]> git.donarmstrong.com Git - lilypond.git/blob - input/test/engraver-one-by-one.ly
* Documentation/user/refman.itely (Automatic note splitting):
[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
27 \include "engraver-example.lyinc"
28
29
30 %
31 % setup for Request->Element conversion. Guru-only
32 %
33
34 MyStaffContext=\translator {
35         \type "Engraver_group_engraver"
36         \name Staff
37
38         \description "Handles clefs, bar lines, keys, accidentals.  It can contain
39 @code{Voice} contexts."
40
41         
42         \consists "Output_property_engraver"    
43         
44         \consists "Font_size_engraver"
45
46         \consists "Volta_engraver"
47         \consists "Separating_line_group_engraver"      
48         SeparatingGroupSpanner \override #'spacing-procedure
49           =  #Separating_group_spanner::set_spacing_rods_and_seqs
50         \consists "Dot_column_engraver"
51
52         \consists "Ottava_spanner_engraver"
53         \consists "Rest_collision_engraver"
54         \consists "Piano_pedal_engraver"
55         \consists "Instrument_name_engraver"
56         \consists "Grob_pq_engraver"
57         \consists "Forbid_line_break_engraver"
58         \consistsend "Axis_group_engraver"
59 \consists "Pitch_squash_engraver"
60
61         minimumVerticalExtent = #'(-6 . 6)
62         extraVerticalExtent = ##f
63         verticalExtent = ##f 
64         localKeySignature = #'()
65
66         % explicitly set instrument, so we don't get 
67         % weird effects when doing instrument names for
68         % piano staves
69
70         instrument = #'()
71         instr = #'()
72           
73         \accepts "Voice"
74 }
75
76
77 MyVoiceContext = \translator {
78         \type "Engraver_group_engraver"
79         \name Voice
80
81 \description "
82     Corresponds to a voice on a staff.  This context handles the
83     conversion of dynamic signs, stems, beams, super- and subscripts,
84     slurs, ties, and rests.
85
86     You have to instantiate this explicitly if you want to have
87     multiple voices on the same staff."
88
89         localKeySignature = #'()
90         \consists "Font_size_engraver"
91         
92         % must come before all
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 "Note_heads_engraver"
125         \consists "Rest_engraver"
126
127         \consists "Skip_event_swallow_translator"
128 }
129
130
131 \score {
132   \topVoice
133   \paper {
134       \translator { \MyStaffContext }
135       \translator { \MyVoiceContext }
136       }
137 }
138
139
140 MyStaffContext = \translator {
141     \MyStaffContext
142     \consists "Staff_symbol_engraver"
143 }
144
145 \score {
146   \topVoice
147   \paper {
148       \translator { \MyStaffContext }
149       \translator { \MyVoiceContext }
150             }
151 }
152
153 MyStaffContext = \translator {
154     \MyStaffContext
155       \consists "Clef_engraver"
156     \remove "Pitch_squash_engraver"
157 }
158
159 \score {
160   \topVoice
161   \paper {
162       \translator { \MyStaffContext }
163       \translator { \MyVoiceContext }
164             }
165 }
166
167 MyVoiceContext = \translator {
168     \MyVoiceContext
169     \consists "Stem_engraver"
170     }
171
172 \score {
173   \topVoice
174   \paper {
175       \translator { \MyStaffContext }
176       \translator { \MyVoiceContext }
177             }
178 }
179
180 MyVoiceContext = \translator {
181     \MyVoiceContext
182         \consists "Beam_engraver"
183 }
184
185 \score {
186   \topVoice
187   \paper {
188       \translator { \MyStaffContext }
189       \translator { \MyVoiceContext }
190             }
191 }
192
193 MyVoiceContext= \translator {
194     \MyVoiceContext
195     \consists "Phrasing_slur_engraver"
196     \consists "Slur_engraver"
197     \consists "Script_engraver"
198 }
199
200
201 \score {
202   \topVoice
203   \paper {
204       \translator { \MyStaffContext }
205       \translator { \MyVoiceContext }
206             }
207 }
208
209 MyStaffContext = \translator {
210     \MyStaffContext
211  \consists "Bar_engraver"
212     \consists "Time_signature_engraver"
213       
214 }
215
216 \score {
217   \topVoice
218   \paper {
219       \translator { \MyStaffContext }
220       \translator { \MyVoiceContext }
221             }
222 }
223
224 MyStaffContext = \translator
225  { \MyStaffContext
226  \consists "Accidental_engraver"    
227      \consists "Key_engraver"
228 }
229 \score {
230   \topVoice
231   \paper {
232       \translator { \MyStaffContext }
233       \translator { \MyVoiceContext }
234             }
235 }