]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver.ly
bec4f635108ac4ed952e23bbd1c1f6c8b5bbf2d6
[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 = ##f
46         instr = ##f
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         \consists "Instrument_name_engraver"
242         
243         instrument = ##f
244         instr = ##f
245         
246         verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
247         VerticalAlignment \override #'forced-distance = #12
248         VerticalAlignment \override #'self-alignment-Y = #0
249 %       \consistsend "Axis_group_engraver"
250 }
251
252 InnerStaffGroupContext= \translator {
253         \type "Engraver_group_engraver"
254         \name InnerStaffGroup
255
256         \consists "Span_bar_engraver"
257         \consists "Span_arpeggio_engraver"
258         \consists "Output_property_engraver"    
259         SystemStartDelimiter \override #'glyph = #'bracket
260
261         \consists "System_start_delimiter_engraver"
262         \accepts "Staff"
263         \accepts "RhythmicStaff"
264         \accepts "GrandStaff"
265         \accepts "PianoStaff"
266         
267         \accepts "Lyrics"
268         \accepts "ChordNames"
269 }
270 StaffGroupContext = \translator {
271         \InnerStaffGroupContext
272         \name StaffGroup
273         \accepts "InnerChoirStaff"
274         \accepts "ChoirStaff"
275         \accepts "InnerStaffGroup"
276 }
277
278
279 % UGH! JUNKME
280 LyricsVoiceContext= \translator{
281         \type "Engraver_group_engraver"
282         \consistsend "Axis_group_engraver"
283         MinimumVerticalExtent = #(cons -1.2 1.2)
284         ExtraVerticalExtent = ##f
285         VerticalExtent = ##f 
286         \name LyricsVoice 
287         \consists "Separating_line_group_engraver"
288         \consists "Lyric_engraver"
289         \consists "Extender_engraver"
290         \consists "Hyphen_engraver"
291         \consists "Stanza_number_engraver"
292         phrasingPunctuation = #".,:!?\""
293         
294 }
295 NoteNamesContext = \translator {
296         \type "Engraver_group_engraver"
297         \name NoteNames
298         \consistsend "Axis_group_engraver"
299
300         MinimumVerticalExtent = ##f
301         ExtraVerticalExtent = ##f
302         VerticalExtent = ##f 
303
304         
305         \consists "Note_name_engraver"
306         \consists "Separating_line_group_engraver"
307 }
308
309 LyricsContext = \translator {
310         \type "Engraver_group_engraver"
311         \name Lyrics
312         \consists Vertical_align_engraver %need this for getting folded repeats right.
313         Generic_property_list = #generic-lyrics-properties
314         \consists "Property_engraver"
315         \consistsend "Axis_group_engraver"
316         MinimumVerticalExtent = ##f
317         ExtraVerticalExtent = ##f
318         VerticalExtent = ##f 
319         
320         \accepts "LyricsVoice"
321 }
322
323
324 ChordNamesContext = \translator {
325         \type "Engraver_group_engraver"
326         \name ChordNames
327
328         Generic_property_list = #generic-chord-staff-properties
329
330         \consists "Property_engraver"   
331         \consists "Output_property_engraver"    
332         \consists "Separating_line_group_engraver"
333         \consists "Chord_name_engraver"
334         \consists "Skip_req_swallow_translator"
335         \consistsend "Axis_group_engraver"
336         MinimumVerticalExtent = ##f
337         ExtraVerticalExtent = ##f
338         VerticalExtent = ##f 
339
340         VerticalAxisGroup \override #'invisible-staff = ##t
341         }
342
343
344
345 StupidScore = \translator {
346         \type "Score_engraver"
347         \name Score
348         \consists "Note_heads_engraver"
349 }
350
351
352
353
354 HaraKiriStaffContext = \translator {
355         \StaffContext
356         \remove "Axis_group_engraver"
357         \consistsend "Hara_kiri_engraver"
358         \consists "Instrument_name_engraver"
359         \accepts "Voice"
360 }
361 %{
362   The HaraKiriStaffContexts doesn't override \name,
363   so it is still named `Staff'.
364
365   %\translator { \HaraKiriStaffContext }
366 %}
367
368
369
370
371 ScoreContext = \translator {
372         \type Score_engraver
373         \name Score
374         
375
376         \consists "Repeat_acknowledge_engraver"
377         \consists "Timing_engraver"
378         \consists "Output_property_engraver"
379         \consists "System_start_delimiter_engraver"
380         \consists "Mark_engraver"       
381         \consists "Break_align_engraver"
382         \consists "Spacing_engraver"
383         \consists "Vertical_align_engraver"
384
385         \consists "Lyric_phrasing_engraver"
386         \consists "Bar_number_engraver"
387         \consists "Span_arpeggio_engraver"
388
389         \accepts "Staff"
390         \accepts "StaffContainer"
391         \accepts "StaffGroup"
392         \accepts "RhythmicStaff"        
393         \accepts "Lyrics"
394         \accepts "ChordNames"
395         \accepts "GrandStaff"
396         \accepts "ChoirStaff"
397         \accepts "PianoStaff"
398         \accepts "NoteNames"
399
400         soloText = #"Solo"
401         soloIIText = #"Solo II"
402         aDueText = #"a2"
403         soloADue = ##t
404         splitInterval = #'(0 . 1)
405         changeMoment = #`(,(make-moment 0 0) . ,(make-moment 1 512))
406
407         barAuto = ##t
408         voltaVisibility = ##t
409         %  name, glyph id, clef position 
410         % where is c0 in this clef?
411         clefPitches = #'(("clefs-G" . -4)
412           ("clefs-C" . 0)
413           ("clefs-F" . 4)
414           ("clefs-vaticana_do" . 0)
415           ("clefs-vaticana_fa" . 4)
416           ("clefs-medicaea_do" . 0)
417           ("clefs-medicaea_fa" . 4)
418           ("clefs-hufnagel_do" . 0)
419           ("clefs-hufnagel_fa" . 4)
420           ("clefs-hufnagel_do_fa" . 0)
421           ("clefs-mensural1_c" . 0)
422           ("clefs-mensural2_c" . 0)
423           ("clefs-mensural3_c" . 0)
424           ("clefs-mensural1_f" . 4)
425           ("clefs-mensural2_f" . 4)
426           ("clefs-mensural_g" . -4))
427
428         clefGlyph = #"clefs-G"
429         clefPosition = #-2
430
431         automaticPhrasing = ##t
432         alignmentReference = #-1   % \down
433         defaultBarType = #"|"
434
435         explicitClefVisibility = #all-visible
436         explicitKeySignatureVisibility = #all-visible
437         
438         scriptDefinitions = #default-script-alist
439
440         verticalAlignmentChildCallback = #Align_interface::alignment_callback
441
442         pedalSustainStrings = #'("Ped." "*Ped." "*")
443         pedalUnaCordaStrings = #'("una corda" "" "tre corde")
444         pedalSostenutoStrings = #'()  % FIXME
445
446         tupletNumberFormatFunction = #denominator-tuplet-formatter
447         
448        keyAccidentalOrder = #'(
449          (6 . -1) (2  . -1) (5 . -1 ) (1  . -1) (4  . -1) (0  . -1) (3  . -1)
450          (3  . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1)
451        )
452         breakAlignOrder = #'(
453           Instrument_name
454           Left_edge_item
455           Span_bar
456           Breathing_sign
457           Clef_item
458           Key_item
459           Staff_bar
460           Time_signature
461           Custos
462         )
463
464
465         \elementdescriptions #all-grob-descriptions
466 }
467
468 OrchestralScoreContext= \translator {
469         \ScoreContext
470 }
471 EasyNotation =  \translator {
472         \ScoreContext
473         NoteHead \override #'molecule-callback = #Note_head::brew_ez_molecule
474         easyPlay = ##t
475 }
476