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