]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver.ly
52995c5849c188391383d7177682102b2e0a5aff
[lilypond.git] / ly / engraver.ly
1 \version "1.3.146"
2
3 %
4 % setup for Request->Element conversion. Guru-only
5 %
6
7 StaffContext=\translator {
8         \type "Engraver_group_engraver"
9         \name Staff 
10         \consists "Output_property_engraver"    
11         Generic_property_list = #generic-staff-properties
12         \consists "Property_engraver"
13         
14         \consists "Bar_engraver"
15  % Bar_engraver must be first so default bars aren't overwritten
16 % with empty ones.
17
18
19 %       \consists "Repeat_engraver"
20         \consists "Volta_engraver"
21         \consists "Separating_line_group_engraver"      
22
23
24
25         \consists "Clef_engraver"
26         \consists "Key_engraver"
27         \consists "Time_signature_engraver"
28         \consists "Staff_symbol_engraver"
29         \consists "Collision_engraver"
30         \consists "Rest_collision_engraver"
31         \consists "Local_key_engraver"
32         \consists "Piano_pedal_engraver"
33         \consists "Instrument_name_engraver"
34
35         \consistsend "Axis_group_engraver"
36         
37         MinimumVerticalExtent = #'(-4 . 4)
38         ExtraVerticalExtent = ##f
39         VerticalExtent = ##f 
40
41         % explicitly set instrument, so we don't get 
42         % weird effects when doing instrument names for
43         % piano staffs
44
45         instrument = #""
46         instr = #""
47           
48         \accepts "Voice"
49 }
50
51
52 StaffContainerContext = \translator {
53         \type Engraver_group_engraver
54         \consists "Axis_group_engraver"
55         MinimumVerticalExtent = ##f
56         ExtraVerticalExtent = ##f
57         VerticalExtent = ##f 
58         
59         \accepts Staff
60         \name StaffContainer
61 }
62
63 InnerChoirStaffContext = \translator {
64         \type "Engraver_group_engraver"
65         \name InnerChoirStaff
66         alignmentReference = #0
67         \consists "System_start_delimiter_engraver"
68         SystemStartDelimiter \override #'glyph = #'bracket
69
70         \accepts "Staff"
71         \accepts "RhythmicStaff"
72         \accepts "GrandStaff"
73         \accepts "PianoStaff"
74         \accepts "Lyrics"
75         \accepts "ChordNames"
76 }
77 ChoirStaffContext = \translator {
78         \InnerChoirStaffContext
79         \name ChoirStaff
80         \accepts "InnerChoirStaff"
81         \accepts "InnerStaffGroup"
82 }
83
84
85 RhythmicStaffContext=\translator{
86         \type "Engraver_group_engraver"
87         
88         \consists "Property_engraver"
89         \consists "Output_property_engraver"    
90
91         Generic_property_list = #generic-staff-properties
92         MinimumVerticalExtent = ##f
93         ExtraVerticalExtent = ##f
94         VerticalExtent = ##f 
95
96         \consists "Pitch_squash_engraver"
97         \consists "Separating_line_group_engraver"      
98         \name RhythmicStaff
99         \alias "Staff"
100         
101         Bar \override #'bar-size = #4
102         VoltaBracket \override #'minimum-space =  #15  % urg, in \pt
103         VoltaBracket \override #'padding =  #5  % urg, in \pt
104         StaffSymbol \override #'line-count = #1 
105
106 %       \consists "Repeat_engraver"
107         \consists "Volta_engraver"
108         \consists "Bar_engraver"
109         \consists "Time_signature_engraver"
110         \consists "Staff_symbol_engraver"
111         \consistsend "Axis_group_engraver"
112         \accepts "Voice"
113 }
114
115
116 VoiceContext = \translator {
117         \type "Engraver_group_engraver"
118         \name Voice
119
120         Generic_property_list = #generic-voice-properties
121
122         % must come before all
123         \consists "Voice_devnull_engraver"
124         \consists "Output_property_engraver"    
125         \consists "Arpeggio_engraver"
126         \consists "Multi_measure_rest_engraver"
127         \consists "Text_spanner_engraver"
128         \consists "Property_engraver"
129         
130         \consists "Breathing_sign_engraver"
131         % \consists "Rest_engraver"
132         \consists "Dot_column_engraver"
133         \consists "Stem_engraver"
134         \consists "Beam_engraver"
135         \consists "Auto_beam_engraver"
136
137         \consists "Chord_tremolo_engraver"
138         \consists "Percent_repeat_engraver"
139         \consists "Melisma_engraver"
140
141 %{
142  Must come before text_engraver, but after note_column engraver.
143
144 %}
145         \consists "Dynamic_engraver"
146         \consists "Text_engraver"
147
148         \consists "Script_engraver"
149         \consists "Script_column_engraver"
150         \consists "Rhythmic_column_engraver"
151         \consists "Phrasing_slur_engraver"
152         \consists "Slur_engraver"
153         \consists "Tie_engraver"
154         \consists "Tuplet_engraver"
155         \consists "Grace_position_engraver"
156         \consists "A2_engraver"
157
158         \consists "Skip_req_swallow_translator"
159         \accepts Thread % bug if you leave out this!
160         \accepts Grace
161 }
162
163 GraceContext=\translator {
164         \type "Grace_engraver_group"
165         \name "Grace"
166         \consists "Output_property_engraver"    
167
168         Generic_property_list = #generic-grace-properties
169         
170         \consists "Note_heads_engraver"
171         \consists "Local_key_engraver"
172         \consists "Stem_engraver"
173         \consists "Beam_engraver"
174         \consists "Slur_engraver"
175
176         \consists "Auto_beam_engraver"
177         \consists "Align_note_column_engraver"
178
179         \consists "Rhythmic_column_engraver"
180
181         \consists "Dynamic_engraver"% in Grace ???
182         \consists "Text_engraver" % in Grace ???
183
184         \consists "Property_engraver"
185
186         Stem \override  #'flag-style = #"grace"
187         Stem \override  #'stem-length = #6.0
188         Stem \override  #'direction = #1
189
190         NoteHead \override #'font-relative-size = #-1
191         Stem \override #'font-relative-size = #-1
192         Stem \override #'stem-shorten = #'(0)
193         Beam \override #'font-relative-size = #-1
194         TextScript \override #'font-relative-size = #-1
195         Slur \override #'font-relative-size = #-1
196         Accidentals \override #'font-relative-size = #-1
197         Beam \override #'thickness = #0.3
198         Beam \override #'space-function = #(lambda (x) 0.5)
199
200         Stem \override #'lengths = #(map (lambda (x) (* 0.8 x)) '(3.5 3.5 3.5 4.5 5.0))
201         Stem \override #'beamed-lengths =
202                 #'(0.0 2.5 2.0 1.5)
203         Stem \override #'beamed-minimum-lengths
204                  = #(map (lambda (x) (* 0.8 x)) '(0.0 2.5 2.0 1.5))
205
206         weAreGraceContext = ##t   
207         graceAccidentalSpace= #1.5  % in staff space
208 }
209
210 ThreadContext = \translator{
211         \type Engraver_group_engraver
212         \name Thread
213         
214         \consists "Thread_devnull_engraver"
215         \consists "Note_heads_engraver"
216         \consists "Rest_engraver"
217         \consists "Note_head_line_engraver"
218         \consists "Output_property_engraver"    
219         Generic_property_list = #generic-thread-properties
220         \consists "Property_engraver"
221 }
222
223 GrandStaffContext=\translator{
224         \type "Engraver_group_engraver"
225         \name GrandStaff
226         \consists "Span_bar_engraver"
227         \consists "Span_arpeggio_engraver"
228         \consists "System_start_delimiter_engraver"
229         SystemStartDelimiter \override #'glyph = #'brace
230         
231         \consists "Property_engraver"   
232         Generic_property_list = #generic-grand-staff-properties
233         \accepts "Staff"
234 }
235
236 PianoStaffContext = \translator{
237         \GrandStaffContext
238         \name "PianoStaff"
239
240         \consists "Vertical_align_engraver"
241
242         
243         
244         verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
245         VerticalAlignment \override #'forced-distance = #12
246         VerticalAlignment \override #'self-alignment-Y = #0
247 %       \consistsend "Axis_group_engraver"
248 }
249
250 InnerStaffGroupContext= \translator {
251         \type "Engraver_group_engraver"
252         \name InnerStaffGroup
253
254         \consists "Span_bar_engraver"
255         \consists "Span_arpeggio_engraver"
256         \consists "Output_property_engraver"    
257         SystemStartDelimiter \override #'glyph = #'bracket
258
259         \consists "System_start_delimiter_engraver"
260         \accepts "Staff"
261         \accepts "RhythmicStaff"
262         \accepts "GrandStaff"
263         \accepts "PianoStaff"
264         
265         \accepts "Lyrics"
266         \accepts "ChordNames"
267 }
268 StaffGroupContext = \translator {
269         \InnerStaffGroupContext
270         \name StaffGroup
271         \accepts "InnerChoirStaff"
272         \accepts "ChoirStaff"
273         \accepts "InnerStaffGroup"
274 }
275
276
277 % UGH! JUNKME
278 LyricsVoiceContext= \translator{
279         \type "Engraver_group_engraver"
280         \consistsend "Axis_group_engraver"
281         MinimumVerticalExtent = #(cons -1.2 1.2)
282         ExtraVerticalExtent = ##f
283         VerticalExtent = ##f 
284         \name LyricsVoice 
285         \consists "Separating_line_group_engraver"
286         \consists "Lyric_engraver"
287         \consists "Extender_engraver"
288         \consists "Hyphen_engraver"
289         \consists "Stanza_number_engraver"
290         phrasingPunctuation = #".,:!?\""
291         
292 }
293 NoteNamesContext = \translator {
294         \type "Engraver_group_engraver"
295         \name NoteNames
296         \consistsend "Axis_group_engraver"
297
298         MinimumVerticalExtent = ##f
299         ExtraVerticalExtent = ##f
300         VerticalExtent = ##f 
301
302         
303         \consists "Note_name_engraver"
304         \consists "Separating_line_group_engraver"
305 }
306
307 LyricsContext = \translator {
308         \type "Engraver_group_engraver"
309         \name Lyrics
310         \consists Vertical_align_engraver %need this for getting folded repeats right.
311         Generic_property_list = #generic-lyrics-properties
312         \consists "Property_engraver"
313         \consistsend "Axis_group_engraver"
314         MinimumVerticalExtent = ##f
315         ExtraVerticalExtent = ##f
316         VerticalExtent = ##f 
317         
318         \accepts "LyricsVoice"
319 }
320
321
322 ChordNamesContext = \translator {
323         \type "Engraver_group_engraver"
324         \name ChordNames
325
326         Generic_property_list = #generic-chord-staff-properties
327
328         \consists "Property_engraver"   
329         \consists "Output_property_engraver"    
330         \consists "Separating_line_group_engraver"
331         \consists "Chord_name_engraver"
332         \consists "Skip_req_swallow_translator"
333         \consistsend "Axis_group_engraver"
334         MinimumVerticalExtent = ##f
335         ExtraVerticalExtent = ##f
336         VerticalExtent = ##f 
337
338         VerticalAxisGroup \override #'invisible-staff = ##t
339         }
340
341
342
343 StupidScore = \translator {
344         \type "Score_engraver"
345         \name Score
346         \consists "Note_heads_engraver"
347 }
348
349
350
351
352 HaraKiriStaffContext = \translator {
353         \StaffContext
354         \remove "Axis_group_engraver"
355         \consistsend "Hara_kiri_engraver"
356         \consists "Instrument_name_engraver"
357         \accepts "Voice"
358 }
359 %{
360   The HaraKiriStaffContexts doesn't override \name,
361   so it is still named `Staff'.
362
363   %\translator { \HaraKiriStaffContext }
364 %}
365
366
367
368
369 ScoreContext = \translator {
370         \type Score_engraver
371         \name Score
372         
373
374         \consists "Repeat_acknowledge_engraver"
375         \consists "Timing_engraver"
376         \consists "Output_property_engraver"
377         \consists "System_start_delimiter_engraver"
378         \consists "Mark_engraver"       
379         \consists "Break_align_engraver"
380         \consists "Spacing_engraver"
381         \consists "Vertical_align_engraver"
382
383         \consists "Lyric_phrasing_engraver"
384         \consists "Bar_number_engraver"
385         \consists "Span_arpeggio_engraver"
386
387         \accepts "Staff"
388         \accepts "StaffContainer"
389         \accepts "StaffGroup"
390         \accepts "RhythmicStaff"        
391         \accepts "Lyrics"
392         \accepts "ChordNames"
393         \accepts "GrandStaff"
394         \accepts "ChoirStaff"
395         \accepts "PianoStaff"
396         \accepts "NoteNames"
397
398         soloText = #"Solo"
399         soloIIText = #"Solo II"
400         aDueText = #"a2"
401         soloADue = ##t
402         splitInterval = #'(0 . 1)
403         changeMoment = #`(,(make-moment 0 0) . ,(make-moment 1 512))
404
405         barAuto = ##t
406         voltaVisibility = ##t
407         %  name, glyph id, clef position 
408         % where is c0 in this clef?
409         clefPitches = #'(("clefs-G" . -4)
410           ("clefs-C" . 0)
411           ("clefs-F" . 4)
412           ("clefs-vaticana_do" . 0)
413           ("clefs-vaticana_fa" . 4)
414           ("clefs-medicaea_do" . 0)
415           ("clefs-medicaea_fa" . 4)
416           ("clefs-hufnagel_do" . 0)
417           ("clefs-hufnagel_fa" . 4)
418           ("clefs-hufnagel_do_fa" . 0)
419           ("clefs-mensural1_c" . 0)
420           ("clefs-mensural2_c" . 0)
421           ("clefs-mensural3_c" . 0)
422           ("clefs-mensural1_f" . 4)
423           ("clefs-mensural2_f" . 4)
424           ("clefs-mensural_g" . -4))
425
426         clefGlyph = #"clefs-G"
427         clefPosition = #-2
428
429         automaticPhrasing = ##t
430         alignmentReference = #-1   % \down
431         defaultBarType = #"|"
432
433         explicitClefVisibility = #all-visible
434         explicitKeySignatureVisibility = #all-visible
435         
436         scriptDefinitions = #default-script-alist
437
438         verticalAlignmentChildCallback = #Align_interface::alignment_callback
439
440         pedalSustainStrings = #'("Ped." "*Ped." "*")
441         pedalUnaCordaStrings = #'("una corda" "" "tre corde")
442         pedalSostenutoStrings = #'()  % FIXME
443
444         tupletNumberFormatFunction = #denominator-tuplet-formatter
445         
446        keyAccidentalOrder = #'(
447          (6 . -1) (2  . -1) (5 . -1 ) (1  . -1) (4  . -1) (0  . -1) (3  . -1)
448          (3  . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1)
449        )
450         breakAlignOrder = #'(
451           Instrument_name
452           Left_edge_item
453           Span_bar
454           Breathing_sign
455           Clef_item
456           Key_item
457           Staff_bar
458           Time_signature
459           Custos
460         )
461
462
463         \elementdescriptions #all-grob-descriptions
464 }
465
466 OrchestralScoreContext= \translator {
467         \ScoreContext
468 }
469 EasyNotation =  \translator {
470         \ScoreContext
471         NoteHead \override #'molecule-callback = #Note_head::brew_ez_molecule
472         easyPlay = ##t
473 }
474