]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver.ly
release: 1.3.55
[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 =   4.0 * \interline ; 
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
149         startSustain = #"Ped."
150         stopSustain = #"*"
151         stopStartSustain = #"*Ped."
152         startUnaChorda = #"una chorda"
153         stopUnaChorda = #"tre chorde"
154         \consists "Piano_pedal_engraver";
155         \consists "Script_engraver";
156         \consists "Script_column_engraver";
157         \consists "Rhythmic_column_engraver";
158         \consists "Slur_engraver";
159         \consists "Tie_engraver";
160         \consists "Tuplet_engraver";
161         \consists "Grace_position_engraver";
162         \consists "Skip_req_swallow_translator";
163         \accepts Thread; % bug if you leave out this!
164         \accepts Grace;
165 };
166
167 GraceContext=\translator {
168         \type "Grace_engraver_group";
169         \name "Grace";
170         \consists "Output_property_engraver";   
171
172         Generic_property_list = #generic-grace-properties
173         
174         \consists "Note_heads_engraver";
175         \consists "Local_key_engraver";
176         \consists "Stem_engraver";
177         \consists "Beam_engraver";
178         \consists "Slur_engraver";
179         
180         \consists "Auto_beam_engraver";
181         \include "auto-beam-settings.ly";
182         \consists "Align_note_column_engraver";
183
184         \consists "Rhythmic_column_engraver";
185         \consists "Dynamic_engraver";
186         \consists "Text_engraver";
187
188         \consists "Property_engraver";
189
190         stemStyle = #"grace"
191         flagStyle = #"grace" 
192         weAreGraceContext = ##t 
193         fontSize = #-1
194         
195         stemLength = #6.0
196         verticalDirection = \up ;
197         graceAccidentalSpace= 1.5 * \staffspace;
198 };
199
200 \translator{\GraceContext}
201 \translator {\VoiceContext}
202
203 ThreadContext = \translator{
204         \type Engraver_group_engraver;
205         \consists "Note_heads_engraver" ;
206         \consists "Output_property_engraver";   
207         Generic_property_list = #generic-thread-properties
208         \consists "Property_engraver";
209         \name Thread;
210 };
211
212 \translator{\ThreadContext}
213 GrandStaffContext=\translator{
214         \type "Engraver_group_engraver";
215         \name GrandStaff;
216         \consists "Span_bar_engraver";
217         \consists "System_start_delimiter_engraver";
218         systemStartDelimiterGlyph = #'brace
219         
220         \consists "Property_engraver";  
221         Generic_property_list = #generic-grand-staff-properties
222         \accepts "Staff";
223 };
224 \translator{\GrandStaffContext}
225
226 PianoStaffContext = \translator{\GrandStaffContext
227         alignmentReference = \center;
228
229         \consists "Vertical_align_engraver";
230         minVerticalAlign = 3.0*\staffheight;
231         maxVerticalAlign = 3.0*\staffheight;
232
233 %       \consistsend "Axis_group_engraver";
234         \name "PianoStaff";
235         
236 };
237 \translator{\PianoStaffContext}
238 StaffGroupContext= \translator {
239         \type "Engraver_group_engraver";
240         \consists "Span_bar_engraver";
241         \consists "Output_property_engraver";   
242         \consists "System_start_delimiter_engraver";
243        systemStartDelimiterGlyph = #'bracket
244        
245
246
247
248
249         \name StaffGroup;
250         \accepts "Staff";
251         \accepts "RhythmicStaff";
252         \accepts "GrandStaff";
253         \accepts "PianoStaff";
254         
255         \accepts "Lyrics";
256         \accepts "ChordNames";
257 };
258
259 \translator { \StaffGroupContext }
260
261 % UGH! JUNKME
262 LyricsVoiceContext= \translator{
263         \type "Engraver_group_engraver";
264         \consistsend "Axis_group_engraver";
265
266         \name LyricVoice ;
267         \consists "Separating_line_group_engraver";
268         \consists "Lyric_engraver";
269         \consists "Extender_engraver";
270         \consists "Hyphen_engraver";
271 };
272 \translator{ \LyricsVoiceContext }
273
274 LyricsContext = \translator {
275         \type "Engraver_group_engraver";
276         \name Lyrics;
277         \consists Vertical_align_engraver; %need this for getting folded repeats right.
278         Generic_property_list = #generic-lyrics-properties
279         \consists "Property_engraver";
280         \consistsend "Axis_group_engraver";
281         
282         \accepts "LyricVoice";
283 };
284 \translator { \LyricsContext }
285
286 ChordNameVoiceContext = \translator {
287         \type "Engraver_group_engraver";
288         \name ChordNameVoice ;
289
290         \consists "Output_property_engraver";   
291         \consistsend "Axis_group_engraver";
292         \consists "Separating_line_group_engraver";
293         \consists "Chord_name_engraver";
294 };
295 \translator {\ChordNameVoiceContext}
296
297 ChordNameContext = \translator {
298         \type "Engraver_group_engraver";
299         \name ChordNames;
300
301         Generic_property_list = #generic-chord-staff-properties
302         \consists "Property_engraver";  
303         \consists "Output_property_engraver";   
304         \accepts "ChordNameVoice";
305         \consistsend "Axis_group_engraver";
306         };
307 \translator { \ChordNameContext }
308
309
310 ScoreWithNumbers = \translator {
311         \type "Score_engraver";
312
313         % uncomment to bar numbers on a whole system.
314         \consists "Bar_number_engraver";
315 };
316
317 StupidScore = \translator {
318         \type "Score_engraver";
319         \name Score;
320         \consists "Note_heads_engraver";
321 };
322
323
324
325 BarNumberingStaffContext = \translator {
326         \StaffContext
327         \consists "Mark_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 };
348
349 ScoreContext = \translator {
350         \type Score_engraver;
351         \name Score;
352
353         marginScriptPadding = #10  % urg, in \pt
354
355         \consists "Timing_engraver";
356         \consists "Output_property_engraver";   
357
358         %bracketCollapseHeight = #10  % \pt
359         \consists "System_start_delimiter_engraver";
360         
361 %       \consists "Score_priority_engraver";
362         \consists "Break_align_engraver";
363         breakAlignOrder = #'(
364           Instrument_name
365           Left_edge_item
366           Span_bar
367           Breathing_sign
368           Clef_item
369           Key_item
370           Staff_bar
371           Time_signature
372         )
373         \consists "Spacing_engraver";
374
375         \consists "Vertical_align_engraver";
376         \consists "Bar_number_engraver";
377         alignmentReference = \down;
378         defaultClef = #"treble"
379         defaultBarType = #"|"
380        systemStartDelimiterGlyph = #'bar-line
381
382         %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
383         % default settings, mainly for breakable items
384         %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
385         basicBarNumberProperties = #`(
386           (breakable . #t)
387           (visibility-lambda . ,begin-of-line-visible)
388         )
389         basicMarkProperties = #'(
390           (breakable . #t)
391           (visibility-lambda . end-of-line-invisible)
392         )
393         leftEdgeBasicProperties = #'(
394           (break-align-symbol . Left_edge_item)
395           (breakable . #t)
396         )
397
398         staffSymbolBasicProperties = #'(
399          (staff-space . 1.0 )
400          (line-count . 5 )
401          )
402          basicTimeSignatureProperties = #`(
403           (break-align-symbol . Time_signature)
404           (visibility-lambda . ,all-visible)
405           (breakable . #t)
406          )
407          basicBarlineProperties = #`(
408            (break-align-symbol . Staff_bar)
409            (visibility-lambda . ,begin-of-line-invisible)
410            (breakable . #t)
411            )
412         basicSystemStartDelimiterProperties = #'(
413           (collapse-height . 1.0)
414         )
415          basicKeyProperties = #`(
416           (break-align-symbol . Key_item)
417           (visibility-lambda . ,begin-of-line-visible)
418           (breakable . #t)
419           )      
420          basicClefItemProperties = #`(
421            (breakable . #t)
422            (break-align-symbol . Clef_item)
423            (visibility-lambda . ,begin-of-line-visible) 
424          )
425
426         basicBeamProperties = #`(
427                 (beam-thickness . 0.42) ; interline!
428         )
429         basicStemTremoloProperties = #'(
430                 (beam-width . 4.0) ; interline!
431         )
432
433         basicBreathingSignProperties = #'(
434                 (break-align-symbol . Breathing_sign)
435                 (breakable . #t )
436                 (visibility-lambda . ,begin-of-line-invisible)
437         )
438         basicOctavateEightProperties  = #'(
439                 (self-alignment-X . 0)
440                 (text . "8")
441                 (style . "italic")
442         )
443         basicDynamicLineSpannerProperties = #`(
444                 (transparent . #t)
445         )
446         basicDynamicTextProperties       = # `(
447                 (style . "dynamic")
448                 (script-priority . 100)
449                 (self-alignment-Y . 0)
450         )
451         basicLyricTextProperties = #`(
452                 (non-rhythmic . #t)
453         )
454         basicRestCollisionProperties = #`(
455                 (transparent .  #t)
456         )
457         basicCollisionProperties = #`(
458                 (transparent .  #t)
459                 (axes 0 1)
460         )
461         basicSingleMaltGroupingItemProperties = #'(
462                 (transparent . #t)
463         )
464         basicBreakAlignProperties = #'(
465                 (breakable . #t)
466         )
467         basicInstrumentNameProperties = #`(
468                 (breakable . #t)
469                 (break-align-symbol . Instrument_name)
470                 (visibility-lambda . ,begin-of-line-visible)
471         )
472         basicLocalKeyProperties = #`(
473           (left-padding . 0.2)
474           (right-padding . 0.4)
475         )
476
477         \accepts "Staff";
478         \accepts "StaffGroup";
479         \accepts "RhythmicStaff";       
480         \accepts "Lyrics";
481         \accepts "ChordNames";
482         \accepts "GrandStaff";
483         \accepts "ChoirStaff";
484         \accepts "PianoStaff";
485         \accepts "NoteNames";
486
487
488         markVisibilityFunction = #end-of-line-invisible
489 };
490
491 \translator { \ScoreContext }
492
493 OrchestralScoreContext= \translator {
494         \ScoreContext
495
496         barScriptPadding = #2.0         % dimension \pt
497         markScriptPadding = #4.0
498
499         \consists "Mark_engraver";
500 };
501
502 \translator {
503         \type "Engraver_group_engraver";
504         \name NoteNames;
505         \consistsend "Axis_group_engraver";
506         \consists "Note_name_engraver";
507 }