]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver.ly
release: 1.3.152
[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
412         clefGlyph = #"clefs-G"
413         clefPosition = #-2
414         centralCPosition = #-6
415         
416         automaticPhrasing = ##t
417         alignmentReference = #-1   % \down
418         defaultBarType = #"|"
419
420         explicitClefVisibility = #all-visible
421         explicitKeySignatureVisibility = #all-visible
422         
423         scriptDefinitions = #default-script-alist
424
425         verticalAlignmentChildCallback = #Align_interface::alignment_callback
426
427         pedalSustainStrings = #'("Ped." "*Ped." "*")
428         pedalUnaCordaStrings = #'("una corda" "" "tre corde")
429         pedalSostenutoStrings = #'()  % FIXME
430
431         tupletNumberFormatFunction = #denominator-tuplet-formatter
432         
433        keyAccidentalOrder = #'(
434          (6 . -1) (2  . -1) (5 . -1 ) (1  . -1) (4  . -1) (0  . -1) (3  . -1)
435          (3  . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1)
436        )
437         breakAlignOrder = #'(
438           Instrument_name
439           Left_edge_item
440           Span_bar
441           Breathing_sign
442           Clef_item
443           Key_item
444           Staff_bar
445           Time_signature
446           Custos
447         )
448
449
450         \elementdescriptions #all-grob-descriptions
451 }
452
453 OrchestralScoreContext= \translator {
454         \ScoreContext
455 }
456 EasyNotation =  \translator {
457         \ScoreContext
458         NoteHead \override #'molecule-callback = #Note_head::brew_ez_molecule
459         easyPlay = ##t
460 }
461