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