]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver.ly
patch::: 1.3.34.jcn1
[lilypond.git] / ly / engraver.ly
1 %
2 % setup for Request->Element conversion. Guru-only
3 %
4
5 StaffContext=\translator {
6         \type "Engraver_group_engraver";
7         \name Staff ;
8         \consists "Output_property_engraver";   
9         barAuto = ##t
10         voltaVisibility = ##t
11         Generic_property_list = #generic-staff-properties
12         \consists "Property_engraver";
13         
14         \consists "Multi_measure_rest_engraver";
15         \consists "Bar_engraver";
16  % Bar_engraver must be first so default bars aren't overwritten
17 % with empty ones.
18         \consists "Repeat_engraver";
19
20
21         %  name, glyph id, c0 position
22         supportedClefTypes = #'(
23           ("treble" . ("G" -2))
24           ("violin" . ("G" -2))
25           ("G" . ("G" -2))
26           ("G2" . ("G" -2))
27           ("french" . ("G" -4 ))
28           ("soprano" . ("C" -4 ))
29           ("mezzosoprano" . ("C" -2 ))
30           ("alto" . ("C" 0 ))
31           ("tenor" . ("C" 2 ))
32           ("baritone" . ("C" 4 ))
33           ("varbaritone"  . ("F" 0))
34           ("bass" . ("F" 2 ))
35           ("F" . ( "F" 2))
36           ("subbass" . ("F" 4))
37         )
38         clefPitches = #'(("G" . -4)
39           ("C" . 0)
40           ("F" . 4))
41           
42         \consists "Clef_engraver";
43         \consists "Key_engraver";
44         \consists "Time_signature_engraver";
45         \consists "Staff_symbol_engraver";
46         \consists "Collision_engraver";
47         \consists "Rest_collision_engraver";
48         \consists "Local_key_engraver";
49
50         \consistsend "Axis_group_engraver";
51
52
53
54 %{
55         The Staff_margin_engraver puts the name of the instrument
56         (\property Staff.instrument; Staff.instr for subsequent lines)
57         to the left of a staff.
58         Usually, you only want this in the full score, not in the parts.
59
60         \consists "Staff_margin_engraver";
61 %}
62
63         defaultClef = #"treble"
64
65         \consists "Separating_line_group_engraver";
66           
67         \accepts "Voice";
68         dynamicStyle = #"dynamic"
69 };
70
71 \translator{\StaffContext }
72 \translator {
73         \type "Engraver_group_engraver";
74         \name ChoirStaff;
75         alignmentReference = \center;   
76         \consists "Staff_group_bar_engraver";
77
78
79         \accepts "Staff";
80         \accepts "RhythmicStaff";
81         \accepts "GrandStaff";
82         \accepts "PianoStaff";
83
84                 
85         \accepts "Lyrics";
86         \accepts "ChordNames";
87 }
88
89
90 RhythmicStaffContext=\translator{
91         \type "Engraver_group_engraver";
92         numberOfStaffLines  = #1
93         \consists "Property_engraver";
94         \consists "Output_property_engraver";   
95
96         Generic_property_list = #generic-staff-properties
97         
98         barSize = #'staff-height
99         \consists "Pitch_squash_engraver";
100         \consists "Separating_line_group_engraver";     
101         \name RhythmicStaff;
102
103         \consists "Repeat_engraver";
104         \consists "Bar_engraver";
105         \consists "Time_signature_engraver";
106         \consists "Staff_symbol_engraver";
107         \consistsend "Axis_group_engraver";
108         \accepts "Voice";
109 };
110 \translator{\RhythmicStaffContext}
111
112 VoiceContext = \translator {
113         \type "Engraver_group_engraver";
114         \name Voice;
115
116         dynamicPadding = #10  % urg, in \pt
117         Generic_property_list = #generic-voice-properties
118         \consists "Output_property_engraver";   
119
120         \consists "Dynamic_engraver";   % must come before text_engraver.
121         \consists "Property_engraver";
122         
123         \consists "Breathing_sign_engraver";
124         \consists "Rest_engraver";
125         \consists "Dot_column_engraver";
126         \consists "Stem_engraver";
127         \consists "Beam_engraver";
128         \consists "Auto_beam_engraver";
129         \include "auto-beam-settings.ly";
130         \consists "Chord_tremolo_engraver";
131
132         \consists "Melisma_engraver";
133         textScriptPadding = #3.0
134         \consists "Text_engraver";
135         \consists "Script_engraver";
136         \consists "Script_column_engraver";
137         \consists "Rhythmic_column_engraver";
138         \consists "Slur_engraver";
139         \consists "Tie_engraver";
140         \consists "Tuplet_engraver";
141         \consists "Grace_position_engraver";
142         \consists "Skip_req_swallow_translator";
143         \accepts Thread; % bug if you leave out this!
144         \accepts Grace;
145 };
146
147 GraceContext=\translator {
148         \type "Grace_engraver_group";
149         \name "Grace";
150         \consists "Output_property_engraver";   
151
152         Generic_property_list = #generic-grace-properties
153         
154         \consists "Note_heads_engraver";
155         \consists "Local_key_engraver";
156         \consists "Stem_engraver";
157         \consists "Beam_engraver";
158         \consists "Slur_engraver";
159         
160         \consists "Auto_beam_engraver";
161         \include "auto-beam-settings.ly";
162         \consists "Align_note_column_engraver";
163
164         \consists "Rhythmic_column_engraver";
165         \consists "Dynamic_engraver";
166
167         \consists "Property_engraver";
168
169         stemStyle = #"grace"
170         flagStyle = #"grace" 
171         weAreGraceContext = ##t 
172         fontSize = #-1
173         
174         stemLength = #6.0
175         verticalDirection = \up ;
176         graceAccidentalSpace= 1.5 * \staffspace;
177 };
178
179 \translator{\GraceContext}
180 \translator {\VoiceContext}
181
182 ThreadContext = \translator{
183         \type Engraver_group_engraver;
184         \consists "Note_heads_engraver" ;
185         \consists "Output_property_engraver";   
186         Generic_property_list = #generic-thread-properties
187         \consists "Property_engraver";
188         \name Thread;
189 };
190
191 \translator{\ThreadContext}
192 GrandStaffContext=\translator{
193         \type "Engraver_group_engraver";
194         \name GrandStaff;
195         \consists "Span_bar_engraver";
196         \consists "Piano_bar_engraver";
197         \consists "Property_engraver";  
198         Generic_property_list = #generic-grand-staff-properties
199         \accepts "Staff";
200 };
201 \translator{\GrandStaffContext}
202
203 PianoStaffContext = \translator{\GrandStaffContext
204         alignmentReference = \center;
205
206         \consists "Vertical_align_engraver";
207         minVerticalAlign = 3.0*\staffheight;
208         maxVerticalAlign = 3.0*\staffheight;
209
210 %       \consistsend "Axis_group_engraver";
211         \name "PianoStaff";
212         
213 };
214 \translator{\PianoStaffContext}
215 StaffGroupContext= \translator {
216         \type "Engraver_group_engraver";
217         \consists "Span_bar_engraver";
218         \consists "Output_property_engraver";   
219         \consists "Staff_group_bar_engraver";
220
221         \name StaffGroup;
222         \accepts "Staff";
223         \accepts "RhythmicStaff";
224         \accepts "GrandStaff";
225         \accepts "PianoStaff";
226         
227         \accepts "Lyrics";
228         \accepts "ChordNames";
229 };
230
231 \translator { \StaffGroupContext }
232
233 % UGH! JUNKME
234 LyricsVoiceContext= \translator{
235         \type "Engraver_group_engraver";
236         \consistsend "Axis_group_engraver";
237
238         \name LyricVoice ;
239         \consists "Separating_line_group_engraver";
240         \consists "Lyric_engraver";
241         \consists "Extender_engraver";
242         \consists "Hyphen_engraver";
243 };
244 \translator{ \LyricsVoiceContext }
245
246 LyricsContext = \translator {
247         \type "Engraver_group_engraver";
248         \name Lyrics;
249         \consists Vertical_align_engraver;%need this for getting folded repeats right.
250
251         \consists "Property_engraver";
252         \consistsend "Axis_group_engraver";
253         
254         \accepts "LyricVoice";
255 };
256 \translator { \LyricsContext }
257
258 ChordNameVoiceContext = \translator {
259         \type "Engraver_group_engraver";
260         \name ChordNameVoice ;
261
262         \consists "Output_property_engraver";   
263         \consistsend "Axis_group_engraver";
264         \consists "Separating_line_group_engraver";
265         \consists "Chord_name_engraver";
266 };
267 \translator {\ChordNameVoiceContext}
268
269 ChordNameContext = \translator {
270         \type "Engraver_group_engraver";
271         \name ChordNames;
272
273         \consists "Output_property_engraver";   
274         \accepts "ChordNameVoice";
275         \consistsend "Axis_group_engraver";
276         };
277 \translator { \ChordNameContext }
278
279
280 ScoreWithNumbers = \translator {
281         \type "Score_engraver";
282
283         % uncomment to bar numbers on a whole system.
284         \consists "Bar_number_engraver";
285 };
286
287 StupidScore = \translator {
288         \type "Score_engraver";
289         \name Score;
290         \consists "Note_heads_engraver";
291 };
292
293
294
295 BarNumberingStaffContext = \translator {
296         \StaffContext
297         \consists "Mark_engraver";
298         \consists "Bar_number_engraver";
299 };
300
301 HaraKiriStaffContext = \translator {
302         \StaffContext
303         \remove "Axis_group_engraver";
304         \consistsend "Hara_kiri_engraver";        
305         \consists "Staff_margin_engraver";
306         \accepts "Voice";
307 };
308 %{
309   The HaraKiriStaffContexts doesn't override \name,
310   so it is still named `Staff'.
311
312   %\translator { \HaraKiriStaffContext }
313 %}
314
315 OrchestralPartStaffContext = \translator {
316         \StaffContext
317         \consists "Mark_engraver";
318         \consists "Bar_number_engraver";
319 };
320
321 ScoreContext = \translator {
322         \type Score_engraver;
323         \name Score;
324
325         \consists "Timing_engraver";
326         \consists "Output_property_engraver";   
327
328         \consists "Span_score_bar_engraver";
329 %       \consists "Score_priority_engraver";
330         \consists "Break_align_engraver";
331         breakAlignOrder = #'(
332           "Left_edge_item"
333           "Span_bar"
334           "Breathing_sign"
335           "Clef_item"
336           "Key_item"
337           "Staff_bar"
338           "Time_signature"
339         )
340         \consists "Spacing_engraver";
341         \consists "Vertical_align_engraver";
342         alignmentReference = \down;
343         defaultClef = #"treble"
344         defaultBarType = #"|"
345         \accepts "Staff";
346         \accepts "StaffGroup";
347         \accepts "RhythmicStaff";       
348         \accepts "Lyrics";
349         \accepts "ChordNames";
350         \accepts "GrandStaff";
351         \accepts "ChoirStaff";
352         \accepts "PianoStaff";
353         \accepts "NoteNames";
354
355         markVisibilityFunction = #end-of-line-invisible
356         barNumberVisibilityFunction = #begin-of-line-visible
357         marginVisibilityFunction = #begin-of-line-visible
358 };
359
360 \translator { \ScoreContext }
361
362 OrchestralScoreContext= \translator {
363         \ScoreContext
364
365         barScriptPadding = #2.0         % dimension \pt
366         markScriptPadding = #4.0
367
368         \consists "Bar_number_engraver";
369         \consists "Mark_engraver";
370 };
371
372 \translator {
373         \type "Engraver_group_engraver";
374         \name NoteNames;
375         \consistsend "Axis_group_engraver";
376         \consists "Note_name_engraver";
377 }