]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver.ly
release: 1.3.46
[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
148         startSustain = #"Ped."
149         stopSustain = #"*"
150         stopStartSustain = #"*Ped."
151         startUnaChorda = #"una chorda"
152         stopUnaChorda = #"tre chorde"
153         \consists "Piano_pedal_engraver";
154         \consists "Script_engraver";
155         \consists "Script_column_engraver";
156         \consists "Rhythmic_column_engraver";
157         \consists "Slur_engraver";
158         \consists "Tie_engraver";
159         \consists "Tuplet_engraver";
160         \consists "Grace_position_engraver";
161         \consists "Skip_req_swallow_translator";
162         \accepts Thread; % bug if you leave out this!
163         \accepts Grace;
164 };
165
166 GraceContext=\translator {
167         \type "Grace_engraver_group";
168         \name "Grace";
169         \consists "Output_property_engraver";   
170
171         Generic_property_list = #generic-grace-properties
172         
173         \consists "Note_heads_engraver";
174         \consists "Local_key_engraver";
175         \consists "Stem_engraver";
176         \consists "Beam_engraver";
177         \consists "Slur_engraver";
178         
179         \consists "Auto_beam_engraver";
180         \include "auto-beam-settings.ly";
181         \consists "Align_note_column_engraver";
182
183         \consists "Rhythmic_column_engraver";
184         \consists "Dynamic_engraver";
185         \consists "Text_engraver";
186
187         \consists "Property_engraver";
188
189         stemStyle = #"grace"
190         flagStyle = #"grace" 
191         weAreGraceContext = ##t 
192         fontSize = #-1
193         
194         stemLength = #6.0
195         verticalDirection = \up ;
196         graceAccidentalSpace= 1.5 * \staffspace;
197 };
198
199 \translator{\GraceContext}
200 \translator {\VoiceContext}
201
202 ThreadContext = \translator{
203         \type Engraver_group_engraver;
204         \consists "Note_heads_engraver" ;
205         \consists "Output_property_engraver";   
206         Generic_property_list = #generic-thread-properties
207         \consists "Property_engraver";
208         \name Thread;
209 };
210
211 \translator{\ThreadContext}
212 GrandStaffContext=\translator{
213         \type "Engraver_group_engraver";
214         \name GrandStaff;
215         \consists "Span_bar_engraver";
216         \consists "System_start_delimiter_engraver";
217         systemStartDelimiterGlyph = #'brace
218         
219         \consists "Property_engraver";  
220         Generic_property_list = #generic-grand-staff-properties
221         \accepts "Staff";
222 };
223 \translator{\GrandStaffContext}
224
225 PianoStaffContext = \translator{\GrandStaffContext
226         alignmentReference = \center;
227
228         \consists "Vertical_align_engraver";
229         minVerticalAlign = 3.0*\staffheight;
230         maxVerticalAlign = 3.0*\staffheight;
231
232 %       \consistsend "Axis_group_engraver";
233         \name "PianoStaff";
234         
235 };
236 \translator{\PianoStaffContext}
237 StaffGroupContext= \translator {
238         \type "Engraver_group_engraver";
239         \consists "Span_bar_engraver";
240         \consists "Output_property_engraver";   
241         \consists "System_start_delimiter_engraver";
242        systemStartDelimiterGlyph = #'bracket
243        
244
245
246
247
248         \name StaffGroup;
249         \accepts "Staff";
250         \accepts "RhythmicStaff";
251         \accepts "GrandStaff";
252         \accepts "PianoStaff";
253         
254         \accepts "Lyrics";
255         \accepts "ChordNames";
256 };
257
258 \translator { \StaffGroupContext }
259
260 % UGH! JUNKME
261 LyricsVoiceContext= \translator{
262         \type "Engraver_group_engraver";
263         \consistsend "Axis_group_engraver";
264
265         \name LyricVoice ;
266         \consists "Separating_line_group_engraver";
267         \consists "Lyric_engraver";
268         \consists "Extender_engraver";
269         \consists "Hyphen_engraver";
270 };
271 \translator{ \LyricsVoiceContext }
272
273 LyricsContext = \translator {
274         \type "Engraver_group_engraver";
275         \name Lyrics;
276         \consists Vertical_align_engraver; %need this for getting folded repeats right.
277         Generic_property_list = #generic-lyrics-properties
278         \consists "Property_engraver";
279         \consistsend "Axis_group_engraver";
280         
281         \accepts "LyricVoice";
282 };
283 \translator { \LyricsContext }
284
285 ChordNameVoiceContext = \translator {
286         \type "Engraver_group_engraver";
287         \name ChordNameVoice ;
288
289         \consists "Output_property_engraver";   
290         \consistsend "Axis_group_engraver";
291         \consists "Separating_line_group_engraver";
292         \consists "Chord_name_engraver";
293 };
294 \translator {\ChordNameVoiceContext}
295
296 ChordNameContext = \translator {
297         \type "Engraver_group_engraver";
298         \name ChordNames;
299
300         Generic_property_list = #generic-chord-staff-properties
301         \consists "Property_engraver";  
302         \consists "Output_property_engraver";   
303         \accepts "ChordNameVoice";
304         \consistsend "Axis_group_engraver";
305         };
306 \translator { \ChordNameContext }
307
308
309 ScoreWithNumbers = \translator {
310         \type "Score_engraver";
311
312         % uncomment to bar numbers on a whole system.
313         \consists "Bar_number_engraver";
314 };
315
316 StupidScore = \translator {
317         \type "Score_engraver";
318         \name Score;
319         \consists "Note_heads_engraver";
320 };
321
322
323
324 BarNumberingStaffContext = \translator {
325         \StaffContext
326         \consists "Mark_engraver";
327         \consists "Bar_number_engraver";
328 };
329
330 HaraKiriStaffContext = \translator {
331         \StaffContext
332         \remove "Axis_group_engraver";
333         \consistsend "Hara_kiri_engraver";        
334         \consists "Instrument_name_engraver";
335         \accepts "Voice";
336 };
337 %{
338   The HaraKiriStaffContexts doesn't override \name,
339   so it is still named `Staff'.
340
341   %\translator { \HaraKiriStaffContext }
342 %}
343
344 OrchestralPartStaffContext = \translator {
345         \StaffContext
346         \consists "Mark_engraver";
347         \consists "Bar_number_engraver";
348 };
349
350 ScoreContext = \translator {
351         \type Score_engraver;
352         \name Score;
353
354         marginScriptPadding = #10  % urg, in \pt
355
356         \consists "Timing_engraver";
357         \consists "Output_property_engraver";   
358
359         %bracketCollapseHeight = #10  % \pt
360         \consists "System_start_delimiter_engraver";
361         
362 %       \consists "Score_priority_engraver";
363         \consists "Break_align_engraver";
364         breakAlignOrder = #'(
365           Instrument_name
366           Left_edge_item
367           Span_bar
368           Breathing_sign
369           Clef_item
370           Key_item
371           Staff_bar
372           Time_signature
373         )
374         \consists "Spacing_engraver";
375
376         \consists "Vertical_align_engraver";
377         alignmentReference = \down;
378         defaultClef = #"treble"
379         defaultBarType = #"|"
380         \accepts "Staff";
381         \accepts "StaffGroup";
382         \accepts "RhythmicStaff";       
383         \accepts "Lyrics";
384         \accepts "ChordNames";
385         \accepts "GrandStaff";
386         \accepts "ChoirStaff";
387         \accepts "PianoStaff";
388         \accepts "NoteNames";
389
390         markVisibilityFunction = #end-of-line-invisible
391         barNumberVisibilityFunction = #begin-of-line-visible
392 };
393
394 \translator { \ScoreContext }
395
396 OrchestralScoreContext= \translator {
397         \ScoreContext
398
399         barScriptPadding = #2.0         % dimension \pt
400         markScriptPadding = #4.0
401
402         \consists "Bar_number_engraver";
403         \consists "Mark_engraver";
404 };
405
406 \translator {
407         \type "Engraver_group_engraver";
408         \name NoteNames;
409         \consistsend "Axis_group_engraver";
410         \consists "Note_name_engraver";
411 }