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