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